This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH 0/4] Aarch64: Correctly support args passed in float registers.
- From: Alan Hayward <alan dot hayward at arm dot com>
- To: gdb-patches at sourceware dot org
- Cc: nd at arm dot com, Alan Hayward <alan dot hayward at arm dot com>
- Date: Mon, 20 Aug 2018 10:29:29 +0100
- Subject: [PATCH 0/4] Aarch64: Correctly support args passed in float registers.
GDB currently does not adhere to the AAPCS spec when passing structures that
contain float arguments. It works for simple structures but does not correctly
detect nested structures.
This is shown by the failing tests in the recently added
infcall-nested-structs.exp. See PR gdb/22943.
Patch 1 contains a new function for correctly detecting float args.
I wrote this by taking the equivalent function in GCC and modifying it until
it fit into GDB, then simplified and cleaned up.
Patches 2 and 3 then use this function.
Patch 4 extends the infcall-nested-structs test to cover structures with 4
and 5 fields - 4 fields is the maximum number of fields that can be passed
via float args.
For the full spec see:
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf
Alan Hayward (4):
Aarch64: Add function to detect args passed in float registers
Aarch64: Float register detection for _push_dummy_call
Aarch64: Float register detection for return values.
infcall-nested-structs: Test up to five fields
gdb/aarch64-tdep.c | 444 ++++++++++++----------
gdb/testsuite/gdb.base/infcall-nested-structs.c | 168 +++++---
gdb/testsuite/gdb.base/infcall-nested-structs.exp | 5 +-
3 files changed, 366 insertions(+), 251 deletions(-)
--
2.15.2 (Apple Git-101.1)