summaryrefslogtreecommitdiff
path: root/lib/DebugInfo/DWARFContext.cpp
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2013-01-07 19:32:41 +0000
committerEric Christopher <echristo@gmail.com>2013-01-07 19:32:41 +0000
commitdd8e9f395e881972b320d947de88102a0be04b70 (patch)
tree21842f103965e21cb354a45a98cc813c108576b8 /lib/DebugInfo/DWARFContext.cpp
parent5b7f9216c357f1cdf507f300f396b44cb982eb3f (diff)
downloadllvm-dd8e9f395e881972b320d947de88102a0be04b70.tar.gz
llvm-dd8e9f395e881972b320d947de88102a0be04b70.tar.bz2
llvm-dd8e9f395e881972b320d947de88102a0be04b70.tar.xz
Add support for separating strings for the split debug info DWARF5
proposal. This leaves the strings in the skeleton die as strp, but in all dwo files they're accessed now via DW_FORM_GNU_str_index. Add support for dumping these sections and modify the fission-cu.ll testcase to have the correct strings and form. Fix a small bug in the fixed form sizes routine that involved out of array accesses for the table and add a FIXME in the extractFast routine to fix this up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171779 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/DebugInfo/DWARFContext.cpp')
-rw-r--r--lib/DebugInfo/DWARFContext.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/DebugInfo/DWARFContext.cpp b/lib/DebugInfo/DWARFContext.cpp
index 1270e6ec72..d6d9fcf3ea 100644
--- a/lib/DebugInfo/DWARFContext.cpp
+++ b/lib/DebugInfo/DWARFContext.cpp
@@ -152,7 +152,8 @@ void DWARFContext::parseCompileUnits() {
while (DIData.isValidOffset(offset)) {
CUs.push_back(DWARFCompileUnit(getDebugAbbrev(), getInfoSection(),
getAbbrevSection(), getRangeSection(),
- getStringSection(), &infoRelocMap(),
+ getStringSection(), "",
+ &infoRelocMap(),
isLittleEndian()));
if (!CUs.back().extract(DIData, &offset)) {
CUs.pop_back();
@@ -172,6 +173,7 @@ void DWARFContext::parseDWOCompileUnits() {
getAbbrevDWOSection(),
getRangeDWOSection(),
getStringDWOSection(),
+ getStringOffsetDWOSection(),
&infoDWORelocMap(),
isLittleEndian()));
if (!DWOCUs.back().extract(DIData, &offset)) {
@@ -382,6 +384,8 @@ DWARFContextInMemory::DWARFContextInMemory(object::ObjectFile *Obj) :
AbbrevDWOSection = data;
else if (name == "debug_str.dwo")
StringDWOSection = data;
+ else if (name == "debug_str_offsets.dwo")
+ StringOffsetDWOSection = data;
// Any more debug info sections go here.
else
continue;