summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-05-07 19:40:50 +0000
committerSam Clegg <sbc@chromium.org>2018-05-07 19:40:50 +0000
commitfb807d4dd49f912313ea2fde4fd3acac271a09cb (patch)
treea96df4842db3a1da47f51aa908ee1bc24f680b7e
parentcca69985045e00a1fe5612e11587cf8065b6e8be (diff)
downloadbcm5719-llvm-fb807d4dd49f912313ea2fde4fd3acac271a09cb.tar.gz
bcm5719-llvm-fb807d4dd49f912313ea2fde4fd3acac271a09cb.zip
[WebAssembly] Ensure all .debug_XXX section has proper symbol names
Updated wasm section symbols names to match section name, and ensure all referenced sections will have a symbol (per DWARF spec v3, Figure 43) Patch by Yury Delendik! Differential Revision: https://reviews.llvm.org/D46543 llvm-svn: 331664
-rw-r--r--llvm/lib/MC/MCObjectFileInfo.cpp9
-rw-r--r--llvm/lib/MC/WasmObjectWriter.cpp6
2 files changed, 11 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCObjectFileInfo.cpp b/llvm/lib/MC/MCObjectFileInfo.cpp
index ce9c3529f4f..e2890172881 100644
--- a/llvm/lib/MC/MCObjectFileInfo.cpp
+++ b/llvm/lib/MC/MCObjectFileInfo.cpp
@@ -870,10 +870,13 @@ void MCObjectFileInfo::initWasmMCObjectFileInfo(const Triple &T) {
DwarfLineStrSection =
Ctx->getWasmSection(".debug_line_str", SectionKind::getMetadata());
DwarfStrSection = Ctx->getWasmSection(".debug_str", SectionKind::getMetadata(), ".debug_str");
- DwarfLocSection = Ctx->getWasmSection(".debug_loc", SectionKind::getMetadata());
- DwarfAbbrevSection = Ctx->getWasmSection(".debug_abbrev", SectionKind::getMetadata(), ".section_abbrev");
+ DwarfLocSection = Ctx->getWasmSection(
+ ".debug_loc", SectionKind::getMetadata(), ".debug_loc");
+ DwarfAbbrevSection = Ctx->getWasmSection(
+ ".debug_abbrev", SectionKind::getMetadata(), ".debug_abbrev");
DwarfARangesSection = Ctx->getWasmSection(".debug_aranges", SectionKind::getMetadata());
- DwarfRangesSection = Ctx->getWasmSection(".debug_ranges", SectionKind::getMetadata(), ".debug_range");
+ DwarfRangesSection = Ctx->getWasmSection(
+ ".debug_ranges", SectionKind::getMetadata(), ".debug_ranges");
DwarfMacinfoSection = Ctx->getWasmSection(".debug_macinfo", SectionKind::getMetadata(), ".debug_macinfo");
DwarfAddrSection = Ctx->getWasmSection(".debug_addr", SectionKind::getMetadata());
DwarfCUIndexSection = Ctx->getWasmSection(".debug_cu_index", SectionKind::getMetadata());
diff --git a/llvm/lib/MC/WasmObjectWriter.cpp b/llvm/lib/MC/WasmObjectWriter.cpp
index 407907c0f68..5ac5f6c2278 100644
--- a/llvm/lib/MC/WasmObjectWriter.cpp
+++ b/llvm/lib/MC/WasmObjectWriter.cpp
@@ -1207,8 +1207,12 @@ void WasmObjectWriter::writeObject(MCAssembler &Asm,
Name = Name.substr(strlen(".custom_section."));
MCSymbol* Begin = Sec.getBeginSymbol();
- if (Begin)
+ if (Begin) {
WasmIndices[cast<MCSymbolWasm>(Begin)] = CustomSections.size();
+ if (Name != Begin->getName())
+ report_fatal_error("section name and begin symbol should match: " +
+ Twine(Name));
+ }
CustomSections.emplace_back(Name, &Section);
}
}
OpenPOWER on IntegriCloud