mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 00:32:55 +00:00
Make sure we emit a relocation to the debug_ranges section in the
presence of CU ranges. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199276 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1dc66089e6
commit
cd94a7676a
@ -209,6 +209,10 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
|||||||
else
|
else
|
||||||
HasDwarfPubSections = DwarfPubSections == Enable;
|
HasDwarfPubSections = DwarfPubSections == Enable;
|
||||||
|
|
||||||
|
// For now only turn on CU ranges if we've explicitly asked for it
|
||||||
|
// or we have -ffunction-sections enabled.
|
||||||
|
HasCURanges = DwarfCURanges || TargetMachine::getFunctionSections();
|
||||||
|
|
||||||
DwarfVersion = DwarfVersionNumber
|
DwarfVersion = DwarfVersionNumber
|
||||||
? DwarfVersionNumber
|
? DwarfVersionNumber
|
||||||
: getDwarfVersionFromModule(MMI->getModule());
|
: getDwarfVersionFromModule(MMI->getModule());
|
||||||
@ -1057,8 +1061,7 @@ void DwarfDebug::finalizeModuleInfo() {
|
|||||||
// FIXME: We should use ranges if we have multiple compile units or
|
// FIXME: We should use ranges if we have multiple compile units or
|
||||||
// allow reordering of code ala .subsections_via_symbols in mach-o.
|
// allow reordering of code ala .subsections_via_symbols in mach-o.
|
||||||
DwarfCompileUnit *U = SkCU ? SkCU : static_cast<DwarfCompileUnit *>(TheU);
|
DwarfCompileUnit *U = SkCU ? SkCU : static_cast<DwarfCompileUnit *>(TheU);
|
||||||
if ((DwarfCURanges || TargetMachine::getFunctionSections()) &&
|
if (useCURanges() && TheU->getRanges().size())
|
||||||
TheU->getRanges().size())
|
|
||||||
addSectionLabel(Asm, U, U->getUnitDie(), dwarf::DW_AT_ranges,
|
addSectionLabel(Asm, U, U->getUnitDie(), dwarf::DW_AT_ranges,
|
||||||
Asm->GetTempSymbol("cu_ranges", U->getUniqueID()),
|
Asm->GetTempSymbol("cu_ranges", U->getUniqueID()),
|
||||||
DwarfDebugRangeSectionSym);
|
DwarfDebugRangeSectionSym);
|
||||||
@ -2910,7 +2913,7 @@ void DwarfDebug::emitDebugRanges() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Now emit a range for the CU itself.
|
// Now emit a range for the CU itself.
|
||||||
if (DwarfCURanges) {
|
if (useCURanges()) {
|
||||||
Asm->OutStreamer.EmitLabel(
|
Asm->OutStreamer.EmitLabel(
|
||||||
Asm->GetTempSymbol("cu_ranges", TheCU->getUniqueID()));
|
Asm->GetTempSymbol("cu_ranges", TheCU->getUniqueID()));
|
||||||
const SmallVectorImpl<RangeSpan> &Ranges = TheCU->getRanges();
|
const SmallVectorImpl<RangeSpan> &Ranges = TheCU->getRanges();
|
||||||
|
@ -458,6 +458,9 @@ class DwarfDebug : public AsmPrinterHandler {
|
|||||||
// Whether to emit the pubnames/pubtypes sections.
|
// Whether to emit the pubnames/pubtypes sections.
|
||||||
bool HasDwarfPubSections;
|
bool HasDwarfPubSections;
|
||||||
|
|
||||||
|
// Whether or not to use AT_ranges for compilation units.
|
||||||
|
bool HasCURanges;
|
||||||
|
|
||||||
// Version of dwarf we're emitting.
|
// Version of dwarf we're emitting.
|
||||||
unsigned DwarfVersion;
|
unsigned DwarfVersion;
|
||||||
|
|
||||||
@ -733,6 +736,9 @@ public:
|
|||||||
/// split dwarf proposal support.
|
/// split dwarf proposal support.
|
||||||
bool useSplitDwarf() { return HasSplitDwarf; }
|
bool useSplitDwarf() { return HasSplitDwarf; }
|
||||||
|
|
||||||
|
/// \brief Returns whether or not to use AT_ranges for compilation units.
|
||||||
|
bool useCURanges() { return HasCURanges; }
|
||||||
|
|
||||||
/// Returns the Dwarf Version.
|
/// Returns the Dwarf Version.
|
||||||
unsigned getDwarfVersion() const { return DwarfVersion; }
|
unsigned getDwarfVersion() const { return DwarfVersion; }
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
; RUN: llc -split-dwarf=Enable -O0 %s -ffunction-sections -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t
|
; RUN: llc -split-dwarf=Enable -O0 %s -ffunction-sections -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t
|
||||||
; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck --check-prefix=FUNCTION-SECTIONS %s
|
; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck --check-prefix=FUNCTION-SECTIONS %s
|
||||||
|
; RUN: llvm-readobj --relocations %t | FileCheck --check-prefix=FUNCTION-SECTIONS-RELOCS %s
|
||||||
|
|
||||||
; RUN: llc -split-dwarf=Enable -O0 %s -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t
|
; RUN: llc -split-dwarf=Enable -O0 %s -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t
|
||||||
; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck --check-prefix=NO-FUNCTION-SECTIONS %s
|
; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck --check-prefix=NO-FUNCTION-SECTIONS %s
|
||||||
@ -12,6 +13,9 @@
|
|||||||
; With function sections enabled make sure that we have a DW_AT_ranges attribute.
|
; With function sections enabled make sure that we have a DW_AT_ranges attribute.
|
||||||
; FUNCTION-SECTIONS: DW_AT_ranges
|
; FUNCTION-SECTIONS: DW_AT_ranges
|
||||||
|
|
||||||
|
; Check that we have a relocation against the .debug_ranges section.
|
||||||
|
; FUNCTION-SECTIONS-RELOCS: R_X86_64_32 .debug_ranges 0x0
|
||||||
|
|
||||||
; Without function sections enabled make sure that we have no DW_AT_ranges attribute.
|
; Without function sections enabled make sure that we have no DW_AT_ranges attribute.
|
||||||
; NO-FUNCTION-SECTIONS-NOT: DW_AT_ranges
|
; NO-FUNCTION-SECTIONS-NOT: DW_AT_ranges
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user