[Dwarf-Discuss] compilers generating ABI non-compliant function calls?
Andrew Cagney
andrew.cagney@gmail.com
Tue Mar 9 15:05:04 GMT 2021
Part of a typical Application Binary Interface is to specify the
function calling convention. Several uses are:
- ensuring function calls across interface boundaries work (function
in one object calls function in second object)
- the debugger supplementing the debug information describing the
location of parameters
- the debugger implementing inferior function calls
Typically calls both between and within object files (DWARF
compilation unit) follow the ABI (with exceptions for things like
__mul, but good ABIs even defined those).
Technically, however, only functions visible via an interface need
comply with the ABI. This means that:
- for simple objects, local functions; and
- with link-time-optimization, everything except library interface functions
are fair game for ABI non-compliant call optimizations.
Is anyone aware of a compiler doing this (I figure with LTO there's a
strong incentive)? And if so, how is this described to the debugger.
The ABI / calling-convention is no longer on hand for filling in the
blanks.
(Keep in mind that this is different to adding an attribute to a
function indicating it should follow a different calling convention -
while different, it is still defined ahead of time).
More information about the Dwarf-discuss
mailing list