OS - Object File
Table of Contents
1 - About
It's a file that is not directly executable.
2 - Articles Related
3 - Common Format
Object file formats are structured as separate sections of data, each section containing a certain type of data. These sections are known as
segments due to the term memory segment.
- Header (descriptive and control information)
- Code segment (CS) (“text segment”, executable code)
- Data segment (DS) (initialized static variables)
- Read-only data segment (rodata, initialized static constants)
- BSS segment: see Assembly - BSS section, segment (uninitialized static data, both variables and constants).
- External definitions and references for linking
- Debugging information
When the program (executable or library) is loaded into memory, static variables are stored:
- if initialized, in the data segment of the program's address space
- if uninitialized, in the BSS segment
In real mode, the registers CS, DS, SS, and ES point to the currently used program code segment (CS), the current data segment (DS), the current stack segment (SS), and one extra segment determined by the programmer (ES).
4 - Format
- a.out (Linux and BSD)
- 16-bit and 32-bit OBJ (OMF) format,
- Win32 and Win64.
5 - API
The GNU Project's Binary File Descriptor library (BFD library) provides a common API for the manipulation of object files in a variety of formats.