aboutsummaryrefslogtreecommitdiff
path: root/gdb/ppc-linux-tdep.c
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2014-02-04 18:42:35 +0100
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2014-02-04 18:42:35 +0100
commitcc0e89c519912e0e4e75a2fc0d836f715cdc6806 (patch)
treed628750c8612ac48f864de53bb42fedb4f87e6e6 /gdb/ppc-linux-tdep.c
parent52f548e41f085550d7740c350c1c8a239532af77 (diff)
downloadgdb-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