diff options
author | Pavel Labath <labath@google.com> | 2018-07-26 14:36:07 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2018-07-26 14:36:07 +0000 |
commit | 7bfa5d65446e7dda1a8e54c806f5d7687766bb2d (patch) | |
tree | 33845d5fc27323f98e26224029de7fa0b5d4aa80 /llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h | |
parent | 640e790af2921f17d24b639ce9f0afa23d79ac78 (diff) | |
download | bcm5719-llvm-7bfa5d65446e7dda1a8e54c806f5d7687766bb2d.tar.gz bcm5719-llvm-7bfa5d65446e7dda1a8e54c806f5d7687766bb2d.zip |
dwarfgen: Add support for generating the debug_str_offsets section, take 3
Previous version of this patch failed on darwin targets because of
different handling of cross-debug-section relocations. This fixes the
tests to emit the DW_AT_str_offsets_base attribute correctly in both
cases. Since doing this is a non-trivial amount of code, and I'm going
to need it in more than one test, I've added a helper function to the
dwarfgen DIE class to do it.
Original commit message follows:
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: 338031
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h index 069c124d1a7..6e6988ea4ad 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfStringPool.h @@ -19,6 +19,7 @@ namespace llvm { class AsmPrinter; class MCSection; +class MCSymbol; // Collection of strings for this unit and assorted symbols. // A String->Symbol mapping of strings used by indirect @@ -36,6 +37,9 @@ public: DwarfStringPool(BumpPtrAllocator &A, AsmPrinter &Asm, StringRef Prefix); + void emitStringOffsetsTableHeader(AsmPrinter &Asm, MCSection *OffsetSection, + MCSymbol *StartSym); + void emit(AsmPrinter &Asm, MCSection *StrSection, MCSection *OffsetSection = nullptr, bool UseRelativeOffsets = false); |