From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2126) id 7C75E385840C; Wed, 5 Jan 2022 19:38:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7C75E385840C Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tom Tromey To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Change riscv_return_value to use RETURN_VALUE_ABI_PRESERVES_ADDRESS X-Act-Checkin: binutils-gdb X-Git-Author: Tom Tromey X-Git-Refname: refs/heads/master X-Git-Oldrev: 729a211143c69e42debcb26bec7071d958e12b45 X-Git-Newrev: d4be21dce768ba5cddc300544a4953748187982c Message-Id: <20220105193815.7C75E385840C@sourceware.org> Date: Wed, 5 Jan 2022 19:38:15 +0000 (GMT) X-BeenThere: gdb-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Jan 2022 19:38:15 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Dd4be21dce768= ba5cddc300544a4953748187982c commit d4be21dce768ba5cddc300544a4953748187982c Author: Tom Tromey Date: Tue Dec 14 08:46:59 2021 -0700 Change riscv_return_value to use RETURN_VALUE_ABI_PRESERVES_ADDRESS =20 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. =20 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. =20 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. Diff: --- gdb/riscv-tdep.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c index 5a6269887e7..886996ce5b7 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"));