[Dwarf-Discuss] compilers generating ABI non-compliant function calls?

Frank Ch. Eigler fche@redhat.com
Tue Mar 9 15:13:15 GMT 2021


Hi, Andrew -

On Tue, Mar 09, 2021 at 10:05:04AM -0500, Andrew Cagney via Dwarf-Discuss wrote:
> [...]
> 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.

FWIW, gcc does not leave ABI-dependent gaps in the DWARF generated for
function parameters.  First class location lists are given, whether or
not they are in the ABI-governed locations, or whether they've been
moved somewhere else, or whether they've been optimized out so that a
consumer must recompute it somehow, or whether they exist at all.

As I understand it, the location of *function return values* is
however a gap in DWARF, and a consumer tool must resort to ABI specs.
(Thus the elfutils dwfl_module_return_value_location() function.)  I'm
sure there's a Reason for this, but having worked on a consumer, it'd
be handy if DWARF did explicitly identify the return value location
too.

- FChE




More information about the Dwarf-discuss mailing list