[llvm] b47403c - [DWARF5] Replace emission of strp with stx forms in debug_macro section
Sourabh Singh Tomar via llvm-commits
llvm-commits at lists.llvm.org
Fri May 29 11:58:42 PDT 2020
Author: Sourabh Singh Tomar
Date: 2020-05-30T00:24:09+05:30
New Revision: b47403c0a4c532554cf3d67ed1669fe00530aab3
URL: https://github.com/llvm/llvm-project/commit/b47403c0a4c532554cf3d67ed1669fe00530aab3
DIFF: https://github.com/llvm/llvm-project/commit/b47403c0a4c532554cf3d67ed1669fe00530aab3.diff
LOG: [DWARF5] Replace emission of strp with stx forms in debug_macro section
DW_MACRO_define_strx forms are supported now in llvm-dwarfdump and these
forms can be used in both debug_macro[.dwo] sections. An added advantage
for using strx forms over strp forms is that it uses indices
approach instead of a relocation to debug_str section.
This patch unify the emission for debug_macro section.
Reviewed by: dblaikie, ikudrin
Differential Revision: https://reviews.llvm.org/D78865
Added:
Modified:
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
llvm/test/DebugInfo/X86/debug-macro-v5.ll
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 953154f0b10b..84bc1a13c984 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -2924,26 +2924,23 @@ void DwarfDebug::emitMacro(DIMacro &M) {
if (UseMacro) {
unsigned Type = M.getMacinfoType() == dwarf::DW_MACINFO_define
- ? dwarf::DW_MACRO_define_strp
- : dwarf::DW_MACRO_undef_strp;
+ ? dwarf::DW_MACRO_define_strx
+ : dwarf::DW_MACRO_undef_strx;
Asm->OutStreamer->AddComment(dwarf::MacroString(Type));
Asm->emitULEB128(Type);
Asm->OutStreamer->AddComment("Line Number");
Asm->emitULEB128(M.getLine());
Asm->OutStreamer->AddComment("Macro String");
if (!Value.empty())
- Asm->OutStreamer->emitSymbolValue(
- this->InfoHolder.getStringPool()
- .getEntry(*Asm, (Name + " " + Value).str())
- .getSymbol(),
- 4);
+ Asm->emitULEB128(this->InfoHolder.getStringPool()
+ .getIndexedEntry(*Asm, (Name + " " + Value).str())
+ .getIndex());
else
- // DW_MACRO_undef_strp doesn't have a value, so just emit the macro
+ // DW_MACRO_undef_strx doesn't have a value, so just emit the macro
// string.
- Asm->OutStreamer->emitSymbolValue(this->InfoHolder.getStringPool()
- .getEntry(*Asm, (Name).str())
- .getSymbol(),
- 4);
+ Asm->emitULEB128(this->InfoHolder.getStringPool()
+ .getIndexedEntry(*Asm, (Name).str())
+ .getIndex());
} else {
Asm->OutStreamer->AddComment(dwarf::MacinfoString(M.getMacinfoType()));
Asm->emitULEB128(M.getMacinfoType());
diff --git a/llvm/test/DebugInfo/X86/debug-macro-v5.ll b/llvm/test/DebugInfo/X86/debug-macro-v5.ll
index 3307c10addc5..85df7769d71d 100644
--- a/llvm/test/DebugInfo/X86/debug-macro-v5.ll
+++ b/llvm/test/DebugInfo/X86/debug-macro-v5.ll
@@ -11,12 +11,12 @@
; CHECK-NEXT: macro header: version = 0x0005, flags = 0x02, debug_line_offset = 0x0000
; CHECK-NEXT: DW_MACRO_start_file - lineno: 0 filenum: 0
; CHECK-NEXT: DW_MACRO_start_file - lineno: 1 filenum: 1
-; CHECK-NEXT: DW_MACRO_define_strp - lineno: 1 macro: FOO 5
+; CHECK-NEXT: DW_MACRO_define_strx - lineno: 1 macro: FOO 5
; CHECK-NEXT: DW_MACRO_end_file
; CHECK-NEXT: DW_MACRO_start_file - lineno: 2 filenum: 2
-; CHECK-NEXT: DW_MACRO_undef_strp - lineno: 14 macro: YEA
+; CHECK-NEXT: DW_MACRO_undef_strx - lineno: 14 macro: YEA
; CHECK-NEXT: DW_MACRO_end_file
-; CHECK-NEXT: DW_MACRO_undef_strp - lineno: 14 macro: YEA
+; CHECK-NEXT: DW_MACRO_undef_strx - lineno: 14 macro: YEA
; CHECK-NEXT: DW_MACRO_end_file
; ModuleID = 'test.c'
More information about the llvm-commits
mailing list