diff options
author | Jakub Jelinek <jakub@redhat.com> | 2002-10-01 09:15:34 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2002-10-01 09:15:34 +0000 |
commit | abcf1d5247efcdfec46b9a0b5a268fdf65b3fdb0 (patch) | |
tree | 53b7f25c1889243b3a6caa4288389fadbaef7fce /ld | |
parent | a45bb67df201470589b4adc8b50190bdbec903cb (diff) | |
download | gdb-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/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/tlsbinpic.s | 20 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/tlspic.dd | 32 | ||||
-rw-r--r-- | ld/testsuite/ld-x86-64/tlspic1.s | 32 |
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 |