[all-commits] [llvm/llvm-project] f7052d: [DWARF] Emit DW_AT_call_pc for tail calls

Vedant Kumar via All-commits all-commits at lists.llvm.org
Tue Mar 24 12:02:26 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f7052da6db8f85814adb2e1a6742d607e774bb88
      https://github.com/llvm/llvm-project/commit/f7052da6db8f85814adb2e1a6742d607e774bb88
  Author: Vedant Kumar <vsk at apple.com>
  Date:   2020-03-24 (Tue, 24 Mar 2020)

  Changed paths:
    M llvm/include/llvm/DWARFLinker/DWARFLinker.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
    M llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
    M llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
    M llvm/lib/DWARFLinker/DWARFLinker.cpp
    M llvm/test/DebugInfo/MIR/X86/call-site-gnu-vs-dwarf5-attrs.mir
    M llvm/test/DebugInfo/X86/dwarf-callsite-related-attrs.ll
    A llvm/test/tools/dsymutil/X86/Inputs/tail-call.cpp
    A llvm/test/tools/dsymutil/X86/Inputs/tail-call.macho.x86_64
    A llvm/test/tools/dsymutil/X86/Inputs/tail-call.macho.x86_64.o
    A llvm/test/tools/dsymutil/X86/tail-call-linking.test

  Log Message:
  -----------
  [DWARF] Emit DW_AT_call_pc for tail calls

Record the address of a tail-calling branch instruction within its call
site entry using DW_AT_call_pc. This allows a debugger to determine the
address to use when creating aritificial frames.

This creates an extra attribute + relocation at tail call sites, which
constitute 3-5% of all call sites in xnu/clang respectively.

rdar://60307600

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


  Commit: 6905394d153960ded3a7b884a9747ed2d4a6e8d8
      https://github.com/llvm/llvm-project/commit/6905394d153960ded3a7b884a9747ed2d4a6e8d8
  Author: Vedant Kumar <vsk at apple.com>
  Date:   2020-03-24 (Tue, 24 Mar 2020)

  Changed paths:
    M lldb/include/lldb/Symbol/Function.h
    M lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
    M lldb/source/Symbol/Function.cpp
    M lldb/source/Target/StackFrameList.cpp
    M lldb/test/API/functionalities/tail_call_frames/unambiguous_sequence/main.cpp

  Log Message:
  -----------
  [lldb/DWARF] Use DW_AT_call_pc to determine artificial frame address

lldb currently guesses the address to use when creating an artificial
frame (i.e., a frame constructed by determining the sequence of (tail)
calls which must have happened).

Guessing the address creates problems -- use the actual address provided
by the DW_AT_call_pc attribute instead.

Depends on D76336.

rdar://60307600

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


Compare: https://github.com/llvm/llvm-project/compare/c5f4b7283533...6905394d1539


More information about the All-commits mailing list