[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug gold/22914] Gold doesn't support .note.gnu.property section (NT_GNU
From: |
ccoutant at gmail dot com |
Subject: |
[Bug gold/22914] Gold doesn't support .note.gnu.property section (NT_GNU_PROPERTY_TYPE_0) |
Date: |
Thu, 21 Jun 2018 15:52:28 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=22914
--- Comment #1 from Cary Coutant <ccoutant at gmail dot com> ---
HJ,
The linux-abi document leaves a few things unspecified:
- Is the .note.gnu.property section SHF_ALLOC or not?
- Does it go in the PT_NOTE segment? Should it be placed at the
beginning of the segment?
- It says the .note.gnu.property section may be combined with other
note sections. (Is that true, or is it missing a "not"?) If the linker
combines it with other SHT_NOTE sections, does the name matter at all?
- Does the linker key off the name of the section, or does it need to
parse all SHT_NOTE sections looking for NT_GNU_PROPERTY_TYPE_0 and
"GNU"? (Neither option is attractive -- I'd much prefer using a custom
section type and program header type, like ARM, MIPS, and Itanium do
for their attributes sections. The linker and loader aren't meant to
be parsing note sections.)
- Where did we end up with note section alignment for 64-bit objects?
Is it still 4-byte aligned?
On Fri, Mar 2, 2018 at 8:31 AM, hjl.tools at gmail dot com
<address@hidden> wrote:
> https://sourceware.org/bugzilla/show_bug.cgi?id=22914
>
> Bug ID: 22914
> Summary: Gold doesn't support .note.gnu.property section
> (NT_GNU_PROPERTY_TYPE_0)
> Product: binutils
> Version: 2.31 (HEAD)
> Status: NEW
> Severity: enhancement
> Priority: P2
> Component: gold
> Assignee: ccoutant at gmail dot com
> Reporter: hjl.tools at gmail dot com
> CC: ian at airs dot com
> Target Milestone: ---
>
> .note.gnu.property section and NT_GNU_PROPERTY_TYPE_0 are specified in
> Linux Extensions to gABI:
>
> https://github.com/hjl-tools/linux-abi/wiki/linux-abi-draft.pdf
>
> address@hidden gold-2]$ cat x.S
> #ifndef NT_GNU_PROPERTY_TYPE_0
> # define NT_GNU_PROPERTY_TYPE_0 5
> #endif
>
> #ifndef GNU_PROPERTY_STACK_SIZE
> # define GNU_PROPERTY_STACK_SIZE 1
> #endif
>
> #if __SIZEOF_PTRDIFF_T__ == 8
> # define ALIGN 3
> #elif __SIZEOF_PTRDIFF_T__ == 4
> # define ALIGN 2
> #endif
>
> .section ".note.gnu.property", "a"
> .p2align ALIGN
>
> .long 1f - 0f /* name length */
> .long 5f - 2f /* data length */
> .long NT_GNU_PROPERTY_TYPE_0 /* note type */
> 0: .asciz "GNU" /* vendor name */
> 1:
> .p2align ALIGN
> 2: .long GNU_PROPERTY_STACK_SIZE /* pr_type. */
> .long 4f - 3f /* pr_datasz. */
> 3:
> .dc.a 0x800 /* Stack size. */
> 4:
> .p2align ALIGN
> 5:
> address@hidden gold-2]$ cat y.S
> #ifndef NT_GNU_PROPERTY_TYPE_0
> # define NT_GNU_PROPERTY_TYPE_0 5
> #endif
>
> #ifndef GNU_PROPERTY_NO_COPY_ON_PROTECTED
> # define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
> #endif
>
> #if __SIZEOF_PTRDIFF_T__ == 8
> # define ALIGN 3
> #elif __SIZEOF_PTRDIFF_T__ == 4
> # define ALIGN 2
> #endif
>
> .section ".note.gnu.property", "a"
> .p2align ALIGN
> .long 1f - 0f /* name length */
> .long 3f - 2f /* data length */
> .long NT_GNU_PROPERTY_TYPE_0 /* note type */
> 0: .asciz "GNU" /* vendor name */
> 1:
> .p2align ALIGN
> 2: .long GNU_PROPERTY_NO_COPY_ON_PROTECTED /* pr_type. */
> .long 0 /* pr_datasz. */
> 3:
> .p2align ALIGN
> address@hidden gold-2]$ cat z.S
> #ifndef NT_GNU_PROPERTY_TYPE_0
> # define NT_GNU_PROPERTY_TYPE_0 5
> #endif
>
> #ifndef GNU_PROPERTY_STACK_SIZE
> # define GNU_PROPERTY_STACK_SIZE 1
> #endif
>
> #ifndef GNU_PROPERTY_NO_COPY_ON_PROTECTED
> # define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
> #endif
>
> #if __SIZEOF_PTRDIFF_T__ == 8
> # define ALIGN 3
> #elif __SIZEOF_PTRDIFF_T__ == 4
> # define ALIGN 2
> #endif
>
> .section ".note.gnu.property", "a"
> .p2align ALIGN
> .long 1f - 0f /* name length */
> .long 5f - 2f /* data length */
> .long NT_GNU_PROPERTY_TYPE_0 /* note type */
> 0: .asciz "GNU" /* vendor name */
> 1:
> .p2align ALIGN
> 2: .long GNU_PROPERTY_STACK_SIZE /* pr_type. */
> .long 4f - 3f /* pr_datasz. */
> 3:
> .dc.a 0x111100 /* Stack size. */
> 4:
> .p2align ALIGN
> .long GNU_PROPERTY_NO_COPY_ON_PROTECTED /* pr_type. */
> .long 0 /* pr_datasz. */
> .p2align ALIGN
> 5:
> address@hidden gold-2]$ cat bar.c
> void
> _start (void)
> {
> }
> address@hidden gold-2]$ make
> gcc -B./ -c -o x.o x.S
> gcc -B./ -c -o y.o y.S
> gcc -B./ -c -o z.o z.S
> gcc -B./ -c -o bar.o bar.c
> ./ld -o x x.o y.o z.o bar.o
> ld -o y x.o y.o z.o bar.o
> readelf -n x y
>
> File: x
>
> Displaying notes found in: .note.gnu.property
> Owner Data size Description
> GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
> Properties: stack size: 0x800
> GNU 0x00000008 NT_GNU_PROPERTY_TYPE_0
> Properties: no copy on protected
> GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
> Properties: stack size: 0x111100
> no copy on protected
>
> Displaying notes found in: .note.gnu.gold-version
> Owner Data size Description
> GNU 0x00000009 NT_GNU_GOLD_VERSION (gold version)
> Version: gold 1.15
>
> File: y
>
> Displaying notes found in: .note.gnu.property
> Owner Data size Description
> GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
> Properties: stack size: 0x111100
> no copy on protected
> address@hidden gold-2]$
>
> --
> You are receiving this mail because:
> You are the assignee for the bug.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug gold/22914] Gold doesn't support .note.gnu.property section (NT_GNU_PROPERTY_TYPE_0),
ccoutant at gmail dot com <=