* Robin Kuzmin: > http://man7.org/linux/man-pages/man5/elf.5.html > > I see the fragment: > > A section header table index is a subscript into this array. Some > section header table indices are reserved: the initial entry and the > indices between SHN_LORESERVE and SHN_HIRESERVE. The initial entry > is used in ELF extensions for e_phnum, e_shnum and e_strndx; in other > cases, each field in the initial entry is set to zero. An object > file does not have sections for these special indices: > > SHN_UNDEF > This value marks an undefined, missing, irrelevant, or other‐ > wise meaningless section reference. > > I interpret it like this: > > A section header table index **(e_shstrndx)** is a subscript > into this array. No, e_shstrndx is just one of the possible indices. It's just the string table that is used for section names. > Some > section header table indices are reserved: > the initial entry **(index 0)** > and the indices **from** SHN_LORESERVE **to** SHN_HIRESERVE **, > inclusive**. > **Such reserved indices, except SHN_XINDEX (0xffff), cannot be > used in e_shstrndx. > If e_shstrndx is SHN_XINDEX (0xffff) then the sh_link filed of > the initial ElfN_Shdr cannot contain such reserved indices.** > The **three fields in the** initial entry ** - sh_info, sh_size > and sh_link - can be** used in ELF extensions for e_phnum, e_shnum and > **e_shstrndx correspondingly**. **If they are not used then they are > set to zero. All other fields of the initial entry are set to zero.** > **The section header table entries with the following special > indices contain special values, and in the ELF file there are > no sections associated with such entries.** > > SHN_UNDEF > This value marks an undefined, missing, irrelevant, or other‐ > wise meaningless section reference. > **This index can be 0 in which case it means the initial > ElfN_Shdr with a special meaning described above.** > > Is such an interpretation correct? I'm not sure if your clarifications are correct. I don't think the section header extension mechanism is used for extending e_phum. The main thing that's not clear to me in the current description is whether the 256 reserved indices have still entries in the table (probably of type SHT_NULL). Cc:ing Mark, in case he has further comments. Thanks, Florian