RFC: [PATCH] ELF: Don't require section header on ELF objects
Alan Modra
amodra@gmail.com
Mon Mar 9 22:34:49 GMT 2020
More information about the Binutils mailing list
Mon Mar 9 22:34:49 GMT 2020
- Previous message (by thread): RFC: [PATCH] ELF: Don't require section header on ELF objects
- Next message (by thread): RFC: [PATCH] ELF: Don't require section header on ELF objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, Mar 10, 2020 at 12:24:51AM +1030, Kaylee Blake wrote: > On 10/3/20 12:14 am, Alan Modra wrote: > > On Mon, Mar 09, 2020 at 11:24:44PM +1030, Kaylee Blake wrote: > >> On 9/3/20 6:43 pm, Florian Weimer wrote: > >>> In my opinion, it should NOT be possible to link against objects > >>> without section headers. Lack of section headers clearly marks the > >>> object as a run-time only object. This is useful if you want to > >>> prevent developers to create DT_NEEDED dependencies on internal > >>> libraries, for example. > > > > I agree. > > > >> For shared objects without debug symbols, the section header table is > >> ~2kB on average of redundant data. I'm also not a fan of the > >> inconsistency of having shared libraries that the dynamic linker is > >> perfectly happy to load, but ld can't link against, especially since > >> this seems like an oversight rather than an intended design decision. > > > > The ELF spec designed things that way. See figure 4.1 which I'll try > > to represent in text. > > > > Figure 4-1: Object File Format > > > > |----------------------| |----------------------| > > | ELF Header | | ELF Header | > > |----------------------| |----------------------| > > | Program header table | | Program header table | > > | optional | | required | > > |----------------------| |----------------------| > > | Section 1 | | Segment 1 | > > |----------------------| |----------------------| > > | ... | | Segment 2 | > > |----------------------| |----------------------| > > | Section n | | Segment 3 | > > |----------------------| |----------------------| > > | ... | | ... | > > |----------------------| |----------------------| > > | Section header table | | Section header table | > > | required | | optional | > > |----------------------| |----------------------| > > Linking View Execution View > > > > I had interpreted that table in combination to various other references > to which things are required vs optional in shared objects as meaning > that the "execution view" applied to executables and shared objects, and > the "linking view" applied to relocatable objects. You're saying that > that table should be interpreted as saying that if a shared object is to > be linkable, the spec is requiring it to have both sets of headers? Yes. Just below the table: "Files used during linking must have a section header table". -- Alan Modra Australia Development Lab, IBM
- Previous message (by thread): RFC: [PATCH] ELF: Don't require section header on ELF objects
- Next message (by thread): RFC: [PATCH] ELF: Don't require section header on ELF objects
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list