[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Alignment and sizes of note sections in 64-bit ELF objects
- To: generic-abi@googlegroups.com, "H.J. Lu" <hjl.tools@gmail.com>
- Subject: Re: Alignment and sizes of note sections in 64-bit ELF objects
- From: Suprateeka R Hegde <hegdesmailbox@gmail.com>
- Date: Mon, 20 Nov 2017 20:57:28 +0530
- Authentication-results: sourceware.org; auth=none
- Cc: gnu-gabi@sourceware.org
- Delivered-to: listarch-gnu-gabi@sourceware.org
- Delivered-to: mailing list gnu-gabi@sourceware.org
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=reply-to:subject:to:references:from:organization:cc:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=z9aJ7jvVGHsAr51fBnmx5pSk24BneBrGM4ys04h88K4=; b=o/YaEtYpceIZ2DiB4g5O246PcZiS5JcX7abK6fGOikF3Ca5u0bhido7L7OsFZwn/uB NJlct6MgJwdbJ5mo0nWym3/ugHmr0RqRQx6H2u2xsGi0E6LxRxcfMvkEtBp96ciRNaf2 62XOSpq1XWGAWeJU97O6h6rGDNbHz9QeHAMaauLKQ1EDv9njUnA2xxID9KemAuDANVFY 32njIs97M9SuHYgnmnqid4cBcCuDAWK6JD2CcApRZeXcuJkhxO++R75BR/nmqLnyn9Ou mZH55Ofnag0wVHJJp6uKNQ+bBzlMqk0HDH4l+mRzFKbe1mQvxWJGjQFoi03H8Drd53ry FD0g==
- In-reply-to: <CAMe9rOp4tDf619hCJUMMjd=MGFobSEtNgddrczWR9trb6JishQ@mail.gmail.com>
- List-help: <mailto:gnu-gabi-help@sourceware.org>
- List-id: <gnu-gabi.sourceware.org>
- List-post: <mailto:gnu-gabi@sourceware.org>
- List-subscribe: <mailto:gnu-gabi-subscribe@sourceware.org>
- Mailing-list: contact gnu-gabi-help@sourceware.org; run by ezmlm
- Organization: HEGDESASPECT
- References: <CAMe9rOoWPk84b9HoeiJdF4B_X090jfQQXCyNUm1_R22uNSHOkw@mail.gmail.com> <CAOganjUx7N4qTEEM0DDdn0izhO_UPv9miB7w4O0abU=p4GmT0w@mail.gmail.com> <6de4d8f7-a08e-7aac-64d0-3e41795c9143@gmail.com> <CAMe9rOp4tDf619hCJUMMjd=MGFobSEtNgddrczWR9trb6JishQ@mail.gmail.com>
- Reply-to: hegdesmailbox@gmail.com
- Sender: gnu-gabi-owner@sourceware.org
- User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0
(I took a while to recollect the discussion)
On 16-Nov-2017 10:11 PM, H.J. Lu wrote:
> On Mon, Apr 3, 2017 at 11:48 AM, Suprateeka R Hegde
> <hegdesmailbox@gmail.com> wrote:
>> On 03-Apr-2017 08:49 PM, Ian Lance Taylor wrote:
>>> On Mon, Apr 3, 2017 at 8:16 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>>> According to gABI, in 64-bit objects, each note entry is an array of 8-bye
>>>> words in the format of the target processor. But I got
>>>>
>>>> [ 2] .note.ABI-tag NOTE 0000000000000254 000254
>>>> 000020 00 A 0 0 4
>>>> [ 3] .note.gnu.build-id NOTE 0000000000000274 000274
>>>> 000024 00 A 0 0 4
>>>>
>>>> on Linux/x86-64. .note.ABI-tag size is 32, but it isn't aligned at 8 bytes.
>>>> .note.gnu.build-id size is 36, which isn't multiple of 8 bytes. Should
>>>> note sections in 64-bit ELF objects be multiple of 8 bytes as well as
>>>> aligned to 8 bytes?
>>
>> On HP-UX, it is 8 byte alignment. And the size becomes multiple of 8
>> bytes automatically, as we ensure 8 byte alignment for the next note
>> entry. This is as per the gABI.
>>
>>> This is the comment I wrote in gold when I looked into this:
>>>
>>> // Authorities all agree that the values in a .note field should
>>> // be aligned on 4-byte boundaries for 32-bit binaries. However,
>>> // they differ on what the alignment is for 64-bit binaries.
>>> // The GABI says unambiguously they take 8-byte alignment:
>>> // http://sco.com/developers/gabi/latest/ch5.pheader.html#note_section
>>> // Other documentation says alignment should always be 4 bytes:
>>> // http://www.netbsd.org/docs/kernel/elf-notes.html#note-format
>>
>> Thats interesting. But why should it differ from GABI?
>>
>> May be because: In both ILP32 and LP64 model, integer is 4 bytes. And
>> the documentation says "integer" in parenthesis for the fields.
>>
>> For example:
>> Name Size
>> 4 bytes (integer)
>> Desc Size
>> 4 bytes (integer)
>>
>> In contrast to GABI, NetBSD seems to have attributed these fields with
>> "integer".
>>
>
> Linux has been using 4 byte alignment for .note.ABI-tag note and
> .note.gnu.build-id note in 64-bit objects. We can't change their
> alignment to 8 bytes. Can we add a footnote in gABI to address it?
It should be more clear than that. See below.
> In reality, this isn't a real issue since all notes in one PT_LOAD segment
> must have the same alignment which equals to p_align.
p_align of PT_LOAD or PT_NOTE?
> Note parser
> can use p_align of PT_LOAD segment for note alignment,
Why not p_align of PT_NOTE? p_align of PT_LOAD seems to be (on my
Ubuntu) set to the 2MiB pagesize value.
> instead of
> assuming alignment based on ELF file class.
The gABI description of ELF class based alignment may be because gABI
does not talk anything about PT_NOTE actually being part of PT_LOAD.
PT_NOTE could be a separate segment on its own outside PT_LOAD, though
almost all implementations make it part of PT_LOAD.
> BTW, should we document that all notes in one PT_LOAD segment
> must have the same alignment which equals to p_align?
Why not p_align of PT_NOTE? And p_align of PT_NOTE may be set to the
maximum of all sh_addralign of all SHT_NOTE that make up the PT_NOTE.
--
Supra