aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2002-10-01 09:15:34 +0000
committerJakub Jelinek <jakub@redhat.com>2002-10-01 09:15:34 +0000
commitabcf1d5247efcdfec46b9a0b5a268fdf65b3fdb0 (patch)
tree53b7f25c1889243b3a6caa4288389fadbaef7fce /ld
parenta45bb67df201470589b4adc8b50190bdbec903cb (diff)
downloadgdb-abcf1d5247efcdfec46b9a0b5a268fdf65b3fdb0.zip
gdb-abcf1d5247efcdfec46b9a0b5a268fdf65b3fdb0.tar.gz
gdb-abcf1d5247efcdfec46b9a0b5a268fdf65b3fdb0.tar.bz2
bfd/
* elf64-x86-64.c (elf64_x86_64_relocate_section): Change TLSGD sequence and its transitions. ld/testsuite/ * ld-x86-64/tlspic1.s: Change TLSGD sequences. * ld-x86-64/tlsbinpic.s: Likewise. * ld-x86-64/tlspic.dd: Adjust.
Diffstat (limited to 'ld')
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-x86-64/tlsbinpic.s20
-rw-r--r--ld/testsuite/ld-x86-64/tlspic.dd32
-rw-r--r--ld/testsuite/ld-x86-64/tlspic1.s32
4 files changed, 65 insertions, 25 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index 55a1208..1e91d59 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2002-10-01 Jakub Jelinek <jakub@redhat.com>
+ * ld-x86-64/tlspic1.s: Change TLSGD sequences.
+ * ld-x86-64/tlsbinpic.s: Likewise.
+ * ld-x86-64/tlspic.dd: Adjust.
+
+2002-10-01 Jakub Jelinek <jakub@redhat.com>
+
* ld-i386/i386.exp: Add tlsg test.
* ld-i386/tlsg.s: New test.
* ld-i386/tlsg.sd: New test.
diff --git a/ld/testsuite/ld-x86-64/tlsbinpic.s b/ld/testsuite/ld-x86-64/tlsbinpic.s
index 0f5765a..2819a8f 100644
--- a/ld/testsuite/ld-x86-64/tlsbinpic.s
+++ b/ld/testsuite/ld-x86-64/tlsbinpic.s
@@ -40,33 +40,43 @@ fn2:
movq %rsp, %rbp
/* GD -> IE because variable is not defined in executable */
- .long 0x66666666
+ .byte 0x66
leaq sG1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> IE because variable is not defined in executable where
the variable is referenced through IE too */
- .long 0x66666666
+ .byte 0x66
leaq sG2@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> LE with global variable defined in executable */
- .long 0x66666666
+ .byte 0x66
leaq sg1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> LE with local variable defined in executable */
- .long 0x66666666
+ .byte 0x66
leaq sl1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> LE with hidden variable defined in executable */
- .long 0x66666666
+ .byte 0x66
leaq sh1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
diff --git a/ld/testsuite/ld-x86-64/tlspic.dd b/ld/testsuite/ld-x86-64/tlspic.dd
index 8c0909a..69ccdfd 100644
--- a/ld/testsuite/ld-x86-64/tlspic.dd
+++ b/ld/testsuite/ld-x86-64/tlspic.dd
@@ -17,10 +17,12 @@ Disassembly of section .text:
+1006: 90[ ]+nop *
+1007: 90[ ]+nop *
# GD
- +1008: 66 66 66 66 48 8d 3d[ ]+lea 1053165\(%rip\),%rdi +# 102200 <_GLOBAL_OFFSET_TABLE_\+0x70>
- +100f: ed 11 10 00 *
+ +1008: 66 48 8d 3d f0 11 10[ ]+lea 1053168\(%rip\),%rdi +# 102200 <_GLOBAL_OFFSET_TABLE_\+0x70>
+ +100f: 00 *
# -> R_X86_64_DTPMOD64 sg1
- +1013: e8 68 f6 ff ff[ ]+callq [0-9a-f]+ <.*>
+ +1010: 66[ ]+data16
+ +1011: 66[ ]+data16
+ +1012: 48 e8 68 f6 ff ff[ ]+rex64 callq [0-9a-f]+ <.*>
# -> R_X86_64_JUMP_SLOT __tls_get_addr
+1018: 90[ ]+nop *
+1019: 90[ ]+nop *
@@ -36,10 +38,12 @@ Disassembly of section .text:
+102e: 90[ ]+nop *
+102f: 90[ ]+nop *
# GD against local variable
- +1030: 66 66 66 66 48 8d 3d[ ]+lea 1053045\(%rip\),%rdi +# 1021b0 <_GLOBAL_OFFSET_TABLE_\+0x20>
- +1037: 75 11 10 00 *
+ +1030: 66 48 8d 3d 78 11 10[ ]+lea 1053048\(%rip\),%rdi +# 1021b0 <_GLOBAL_OFFSET_TABLE_\+0x20>
+ +1037: 00 *
# -> R_X86_64_DTPMOD64 [0 0x2000000000000000]
- +103b: e8 40 f6 ff ff[ ]+callq [0-9a-f]+ <.*>
+ +1038: 66[ ]+data16
+ +1039: 66[ ]+data16
+ +103a: 48 e8 40 f6 ff ff[ ]+rex64 callq [0-9a-f]+ <.*>
# -> R_X86_64_JUMP_SLOT __tls_get_addr
+1040: 90[ ]+nop *
+1041: 90[ ]+nop *
@@ -55,10 +59,12 @@ Disassembly of section .text:
+1056: 90[ ]+nop *
+1057: 90[ ]+nop *
# GD against hidden and local variable
- +1058: 66 66 66 66 48 8d 3d[ ]+lea 1053125\(%rip\),%rdi +# 102228 <_GLOBAL_OFFSET_TABLE_\+0x98>
- +105f: c5 11 10 00 *
+ +1058: 66 48 8d 3d c8 11 10[ ]+lea 1053128\(%rip\),%rdi +# 102228 <_GLOBAL_OFFSET_TABLE_\+0x98>
+ +105f: 00 *
# -> R_X86_64_DTPMOD64 [0 0x4000000000000000]
- +1063: e8 18 f6 ff ff[ ]+callq [0-9a-f]+ <.*>
+ +1060: 66[ ]+data16
+ +1061: 66[ ]+data16
+ +1062: 48 e8 18 f6 ff ff[ ]+rex64 callq [0-9a-f]+ <.*>
# -> R_X86_64_JUMP_SLOT __tls_get_addr
+1068: 90[ ]+nop *
+1069: 90[ ]+nop *
@@ -74,10 +80,12 @@ Disassembly of section .text:
+107e: 90[ ]+nop *
+107f: 90[ ]+nop *
# GD against hidden but not local variable
- +1080: 66 66 66 66 48 8d 3d[ ]+lea 1053013\(%rip\),%rdi +# 1021e0 <_GLOBAL_OFFSET_TABLE_\+0x50>
- +1087: 55 11 10 00 *
+ +1080: 66 48 8d 3d 58 11 10[ ]+lea 1053016\(%rip\),%rdi +# 1021e0 <_GLOBAL_OFFSET_TABLE_\+0x50>
+ +1087: 00 *
# -> R_X86_64_DTPMOD64 [0 0x6000000000000000]
- +108b: e8 f0 f5 ff ff[ ]+callq [0-9a-f]+ <.*>
+ +1088: 66[ ]+data16
+ +1089: 66[ ]+data16
+ +108a: 48 e8 f0 f5 ff ff[ ]+rex64 callq [0-9a-f]+ <.*>
# -> R_X86_64_JUMP_SLOT __tls_get_addr
+1090: 90[ ]+nop *
+1091: 90[ ]+nop *
diff --git a/ld/testsuite/ld-x86-64/tlspic1.s b/ld/testsuite/ld-x86-64/tlspic1.s
index 64ffc3f..5e26f26 100644
--- a/ld/testsuite/ld-x86-64/tlspic1.s
+++ b/ld/testsuite/ld-x86-64/tlspic1.s
@@ -41,52 +41,68 @@ fn1:
nop;nop;nop;nop
/* GD */
- .long 0x66666666
+ .byte 0x66
leaq sg1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> IE because variable is referenced through IE too */
- .long 0x66666666
+ .byte 0x66
leaq sg2@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD against local variable */
- .long 0x66666666
+ .byte 0x66
leaq sl1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> IE against local variable referenced through IE too */
- .long 0x66666666
+ .byte 0x66
leaq sl2@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD against hidden and local variable */
- .long 0x66666666
+ .byte 0x66
leaq sh1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> IE against hidden and local variable referenced through
IE too */
- .long 0x66666666
+ .byte 0x66
leaq sh2@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD against hidden but not local variable */
- .long 0x66666666
+ .byte 0x66
leaq sH1@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop
/* GD -> IE against hidden but not local variable referenced through
IE too */
- .long 0x66666666
+ .byte 0x66
leaq sH2@tlsgd(%rip), %rdi
+ .word 0x6666
+ rex64
call __tls_get_addr@plt
nop;nop;nop;nop