diff options
author | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2014-02-04 18:42:35 +0100 |
---|---|---|
committer | Ulrich Weigand <ulrich.weigand@de.ibm.com> | 2014-02-04 18:42:35 +0100 |
commit | cc0e89c519912e0e4e75a2fc0d836f715cdc6806 (patch) | |
tree | d628750c8612ac48f864de53bb42fedb4f87e6e6 /gdb/ppc-linux-tdep.c | |
parent | 52f548e41f085550d7740c350c1c8a239532af77 (diff) | |
download | gdb-cc0e89c519912e0e4e75a2fc0d836f715cdc6806.zip gdb-cc0e89c519912e0e4e75a2fc0d836f715cdc6806.tar.gz gdb-cc0e89c519912e0e4e75a2fc0d836f715cdc6806.tar.bz2 |
PowerPC64 ELFv2 ABI: structure passing / return
Another significant difference in the ELFv2 ABI is that "homogeneous"
floating-point and vector aggregates, i.e. aggregates the consist
(recursively) only of members of the same floating-point or vector type,
are passed in a series of floating-point / vector registers, as if they
were seperate parameters. (This is similar to the ARM ABI.) This
applies to both calls and returns.
In addition when returning any aggregate of up to 16 bytes, ELFv2 now
used general-purpose registers.
This patch adds support for these aspects of the ABI, which is relatively
straightforward after the refactoring patch to ppc-sysv-tdep.c.
gdb/ChangeLog:
* ppc-sysv-tdep.c (ppc64_aggregate_candidate): New routine.
(ppc64_elfv2_abi_homogeneous_aggregate): Likewise.
(ppc64_sysv_abi_push_param): Handle ELFv2 homogeneous structs.
(ppc64_sysv_abi_return_value): Likewise. Also, handle small
structures returned in GPRs.
Diffstat (limited to 'gdb/ppc-linux-tdep.c')
0 files changed, 0 insertions, 0 deletions