This changes the PowerPC64 --plt-align option to perform the usual alignment of code as suggested by its name, as well as the previous behaviour of padding so as to reduce boundary crossing. The old behaviour is had by using a negative parameter. The default is also changed to align plt stub code by default to 32 byte boundaries, the point being to get better bctr branch prediction on power8 and power9 hardware. bfd/ * elf64-ppp.c (plt_stub_pad): Handle positive and negative plt_stub_align. ld/ * ld.texinfo (--plt-align): Describe new behaviour of option. * emultempl/ppc64elf.em (params): Default plt_stub_align to 5. * testsuite/ld-powerpc/powerpc.exp: Pass --no-plt-align for selected tests. * testsuite/ld-powerpc/relbrlt.d: Pass --no-plt-align. * testsuite/ld-powerpc/elfv2so.d: Adjust expected output.
87 lines
2.8 KiB
Makefile
87 lines
2.8 KiB
Makefile
#source: elfv2.s
|
|
#as: -a64
|
|
#ld: -melf64ppc -shared
|
|
#objdump: -dr
|
|
|
|
.*
|
|
|
|
Disassembly of section \.text:
|
|
|
|
.* <.*\.plt_call\.f4>:
|
|
.*: (f8 41 00 18|18 00 41 f8) std r2,24\(r1\)
|
|
.*: (e9 82 80 38|38 80 82 e9) ld r12,-32712\(r2\)
|
|
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
|
|
.*: (4e 80 04 20|20 04 80 4e) bctr
|
|
\.\.\.
|
|
|
|
.* <.*\.plt_call\.f3>:
|
|
.*: (f8 41 00 18|18 00 41 f8) std r2,24\(r1\)
|
|
.*: (e9 82 80 28|28 80 82 e9) ld r12,-32728\(r2\)
|
|
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
|
|
.*: (4e 80 04 20|20 04 80 4e) bctr
|
|
\.\.\.
|
|
|
|
.* <.*\.plt_call\.f2>:
|
|
.*: (f8 41 00 18|18 00 41 f8) std r2,24\(r1\)
|
|
.*: (e9 82 80 30|30 80 82 e9) ld r12,-32720\(r2\)
|
|
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
|
|
.*: (4e 80 04 20|20 04 80 4e) bctr
|
|
\.\.\.
|
|
|
|
.* <.*\.plt_call\.f1>:
|
|
.*: (f8 41 00 18|18 00 41 f8) std r2,24\(r1\)
|
|
.*: (e9 82 80 40|40 80 82 e9) ld r12,-32704\(r2\)
|
|
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
|
|
.*: (4e 80 04 20|20 04 80 4e) bctr
|
|
\.\.\.
|
|
|
|
.* <f1>:
|
|
.*: (3c 4c 00 02|02 00 4c 3c) addis r2,r12,2
|
|
.*: (38 42 .. ..|.. .. 42 38) addi r2,r2,.*
|
|
.*: (7c 08 02 a6|a6 02 08 7c) mflr r0
|
|
.*: (f8 21 ff e1|e1 ff 21 f8) stdu r1,-32\(r1\)
|
|
.*: (f8 01 00 30|30 00 01 f8) std r0,48\(r1\)
|
|
.*: (4b ff ff cd|cd ff ff 4b) bl .*\.plt_call\.f1>
|
|
.*: (e8 62 80 08|08 80 62 e8) ld r3,-32760\(r2\)
|
|
.*: (4b ff ff a5|a5 ff ff 4b) bl .*\.plt_call\.f2>
|
|
.*: (e8 41 00 18|18 00 41 e8) ld r2,24\(r1\)
|
|
.*: (e8 62 80 10|10 80 62 e8) ld r3,-32752\(r2\)
|
|
.*: (4b ff ff 79|79 ff ff 4b) bl .*\.plt_call\.f3>
|
|
.*: (e8 41 00 18|18 00 41 e8) ld r2,24\(r1\)
|
|
.*: (4b ff ff 51|51 ff ff 4b) bl .*\.plt_call\.f4>
|
|
.*: (e8 41 00 18|18 00 41 e8) ld r2,24\(r1\)
|
|
.*: (e8 01 00 30|30 00 01 e8) ld r0,48\(r1\)
|
|
.*: (38 21 00 20|20 00 21 38) addi r1,r1,32
|
|
.*: (7c 08 03 a6|a6 03 08 7c) mtlr r0
|
|
.*: (4e 80 00 20|20 00 80 4e) blr
|
|
.*
|
|
.*
|
|
|
|
.* <__glink_PLTresolve>:
|
|
.*: (7c 08 02 a6|a6 02 08 7c) mflr r0
|
|
.*: (42 9f 00 05|05 00 9f 42) bcl .*
|
|
.*: (7d 68 02 a6|a6 02 68 7d) mflr r11
|
|
.*: (18 00 41 f8|f8 41 00 18) std r2,24\(r1\)
|
|
.*: (e8 4b ff f0|f0 ff 4b e8) ld r2,-16\(r11\)
|
|
.*: (7c 08 03 a6|a6 03 08 7c) mtlr r0
|
|
.*: (7d 8b 60 50|50 60 8b 7d) subf r12,r11,r12
|
|
.*: (7d 62 5a 14|14 5a 62 7d) add r11,r2,r11
|
|
.*: (38 0c ff d0|d0 ff 0c 38) addi r0,r12,-48
|
|
.*: (e9 8b 00 00|00 00 8b e9) ld r12,0\(r11\)
|
|
.*: (78 00 f0 82|82 f0 00 78) rldicl r0,r0,62,2
|
|
.*: (7d 89 03 a6|a6 03 89 7d) mtctr r12
|
|
.*: (e9 6b 00 08|08 00 6b e9) ld r11,8\(r11\)
|
|
.*: (4e 80 04 20|20 04 80 4e) bctr
|
|
|
|
.* <f3@plt>:
|
|
.*: (4b ff ff c8|c8 ff ff 4b) b .* <__glink_PLTresolve>
|
|
|
|
.* <f2@plt>:
|
|
.*: (4b ff ff c4|c4 ff ff 4b) b .* <__glink_PLTresolve>
|
|
|
|
.* <f4@plt>:
|
|
.*: (4b ff ff c0|c0 ff ff 4b) b .* <__glink_PLTresolve>
|
|
|
|
.* <f1@plt>:
|
|
.*: (4b ff ff bc|bc ff ff 4b) b .* <__glink_PLTresolve>
|