ELF Hello World Tutorial Specified file formats Updated 2025-07-16
The ELF standard specifies multiple file formats:
- Object files (
.o).Intermediate step to generating executables and other formats:Source code | | Compilation | v Object file | | Linking | v ExecutableObject files exist to make compilation faster: withmake, we only have to recompile the modified source files based on timestamps.
- Executable files (no standard Linux extension).This is what the Linux kernel can actually run.
- Archive files (
.a).Libraries meant to be embedded into executables during the Linking step.
- Shared object files (
.so).Libraries meant to be loaded when the executable starts running.
- Core dumps.Such files may be generated by the Linux kernel when the program does naughty things, e.g. segfault.They exist to help debugging the program.
In this tutorial, we consider only object and executable files.
ELF Hello World Tutorial Standards Updated 2025-07-16
ELF is specified by the LSB:
The LSB basically links to other standards with minor extensions, in particular:
- Generic (both by SCO):
- System V ABI 4.1 (1997) www.sco.com/developers/devspecs/gabi41.pdf, no 64 bit, although a magic number is reserved for it. Same for core files. This is the first document you should look at when searching for information.
- System V ABI Update DRAFT 17 (2003) www.sco.com/developers/gabi/2003-12-17/contents.html, adds 64 bit. Only updates chapters 4 and 5 of the previous document: the others remain valid and are still referenced.
- Architecture specific (by the processor vendor):
A handy summary can be found at:
man elf ELF Hello World Tutorial
STT_FILE Updated 2025-07-16- 10 8:
st_name=01000000= character 1 in the.strtab, which until the following\0makeshello_world.asmThis piece of information file may be used by the linker to decide on which segment sections go: e.g. inldlinker script we write:segment_name : { file(section) }segment_name : { *(section) } - 10 13:
st_shndx= Symbol Table Section header Index =f1ff=SHN_ABS. Required forSTT_FILE. - 20 0:
st_value= 8x00: required for value forSTT_FILE - 20 8:
st_size= 8x00: no allocated size
Now from the
readelf, we interpret the others quickly. Important mathematical group Updated 2025-07-16
Janko group Updated 2025-07-16
Mathematics website Updated 2025-07-16
Mathieu group Updated 2025-07-16
Probability current Updated 2025-07-16
Readout (quantum computing) Updated 2025-07-16
Eli Benderski Updated 2025-07-16
Homepage: eli.thegreenplace.net/
Also has many great contributions on Stack Overflow: stackoverflow.com/users/8206/eli-bendersky
As of 2016, Eli worked at Google (reference). TODO before that, I had found his earlier info previously but lost it.
Eli focuses mostly on compiler toolchains.
He also has some mathematics stuff, so cute: eli.thegreenplace.net/2015/change-of-basis-in-linear-algebra/
Eliezer Yudkowsky Updated 2025-07-16
Feynman diagram solver Updated 2025-07-16
Indefinite orthogonal group Updated 2025-07-16
Generalization of orthogonal group to preserve different bilinear forms. Important because the Lorentz group is .
Indel Updated 2025-07-16
Infineon Technologies Updated 2025-07-16
Innovative high school Updated 2025-07-16
LINPACK benchmarks Updated 2025-07-16
Matrix similarity Updated 2025-07-16
One-time pad Updated 2025-07-16
The only perfect cryptosystem!
Systems like advanced Encryption Standard allow us to encrypt things larger than the key, but the tradeoff is that they could be possibly broken, as don't have any provably secure symmetric-key algorithms as of 2020.
Provably secure symmetric-key algorithm Updated 2025-07-16
There aren't any 2020, except in the trivial one-time pad case where the key is as large as the message: crypto.stackexchange.com/questions/10815/how-do-we-prove-that-aes-des-etc-are-secure
There are unlisted articles, also show them or only show them.