aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
diff options
context:
space:
mode:
authorWolfgang Pieb <Wolfgang.Pieb@sony.com>2018-01-26 18:52:58 +0000
committerWolfgang Pieb <Wolfgang.Pieb@sony.com>2018-01-26 18:52:58 +0000
commit456b555ffe3788118b44732917858ab51d68a079 (patch)
tree8a169e5e653d8f62abf19f875bed6757b0b922d0 /llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
parentb8ae262bd355b64ce3df6451efafc8cfa88776a4 (diff)
downloadllvm-456b555ffe3788118b44732917858ab51d68a079.zip
llvm-456b555ffe3788118b44732917858ab51d68a079.tar.gz
llvm-456b555ffe3788118b44732917858ab51d68a079.tar.bz2
[DWARF] Generate DWARF v5 string offsets tables along with strx* index forms.
Summary: This is the producer side for DWARF v5 string offsets tables. The reader/consumer side was committed with r321295. All compile and type units in a module share a contribution to the string offsets table. Indirect strings use the strx{1,2,3,4} index forms. Reviewers: dblaikie, aprantl, JDevliegehere Differential Revision: https://reviews.llvm.org/D42021 llvm-svn: 323546
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
index aa5f01e..f296467 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.cpp
@@ -40,7 +40,7 @@ DwarfStringPool::EntryRef DwarfStringPool::getEntry(AsmPrinter &Asm,
}
void DwarfStringPool::emit(AsmPrinter &Asm, MCSection *StrSection,
- MCSection *OffsetSection) {
+ MCSection *OffsetSection, bool UseRelativeOffsets) {
if (Pool.empty())
return;
@@ -74,6 +74,9 @@ void DwarfStringPool::emit(AsmPrinter &Asm, MCSection *StrSection,
Asm.OutStreamer->SwitchSection(OffsetSection);
unsigned size = 4; // FIXME: DWARF64 is 8.
for (const auto &Entry : Entries)
- Asm.OutStreamer->EmitIntValue(Entry->getValue().Offset, size);
+ if (UseRelativeOffsets)
+ Asm.emitDwarfStringOffset(Entry->getValue());
+ else
+ Asm.OutStreamer->EmitIntValue(Entry->getValue().Offset, size);
}
}