[PATCH] D50057: [MC] Report fatal error for DWARF types for non-ELF object files

Jonas Devlieghere via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 1 05:53:34 PDT 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL338527: [MC] Report fatal error for DWARF types for non-ELF object files (authored by JDevlieghere, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D50057?vs=158230&id=158514#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D50057

Files:
  llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  llvm/trunk/lib/MC/MCObjectFileInfo.cpp
  llvm/trunk/test/DebugInfo/X86/accel-tables-dwarf5.ll
  llvm/trunk/test/DebugInfo/X86/accel-tables.ll


Index: llvm/trunk/test/DebugInfo/X86/accel-tables-dwarf5.ll
===================================================================
--- llvm/trunk/test/DebugInfo/X86/accel-tables-dwarf5.ll
+++ llvm/trunk/test/DebugInfo/X86/accel-tables-dwarf5.ll
@@ -15,8 +15,11 @@
 ; type units. Change this once DWARF v5 type units are implemented.
 ; RUN: llc -mtriple=x86_64-pc-linux -filetype=obj -generate-type-units -debugger-tune=lldb < %s \
 ; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=NONE %s
+
+; Debug types are ignored for non-ELF targets which means it shouldn't affect
+; accelerator table generation.
 ; RUN: llc -mtriple=x86_64-apple-darwin12 -generate-type-units -filetype=obj < %s \
-; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=NONE %s
+; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=DEBUG_NAMES %s
 
 ; NONE-NOT: apple_names
 ; NONE-NOT: debug_names
Index: llvm/trunk/test/DebugInfo/X86/accel-tables.ll
===================================================================
--- llvm/trunk/test/DebugInfo/X86/accel-tables.ll
+++ llvm/trunk/test/DebugInfo/X86/accel-tables.ll
@@ -12,12 +12,15 @@
 ; RUN: llc -mtriple=x86_64-pc-linux -filetype=obj -debugger-tune=lldb < %s \
 ; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=DEBUG_NAMES %s
 
-; Neither target has accelerator tables if type units are enabled, as DWARF v4
-; type units are not compatible with accelerator tables.
+; No accelerator tables if type units are enabled, as DWARF v4 type units are
+; not compatible with accelerator tables.
 ; RUN: llc -mtriple=x86_64-pc-linux -filetype=obj -generate-type-units -debugger-tune=lldb < %s \
 ; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=NONE %s
+
+; Debug types are ignored for non-ELF targets which means it shouldn't affect
+; accelerator table generation.
 ; RUN: llc -mtriple=x86_64-apple-darwin12 -generate-type-units -filetype=obj < %s \
-; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=NONE %s
+; RUN:   | llvm-readobj -sections - | FileCheck --check-prefix=APPLE %s
 
 ; APPLE-NOT: debug_names
 ; APPLE: apple_names
Index: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -364,7 +364,9 @@
   else
     UseSectionsAsReferences = DwarfSectionsAsReferences == Enable;
 
-  GenerateTypeUnits = GenerateDwarfTypeUnits;
+  // Don't generate type units for unsupported object file formats.
+  GenerateTypeUnits =
+      A->TM.getTargetTriple().isOSBinFormatELF() && GenerateDwarfTypeUnits;
 
   TheAccelTableKind = computeAccelTableKind(
       DwarfVersion, GenerateTypeUnits, DebuggerTuning, A->TM.getTargetTriple());
Index: llvm/trunk/lib/MC/MCObjectFileInfo.cpp
===================================================================
--- llvm/trunk/lib/MC/MCObjectFileInfo.cpp
+++ llvm/trunk/lib/MC/MCObjectFileInfo.cpp
@@ -950,8 +950,18 @@
 }
 
 MCSection *MCObjectFileInfo::getDwarfTypesSection(uint64_t Hash) const {
-  return Ctx->getELFSection(".debug_types", ELF::SHT_PROGBITS, ELF::SHF_GROUP,
-                            0, utostr(Hash));
+  switch (TT.getObjectFormat()) {
+  case Triple::ELF:
+    return Ctx->getELFSection(".debug_types", ELF::SHT_PROGBITS, ELF::SHF_GROUP,
+                              0, utostr(Hash));
+  case Triple::MachO:
+  case Triple::COFF:
+  case Triple::Wasm:
+  case Triple::UnknownObjectFormat:
+    report_fatal_error("Cannot get DWARF types section for this object file "
+                       "format: not implemented.");
+    break;
+  }
 }
 
 MCSection *


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50057.158514.patch
Type: text/x-patch
Size: 3687 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180801/e08d8f9b/attachment.bin>


More information about the llvm-commits mailing list