about summary refs log tree commit diff stats
path: root/subx/ex1
Commit message (Collapse)AuthorAgeFilesLines
* 4356 - subx: first program with a data segmentKartik Agaram2018-07-161-0/+0
| | | | | | | | | | | We read() a character from stdin and write() it out to stdout, saving it to a global variable in between. ELF binaries are inefficient; you can ask for a low alignment, but the kernel may not be able to handle it. If you set up a high alignment then you end up wasting an increasing amount of space in each segment because of the constraint that the offset bear some relationship with the loaded address.
* 4343Kartik Agaram2018-07-141-0/+0
| | | | | | | | | Let's minimize the alignment requirements of each segment's offset. It'll make binaries take less room later. Otherwise we may need to pad lots of 0s for segments after the first. Generated ELF binaries continue to work natively (except ex4, but that was already not working).
* 4316Kartik Agaram2018-07-061-0/+0
| | | | | | Second attempt at commit 4291. We'll now not copy the headers into memory, but we'll still allocate space for them. Still some security benefits, and I'm gaining confidence that I understand the ELF format.
* 4308Kartik Agaram2018-07-031-0/+0
| | | | | | | Undo 4291; turns out the generated ELF binary was no longer running natively on 32-bit Linux. Even with p_align set to 0. Agh, not worth my time.
* 4291 - stop copying the ELF header into memoryKartik Agaram2018-06-301-0/+0
| | | | | | | No need for it once the program's loaded. And we keep programs from running the header as code. This also simplifies the header computation in the translator.
* 4289 - beginnings of a translator to ELFKartik Agaram2018-06-301-0/+0
The source 'language' is still entirely open. We'll see how it evolves as I write programs in machine code.