From: H.J. Lu Date: Wed, 3 Oct 2018 21:11:43 +0000 (-0700) Subject: ELF: Add testcases for PR ld/23658 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fb9bbfd7f2d39a1d4850fcf0f63ef1f077f55e4b;p=binutils-gdb.git ELF: Add testcases for PR ld/23658 Add testcases to verify that all SHT_NOTE sections with the same section alignment are placed in a single PT_NOTE segment. PR ld/23658 * testsuite/ld-elf/pr23658-1.d: New file. * testsuite/ld-elf/pr23658-1a.s: Likewise. * testsuite/ld-elf/pr23658-1b.s: Likewise. * testsuite/ld-elf/pr23658-1c.s: Likewise. * testsuite/ld-elf/pr23658-1d.s: Likewise. * testsuite/ld-elf/pr23658-2.rd: Likewise. * testsuite/ld-elf/pr23658-3.d: Likewise. * testsuite/ld-elf/pr23658-3.s: Likewise. * testsuite/ld-elf/pr23658-3.t: Likewise. * testsuite/ld-elf/shared.exp: Run PR ld/23658 tests. --- diff --git a/ld/ChangeLog b/ld/ChangeLog index f17a8f27d8a..091d9f26291 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,17 @@ +2018-10-03 H.J. Lu + + PR ld/23658 + * testsuite/ld-elf/pr23658-1.d: New file. + * testsuite/ld-elf/pr23658-1a.s: Likewise. + * testsuite/ld-elf/pr23658-1b.s: Likewise. + * testsuite/ld-elf/pr23658-1c.s: Likewise. + * testsuite/ld-elf/pr23658-1d.s: Likewise. + * testsuite/ld-elf/pr23658-2.rd: Likewise. + * testsuite/ld-elf/pr23658-3.d: Likewise. + * testsuite/ld-elf/pr23658-3.s: Likewise. + * testsuite/ld-elf/pr23658-3.t: Likewise. + * testsuite/ld-elf/shared.exp: Run PR ld/23658 tests. + 2018-10-03 H.J. Lu PR ld/23658 diff --git a/ld/testsuite/ld-elf/pr23658-1.d b/ld/testsuite/ld-elf/pr23658-1.d new file mode 100644 index 00000000000..252fb872ede --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-1.d @@ -0,0 +1,16 @@ +#source: pr23658-1a.s +#source: pr23658-1b.s +#source: pr23658-1c.s +#source: pr23658-1d.s +#source: start.s +#ld: --build-id +#readelf: -l --wide +# Since generic linker targets don't place SHT_NOTE sections as orphan, +# SHT_NOTE sections aren't grouped nor sorted. +#xfail: cr16-* crx-* d30v-* dlx-* fr30-* frv-* iq2000-* +#xfail: m68hc12-* mn10200-* moxie-* mt-* msp430-* pj-* + +#... + +[0-9]+ +\.note\.4 \.note\.1 + + +[0-9]+ +\.note.gnu.build-id \.note\.2 .note\.3 + +#pass diff --git a/ld/testsuite/ld-elf/pr23658-1a.s b/ld/testsuite/ld-elf/pr23658-1a.s new file mode 100644 index 00000000000..bc34f868fe8 --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-1a.s @@ -0,0 +1,21 @@ + .text + .global foo +foo: + .dc.a 0 + + .section ".note.4", "a" + .p2align 3 + .long .L1 - .L0 /* name length. */ + .long .L3 - .L1 /* data length. */ + .long 123456 /* note type. */ +.L0: + .asciz "GNU" /* vendor name. */ +.L1: + .p2align 3 + .long 0 /* pr_type. */ + .long .L5 - .L4 /* pr_datasz. */ +.L4: + .zero 0x10 +.L5: + .p2align 3 +.L3: diff --git a/ld/testsuite/ld-elf/pr23658-1b.s b/ld/testsuite/ld-elf/pr23658-1b.s new file mode 100644 index 00000000000..3b44b42df73 --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-1b.s @@ -0,0 +1,16 @@ + .section ".note.2", "a" + .p2align 2 + .long .L1 - .L0 /* name length. */ + .long .L3 - .L1 /* data length. */ + .long 12345 /* note type. */ +.L0: + .asciz "GNU" /* vendor name. */ +.L1: + .p2align 2 + .long 0 /* pr_type. */ + .long .L5 - .L4 /* pr_datasz. */ +.L4: + .zero 0x10 +.L5: + .p2align 2 +.L3: diff --git a/ld/testsuite/ld-elf/pr23658-1c.s b/ld/testsuite/ld-elf/pr23658-1c.s new file mode 100644 index 00000000000..fb218ce3110 --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-1c.s @@ -0,0 +1,16 @@ + .section ".note.1", "a" + .p2align 3 + .long .L1 - .L0 /* name length. */ + .long .L3 - .L1 /* data length. */ + .long 12345 /* note type. */ +.L0: + .asciz "GNU" /* vendor name. */ +.L1: + .p2align 3 + .long 0 /* pr_type. */ + .long .L5 - .L4 /* pr_datasz. */ +.L4: + .zero 0x10 +.L5: + .p2align 3 +.L3: diff --git a/ld/testsuite/ld-elf/pr23658-1d.s b/ld/testsuite/ld-elf/pr23658-1d.s new file mode 100644 index 00000000000..93fe502fb3a --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-1d.s @@ -0,0 +1,16 @@ + .section ".note.3", "a" + .p2align 2 + .long .L1 - .L0 /* name length. */ + .long .L3 - .L1 /* data length. */ + .long 12345 /* note type. */ +.L0: + .asciz "GNU" /* vendor name. */ +.L1: + .p2align 2 + .long 0 /* pr_type. */ + .long .L5 - .L4 /* pr_datasz. */ +.L4: + .zero 0x10 +.L5: + .p2align 2 +.L3: diff --git a/ld/testsuite/ld-elf/pr23658-2.rd b/ld/testsuite/ld-elf/pr23658-2.rd new file mode 100644 index 00000000000..9f89c4b40ae --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-2.rd @@ -0,0 +1,6 @@ +#... + +[0-9]+ +\.interp \.note.4 \.note.1 \.note.2 \.note.3.* +#... + +[0-9]+ +\.note\.4 \.note\.1 + + +[0-9]+ +\.note\.2 .note\.3 + +#pass diff --git a/ld/testsuite/ld-elf/pr23658-3.d b/ld/testsuite/ld-elf/pr23658-3.d new file mode 100644 index 00000000000..2f018aa1d2d --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-3.d @@ -0,0 +1,8 @@ +#as: -mx86-used-note=yes +#ld: -T pr23658-3.t -z noseparate-code +#nm: -B +#target: i?86-*-* x86_64-*-* + +#... +0+4000 D __FOO +#... diff --git a/ld/testsuite/ld-elf/pr23658-3.s b/ld/testsuite/ld-elf/pr23658-3.s new file mode 100644 index 00000000000..1d05efd858a --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-3.s @@ -0,0 +1,4 @@ + .data + .global baz +baz: + .word 0 diff --git a/ld/testsuite/ld-elf/pr23658-3.t b/ld/testsuite/ld-elf/pr23658-3.t new file mode 100644 index 00000000000..ffc3467911f --- /dev/null +++ b/ld/testsuite/ld-elf/pr23658-3.t @@ -0,0 +1,14 @@ +SECTIONS +{ + .data 0x1000 : + { + *(.data) + QUAD (__FOO); + } + + .foo 0x4000 : + { + PROVIDE (__FOO = .); + *(.foo) + } +} diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index cdb171d0d1b..c894d2196b6 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -49,6 +49,12 @@ if [istarget "sparc*-*-*"] { append AFLAGS_PIC " -K PIC" } +# GAS options to disable program property note. +set AFLAGS_NOTE "" +if { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } { + append AFLAGS_NOTE "-mx86-used-note=no" +} + # This target requires a non-default emulation for successful shared # library/executable builds. set LFLAGS "" @@ -1474,3 +1480,18 @@ if { [istarget "i?86-*-*"] ] \ ] } + +run_ld_link_tests [list \ + [list "Build pr23658.so" \ + "-shared" "" "$AFLAGS_PIC" \ + {pr23658-1a.s} {} "pr23658.so"] \ + [list \ + "Build pr23658-2" \ + "--dynamic-linker tmpdir/pr23658.so --no-as-needed tmpdir/pr23658.so" \ + "" \ + $AFLAGS_NOTE \ + { pr23658-1a.s pr23658-1b.s pr23658-1c.s pr23658-1d.s start.s } \ + {{readelf {-lW} pr23658-2.rd}} \ + "pr23658-2" \ + ] \ +]