Here's to the crazy ones Updated 2025-07-16
Because the people who are crazy enough to think they can change the world are the ones who do.
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
    
    Executable
    Object files exist to make compilation faster: with make, we only have to recompile the modified source files based on timestamps.
    We have to do the linking step every time, but it is much less expensive.
  • Executable files (no standard Linux extension).
    This is what the Linux kernel can actually run.
  • 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.
III-V semiconductor Updated 2025-07-16
Most notable example: gallium arsenide, see also: gallium arsenide vs silicon.
An important class of semiconductors, e.g. there is a dedicated III-V lab at: École Polytechnique: www.3-5lab.fr/contactus.php
Wang Jin (Water Margin character) Updated 2025-07-16
He used to train the 800,000 imperial guard troops at the Capital, much like Lin Chong. He's not one of the 108 Stars of Destiny.
ELF Hello World Tutorial / STT_FILE Updated 2025-07-16
Entry 1 has ELF64_R_TYPE == STT_FILE. ELF64_R_TYPE is continued inside of st_info.
  • 10 8: st_name = 01000000 = character 1 in the .strtab, which until the following \0 makes hello_world.asm
    This piece of information file may be used by the linker to decide on which segment sections go: e.g. in ld linker script we write:
    segment_name :
    {
        file(section)
    }
    to pick a section from a given file.
    Most of the time however, we will just dump all sections with a given name together with:
    segment_name :
    {
        *(section)
    }
  • 10 12: st_info = 04
    Bits 0-3 = ELF64_R_TYPE = Type = 4 = STT_FILE: the main purpose of this entry is to use st_name to indicate the name of the file which generated this object file.
    Bits 4-7 = ELF64_ST_BIND = Binding = 0 = STB_LOCAL. Required value for STT_FILE.
  • 10 13: st_shndx = Symbol Table Section header Index = f1ff = SHN_ABS. Required for STT_FILE.
  • 20 0: st_value = 8x 00: required for value for STT_FILE
  • 20 8: st_size = 8x 00: no allocated size
Now from the readelf, we interpret the others quickly.
Janko group 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

Unlisted articles are being shown, click here to show only listed articles.