summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-07-25 11:55:59 +0000
committerPavel Labath <labath@google.com>2018-07-25 11:55:59 +0000
commit7a59e3bf3775ca3ae33501a4c36ab8b66843eba9 (patch)
tree497a2d13ed0e9e5c64f0636a1590db122721dc50 /llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
parent374af8070eb8f1174d813c21a2d6eb2f25fa8406 (diff)
downloadbcm5719-llvm-7a59e3bf3775ca3ae33501a4c36ab8b66843eba9.tar.gz
bcm5719-llvm-7a59e3bf3775ca3ae33501a4c36ab8b66843eba9.zip
dwarfgen: Add support for generating the debug_str_offsets section
Summary: The motivation for this is D49493, where we'd like to test details of debug_str_offsets behavior which is difficult to trigger from a traditional test. This adds the plubming necessary for dwarfgen to generate this section. The more interesting changes are: - I've moved emitStringOffsetsTableHeader function from DwarfFile to DwarfStringPool, so I can generate the section header more easily from the unit test. - added a new addAttribute overload taking an MCExpr*. This is used to generate the DW_AT_str_offsets_base, which links a compile unit to the offset table. I've also added a basic test for reading and writing DW_form_strx forms. Reviewers: dblaikie, JDevlieghere, probinson Subscribers: llvm-commits, aprantl Differential Revision: https://reviews.llvm.org/D49670 llvm-svn: 337910
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index f1e61b488a2..d2f123ce78e 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -1506,8 +1506,9 @@ void DwarfDebug::emitAbbreviations() {
void DwarfDebug::emitStringOffsetsTableHeader() {
DwarfFile &Holder = useSplitDwarf() ? SkeletonHolder : InfoHolder;
- Holder.emitStringOffsetsTableHeader(
- Asm->getObjFileLowering().getDwarfStrOffSection());
+ Holder.getStringPool().emitStringOffsetsTableHeader(
+ *Asm, Asm->getObjFileLowering().getDwarfStrOffSection(),
+ Holder.getStringOffsetsStartSym());
}
template <typename AccelTableT>
@@ -2292,8 +2293,9 @@ void DwarfDebug::emitDebugLineDWO() {
void DwarfDebug::emitStringOffsetsTableHeaderDWO() {
assert(useSplitDwarf() && "No split dwarf?");
- InfoHolder.emitStringOffsetsTableHeader(
- Asm->getObjFileLowering().getDwarfStrOffDWOSection());
+ InfoHolder.getStringPool().emitStringOffsetsTableHeader(
+ *Asm, Asm->getObjFileLowering().getDwarfStrOffDWOSection(),
+ InfoHolder.getStringOffsetsStartSym());
}
// Emit the .debug_str.dwo section for separated dwarf. This contains the
OpenPOWER on IntegriCloud