gdb can examine, set and perform computations with numbers in
decimal floating point format, which in the C language correspond to the
_Decimal32
, _Decimal64
and _Decimal128
types as
specified by the extension to support decimal floating-point arithmetic.
There are two encodings in use, depending on the architecture: BID (Binary Integer Decimal) for x86 and x86-64, and DPD (Densely Packed Decimal) for PowerPC and S/390. gdb will use the appropriate encoding for the configured target.
Because of a limitation in libdecnumber, the library used by gdb to manipulate decimal floating point numbers, it is not possible to convert (using a cast, for example) integers wider than 32-bit to decimal float.
In addition, in order to imitate gdb's behaviour with binary floating point computations, error checking in decimal float operations ignores underflow, overflow and divide by zero exceptions.
In the PowerPC architecture, gdb provides a set of pseudo-registers
to inspect _Decimal128
values stored in floating point registers.
See PowerPC for more details.