[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