diff options
author | David S. Miller <davem@redhat.com> | 2011-10-19 00:32:25 +0000 |
---|---|---|
committer | David S. Miller <davem@redhat.com> | 2011-10-19 00:32:25 +0000 |
commit | abd242a90836b535b2f98be634e16c70012a3c5d (patch) | |
tree | cc8a899c08c32ce0693497c6fc2f96264706d761 /ld | |
parent | 01b701aae6a81fc07a867fc3746587000aaa8c50 (diff) | |
download | binutils-abd242a90836b535b2f98be634e16c70012a3c5d.zip binutils-abd242a90836b535b2f98be634e16c70012a3c5d.tar.gz binutils-abd242a90836b535b2f98be634e16c70012a3c5d.tar.bz2 |
Fix sparc TLS call relaxation when the delay slot sets up %o0.
bfd/
PR binutils/13301
* elfxx-sparc.c (sparc_elf_find_reloc_at_ofs): New function.
(_bfd_sparc_elf_relocate_section): Always move the __tls_get_addr
call delay slot instruction forward 4 bytes when performing
relaxation.
gold/
PR binutils/13301
* sparc.cc (Target_sparc::Relocate::reloc_adjust_addr_): New
member to track relocation locations that have moved during TLS
reloc optimizations.
(Target_sparc::Relocate::Relocate): Initialize to NULL.
(Target_sparc::Relocate::relocate): Adjust view down by 4
bytes if it matches reloc_adjust_addr_.
(Target_sparc::Relocate::relocate_tls): Always move the
__tls_get_addr call delay slot instruction forward 4 bytes when
performing relaxation.
ld/testsuite/
* ld-sparc/tlssunbin32.dd: Update for TLS call relaxation fix
for PR 13301.
* ld-sparc/tlssunbin64.dd: Likewise.
* ld-sparc/tlssunpic32.dd: Likewise.
* ld-sparc/tlssunpic64.dd: Likewise.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ChangeLog | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-sparc/tlssunbin32.dd | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-sparc/tlssunbin64.dd | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-sparc/tlssunpic32.dd | 16 | ||||
-rw-r--r-- | ld/testsuite/ld-sparc/tlssunpic64.dd | 16 |
5 files changed, 32 insertions, 24 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 6bf48c5..7912508 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2011-10-18 David S. Miller <davem@davemloft.net> + + * ld-sparc/tlssunbin32.dd: Update for TLS call relaxation fix + for PR 13301. + * ld-sparc/tlssunbin64.dd: Likewise. + * ld-sparc/tlssunpic32.dd: Likewise. + * ld-sparc/tlssunpic64.dd: Likewise. + 2011-10-18 Jie Zhang <jie@codesourcery.com> Julian Brown <julian@codesourcery.com> diff --git a/ld/testsuite/ld-sparc/tlssunbin32.dd b/ld/testsuite/ld-sparc/tlssunbin32.dd index 37c1d04..c31d190 100644 --- a/ld/testsuite/ld-sparc/tlssunbin32.dd +++ b/ld/testsuite/ld-sparc/tlssunbin32.dd @@ -27,8 +27,8 @@ Disassembly of section .text: +11034: 01 00 00 00 nop * +11038: d0 05 c0 12 ld \[ %l7 \+ %l2 \], %o0 +1103c: 01 00 00 00 nop * - +11040: 90 01 c0 08 add %g7, %o0, %o0 - +11044: 01 00 00 00 nop * + +11040: 01 00 00 00 nop * + +11044: 90 01 c0 08 add %g7, %o0, %o0 +11048: 01 00 00 00 nop * +1104c: 01 00 00 00 nop * +11050: 01 00 00 00 nop * @@ -36,8 +36,8 @@ Disassembly of section .text: +11058: 11 00 00 00 sethi %hi\(0\), %o0 +1105c: 92 02 20 08 add %o0, 8, %o1 ! 8 <.*> +11060: d0 05 c0 09 ld \[ %l7 \+ %o1 \], %o0 - +11064: 90 01 c0 08 add %g7, %o0, %o0 - +11068: 01 00 00 00 nop * + +11064: 01 00 00 00 nop * + +11068: 90 01 c0 08 add %g7, %o0, %o0 +1106c: 01 00 00 00 nop * +11070: 01 00 00 00 nop * +11074: 01 00 00 00 nop * diff --git a/ld/testsuite/ld-sparc/tlssunbin64.dd b/ld/testsuite/ld-sparc/tlssunbin64.dd index 0585ae6..cd7db1c 100644 --- a/ld/testsuite/ld-sparc/tlssunbin64.dd +++ b/ld/testsuite/ld-sparc/tlssunbin64.dd @@ -27,8 +27,8 @@ Disassembly of section .text: +101034: 01 00 00 00 nop * +101038: d0 5d c0 12 ldx \[ %l7 \+ %l2 \], %o0 +10103c: 01 00 00 00 nop * - +101040: 90 01 c0 08 add %g7, %o0, %o0 - +101044: 01 00 00 00 nop * + +101040: 01 00 00 00 nop * + +101044: 90 01 c0 08 add %g7, %o0, %o0 +101048: 01 00 00 00 nop * +10104c: 01 00 00 00 nop * +101050: 01 00 00 00 nop * @@ -36,8 +36,8 @@ Disassembly of section .text: +101058: 11 00 00 00 sethi %hi\(0\), %o0 +10105c: 92 02 20 10 add %o0, 0x10, %o1 ! 10 <.*> +101060: d0 5d c0 09 ldx \[ %l7 \+ %o1 \], %o0 - +101064: 90 01 c0 08 add %g7, %o0, %o0 - +101068: 01 00 00 00 nop * + +101064: 01 00 00 00 nop * + +101068: 90 01 c0 08 add %g7, %o0, %o0 +10106c: 01 00 00 00 nop * +101070: 01 00 00 00 nop * +101074: 01 00 00 00 nop * diff --git a/ld/testsuite/ld-sparc/tlssunpic32.dd b/ld/testsuite/ld-sparc/tlssunpic32.dd index c34d514..5589771 100644 --- a/ld/testsuite/ld-sparc/tlssunpic32.dd +++ b/ld/testsuite/ld-sparc/tlssunpic32.dd @@ -37,8 +37,8 @@ Disassembly of section .text: +1058: 11 00 00 00 sethi %hi\(0\), %o0 +105c: 92 02 20 3c add %o0, 0x3c, %o1 ! 3c <.*> +1060: d0 05 c0 09 ld \[ %l7 \+ %o1 \], %o0 - +1064: 90 01 c0 08 add %g7, %o0, %o0 - +1068: 01 00 00 00 nop * + +1064: 01 00 00 00 nop * + +1068: 90 01 c0 08 add %g7, %o0, %o0 +106c: 01 00 00 00 nop * +1070: 01 00 00 00 nop * +1074: 01 00 00 00 nop * @@ -55,8 +55,8 @@ Disassembly of section .text: +10a0: 11 00 00 00 sethi %hi\(0\), %o0 +10a4: 90 02 20 0c add %o0, 0xc, %o0 ! c <.*> +10a8: d0 05 c0 08 ld \[ %l7 \+ %o0 \], %o0 - +10ac: 90 01 c0 08 add %g7, %o0, %o0 - +10b0: 01 00 00 00 nop * + +10ac: 01 00 00 00 nop * + +10b0: 90 01 c0 08 add %g7, %o0, %o0 +10b4: 01 00 00 00 nop * +10b8: 01 00 00 00 nop * +10bc: 01 00 00 00 nop * @@ -73,8 +73,8 @@ Disassembly of section .text: +10e8: 11 00 00 00 sethi %hi\(0\), %o0 +10ec: 90 02 20 48 add %o0, 0x48, %o0 ! 48 <.*> +10f0: d0 05 c0 08 ld \[ %l7 \+ %o0 \], %o0 - +10f4: 90 01 c0 08 add %g7, %o0, %o0 - +10f8: 01 00 00 00 nop * + +10f4: 01 00 00 00 nop * + +10f8: 90 01 c0 08 add %g7, %o0, %o0 +10fc: 01 00 00 00 nop * +1100: 01 00 00 00 nop * +1104: 01 00 00 00 nop * @@ -91,8 +91,8 @@ Disassembly of section .text: +1130: 11 00 00 00 sethi %hi\(0\), %o0 +1134: 90 02 20 24 add %o0, 0x24, %o0 ! 24 <.*> +1138: d0 05 c0 08 ld \[ %l7 \+ %o0 \], %o0 - +113c: 90 01 c0 08 add %g7, %o0, %o0 - +1140: 01 00 00 00 nop * + +113c: 01 00 00 00 nop * + +1140: 90 01 c0 08 add %g7, %o0, %o0 +1144: 01 00 00 00 nop * +1148: 01 00 00 00 nop * +114c: 01 00 00 00 nop * diff --git a/ld/testsuite/ld-sparc/tlssunpic64.dd b/ld/testsuite/ld-sparc/tlssunpic64.dd index 0b41b68..5e94858 100644 --- a/ld/testsuite/ld-sparc/tlssunpic64.dd +++ b/ld/testsuite/ld-sparc/tlssunpic64.dd @@ -37,8 +37,8 @@ Disassembly of section .text: +1058: 11 00 00 00 sethi %hi\(0\), %o0 +105c: 92 02 20 78 add %o0, 0x78, %o1 ! 78 <.*> +1060: d0 5d c0 09 ldx \[ %l7 \+ %o1 \], %o0 - +1064: 90 01 c0 08 add %g7, %o0, %o0 - +1068: 01 00 00 00 nop * + +1064: 01 00 00 00 nop * + +1068: 90 01 c0 08 add %g7, %o0, %o0 +106c: 01 00 00 00 nop * +1070: 01 00 00 00 nop * +1074: 01 00 00 00 nop * @@ -55,8 +55,8 @@ Disassembly of section .text: +10a0: 11 00 00 00 sethi %hi\(0\), %o0 +10a4: 90 02 20 18 add %o0, 0x18, %o0 ! 18 <.*> +10a8: d0 5d c0 08 ldx \[ %l7 \+ %o0 \], %o0 - +10ac: 90 01 c0 08 add %g7, %o0, %o0 - +10b0: 01 00 00 00 nop * + +10ac: 01 00 00 00 nop * + +10b0: 90 01 c0 08 add %g7, %o0, %o0 +10b4: 01 00 00 00 nop * +10b8: 01 00 00 00 nop * +10bc: 01 00 00 00 nop * @@ -73,8 +73,8 @@ Disassembly of section .text: +10e8: 11 00 00 00 sethi %hi\(0\), %o0 +10ec: 90 02 20 90 add %o0, 0x90, %o0 ! 90 <.*> +10f0: d0 5d c0 08 ldx \[ %l7 \+ %o0 \], %o0 - +10f4: 90 01 c0 08 add %g7, %o0, %o0 - +10f8: 01 00 00 00 nop * + +10f4: 01 00 00 00 nop * + +10f8: 90 01 c0 08 add %g7, %o0, %o0 +10fc: 01 00 00 00 nop * +1100: 01 00 00 00 nop * +1104: 01 00 00 00 nop * @@ -91,8 +91,8 @@ Disassembly of section .text: +1130: 11 00 00 00 sethi %hi\(0\), %o0 +1134: 90 02 20 48 add %o0, 0x48, %o0 ! 48 <.*> +1138: d0 5d c0 08 ldx \[ %l7 \+ %o0 \], %o0 - +113c: 90 01 c0 08 add %g7, %o0, %o0 - +1140: 01 00 00 00 nop * + +113c: 01 00 00 00 nop * + +1140: 90 01 c0 08 add %g7, %o0, %o0 +1144: 01 00 00 00 nop * +1148: 01 00 00 00 nop * +114c: 01 00 00 00 nop * |