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.
The variables a file defines are written too: the section each one goes in, the symbol that says where it is and how long it is, the binding that says who can see it, and the relocations an image asks for when it holds the address of something. A tentative definition is asked of the linker rather than put in a section, which is the one case where a variable has a symbol and no bytes anywhere.
What it is given is Text and Data, which are here rather than beside the assembler that
fills them in because they are 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. Both wait on the target that needs 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§
- Data
- The variables a file defines, and what the linker has to be told about them.
- Extent
- Where one function ended up.
- Object
- One global variable, laid out.
- 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§
- Binding
- How the linker sees a name.
- Error
- Why an object file could not be written.
- Place
- Which section a variable goes in.
- 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 and the variables beside it, as a relocatable ELF object.