forked from OSchip/llvm-project
[MC] Report fatal error for DWARF types for non-ELF object files
Getting the DWARF types section is only implemented for ELF object files. We already disabled emitting debug types in clang (r337717), but now we also report an fatal error (rather than crashing) when trying to obtain this section in MC. Additionally we ignore the generate debug types flag for unsupported target triples. See PR38190 for more information. Differential revision: https://reviews.llvm.org/D50057 llvm-svn: 338527
This commit is contained in:
parent
59dad0f7cd
commit
8acb74e01f
|
@ -364,7 +364,9 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
|||
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());
|
||||
|
|
|
@ -950,8 +950,18 @@ void MCObjectFileInfo::InitMCObjectFileInfo(const Triple &TheTriple, bool PIC,
|
|||
}
|
||||
|
||||
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 *
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue