public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug tdep/32152] New: [gdb/tdep, riscv64] FAIL: gdb.cp/non-trivial-retval.exp: finish from f1
@ 2024-09-08  7:28 vries at gcc dot gnu.org
  2024-09-08  8:42 ` [Bug tdep/32152] " schwab@linux-m68k.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: vries at gcc dot gnu.org @ 2024-09-08  7:28 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=32152

            Bug ID: 32152
           Summary: [gdb/tdep, riscv64] FAIL:
                    gdb.cp/non-trivial-retval.exp: finish from f1
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: tdep
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

On riscv64-linux, I ran into:
...
(gdb) finish^M
Run till exit from #0  f1 (i1=i1@entry=23, i2=i2@entry=100) at
non-trivial-retval.cc:34^M
main () at non-trivial-retval.cc:163^M
163       B b = f2 (i1, i2);^M
Value returned is $6 = {a = -5856}^M
(gdb) FAIL: gdb.cp/non-trivial-retval.exp: finish from f1
...

The problem is that gdb thinks that the return value is in $a0:
...
$ gdb -q -batch non-trivial-retval \
  -ex "b f1" \
  -ex run \
  -ex "set debug riscv infcall on" \
  -ex finish
Breakpoint 1 at 0x80a: file non-trivial-retval.cc, line 34.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/riscv64-linux-gnu/libthread_db.so.1".

Breakpoint 1, f1 (i1=i1@entry=23, i2=i2@entry=100) at non-trivial-retval.cc:34
34      {
[riscv-infcall] riscv_return_value: [R] type: 'A', length: 0x4, alignment: 0x4,
register a0
[riscv-infcall] riscv_return_value: [R] type: 'A', length: 0x4, alignment: 0x4,
register a0
[riscv-infcall] riscv_return_value: [R] type: 'A', length: 0x4, alignment: 0x4,
register a0
main () at non-trivial-retval.cc:163
163       B b = f2 (i1, i2);
Value returned is $1 = {a = -3568}
...
while $a0 actually contains a pointer to the returned value 123:
...
(gdb) p /x $a0
$3 = 0x3ffffff210
(gdb) p  *((unsigned int *)$a0)
$5 = 123
...
which is instead interpreted as an int:
...
(gdb) p (int) $a0
$6 = -3568
...

The system gcc compiler is configured with --with-abi=lp64d.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2025-01-10  9:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-09-08  7:28 [Bug tdep/32152] New: [gdb/tdep, riscv64] FAIL: gdb.cp/non-trivial-retval.exp: finish from f1 vries at gcc dot gnu.org
2024-09-08  8:42 ` [Bug tdep/32152] " schwab@linux-m68k.org
2024-09-08 11:02 ` vries at gcc dot gnu.org
2024-09-09  3:40 ` vries at gcc dot gnu.org
2025-01-09 12:58 ` vries at gcc dot gnu.org
2025-01-10  9:32 ` cvs-commit at gcc dot gnu.org
2025-01-10  9:33 ` vries at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).