aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2014-06-03 10:55:29 +0930
committerAlan Modra <amodra@gmail.com>2014-06-03 10:55:29 +0930
commit397998fc32a34d3c8993ef46da45c3957a4dd402 (patch)
tree2dba3305c8567097b13505879d970299d2b9ad08 /ld
parent61f5c66f62502f33e1f2441a043bd29bb3ad6ea5 (diff)
downloadgdb-397998fc32a34d3c8993ef46da45c3957a4dd402.zip
gdb-397998fc32a34d3c8993ef46da45c3957a4dd402.tar.gz
gdb-397998fc32a34d3c8993ef46da45c3957a4dd402.tar.bz2
Support fusion for ELFv2 stubs
Power8 fuses addis,addi and addis,ld sequences when the target of the addis is the same as the addi/ld. Thus addis r12,r2,xxx@ha addi r12,r12,xxx@l / ld r12,xxx@l(r12) is faster than addis r11,r2,xxx@ha addi r12,r11,xxx@l / ld r12,xxx@l(r11) So use the form that allows fusion in plt call and branch stubs. bfd/ * elf64-ppc.c (ADDIS_R12_R2): Define. (build_plt_stub): Support fusion on ELFv2 stub. (ppc_build_one_stub): Likewise for plt branch stubs. gold/ * powerpc.cc (addis_12_2): Define. (Stub_table::do_write): Support fusion on ELFv2 stubs. ld/testsuite/ * ld-powerpc/elfv2exe.d: Update for changed plt call stubs. gdb/ * ppc64-tdep.c (ppc64_standard_linkage8): New. (ppc64_skip_trampoline_code): Recognise ELFv2 stub supporting fusion.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog4
-rw-r--r--ld/testsuite/ld-powerpc/elfv2exe.d8
2 files changed, 8 insertions, 4 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index bd604b6..bc80518 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2014-06-03 Alan Modra <amodra@gmail.com>
+
+ * ld-powerpc/elfv2exe.d: Update for changed plt call stubs.
+
2014-05-28 Matthew Fortune <matthew.fortune@imgtec.com>
* lib/ld-lib.exp: Add objcopy_objects command to run_dump_test.
diff --git a/ld/testsuite/ld-powerpc/elfv2exe.d b/ld/testsuite/ld-powerpc/elfv2exe.d
index 7ff9d38..9ea816c 100644
--- a/ld/testsuite/ld-powerpc/elfv2exe.d
+++ b/ld/testsuite/ld-powerpc/elfv2exe.d
@@ -8,14 +8,14 @@
Disassembly of section \.text:
0+100000c0 <.*\.plt_branch\.f2>:
-.*: (ff ff 62 3d|3d 62 ff ff) addis r11,r2,-1
-.*: (f0 7f 8b e9|e9 8b 7f f0) ld r12,32752\(r11\)
+.*: (ff ff 82 3d|3d 82 ff ff) addis r12,r2,-1
+.*: (f0 7f 8c e9|e9 8c 7f f0) ld r12,32752\(r12\)
.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
.*: (20 04 80 4e|4e 80 04 20) bctr
0+100000d0 <.*\.plt_branch\.f4>:
-.*: (ff ff 62 3d|3d 62 ff ff) addis r11,r2,-1
-.*: (f8 7f 8b e9|e9 8b 7f f8) ld r12,32760\(r11\)
+.*: (ff ff 82 3d|3d 82 ff ff) addis r12,r2,-1
+.*: (f8 7f 8c e9|e9 8c 7f f8) ld r12,32760\(r12\)
.*: (a6 03 89 7d|7d 89 03 a6) mtctr r12
.*: (20 04 80 4e|4e 80 04 20) bctr