HomePhabricator

[DWARF] Use a function-local offset for AT_call_return_pc

Description

[DWARF] Use a function-local offset for AT_call_return_pc

Logs provided by @stella.stamenova indicate that on Linux, lldb adds a
spurious slide offset to the return PC it loads from AT_call_return_pc
attributes (see the list thread: "[PATCH] D50478: Add support for
artificial tail call frames").

This patch side-steps the issue by getting rid of the load address
calculation in lldb's CallEdge::GetReturnPCAddress.

The idea is to have the DWARF writer emit function-local offsets to the
instruction after a call. I.e. return-pc = label-after-call-insn -
function-entry. LLDB can simply add this offset to the base address of a
function to get the return PC.

Differential Revision: https://reviews.llvm.org/D53469

Details

Committed
vedantkOct 22 2018, 2:44 PM
Differential Revision
D53469: [DWARF] Use a function-local offset for AT_call_return_pc
Branches
Unknown
Tags
Unknown