diff options
author | Xavier Roirand <roirand@adacore.com> | 2017-05-12 15:02:28 +0200 |
---|---|---|
committer | Tom Tromey <tromey@adacore.com> | 2021-12-02 09:08:50 -0700 |
commit | 28397ae781e0780259648991f981909c5a5045e7 (patch) | |
tree | 965ddb40bfaf93324d408a37c727baf02ef3b439 /gdb/stap-probe.h | |
parent | bc75fb44c5693114b3dc654a2e4b39c9b5a9ca26 (diff) | |
download | binutils-28397ae781e0780259648991f981909c5a5045e7.zip binutils-28397ae781e0780259648991f981909c5a5045e7.tar.gz binutils-28397ae781e0780259648991f981909c5a5045e7.tar.bz2 |
(Ada/AArch64) fix fixed point argument passing in inferior funcall
Consider the following code:
type FP1_Type is delta 0.1 range -1.0 .. +1.0; -- Ordinary
function Call_FP1 (F : FP1_Type) return FP1_Type is
begin
return F;
end Call_FP1;
When the default in GCC is to generate proper DWARF info for fixed point
types, then in gdb, printing the result of a call to call_fp1 with a
decimal parameter leads to:
(gdb) p call_fp1(0.5)
$1 = 0
The displayed value is wrong, and we actually expected:
(gdb) p call_fp1(0.5)
$1 = 0.5
What happened is that our fixed point type parameter got promoted to a
32bit integer because we detected that the length of that object was less
than 4 bytes. The compiler does not perform this promotion and therefore
GDB should not either.
This patch fixes the behavior described above.
Diffstat (limited to 'gdb/stap-probe.h')
0 files changed, 0 insertions, 0 deletions