aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli/cli-script.c
diff options
context:
space:
mode:
authorUlrich Weigand <ulrich.weigand@de.ibm.com>2014-02-04 18:34:19 +0100
committerUlrich Weigand <ulrich.weigand@de.ibm.com>2014-02-04 18:36:54 +0100
commit0ff3e01fdc67a3842ee54224cf197e9a55f0a750 (patch)
tree6701305e41191a62601abc754dee8fd5013d9072 /gdb/cli/cli-script.c
parent5b757e5ddbd9ad252d9c51103f1aa52b41c2e947 (diff)
downloadbinutils-0ff3e01fdc67a3842ee54224cf197e9a55f0a750.zip
binutils-0ff3e01fdc67a3842ee54224cf197e9a55f0a750.tar.gz
binutils-0ff3e01fdc67a3842ee54224cf197e9a55f0a750.tar.bz2
PowerPC64 little-endian fixes: 128-bit DFP parameters / registers
The powerpc64le-linux ABI specifies that when a 128-bit DFP value is passed in a pair of floating-point registers, the first register holds the most-significant part of the value. This is as opposed to the usual rule on little-endian systems, where the first register would hold the least-significant part. This affects two places in GDB, the read/write routines for the 128-bit DFP pseudo-registers, and the function call / return sequence. For the former, current code already distinguishes between big- and little-endian targets, but gets the latter wrong. This is presumably because *GCC* also got it wrong, and GDB matches the old GCC behavior. But GCC is now fixed: http://gcc.gnu.org/ml/gcc-patches/2013-11/msg02145.html so GDB needs to be fixed too. (Old code shouldn't really be an issue since there is no code "out there" so far that uses dfp128 on little-endian ...) gdb/ChangeLog: * ppc-sysv-tdep.c (ppc64_sysv_abi_push_freg): Use correct order within a register pair holding a DFP 128-bit value on little-endian. (ppc64_sysv_abi_return_value_base): Likewise. * rs6000-tdep.c (dfp_pseudo_register_read): Likewise. (dfp_pseudo_register_write): Likewise. gdb/testsuite/ChangeLog: * gdb.arch/powerpc-d128-regs.exp: Enable on powerpc64*-*.
Diffstat (limited to 'gdb/cli/cli-script.c')
0 files changed, 0 insertions, 0 deletions