[PATCH v2] gdb/record: avoid rax usage in i386-avx-record.exp

Guinevere Larsen <[email protected]>
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
My recent commit, 1c04308f0958cbac83bad22703758139ea6969b6:

    Author: Guinevere Larsen <[email protected]>
    Date:   Tue Jun 16 16:03:43 2026 -0300
    gdb/record: add support for BMI2 instructions

Introduced a few tests that rely on the rax register being set before
entering the function. This isn't reliable, as programs compiled with
gcc-14 and earlier will have the register. To avoid compiler versions
getting in the way, this commit changes the test to use r12 (and
r12w/r12d when appropriate).

Reported-by: Christina Joos <[email protected]>
Reviewed-by: Christina Joos <[email protected]>
---
 gdb/testsuite/gdb.reverse/i386-avx-reverse.c  | 32 +++++++++----------
 .../gdb.reverse/i386-avx-reverse.exp          |  8 ++---
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/gdb/testsuite/gdb.reverse/i386-avx-reverse.c b/gdb/testsuite/gdb.reverse/i386-avx-reverse.c
index 88cd3fc7f34..4d45482c07a 100644
--- a/gdb/testsuite/gdb.reverse/i386-avx-reverse.c
+++ b/gdb/testsuite/gdb.reverse/i386-avx-reverse.c
@@ -770,48 +770,48 @@ bmi_test ()
 {
   /* start bmi_test.  */
   /* Using GDB, load these values onto registers for testing.
-     eax = 0x1312
+     r12 = 0x1312
      ebx = 0xdeadbeef
      ecx = 0xcafeface
      edx = 0x2337
      r8  = 0
      this way it's easy to confirm we're undoing things correctly.  */
 
-  asm volatile ("andn %rbx, %rax, %r8");
-  asm volatile ("andn %ebx, %eax, %ecx");
+  asm volatile ("andn %rbx, %r12, %r8");
+  asm volatile ("andn %ebx, %r12d, %ecx");
 
   asm volatile ("bextr %rcx, %r8, %rbx");
   asm volatile ("bextr %ebx, %ecx, %r8d");
 
-  asm volatile ("blsi %rax, %rcx");
+  asm volatile ("blsi %r12, %rcx");
   asm volatile ("blsi %ebx, %r8d");
 
   asm volatile ("blsmsk %r8, %rbx");
-  asm volatile ("blsmsk %eax, %eax");
+  asm volatile ("blsmsk %r12d, %r12d");
 
   asm volatile ("blsr %rcx, %rbx");
   asm volatile ("blsr %r8d, %ecx");
 
-  asm volatile ("lzcnt %rax, %r8");
-  asm volatile ("lzcnt %eax, %ecx");
-  asm volatile ("lzcnt %ax, %bx");
+  asm volatile ("lzcnt %r12, %r8");
+  asm volatile ("lzcnt %r12d, %ecx");
+  asm volatile ("lzcnt %r12w, %bx");
 
-  asm volatile ("tzcnt %rax, %rcx");
-  asm volatile ("tzcnt %eax, %ebx");
-  asm volatile ("tzcnt %ax, %r8w");
+  asm volatile ("tzcnt %r12, %rcx");
+  asm volatile ("tzcnt %r12d, %ebx");
+  asm volatile ("tzcnt %r12w, %r8w");
 
-  asm volatile ("mulx %eax, %ebx, %ecx");
+  asm volatile ("mulx %r12d, %ebx, %ecx");
   asm volatile ("mulx %ebx, %ecx, %ebx");
 
   asm volatile ("pdep %r8, %rcx, %rbx");
   asm volatile ("pext %edx, %ecx, %ebx");
   asm volatile ("rorx $10, %r8, %rbx");
-  asm volatile ("sarx %edx, %ebx, %eax");
-  asm volatile ("shlx %eax, %ecx, %ebx");
-  asm volatile ("shrx %r8d, %eax, %ecx");
+  asm volatile ("sarx %edx, %ebx, %r12d");
+  asm volatile ("shlx %r12d, %ecx, %ebx");
+  asm volatile ("shrx %r8d, %r12d, %ecx");
 
   asm volatile ("bzhi %edx, %ebx, %r8d");
-  asm volatile ("bzhi %rax, %rcx, %r8");
+  asm volatile ("bzhi %r12, %rcx, %r8");
 
   return 0; /* end bmi_test  */
 }
diff --git a/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp b/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp
index 5d65245db39..a5b0e6612aa 100644
--- a/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp
+++ b/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp
@@ -1201,7 +1201,7 @@ gdb_test "finish" "Run till exit from.*convert_test.*" \
 gdb_test_no_output \
     "set \$r8 = 0" "set r8 for bmi test"
 gdb_test_no_output \
-    "set \$eax = 0x1312" "set eax for bmi test"
+    "set \$r12 = 0x1312" "set r12 for bmi test"
 gdb_test_no_output "set \$ebx = 0xdeadbeef" "set ebx for bmi test"
 gdb_test_no_output "set \$ecx = 0xcafeface" "set ecx for bmi test"
 gdb_test_no_output "set \$edx = 0x2337" "set edx for bmi test"
@@ -1213,7 +1213,7 @@ if {[record_full_function "bmi"] == true} {
 
     test_one_general_register "shrx" "ecx" "0xe884173"
     test_one_general_register "shlx" "ebx" "0x0"
-    test_one_general_register "sarx" "eax" "0x3"
+    test_one_general_register "sarx" "r12" "0x3"
     test_one_general_register "rorx" "ebx" "0x3b"
     test_one_general_register "pext" "ebx" "0x0"
     test_one_general_register "pdep" "ebx" "0x0"
@@ -1232,13 +1232,13 @@ if {[record_full_function "bmi"] == true} {
     test_one_general_register "blsr" "ecx" "0x2"
     test_one_general_register "blsr" "ebx" "0xffffffff"
 
-    test_one_general_register "blsmsk" "eax" "0x1312"
+    test_one_general_register "blsmsk" "r12" "0x1312"
     test_one_general_register "blsmsk" "ebx" "0x0"
 
     test_one_general_register "blsi" "r8" "0x0"
     test_one_general_register "blsi" "ecx" "0xdeadaced"
 
-    test_one_general_register "bextr" "eax" "0x1312"
+    test_one_general_register "bextr" "r12" "0x1312"
     test_one_general_register "bextr" "ebx" "0xdeadbeef"
 
     test_one_general_register "andn" "ecx" "0xcafeface"

base-commit: a80fede20bc1330eca5e419392c6595bb3a6ac1d
-- 
2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.