mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-10 05:52:21 +08:00
bfd/
* elfxx-mips.c (mips_elf_calculate_relocation): Calculate GP and GP0 for all relocation types. Allow any type of relocation to refer to __gnu_local_gp. ld/testsuite/ * ld-mips-elf/no-shared-1-o32.s, ld-mips-elf/no-shared-1-o32.d, ld-mips-elf/no-shared-1-n32.d, ld-mips-elf/no-shared-1-n64.s, ld-mips-elf/no-shared-1-n64.d, ld-mips-elf/no-shared-1.ld: New tests. * ld-mips-elf/mips-elf.exp: Run them.
This commit is contained in:
@ -79,6 +79,15 @@ if { $linux_gnu } {
|
||||
run_dump_test "multi-got-hidden-2"
|
||||
}
|
||||
|
||||
# Test __gnu_local_gp accesses
|
||||
if { $linux_gnu } {
|
||||
run_dump_test "no-shared-1-o32"
|
||||
if { $has_newabi } {
|
||||
run_dump_test "no-shared-1-n32"
|
||||
run_dump_test "no-shared-1-n64"
|
||||
}
|
||||
}
|
||||
|
||||
if $has_newabi {
|
||||
run_dump_test "elf-rel-got-n32"
|
||||
run_dump_test "elf-rel-xgot-n32"
|
||||
|
25
ld/testsuite/ld-mips-elf/no-shared-1-n32.d
Normal file
25
ld/testsuite/ld-mips-elf/no-shared-1-n32.d
Normal file
@ -0,0 +1,25 @@
|
||||
#as: -mabi=n32 -EB
|
||||
#source: no-shared-1-o32.s
|
||||
#ld: -melf32btsmipn32 -T no-shared-1.ld
|
||||
#objdump: -dr -j.text -j.data -j.got
|
||||
|
||||
.*
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
00050000 <__start>:
|
||||
50000: 3c020007 lui v0,0x7
|
||||
50004: 24428000 addiu v0,v0,-32768
|
||||
50008: 8f828018 lw v0,-32744\(gp\)
|
||||
5000c: 8f828018 lw v0,-32744\(gp\)
|
||||
#...
|
||||
Disassembly of section \.data:
|
||||
|
||||
00060000 <\.data>:
|
||||
60000: 00068000 .*
|
||||
#...
|
||||
Disassembly of section \.got:
|
||||
|
||||
00060010 <_GLOBAL_OFFSET_TABLE_>:
|
||||
60010: 00000000 80000000 00068000 .*
|
26
ld/testsuite/ld-mips-elf/no-shared-1-n64.d
Normal file
26
ld/testsuite/ld-mips-elf/no-shared-1-n64.d
Normal file
@ -0,0 +1,26 @@
|
||||
#as: -mabi=64 -EB
|
||||
#ld: -melf64btsmip -T no-shared-1.ld
|
||||
#objdump: -dr -j.text -j.data -j.got
|
||||
|
||||
.*
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
0000000000050000 <__start>:
|
||||
50000: 3c020007 lui v0,0x7
|
||||
50004: 64428000 daddiu v0,v0,-32768
|
||||
50008: df828020 ld v0,-32736\(gp\)
|
||||
5000c: df828020 ld v0,-32736\(gp\)
|
||||
#...
|
||||
Disassembly of section \.data:
|
||||
|
||||
0000000000060000 <\.data>:
|
||||
60000: 00000000 .*
|
||||
60004: 00068000 .*
|
||||
#...
|
||||
Disassembly of section \.got:
|
||||
|
||||
0000000000060010 <_GLOBAL_OFFSET_TABLE_>:
|
||||
\.\.\.
|
||||
60018: 80000000 00000000 00000000 00068000 .*
|
13
ld/testsuite/ld-mips-elf/no-shared-1-n64.s
Normal file
13
ld/testsuite/ld-mips-elf/no-shared-1-n64.s
Normal file
@ -0,0 +1,13 @@
|
||||
.abicalls
|
||||
.text
|
||||
.globl __start
|
||||
.ent __start
|
||||
__start:
|
||||
lui $2,%hi(__gnu_local_gp)
|
||||
daddiu $2,$2,%lo(__gnu_local_gp)
|
||||
ld $2,%got(__gnu_local_gp)($gp)
|
||||
ld $2,%call16(__gnu_local_gp)($gp)
|
||||
.end __start
|
||||
|
||||
.data
|
||||
.8byte __gnu_local_gp
|
24
ld/testsuite/ld-mips-elf/no-shared-1-o32.d
Normal file
24
ld/testsuite/ld-mips-elf/no-shared-1-o32.d
Normal file
@ -0,0 +1,24 @@
|
||||
#as: -mabi=32 -EB
|
||||
#ld: -melf32btsmip -T no-shared-1.ld
|
||||
#objdump: -dr -j.text -j.data -j.got
|
||||
|
||||
.*
|
||||
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
00050000 <__start>:
|
||||
50000: 3c020007 lui v0,0x7
|
||||
50004: 24428000 addiu v0,v0,-32768
|
||||
50008: 8f828018 lw v0,-32744\(gp\)
|
||||
5000c: 8f828018 lw v0,-32744\(gp\)
|
||||
#...
|
||||
Disassembly of section \.data:
|
||||
|
||||
00060000 <\.data>:
|
||||
60000: 00068000 .*
|
||||
#...
|
||||
Disassembly of section \.got:
|
||||
|
||||
00060010 <_GLOBAL_OFFSET_TABLE_>:
|
||||
60010: 00000000 80000000 00068000 .*
|
13
ld/testsuite/ld-mips-elf/no-shared-1-o32.s
Normal file
13
ld/testsuite/ld-mips-elf/no-shared-1-o32.s
Normal file
@ -0,0 +1,13 @@
|
||||
.abicalls
|
||||
.text
|
||||
.globl __start
|
||||
.ent __start
|
||||
__start:
|
||||
lui $2,%hi(__gnu_local_gp)
|
||||
addiu $2,$2,%lo(__gnu_local_gp)
|
||||
lw $2,%got(__gnu_local_gp)($gp)
|
||||
lw $2,%call16(__gnu_local_gp)($gp)
|
||||
.end __start
|
||||
|
||||
.data
|
||||
.4byte __gnu_local_gp
|
11
ld/testsuite/ld-mips-elf/no-shared-1.ld
Normal file
11
ld/testsuite/ld-mips-elf/no-shared-1.ld
Normal file
@ -0,0 +1,11 @@
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x50000;
|
||||
.text : { *(.text) }
|
||||
.MIPS.stubs : { *(.MIPS.stubs) }
|
||||
|
||||
. = 0x60000;
|
||||
.data : { *(.data) }
|
||||
_gp = ALIGN (16) + 0x7ff0;
|
||||
.got : { *(.got) }
|
||||
}
|
Reference in New Issue
Block a user