aboutsummaryrefslogtreecommitdiff
path: root/gdb/riscv-tdep.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2021-12-14 08:46:59 -0700
committerTom Tromey <tromey@adacore.com>2022-01-05 12:35:42 -0700
commitd4be21dce768ba5cddc300544a4953748187982c (patch)
treef3d2e396f147f36c99b45d31234c81c8d2d4ee7e /gdb/riscv-tdep.c
parent729a211143c69e42debcb26bec7071d958e12b45 (diff)
downloadgdb-d4be21dce768ba5cddc300544a4953748187982c.zip
gdb-d4be21dce768ba5cddc300544a4953748187982c.tar.gz
gdb-d4be21dce768ba5cddc300544a4953748187982c.tar.bz2
Change riscv_return_value to use RETURN_VALUE_ABI_PRESERVES_ADDRESS
Internally, AdaCore has a test that is equivalent to (really a direct translation of) gdb.base/gnu_vector.exp. On 32-bit RISC-V, the "return" part of this test fails. Joel tracked this down to riscv_return_value returning RETURN_VALUE_ABI_RETURNS_ADDRESS. Using RETURN_VALUE_ABI_PRESERVES_ADDRESS is more correct here, and fixes the bug. I tested this for both 32- and 64-bit RISC-V using the AdaCore internal test suite, and Andrew Burgess tested it using gnu_vector.exp.
Diffstat (limited to 'gdb/riscv-tdep.c')
-rw-r--r--gdb/riscv-tdep.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index 5a62698..886996c 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -3301,7 +3301,7 @@ riscv_return_value (struct gdbarch *gdbarch,
case riscv_arg_info::location::in_reg:
return RETURN_VALUE_REGISTER_CONVENTION;
case riscv_arg_info::location::by_ref:
- return RETURN_VALUE_ABI_RETURNS_ADDRESS;
+ return RETURN_VALUE_ABI_PRESERVES_ADDRESS;
case riscv_arg_info::location::on_stack:
default:
error (_("invalid argument location"));