Expand description
ELF, Mach-O and COFF object writers.
Design: spec/11-asm-objects-debug.md. Layer rank 8, see spec/18-package-layout.md.
§Status
ELF, which is what Linux and the freestanding targets want and what M3 needs. A text section, the symbols that say where each function in it is and how long it is, the names it wanted that are not in it, the relocations that ask a linker to find them, and the marker whose absence makes the stack executable. An object this writes links with the system linker and runs.
What it is given is Text, which is here rather than beside the assembler that fills it in
because it is what an object file is made of and because a writer cannot depend on the thing
that produces its input without the layer graph going the wrong way round.
Mach-O and COFF are not written yet, and neither is any section other than the text. Both wait on the target and the global variables that need them.
Every crate in the workspace is published, and publishing implies a promise. This one is
tier 3: its Rust API is explicitly unstable and will change without a major version bump.
Depend on the rucc binary’s behaviour, not on this.
Structs§
- Extent
- Where one function ended up.
- Reloc
- One reference to something this file does not contain.
- Text
- A text section, and what the linker has to be told about it.
Enums§
- Error
- Why an object file could not be written.
- Reference
- What kind of thing a relocation is asking the linker for.
Constants§
- MILESTONE
- The milestone in
spec/17-milestones.mdthat fills this crate in.
Functions§
- write
- One text section as a relocatable ELF object.