diff options
author | Matthew Fortune <matthew.fortune@imgtec.com> | 2015-06-11 10:16:19 +0100 |
---|---|---|
committer | Matthew Fortune <matthew.fortune@imgtec.com> | 2015-06-26 11:53:33 +0100 |
commit | a5499fa4649e4325cf46edfff2f24dae2fe2afef (patch) | |
tree | 72a8690da4187b1583e09a94e63554136d66a50e /ld | |
parent | 920d644c6377a0bf7419ae8a24bac6e101beb847 (diff) | |
download | gdb-a5499fa4649e4325cf46edfff2f24dae2fe2afef.zip gdb-a5499fa4649e4325cf46edfff2f24dae2fe2afef.tar.gz gdb-a5499fa4649e4325cf46edfff2f24dae2fe2afef.tar.bz2 |
Add support for DT_MIPS_RLD_MAP_REL.
This tag makes it possible to access the debug map when debugging position
independent executables.
bfd/
* elfxx-mips.c (_bfd_mips_elf_create_dynamic_sections): Use executable
instead of !shared to indicate an application vs shared library.
(_bfd_mips_elf_size_dynamic_sections): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Handle DT_MIPS_RLD_MAP_REL.
(_bfd_mips_elf_get_target_dtag): Likewise.
binutils/
* readelf.c (get_mips_dynamic_type): Handle DT_MIPS_RLD_MAP_REL.
include/
* elf/mips.h (DT_MIPS_RLD_MAP_REL): New macro.
ld/testsuite/
* ld-mips-elf/pic-and-nonpic-3b.ad: Adjust for extra dynamic tag.
* ld-mips-elf/pic-and-nonpic-4b.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-5b.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-n32.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-n64.ad: Likewise.
* ld-mips-elf/pic-and-nonpic-6-o32.ad: Likewise.
* ld-mips-elf/tlsdyn-o32-1.d: Likewise.
* ld-mips-elf/tlsdyn-o32-1.got: Likewise.
* ld-mips-elf/tlsdyn-o32-2.d: Likewise.
* ld-mips-elf/tlsdyn-o32-2.got: Likewise.
* ld-mips-elf/tlsdyn-o32-3.d: Likewise.
* ld-mips-elf/tlsdyn-o32-3.got: Likewise.
* ld-mips-elf/tlsdyn-o32.d: Likewise.
* ld-mips-elf/tlsdyn-o32.got: Likewise.
* ld-mips-elf/pie-n32.d: New file.
* ld-mips-elf/pie-n64.d: Likewise.
* ld-mips-elf/pie-o32.d: Likewise.
* ld-mips-elf/pie.s: Likewise.
* ld-mips-elf/mips-elf.exp: Add new tests.
Diffstat (limited to 'ld')
20 files changed, 123 insertions, 11 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 8a6121e..63f1b7b 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,25 @@ +2015-06-26 Matthew Fortune <matthew.fortune@imgtec.com> + + * ld-mips-elf/pic-and-nonpic-3b.ad: Adjust for extra dynamic tag. + * ld-mips-elf/pic-and-nonpic-4b.ad: Likewise. + * ld-mips-elf/pic-and-nonpic-5b.ad: Likewise. + * ld-mips-elf/pic-and-nonpic-6-n32.ad: Likewise. + * ld-mips-elf/pic-and-nonpic-6-n64.ad: Likewise. + * ld-mips-elf/pic-and-nonpic-6-o32.ad: Likewise. + * ld-mips-elf/tlsdyn-o32-1.d: Likewise. + * ld-mips-elf/tlsdyn-o32-1.got: Likewise. + * ld-mips-elf/tlsdyn-o32-2.d: Likewise. + * ld-mips-elf/tlsdyn-o32-2.got: Likewise. + * ld-mips-elf/tlsdyn-o32-3.d: Likewise. + * ld-mips-elf/tlsdyn-o32-3.got: Likewise. + * ld-mips-elf/tlsdyn-o32.d: Likewise. + * ld-mips-elf/tlsdyn-o32.got: Likewise. + * ld-mips-elf/pie-n32.d: New file. + * ld-mips-elf/pie-n64.d: Likewise. + * ld-mips-elf/pie-o32.d: Likewise. + * ld-mips-elf/pie.s: Likewise. + * ld-mips-elf/mips-elf.exp: Add new tests. + 2015-06-25 H.J. Lu <hongjiu.lu@intel.com> * ld-elf/strtab.d: Only run on *-*-linux* and *-*-gnu* targets. diff --git a/ld/testsuite/ld-mips-elf/mips-elf.exp b/ld/testsuite/ld-mips-elf/mips-elf.exp index 7057e2f..923d8df 100644 --- a/ld/testsuite/ld-mips-elf/mips-elf.exp +++ b/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -186,6 +186,15 @@ if { $linux_gnu } { } } +# Test PIE debug dynamic tags +if { $linux_gnu } { + run_dump_test "pie-o32" + if { $has_newabi } { + run_dump_test "pie-n32" + run_dump_test "pie-n64" + } +} + if $has_newabi { if { $embedded_elf } { run_dump_test "elf-rel-got-n32-embed" \ diff --git a/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.ad b/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.ad index 227d15d..9f5ca90 100644 --- a/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.ad +++ b/ld/testsuite/ld-mips-elf/pic-and-nonpic-3b.ad @@ -8,6 +8,7 @@ Dynamic section at offset .* contains .*: 0x0000000a \(STRSZ\) .* 0x0000000b \(SYMENT\) .* 0x70000016 \(MIPS_RLD_MAP\) * 0x80000 + 0x70000035 \(MIPS_RLD_MAP_REL\) .* 0x00000015 \(DEBUG\) * 0x0 0x00000003 \(PLTGOT\) * 0xa0000 0x70000001 \(MIPS_RLD_VERSION\) * 1 diff --git a/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.ad b/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.ad index e14a2d3..1bea044 100644 --- a/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.ad +++ b/ld/testsuite/ld-mips-elf/pic-and-nonpic-4b.ad @@ -8,6 +8,7 @@ Dynamic section at offset .* contains .*: 0x0000000a \(STRSZ\) .* 0x0000000b \(SYMENT\) .* 0x70000016 \(MIPS_RLD_MAP\) * 0x80000 + 0x70000035 \(MIPS_RLD_MAP_REL\) .* 0x00000015 \(DEBUG\) * 0x0 0x00000003 \(PLTGOT\) * 0xa0000 0x00000011 \(REL\) * 0x43000 diff --git a/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.ad b/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.ad index d7a672f..972ace1 100644 --- a/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.ad +++ b/ld/testsuite/ld-mips-elf/pic-and-nonpic-5b.ad @@ -9,6 +9,7 @@ Dynamic section at offset .* contains .*: 0x0000000a \(STRSZ\) .* 0x0000000b \(SYMENT\) .* 0x70000016 \(MIPS_RLD_MAP\) * 0x80000 + 0x70000035 \(MIPS_RLD_MAP_REL\) .* 0x00000015 \(DEBUG\) * 0x0 0x00000016 \(TEXTREL\) * 0x0 0x00000003 \(PLTGOT\) * 0xa0000 diff --git a/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.ad b/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.ad index 5df3c6c..28ee34a 100644 --- a/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.ad +++ b/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n32.ad @@ -8,6 +8,7 @@ Dynamic section at offset .* contains .*: 0x0000000a \(STRSZ\) .* 0x0000000b \(SYMENT\) .* 0x70000016 \(MIPS_RLD_MAP\) * 0x80000 + 0x70000035 \(MIPS_RLD_MAP_REL\) .* 0x00000015 \(DEBUG\) * 0x0 0x00000003 \(PLTGOT\) * 0xa0000 0x00000011 \(REL\) * 0x43000 diff --git a/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.ad b/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.ad index d8fc300..7b2ce4c 100644 --- a/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.ad +++ b/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-n64.ad @@ -8,6 +8,7 @@ Dynamic section at offset .* contains .*: 0x0+0000000a \(STRSZ\) .* 0x0+0000000b \(SYMENT\) .* 0x0+70000016 \(MIPS_RLD_MAP\) * 0x80000 + 0x0+70000035 \(MIPS_RLD_MAP_REL\) .* 0x0+00000015 \(DEBUG\) * 0x0 0x0+00000003 \(PLTGOT\) * 0xa0000 0x0+00000011 \(REL\) * 0x43000 diff --git a/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.ad b/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.ad index 5df3c6c..28ee34a 100644 --- a/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.ad +++ b/ld/testsuite/ld-mips-elf/pic-and-nonpic-6-o32.ad @@ -8,6 +8,7 @@ Dynamic section at offset .* contains .*: 0x0000000a \(STRSZ\) .* 0x0000000b \(SYMENT\) .* 0x70000016 \(MIPS_RLD_MAP\) * 0x80000 + 0x70000035 \(MIPS_RLD_MAP_REL\) .* 0x00000015 \(DEBUG\) * 0x0 0x00000003 \(PLTGOT\) * 0xa0000 0x00000011 \(REL\) * 0x43000 diff --git a/ld/testsuite/ld-mips-elf/pie-n32.d b/ld/testsuite/ld-mips-elf/pie-n32.d new file mode 100644 index 0000000..bcfbcd2 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pie-n32.d @@ -0,0 +1,23 @@ +#source: pie.s +#as: -march=from-abi -mabi=n32 -EB +#ld: -melf32btsmipn32 -pie +#readelf: -d + +Dynamic section at offset 0x180 contains 16 entries: + Tag * Type * Name/Value + 0x00000004 \(HASH\) * 0x228 + 0x00000005 \(STRTAB\) * 0x304 + 0x00000006 \(SYMTAB\) * 0x264 + 0x0000000a \(STRSZ\) * 72 \(bytes\) + 0x0000000b \(SYMENT\) * 16 \(bytes\) + 0x70000035 \(MIPS_RLD_MAP_REL\) * 0x101b8 + 0x00000015 \(DEBUG\) * 0x0 + 0x00000003 \(PLTGOT\) * 0x10370 + 0x70000001 \(MIPS_RLD_VERSION\) * 1 + 0x70000005 \(MIPS_FLAGS\) * NOTPOT + 0x70000006 \(MIPS_BASE_ADDRESS\) * 0x0 + 0x7000000a \(MIPS_LOCAL_GOTNO\) * 2 + 0x70000011 \(MIPS_SYMTABNO\) * 10 + 0x70000012 \(MIPS_UNREFEXTNO\) * 13 + 0x70000013 \(MIPS_GOTSYM\) * 0xa + 0x00000000 \(NULL\) * 0x0 diff --git a/ld/testsuite/ld-mips-elf/pie-n64.d b/ld/testsuite/ld-mips-elf/pie-n64.d new file mode 100644 index 0000000..bf2238c --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pie-n64.d @@ -0,0 +1,23 @@ +#source: pie.s +#as: -march=from-abi -mabi=64 -EB +#ld: -melf64btsmip -pie +#readelf: -d + +Dynamic section at offset 0x208 contains 16 entries: + Tag * Type * Name/Value + 0x0+00000004 \(HASH\) * 0x358 + 0x0+00000005 \(STRTAB\) * 0x488 + 0x0+00000006 \(SYMTAB\) * 0x398 + 0x0+0000000a \(STRSZ\) * 72 \(bytes\) + 0x0+0000000b \(SYMENT\) * 24 \(bytes\) + 0x0+70000035 \(MIPS_RLD_MAP_REL\) * 0x102a8 + 0x0+00000015 \(DEBUG\) * 0x0 + 0x0+00000003 \(PLTGOT\) * 0x10510 + 0x0+70000001 \(MIPS_RLD_VERSION\) * 1 + 0x0+70000005 \(MIPS_FLAGS\) * NOTPOT + 0x0+70000006 \(MIPS_BASE_ADDRESS\) * 0x0 + 0x0+7000000a \(MIPS_LOCAL_GOTNO\) * 2 + 0x0+70000011 \(MIPS_SYMTABNO\) * 10 + 0x0+70000012 \(MIPS_UNREFEXTNO\) * 13 + 0x0+70000013 \(MIPS_GOTSYM\) * 0xa + 0x0+00000000 \(NULL\) * 0x0 diff --git a/ld/testsuite/ld-mips-elf/pie-o32.d b/ld/testsuite/ld-mips-elf/pie-o32.d new file mode 100644 index 0000000..5a9a308 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pie-o32.d @@ -0,0 +1,23 @@ +#source: pie.s +#as: -mabi=32 -EB +#ld: -melf32btsmip -pie +#readelf: -d + +Dynamic section at offset 0x178 contains 16 entries: + Tag * Type * Name/Value + 0x00000004 \(HASH\) * 0x220 + 0x00000005 \(STRTAB\) * 0x2fc + 0x00000006 \(SYMTAB\) * 0x25c + 0x0000000a \(STRSZ\) * 72 \(bytes\) + 0x0000000b \(SYMENT\) * 16 \(bytes\) + 0x70000035 \(MIPS_RLD_MAP_REL\) * 0x101c0 + 0x00000015 \(DEBUG\) * 0x0 + 0x00000003 \(PLTGOT\) * 0x10370 + 0x70000001 \(MIPS_RLD_VERSION\) * 1 + 0x70000005 \(MIPS_FLAGS\) * NOTPOT + 0x70000006 \(MIPS_BASE_ADDRESS\) * 0x0 + 0x7000000a \(MIPS_LOCAL_GOTNO\) * 2 + 0x70000011 \(MIPS_SYMTABNO\) * 10 + 0x70000012 \(MIPS_UNREFEXTNO\) * 13 + 0x70000013 \(MIPS_GOTSYM\) * 0xa + 0x00000000 \(NULL\) * 0x0 diff --git a/ld/testsuite/ld-mips-elf/pie.s b/ld/testsuite/ld-mips-elf/pie.s new file mode 100644 index 0000000..c7f2b20 --- /dev/null +++ b/ld/testsuite/ld-mips-elf/pie.s @@ -0,0 +1,6 @@ + .abicalls + .global __start + .ent __start +__start: + jr $31 + .end __start diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d index ca52d8b..6b8f96c 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d @@ -5,7 +5,7 @@ Disassembly of section .text: .* <__start>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7c40 addiu gp,gp,31808 + .*: 279c7c30 addiu gp,gp,31792 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) @@ -55,7 +55,7 @@ Disassembly of section .text: .* <other>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7b80 addiu gp,gp,31616 + .*: 279c7b70 addiu gp,gp,31600 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got index 163aeb5..1dbcab4 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got @@ -13,6 +13,6 @@ OFFSET TYPE VALUE Contents of section .got: - 10000020 00000000 80000000 0040047c 00000000 ................ + 10000020 00000000 80000000 0040048c 00000000 .........@...... 10000030 00000000 00000000 00000000 00000000 ................ 10000040 00000000 00000001 00000000 ............ diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d index ca52d8b..6b8f96c 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d @@ -5,7 +5,7 @@ Disassembly of section .text: .* <__start>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7c40 addiu gp,gp,31808 + .*: 279c7c30 addiu gp,gp,31792 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) @@ -55,7 +55,7 @@ Disassembly of section .text: .* <other>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7b80 addiu gp,gp,31616 + .*: 279c7b70 addiu gp,gp,31600 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got index 80e9148..fb50635 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got @@ -13,6 +13,6 @@ OFFSET TYPE VALUE Contents of section .got: - 10000020 00000000 80000000 0040047c 00000000 .* + 10000020 00000000 80000000 0040048c 00000000 .* 10000030 00000000 00000000 00000000 00000000 .* 10000040 00000000 00000001 00000000 .* diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d index 78eb882..758a4f2 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d @@ -5,7 +5,7 @@ Disassembly of section .text: .* <other>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7c40 addiu gp,gp,31808 + .*: 279c7c30 addiu gp,gp,31792 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) @@ -51,7 +51,7 @@ Disassembly of section .text: .* <__start>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7b90 addiu gp,gp,31632 + .*: 279c7b80 addiu gp,gp,31616 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got index a1191e7..4a97099 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got @@ -13,6 +13,6 @@ OFFSET TYPE VALUE Contents of section .got: - 10000020 00000000 80000000 0040052c 00000000 .* + 10000020 00000000 80000000 0040053c 00000000 .* 10000030 00000000 00000000 00000000 00000000 .* 10000040 00000000 00000001 00000000 .* diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32.d index 699035b..ea50960 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32.d +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32.d @@ -5,7 +5,7 @@ Disassembly of section .text: .* <__start>: .*: 3c1c0fc0 lui gp,0xfc0 - .*: 279c7bf0 addiu gp,gp,31728 + .*: 279c7be0 addiu gp,gp,31712 .*: 0399e021 addu gp,gp,t9 .*: 27bdfff0 addiu sp,sp,-16 .*: afbe0008 sw s8,8\(sp\) diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32.got index a1587a6..7942188 100644 --- a/ld/testsuite/ld-mips-elf/tlsdyn-o32.got +++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32.got @@ -13,6 +13,6 @@ OFFSET TYPE VALUE Contents of section .got: - 10000020 00000000 80000000 004004cc 00000000 ................ + 10000020 00000000 80000000 004004dc 00000000 .........@...... 10000030 00000000 00000000 00000001 00000000 ................ 10000040 00000000 00000000 00000000 ............ |