* [PATCH v2] gdb/record: avoid rax usage in i386-avx-record.exp
@ 2026-08-13 13:10 Guinevere Larsen
2026-08-13 14:51 ` Simon Marchi
0 siblings, 1 reply; 3+ messages in thread
From: Guinevere Larsen @ 2026-08-13 13:10 UTC (permalink / raw)
To: gdb-patches; +Cc: Guinevere Larsen, Christina Joos
My recent commit, 1c04308f0958cbac83bad22703758139ea6969b6:
Author: Guinevere Larsen <guinevere@redhat.com>
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 <christina.joos@intel.com>
Reviewed-by: Christina Joos <christina.joos@intel.com>
---
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
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] gdb/record: avoid rax usage in i386-avx-record.exp
2026-08-13 13:10 [PATCH v2] gdb/record: avoid rax usage in i386-avx-record.exp Guinevere Larsen
@ 2026-08-13 14:51 ` Simon Marchi
2026-08-13 15:07 ` Guinevere Larsen
0 siblings, 1 reply; 3+ messages in thread
From: Simon Marchi @ 2026-08-13 14:51 UTC (permalink / raw)
To: Guinevere Larsen, gdb-patches; +Cc: Christina Joos
On 8/13/26 9:10 AM, Guinevere Larsen wrote:
> My recent commit, 1c04308f0958cbac83bad22703758139ea6969b6:
>
> Author: Guinevere Larsen <guinevere@redhat.com>
> 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
This sentence ends abruptly.
It's not clear to me what the problem is, could you explain it in simple
words :)?
Simon
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] gdb/record: avoid rax usage in i386-avx-record.exp
2026-08-13 14:51 ` Simon Marchi
@ 2026-08-13 15:07 ` Guinevere Larsen
0 siblings, 0 replies; 3+ messages in thread
From: Guinevere Larsen @ 2026-08-13 15:07 UTC (permalink / raw)
To: Simon Marchi, gdb-patches; +Cc: Christina Joos
On 8/13/26 11:51 AM, Simon Marchi wrote:
> On 8/13/26 9:10 AM, Guinevere Larsen wrote:
>> My recent commit, 1c04308f0958cbac83bad22703758139ea6969b6:
>>
>> Author: Guinevere Larsen <guinevere@redhat.com>
>> 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
> This sentence ends abruptly.
>
> It's not clear to me what the problem is, could you explain it in simple
> words :)?
>
> Simon
>
oops, sorry, need to do more proofreading I guess. The sentence should
be "will have the registered clobbered, saving 0 on it"
I haven't looked at the disassembly to know why, but something about how
GCC 14 encodes the function calls makes EAX be 0 every time, and the
test expects eax to be something else. Moving to a different register
sidesteps this
--
Cheers,
Guinevere Larsen
it/its
she/her (deprecated)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-13 15:08 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-13 13:10 [PATCH v2] gdb/record: avoid rax usage in i386-avx-record.exp Guinevere Larsen
2026-08-13 14:51 ` Simon Marchi
2026-08-13 15:07 ` Guinevere Larsen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox