Next: Messages/Warnings, Previous: Numbers, Up: Controlling GDB
gdb can determine the ABI (Application Binary Interface) of your application automatically. However, sometimes you need to override its conclusions. Use these commands to manage gdb's view of the current ABI.
One gdb configuration can debug binaries for multiple operating
system targets, either via remote debugging or native emulation.
gdb will autodetect the OS ABI (Operating System ABI) in use,
but you can override its conclusion using the set osabi command.
One example where this is useful is in debugging of binaries which use
an alternate C library (e.g. uClibc for gnu/Linux) which does
not have the same identifying marks that the standard C library for your
platform provides.
show osabiset osabiset osabi abi
Generally, the way that an argument of type float is passed to a
function depends on whether the function is prototyped. For a prototyped
(i.e. ANSI/ISO style) function, float arguments are passed unchanged,
according to the architecture's convention for float. For unprototyped
(i.e. K&R style) functions, float arguments are first promoted to type
double and then passed.
Unfortunately, some forms of debug information do not reliably indicate whether a function is prototyped. If gdb calls a function that is not marked as prototyped, it consults set coerce-float-to-double.
set coerce-float-to-doubleset coerce-float-to-double onfloat will be promoted to double when passed
to an unprototyped function. This is the default setting.
set coerce-float-to-double offfloat will be passed directly to unprototyped
functions.
show coerce-float-to-doublefloat to double.
gdb needs to know the ABI used for your program's C++
objects. The correct C++ ABI depends on which C++ compiler was
used to build your application. gdb only fully supports
programs with a single C++ ABI; if your program contains code using
multiple C++ ABI's or if gdb can not identify your
program's ABI correctly, you can tell gdb which ABI to use.
Currently supported ABI's include “gnu-v2”, for g++ versions
before 3.0, “gnu-v3”, for g++ versions 3.0 and later, and
“hpaCC” for the HP ANSI C++ compiler. Other C++ compilers may
use the “gnu-v2” or “gnu-v3” ABI's as well. The default setting is
“auto”.
show cp-abiset cp-abiset cp-abi abiset cp-abi auto