diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2013-05-03 15:19:27 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@linux-mips.org> | 2013-05-03 15:19:27 +0000 |
commit | cde7cb0129a884a060b99c7c83e8f5c9af728b0a (patch) | |
tree | 5200a969a7d2373802a23d78f8160613a192603f /ld/testsuite/ld-mips-elf | |
parent | a5382c42bb58229b90b373efffc3a91a8e1bd044 (diff) | |
download | gdb-cde7cb0129a884a060b99c7c83e8f5c9af728b0a.zip gdb-cde7cb0129a884a060b99c7c83e8f5c9af728b0a.tar.gz gdb-cde7cb0129a884a060b99c7c83e8f5c9af728b0a.tar.bz2 |
gold/
PR ld/15365
* layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN.
ld/
PR ld/15365
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
Restrict __ehdr_start's export class to no less than STV_HIDDEN.
ld/testsuite/
PR ld/15365
* ld-elf/ehdr_start.d: Expect __ehdr_start to be STB_LOCAL.
* ld-mips-elf/ehdr_start-1.nd: New test.
* ld-mips-elf/ehdr_start-2.nd: New test.
* ld-mips-elf/ehdr_start-1.ld: New test linker script.
* ld-mips-elf/ehdr_start-2.ld: New test linker script.
* ld-mips-elf/ehdr_start-new.s: New test source.
* ld-mips-elf/ehdr_start-o32.s: New test source.
* ld-mips-elf/mips-elf.exp: Run the new tests.
Diffstat (limited to 'ld/testsuite/ld-mips-elf')
-rw-r--r-- | ld/testsuite/ld-mips-elf/ehdr_start-1.ld | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/ehdr_start-1.nd | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/ehdr_start-2.ld | 10 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/ehdr_start-2.nd | 4 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/ehdr_start-new.s | 13 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/ehdr_start-o32.s | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-mips-elf/mips-elf.exp | 25 |
7 files changed, 79 insertions, 0 deletions
diff --git a/ld/testsuite/ld-mips-elf/ehdr_start-1.ld b/ld/testsuite/ld-mips-elf/ehdr_start-1.ld new file mode 100644 index 0000000..0485b05 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/ehdr_start-1.ld @@ -0,0 +1,9 @@ +ENTRY (__start) +SECTIONS +{ + . = 0x12300000 + SIZEOF_HEADERS; + .text : { *(.text) } + . = 0x23400000; + HIDDEN (_gp = ALIGN (16) + 0x7ff0); + .got : { *(.got) } +} diff --git a/ld/testsuite/ld-mips-elf/ehdr_start-1.nd b/ld/testsuite/ld-mips-elf/ehdr_start-1.nd new file mode 100644 index 0000000..9496b7d --- /dev/null +++ b/ld/testsuite/ld-mips-elf/ehdr_start-1.nd @@ -0,0 +1,4 @@ +Symbol table '\.symtab' contains [0-9]+ entries: +#... + *[0-9]+: 0*12300000 +0 (?:NOTYPE|OBJECT) +LOCAL +DEFAULT +[0-9]+ __ehdr_start +#pass diff --git a/ld/testsuite/ld-mips-elf/ehdr_start-2.ld b/ld/testsuite/ld-mips-elf/ehdr_start-2.ld new file mode 100644 index 0000000..5d5e183 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/ehdr_start-2.ld @@ -0,0 +1,10 @@ +ENTRY (__start) +SECTIONS +{ + . = 0x12300000 + SIZEOF_HEADERS; + .text : { *(.text) } + . = 0x23400000; + __ehdr_start = .; + HIDDEN (_gp = ALIGN (16) + 0x7ff0); + .got : { *(.got) } +} diff --git a/ld/testsuite/ld-mips-elf/ehdr_start-2.nd b/ld/testsuite/ld-mips-elf/ehdr_start-2.nd new file mode 100644 index 0000000..986c2a2 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/ehdr_start-2.nd @@ -0,0 +1,4 @@ +Symbol table '\.symtab' contains [0-9]+ entries: +#... + *[0-9]+: 0*23400000 +0 (?:NOTYPE|OBJECT) +LOCAL +DEFAULT +[0-9]+ __ehdr_start +#pass diff --git a/ld/testsuite/ld-mips-elf/ehdr_start-new.s b/ld/testsuite/ld-mips-elf/ehdr_start-new.s new file mode 100644 index 0000000..5ee00dc --- /dev/null +++ b/ld/testsuite/ld-mips-elf/ehdr_start-new.s @@ -0,0 +1,13 @@ + .abicalls + .text + .weak __ehdr_start + .globl __start + .ent __start + .frame $29, 0, $31 + .mask 0x00000000, 0 +__start: + .cplocal $2 + .cpsetup $t9, $zero, __start + lw $2, __ehdr_start + jr $31 + .end __start diff --git a/ld/testsuite/ld-mips-elf/ehdr_start-o32.s b/ld/testsuite/ld-mips-elf/ehdr_start-o32.s new file mode 100644 index 0000000..0973447 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/ehdr_start-o32.s @@ -0,0 +1,14 @@ + .abicalls + .text + .weak __ehdr_start + .globl __start + .ent __start + .frame $29, 0, $31 + .mask 0x00000000, 0 +__start: + .set noreorder + .cpload $25 + .set reorder + lw $2, __ehdr_start + jr $31 + .end __start diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index 902ae00..97e0c2c 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -709,3 +709,28 @@ foreach { abi } $abis { "readelf -A export-class-call16-${abi}.gd"] \ "export-class-call16-${abi}.so"]] } + +# Magic __ehdr_start symbol tests. +set abis [concat o32 [expr {$has_newabi ? "n32 n64" : ""}]] +foreach { abi } $abis { + set suff [string map {o32 o32 n32 new n64 new} $abi] + run_ld_link_tests [list \ + [list \ + "MIPS magic __ehdr_start symbol test 1 ($abi)" \ + "$abi_ldflags($abi) -T ehdr_start-1.ld" "" \ + "$abi_asflags($abi)" \ + [list ehdr_start-${suff}.s] \ + [list "readelf -s ehdr_start-1.nd"] \ + "ehdr_start-1-${abi}"]] + if [regexp "(?:n32|n64)" "$abi"] { + setup_kfail "mips*-*-*" "ld/15428" + } + run_ld_link_tests [list \ + [list \ + "MIPS magic __ehdr_start symbol test 2 ($abi)" \ + "$abi_ldflags($abi) -T ehdr_start-2.ld" "" \ + "$abi_asflags($abi)" \ + [list ehdr_start-${suff}.s] \ + [list "readelf -s ehdr_start-2.nd"] \ + "ehdr_start-2-${abi}"]] +} |