diff options
author | Tom Tromey <tromey@adacore.com> | 2021-12-14 08:46:59 -0700 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2022-01-05 12:35:42 -0700 |
commit | d4be21dce768ba5cddc300544a4953748187982c (patch) | |
tree | f3d2e396f147f36c99b45d31234c81c8d2d4ee7e /gdb/riscv-tdep.c | |
parent | 729a211143c69e42debcb26bec7071d958e12b45 (diff) | |
download | gdb-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.c | 2 |
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")); |