aboutsummaryrefslogtreecommitdiff
path: root/gold/testsuite
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2023-06-08 12:12:48 -0700
committerH.J. Lu <hjl.tools@gmail.com>2023-12-28 08:47:17 -0800
commit4a54cb06585f568031dfd291d0fe45979ad75e98 (patch)
tree2469a2d8eb9ce968fd9ef5039d25679bae946e3b /gold/testsuite
parent3d5a60de52556f6a53d71d7e607c6696450ae3e4 (diff)
downloadgdb-4a54cb06585f568031dfd291d0fe45979ad75e98.zip
gdb-4a54cb06585f568031dfd291d0fe45979ad75e98.tar.gz
gdb-4a54cb06585f568031dfd291d0fe45979ad75e98.tar.bz2
gold: Handle R_X86_64_CODE_4_GOTPCRELX
Handle R_X86_64_CODE_4_GOTPCRELX and convert mov name@GOTPCREL(%rip), %r31 to lea name@GOTPCREL(%rip), %r31 if the instruction is encoded with the REX2 prefix when possible. elfcpp/ * x86_64.h (R_X86_64_CODE_4_GOTPCRELX): New. gold/ * x86_64.cc (Target_x86_64::can_convert_mov_to_lea): Handle R_X86_64_CODE_4_GOTPCRELX. (Target_x86_64::Scan::get_reference_flags): Likewise. (Target_x86_64::Scan::local): Likewise. (Target_x86_64::Scan::possible_function_pointer_reloc): Likewise. (Target_x86_64::Scan::global): Likewise. (Target_x86_64::Relocate::relocate): Likewise. * testsuite/x86_64_mov_to_lea1.s: Add a test for R_X86_64_CODE_4_GOTPCRELX. * testsuite/x86_64_mov_to_lea2.s: Likewise. * testsuite/x86_64_mov_to_lea3.s: Likewise. * testsuite/x86_64_mov_to_lea4.s: Likewise. * testsuite/x86_64_mov_to_lea5.s: Likewise. * testsuite/x86_64_mov_to_lea.sh: Updated.
Diffstat (limited to 'gold/testsuite')
-rwxr-xr-xgold/testsuite/x86_64_mov_to_lea.sh16
-rw-r--r--gold/testsuite/x86_64_mov_to_lea1.s1
-rw-r--r--gold/testsuite/x86_64_mov_to_lea2.s1
-rw-r--r--gold/testsuite/x86_64_mov_to_lea3.s1
-rw-r--r--gold/testsuite/x86_64_mov_to_lea4.s1
-rw-r--r--gold/testsuite/x86_64_mov_to_lea5.s1
6 files changed, 21 insertions, 0 deletions
diff --git a/gold/testsuite/x86_64_mov_to_lea.sh b/gold/testsuite/x86_64_mov_to_lea.sh
index 1b30e1a..3e248eb 100755
--- a/gold/testsuite/x86_64_mov_to_lea.sh
+++ b/gold/testsuite/x86_64_mov_to_lea.sh
@@ -25,20 +25,36 @@
set -e
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea1.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea1.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea2.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea2.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea3.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea3.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea4.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea4.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea5.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea5.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea6.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea6.stdout
grep -q "mov 0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea7.stdout
+grep -q "mov 0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea7.stdout
grep -q "mov 0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea8.stdout
+grep -q "mov 0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea8.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea9.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea9.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea10.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea10.stdout
grep -q "mov 0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea11.stdout
+grep -q "mov 0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea11.stdout
grep -q "mov 0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea12.stdout
+grep -q "mov 0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea12.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea13.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea13.stdout
grep -q "lea -0x[a-f0-9]\+(%rip),%rax" x86_64_mov_to_lea14.stdout
+grep -q "lea -0x[a-f0-9]\+(%rip),%r26" x86_64_mov_to_lea14.stdout
grep -q "mov 0x[a-f0-9]\+(%rip),%eax" x86_64_mov_to_lea15.stdout
+grep -q "mov 0x[a-f0-9]\+(%rip),%r26d" x86_64_mov_to_lea15.stdout
grep -q "mov 0x[a-f0-9]\+(%rip),%eax" x86_64_mov_to_lea16.stdout
+grep -q "mov 0x[a-f0-9]\+(%rip),%r26d" x86_64_mov_to_lea16.stdout
exit 0
diff --git a/gold/testsuite/x86_64_mov_to_lea1.s b/gold/testsuite/x86_64_mov_to_lea1.s
index 4dce487..298ede1 100644
--- a/gold/testsuite/x86_64_mov_to_lea1.s
+++ b/gold/testsuite/x86_64_mov_to_lea1.s
@@ -8,4 +8,5 @@ foo:
.type _start, @function
_start:
movq foo@GOTPCREL(%rip), %rax
+ movq foo@GOTPCREL(%rip), %r26
.size _start, .-_start
diff --git a/gold/testsuite/x86_64_mov_to_lea2.s b/gold/testsuite/x86_64_mov_to_lea2.s
index 2a11b7a..404f4c1 100644
--- a/gold/testsuite/x86_64_mov_to_lea2.s
+++ b/gold/testsuite/x86_64_mov_to_lea2.s
@@ -3,4 +3,5 @@
.type _start, @function
_start:
movq _DYNAMIC@GOTPCREL(%rip), %rax
+ movq _DYNAMIC@GOTPCREL(%rip), %r26
.size _start, .-_start
diff --git a/gold/testsuite/x86_64_mov_to_lea3.s b/gold/testsuite/x86_64_mov_to_lea3.s
index ac43b78..838c33e 100644
--- a/gold/testsuite/x86_64_mov_to_lea3.s
+++ b/gold/testsuite/x86_64_mov_to_lea3.s
@@ -7,4 +7,5 @@ foo:
.type _start, @function
_start:
movq foo@GOTPCREL(%rip), %rax
+ movq foo@GOTPCREL(%rip), %r26
.size _start, .-_start
diff --git a/gold/testsuite/x86_64_mov_to_lea4.s b/gold/testsuite/x86_64_mov_to_lea4.s
index 37bee32..a68a4cf 100644
--- a/gold/testsuite/x86_64_mov_to_lea4.s
+++ b/gold/testsuite/x86_64_mov_to_lea4.s
@@ -9,4 +9,5 @@ foo:
.type _start, @function
_start:
movq foo@GOTPCREL(%rip), %rax
+ movq foo@GOTPCREL(%rip), %r26
.size _start, .-_start
diff --git a/gold/testsuite/x86_64_mov_to_lea5.s b/gold/testsuite/x86_64_mov_to_lea5.s
index e793a2b..e818989 100644
--- a/gold/testsuite/x86_64_mov_to_lea5.s
+++ b/gold/testsuite/x86_64_mov_to_lea5.s
@@ -9,4 +9,5 @@ foo:
.type _start, @function
_start:
movl foo@GOTPCREL+4(%rip), %eax
+ movl foo@GOTPCREL+4(%rip), %r26d
.size _start, .-_start