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.
This commit is contained in:
parent
34c0fc000f
commit
fb9bbfd7f2
14
ld/ChangeLog
14
ld/ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
2018-10-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
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 <hongjiu.lu@intel.com>
|
2018-10-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
PR ld/23658
|
PR ld/23658
|
||||||
|
|
|
@ -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
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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
|
|
@ -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
|
||||||
|
#...
|
|
@ -0,0 +1,4 @@
|
||||||
|
.data
|
||||||
|
.global baz
|
||||||
|
baz:
|
||||||
|
.word 0
|
|
@ -0,0 +1,14 @@
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
.data 0x1000 :
|
||||||
|
{
|
||||||
|
*(.data)
|
||||||
|
QUAD (__FOO);
|
||||||
|
}
|
||||||
|
|
||||||
|
.foo 0x4000 :
|
||||||
|
{
|
||||||
|
PROVIDE (__FOO = .);
|
||||||
|
*(.foo)
|
||||||
|
}
|
||||||
|
}
|
|
@ -49,6 +49,12 @@ if [istarget "sparc*-*-*"] {
|
||||||
append AFLAGS_PIC " -K PIC"
|
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
|
# This target requires a non-default emulation for successful shared
|
||||||
# library/executable builds.
|
# library/executable builds.
|
||||||
set LFLAGS ""
|
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" \
|
||||||
|
] \
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in New Issue