summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2014-11-24 18:43:37 +0000
committerdim <dim@FreeBSD.org>2014-11-24 18:43:37 +0000
commit82ca21468e7fe6a5112961ba86434579bed3f204 (patch)
treec2772f1f62ff857fee7802d46eb79f45d45d6d54 /contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff
parent6148c19c738a92f344008aa3f88f4e008bada0ee (diff)
downloadFreeBSD-src-82ca21468e7fe6a5112961ba86434579bed3f204.zip
FreeBSD-src-82ca21468e7fe6a5112961ba86434579bed3f204.tar.gz
Cleanup patch set, and update README.TXT. Add three new patches.
Diffstat (limited to 'contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff')
-rw-r--r--contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff540
1 files changed, 0 insertions, 540 deletions
diff --git a/contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff b/contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff
deleted file mode 100644
index 7864f14..0000000
--- a/contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff
+++ /dev/null
@@ -1,540 +0,0 @@
-Pull in r195391 from upstream llvm trunk (by Eric Christopher):
-
- In Dwarf 3 (and Dwarf 2) attributes whose value are offsets into a
- section use the form DW_FORM_data4 whilst in Dwarf 4 and later they
- use the form DW_FORM_sec_offset.
-
- This patch updates the places where such attributes are generated to
- use the appropriate form depending on the Dwarf version. The DIE entries
- affected have the following tags:
- DW_AT_stmt_list, DW_AT_ranges, DW_AT_location, DW_AT_GNU_pubnames,
- DW_AT_GNU_pubtypes, DW_AT_GNU_addr_base, DW_AT_GNU_ranges_base
-
- It also adds a hidden command line option "--dwarf-version=<uint>"
- to llc which allows the version of Dwarf to be generated to override
- what is specified in the metadata; this makes it possible to update
- existing tests to check the debugging information generated for both
- Dwarf 4 (the default) and Dwarf 3 using the same metadata.
-
- Patch (slightly modified) by Keith Walker!
-
-Introduced here: http://svnweb.freebsd.org/changeset/base/261991
-
-Index: lib/CodeGen/AsmPrinter/DIE.cpp
-===================================================================
---- lib/CodeGen/AsmPrinter/DIE.cpp
-+++ lib/CodeGen/AsmPrinter/DIE.cpp
-@@ -338,6 +338,7 @@ void DIEDelta::EmitValue(AsmPrinter *AP, dwarf::Fo
- ///
- unsigned DIEDelta::SizeOf(AsmPrinter *AP, dwarf::Form Form) const {
- if (Form == dwarf::DW_FORM_data4) return 4;
-+ if (Form == dwarf::DW_FORM_sec_offset) return 4;
- if (Form == dwarf::DW_FORM_strp) return 4;
- return AP->getDataLayout().getPointerSize();
- }
-Index: lib/CodeGen/AsmPrinter/DwarfDebug.cpp
-===================================================================
---- lib/CodeGen/AsmPrinter/DwarfDebug.cpp
-+++ lib/CodeGen/AsmPrinter/DwarfDebug.cpp
-@@ -105,6 +105,11 @@ DwarfPubSections("generate-dwarf-pub-sections", cl
- clEnumVal(Disable, "Disabled"), clEnumValEnd),
- cl::init(Default));
-
-+static cl::opt<unsigned>
-+DwarfVersionNumber("dwarf-version", cl::Hidden,
-+ cl::desc("Generate DWARF for dwarf version."),
-+ cl::init(0));
-+
- static const char *const DWARFGroupName = "DWARF Emission";
- static const char *const DbgTimerName = "DWARF Debug Writer";
-
-@@ -215,7 +220,9 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
- else
- HasDwarfPubSections = DwarfPubSections == Enable;
-
-- DwarfVersion = getDwarfVersionFromModule(MMI->getModule());
-+ DwarfVersion = DwarfVersionNumber
-+ ? DwarfVersionNumber
-+ : getDwarfVersionFromModule(MMI->getModule());
-
- {
- NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
-@@ -470,9 +477,9 @@ DIE *DwarfDebug::constructLexicalScopeDIE(CompileU
- // .debug_range section has not been laid out yet. Emit offset in
- // .debug_range as a uint, size 4, for now. emitDIE will handle
- // DW_AT_ranges appropriately.
-- TheCU->addUInt(ScopeDIE, dwarf::DW_AT_ranges, dwarf::DW_FORM_data4,
-- DebugRangeSymbols.size()
-- * Asm->getDataLayout().getPointerSize());
-+ TheCU->addSectionOffset(ScopeDIE, dwarf::DW_AT_ranges,
-+ DebugRangeSymbols.size() *
-+ Asm->getDataLayout().getPointerSize());
- for (SmallVectorImpl<InsnRange>::const_iterator RI = Ranges.begin(),
- RE = Ranges.end(); RI != RE; ++RI) {
- DebugRangeSymbols.push_back(getLabelBeforeInsn(RI->first));
-@@ -525,9 +532,9 @@ DIE *DwarfDebug::constructInlinedScopeDIE(CompileU
- // .debug_range section has not been laid out yet. Emit offset in
- // .debug_range as a uint, size 4, for now. emitDIE will handle
- // DW_AT_ranges appropriately.
-- TheCU->addUInt(ScopeDIE, dwarf::DW_AT_ranges, dwarf::DW_FORM_data4,
-- DebugRangeSymbols.size()
-- * Asm->getDataLayout().getPointerSize());
-+ TheCU->addSectionOffset(ScopeDIE, dwarf::DW_AT_ranges,
-+ DebugRangeSymbols.size() *
-+ Asm->getDataLayout().getPointerSize());
- for (SmallVectorImpl<InsnRange>::const_iterator RI = Ranges.begin(),
- RE = Ranges.end(); RI != RE; ++RI) {
- DebugRangeSymbols.push_back(getLabelBeforeInsn(RI->first));
-@@ -758,14 +765,15 @@ CompileUnit *DwarfDebug::constructCompileUnit(DICo
- // The line table entries are not always emitted in assembly, so it
- // is not okay to use line_table_start here.
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_sec_offset,
-- UseTheFirstCU ? Asm->GetTempSymbol("section_line")
-- : LineTableStartSym);
-+ NewCU->addSectionLabel(
-+ Die, dwarf::DW_AT_stmt_list,
-+ UseTheFirstCU ? Asm->GetTempSymbol("section_line")
-+ : LineTableStartSym);
- else if (UseTheFirstCU)
-- NewCU->addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, 0);
-+ NewCU->addSectionOffset(Die, dwarf::DW_AT_stmt_list, 0);
- else
-- NewCU->addDelta(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4,
-- LineTableStartSym, DwarfLineSectionSym);
-+ NewCU->addSectionDelta(Die, dwarf::DW_AT_stmt_list,
-+ LineTableStartSym, DwarfLineSectionSym);
-
- // If we're using split dwarf the compilation dir is going to be in the
- // skeleton CU and so we don't need to duplicate it here.
-@@ -776,26 +784,24 @@ CompileUnit *DwarfDebug::constructCompileUnit(DICo
- // emit it here if we don't have a skeleton CU for split dwarf.
- if (GenerateGnuPubSections) {
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_GNU_pubnames,
-- dwarf::DW_FORM_sec_offset,
-- Asm->GetTempSymbol("gnu_pubnames",
-- NewCU->getUniqueID()));
-+ NewCU->addSectionLabel(
-+ Die, dwarf::DW_AT_GNU_pubnames,
-+ Asm->GetTempSymbol("gnu_pubnames", NewCU->getUniqueID()));
- else
-- NewCU->addDelta(Die, dwarf::DW_AT_GNU_pubnames, dwarf::DW_FORM_data4,
-- Asm->GetTempSymbol("gnu_pubnames",
-- NewCU->getUniqueID()),
-- DwarfGnuPubNamesSectionSym);
-+ NewCU->addSectionDelta(
-+ Die, dwarf::DW_AT_GNU_pubnames,
-+ Asm->GetTempSymbol("gnu_pubnames", NewCU->getUniqueID()),
-+ DwarfGnuPubNamesSectionSym);
-
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_GNU_pubtypes,
-- dwarf::DW_FORM_sec_offset,
-- Asm->GetTempSymbol("gnu_pubtypes",
-- NewCU->getUniqueID()));
-+ NewCU->addSectionLabel(
-+ Die, dwarf::DW_AT_GNU_pubtypes,
-+ Asm->GetTempSymbol("gnu_pubtypes", NewCU->getUniqueID()));
- else
-- NewCU->addDelta(Die, dwarf::DW_AT_GNU_pubtypes, dwarf::DW_FORM_data4,
-- Asm->GetTempSymbol("gnu_pubtypes",
-- NewCU->getUniqueID()),
-- DwarfGnuPubTypesSectionSym);
-+ NewCU->addSectionDelta(
-+ Die, dwarf::DW_AT_GNU_pubtypes,
-+ Asm->GetTempSymbol("gnu_pubtypes", NewCU->getUniqueID()),
-+ DwarfGnuPubTypesSectionSym);
- }
- }
-
-@@ -2956,11 +2962,10 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const
- // Relocate to the beginning of the addr_base section, else 0 for the
- // beginning of the one for this compile unit.
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_GNU_addr_base, dwarf::DW_FORM_sec_offset,
-- DwarfAddrSectionSym);
-+ NewCU->addSectionLabel(Die, dwarf::DW_AT_GNU_addr_base,
-+ DwarfAddrSectionSym);
- else
-- NewCU->addUInt(Die, dwarf::DW_AT_GNU_addr_base,
-- dwarf::DW_FORM_sec_offset, 0);
-+ NewCU->addSectionOffset(Die, dwarf::DW_AT_GNU_addr_base, 0);
-
- // 2.17.1 requires that we use DW_AT_low_pc for a single entry point
- // into an entity. We're using 0, or a NULL label for this.
-@@ -2970,10 +2975,10 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const
- // compile unit in debug_line section.
- // FIXME: Should handle multiple compile units.
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_sec_offset,
-- DwarfLineSectionSym);
-+ NewCU->addSectionLabel(Die, dwarf::DW_AT_stmt_list,
-+ DwarfLineSectionSym);
- else
-- NewCU->addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_sec_offset, 0);
-+ NewCU->addSectionOffset(Die, dwarf::DW_AT_stmt_list, 0);
-
- if (!CompilationDir.empty())
- NewCU->addLocalString(Die, dwarf::DW_AT_comp_dir, CompilationDir);
-@@ -2981,27 +2986,31 @@ CompileUnit *DwarfDebug::constructSkeletonCU(const
- // Flags to let the linker know we have emitted new style pubnames.
- if (GenerateGnuPubSections) {
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_GNU_pubnames, dwarf::DW_FORM_sec_offset,
-- Asm->GetTempSymbol("gnu_pubnames", NewCU->getUniqueID()));
-+ NewCU->addSectionLabel(
-+ Die, dwarf::DW_AT_GNU_pubnames,
-+ Asm->GetTempSymbol("gnu_pubnames", NewCU->getUniqueID()));
- else
-- NewCU->addDelta(Die, dwarf::DW_AT_GNU_pubnames, dwarf::DW_FORM_data4,
-- Asm->GetTempSymbol("gnu_pubnames", NewCU->getUniqueID()),
-- DwarfGnuPubNamesSectionSym);
-+ NewCU->addSectionDelta(
-+ Die, dwarf::DW_AT_GNU_pubnames,
-+ Asm->GetTempSymbol("gnu_pubnames", NewCU->getUniqueID()),
-+ DwarfGnuPubNamesSectionSym);
-
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_GNU_pubtypes, dwarf::DW_FORM_sec_offset,
-- Asm->GetTempSymbol("gnu_pubtypes", NewCU->getUniqueID()));
-+ NewCU->addSectionLabel(
-+ Die, dwarf::DW_AT_GNU_pubtypes,
-+ Asm->GetTempSymbol("gnu_pubtypes", NewCU->getUniqueID()));
- else
-- NewCU->addDelta(Die, dwarf::DW_AT_GNU_pubtypes, dwarf::DW_FORM_data4,
-- Asm->GetTempSymbol("gnu_pubtypes", NewCU->getUniqueID()),
-- DwarfGnuPubTypesSectionSym);
-+ NewCU->addSectionDelta(
-+ Die, dwarf::DW_AT_GNU_pubtypes,
-+ Asm->GetTempSymbol("gnu_pubtypes", NewCU->getUniqueID()),
-+ DwarfGnuPubTypesSectionSym);
- }
-
- // Flag if we've emitted any ranges and their location for the compile unit.
- if (DebugRangeSymbols.size()) {
- if (Asm->MAI->doesDwarfUseRelocationsAcrossSections())
-- NewCU->addLabel(Die, dwarf::DW_AT_GNU_ranges_base,
-- dwarf::DW_FORM_sec_offset, DwarfDebugRangeSectionSym);
-+ NewCU->addSectionLabel(Die, dwarf::DW_AT_GNU_ranges_base,
-+ DwarfDebugRangeSectionSym);
- else
- NewCU->addUInt(Die, dwarf::DW_AT_GNU_ranges_base, dwarf::DW_FORM_data4,
- 0);
-Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
-===================================================================
---- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
-+++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
-@@ -227,6 +227,26 @@ void CompileUnit::addLabel(DIEBlock *Die, dwarf::F
- addLabel(Die, (dwarf::Attribute)0, Form, Label);
- }
-
-+/// addSectionLabel - Add a Dwarf section label attribute data and value.
-+///
-+void CompileUnit::addSectionLabel(DIE *Die, dwarf::Attribute Attribute,
-+ const MCSymbol *Label) {
-+ if (DD->getDwarfVersion() >= 4)
-+ addLabel(Die, Attribute, dwarf::DW_FORM_sec_offset, Label);
-+ else
-+ addLabel(Die, Attribute, dwarf::DW_FORM_data4, Label);
-+}
-+
-+/// addSectionOffset - Add an offset into a section attribute data and value.
-+///
-+void CompileUnit::addSectionOffset(DIE *Die, dwarf::Attribute Attribute,
-+ uint64_t Integer) {
-+ if (DD->getDwarfVersion() >= 4)
-+ addUInt(Die, Attribute, dwarf::DW_FORM_sec_offset, Integer);
-+ else
-+ addUInt(Die, Attribute, dwarf::DW_FORM_data4, Integer);
-+}
-+
- /// addLabelAddress - Add a dwarf label attribute data and value using
- /// DW_FORM_addr or DW_FORM_GNU_addr_index.
- ///
-@@ -264,13 +284,15 @@ void CompileUnit::addOpAddress(DIEBlock *Die, cons
- }
- }
-
--/// addDelta - Add a label delta attribute data and value.
-+/// addSectionDelta - Add a section label delta attribute data and value.
- ///
--void CompileUnit::addDelta(DIE *Die, dwarf::Attribute Attribute,
-- dwarf::Form Form, const MCSymbol *Hi,
-- const MCSymbol *Lo) {
-+void CompileUnit::addSectionDelta(DIE *Die, dwarf::Attribute Attribute,
-+ const MCSymbol *Hi, const MCSymbol *Lo) {
- DIEValue *Value = new (DIEValueAllocator) DIEDelta(Hi, Lo);
-- Die->addValue(Attribute, Form, Value);
-+ if (DD->getDwarfVersion() >= 4)
-+ Die->addValue(Attribute, dwarf::DW_FORM_sec_offset, Value);
-+ else
-+ Die->addValue(Attribute, dwarf::DW_FORM_data4, Value);
- }
-
- /// addDIEEntry - Add a DIE attribute data and value.
-@@ -1768,10 +1790,8 @@ DIE *CompileUnit::constructVariableDIE(DbgVariable
-
- unsigned Offset = DV.getDotDebugLocOffset();
- if (Offset != ~0U) {
-- addLabel(VariableDie, dwarf::DW_AT_location,
-- DD->getDwarfVersion() >= 4 ? dwarf::DW_FORM_sec_offset
-- : dwarf::DW_FORM_data4,
-- Asm->GetTempSymbol("debug_loc", Offset));
-+ addSectionLabel(VariableDie, dwarf::DW_AT_location,
-+ Asm->GetTempSymbol("debug_loc", Offset));
- DV.setDIE(VariableDie);
- return VariableDie;
- }
-Index: lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
-===================================================================
---- lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
-+++ lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
-@@ -209,6 +209,14 @@ class CompileUnit {
-
- void addLabel(DIEBlock *Die, dwarf::Form Form, const MCSymbol *Label);
-
-+ /// addSectionLabel - Add a Dwarf section label attribute data and value.
-+ ///
-+ void addSectionLabel(DIE *Die, dwarf::Attribute Attribute, const MCSymbol *Label);
-+
-+ /// addSectionOffset - Add an offset into a section attribute data and value.
-+ ///
-+ void addSectionOffset(DIE *Die, dwarf::Attribute Attribute, uint64_t Integer);
-+
- /// addLabelAddress - Add a dwarf label attribute data and value using
- /// either DW_FORM_addr or DW_FORM_GNU_addr_index.
- ///
-@@ -219,10 +227,9 @@ class CompileUnit {
- ///
- void addOpAddress(DIEBlock *Die, const MCSymbol *Label);
-
-- /// addDelta - Add a label delta attribute data and value.
-- ///
-- void addDelta(DIE *Die, dwarf::Attribute Attribute, dwarf::Form Form, const MCSymbol *Hi,
-- const MCSymbol *Lo);
-+ /// addSectionDelta - Add a label delta attribute data and value.
-+ void addSectionDelta(DIE *Die, dwarf::Attribute Attribute, const MCSymbol *Hi,
-+ const MCSymbol *Lo);
-
- /// addDIEEntry - Add a DIE attribute data and value.
- ///
-Index: test/DebugInfo/X86/gnu-public-names.ll
-===================================================================
---- test/DebugInfo/X86/gnu-public-names.ll
-+++ test/DebugInfo/X86/gnu-public-names.ll
-@@ -1,5 +1,6 @@
- ; RUN: llc -mtriple=x86_64-pc-linux-gnu -generate-gnu-dwarf-pub-sections < %s | FileCheck -check-prefix=ASM %s
- ; RUN: llc -mtriple=x86_64-pc-linux-gnu -generate-gnu-dwarf-pub-sections -filetype=obj < %s | llvm-dwarfdump - | FileCheck %s
-+; RUN: llc -mtriple=x86_64-pc-linux-gnu -generate-gnu-dwarf-pub-sections -filetype=obj -dwarf-version=3 < %s | llvm-dwarfdump - | FileCheck %s -check-prefix=DWARF3
- ; ModuleID = 'dwarf-public-names.cpp'
- ;
- ; Generated from:
-@@ -123,6 +124,85 @@
- ; CHECK-DAG: [[D]] EXTERNAL TYPE "ns::D"
- ; CHECK-DAG: [[INT]] STATIC TYPE "int"
-
-+; DWARF3: .debug_info contents:
-+; DWARF3: DW_AT_GNU_pubnames [DW_FORM_data4] (0x00000000)
-+; DWARF3: DW_AT_GNU_pubtypes [DW_FORM_data4] (0x00000000)
-+
-+; DWARF3: [[C:[0-9a-f]+]]: DW_TAG_structure_type
-+; DWARF3-NEXT: DW_AT_name {{.*}} "C"
-+
-+; DWARF3: [[STATIC_MEM_DECL:[0-9a-f]+]]: DW_TAG_member
-+; DWARF3-NEXT: DW_AT_name {{.*}} "static_member_variable"
-+
-+; DWARF3: [[MEM_FUNC_DECL:[0-9a-f]+]]: DW_TAG_subprogram
-+; DWARF3-NEXT: DW_AT_MIPS_linkage_name
-+; DWARF3-NEXT: DW_AT_name {{.*}} "member_function"
-+
-+; DWARF3: [[STATIC_MEM_FUNC_DECL:[0-9a-f]+]]: DW_TAG_subprogram
-+; DWARF3-NEXT: DW_AT_MIPS_linkage_name
-+; DWARF3-NEXT: DW_AT_name {{.*}} "static_member_function"
-+
-+; DWARF3: [[INT:[0-9a-f]+]]: DW_TAG_base_type
-+; DWARF3-NEXT: DW_AT_name {{.*}} "int"
-+
-+; DWARF3: [[STATIC_MEM_VAR:[0-9a-f]+]]: DW_TAG_variable
-+; DWARF3-NEXT: DW_AT_specification {{.*}}[[STATIC_MEM_DECL]]
-+
-+; DWARF3: [[GLOB_VAR:[0-9a-f]+]]: DW_TAG_variable
-+; DWARF3-NEXT: DW_AT_name {{.*}} "global_variable"
-+
-+; DWARF3: [[NS:[0-9a-f]+]]: DW_TAG_namespace
-+; DWARF3-NEXT: DW_AT_name {{.*}} "ns"
-+
-+; DWARF3: [[GLOB_NS_VAR_DECL:[0-9a-f]+]]: DW_TAG_variable
-+; DWARF3-NEXT: DW_AT_name {{.*}} "global_namespace_variable"
-+
-+; DWARF3: [[D_VAR_DECL:[0-9a-f]+]]: DW_TAG_variable
-+; DWARF3-NEXT: DW_AT_name {{.*}} "d"
-+
-+; DWARF3: [[D:[0-9a-f]+]]: DW_TAG_structure_type
-+; DWARF3-NEXT: DW_AT_name {{.*}} "D"
-+
-+; DWARF3: [[GLOB_NS_FUNC:[0-9a-f]+]]: DW_TAG_subprogram
-+; DWARF3-NEXT: DW_AT_MIPS_linkage_name
-+; DWARF3-NEXT: DW_AT_name {{.*}} "global_namespace_function"
-+
-+; DWARF3: [[GLOB_NS_VAR:[0-9a-f]+]]: DW_TAG_variable
-+; DWARF3-NEXT: DW_AT_specification {{.*}}[[GLOB_NS_VAR_DECL]]
-+
-+; DWARF3: [[D_VAR:[0-9a-f]+]]: DW_TAG_variable
-+; DWARF3-NEXT: DW_AT_specification {{.*}}[[D_VAR_DECL]]
-+
-+; DWARF3: [[MEM_FUNC:[0-9a-f]+]]: DW_TAG_subprogram
-+; DWARF3-NEXT: DW_AT_specification {{.*}}[[MEM_FUNC_DECL]]
-+
-+; DWARF3: [[STATIC_MEM_FUNC:[0-9a-f]+]]: DW_TAG_subprogram
-+; DWARF3-NEXT: DW_AT_specification {{.*}}[[STATIC_MEM_FUNC_DECL]]
-+
-+; DWARF3: [[GLOBAL_FUNC:[0-9a-f]+]]: DW_TAG_subprogram
-+; DWARF3-NEXT: DW_AT_MIPS_linkage_name
-+; DWARF3-NEXT: DW_AT_name {{.*}} "global_function"
-+
-+; DWARF3-LABEL: .debug_gnu_pubnames contents:
-+; DWARF3-NEXT: length = 0x000000e7 version = 0x0002 unit_offset = 0x00000000 unit_size = 0x0000018b
-+; DWARF3-NEXT: Offset Linkage Kind Name
-+; DWARF3-DAG: [[GLOBAL_FUNC]] EXTERNAL FUNCTION "global_function"
-+; DWARF3-DAG: [[NS]] EXTERNAL TYPE "ns"
-+; DWARF3-DAG: [[MEM_FUNC]] EXTERNAL FUNCTION "C::member_function"
-+; DWARF3-DAG: [[GLOB_VAR]] EXTERNAL VARIABLE "global_variable"
-+; DWARF3-DAG: [[GLOB_NS_VAR]] EXTERNAL VARIABLE "ns::global_namespace_variable"
-+; DWARF3-DAG: [[GLOB_NS_FUNC]] EXTERNAL FUNCTION "ns::global_namespace_function"
-+; DWARF3-DAG: [[D_VAR]] EXTERNAL VARIABLE "ns::d"
-+; DWARF3-DAG: [[STATIC_MEM_VAR]] EXTERNAL VARIABLE "C::static_member_variable"
-+; DWARF3-DAG: [[STATIC_MEM_FUNC]] EXTERNAL FUNCTION "C::static_member_function"
-+
-+
-+; DWARF3-LABEL: debug_gnu_pubtypes contents:
-+; DWARF3: Offset Linkage Kind Name
-+; DWARF3-DAG: [[C]] EXTERNAL TYPE "C"
-+; DWARF3-DAG: [[D]] EXTERNAL TYPE "ns::D"
-+; DWARF3-DAG: [[INT]] STATIC TYPE "int"
-+
- %struct.C = type { i8 }
- %"struct.ns::D" = type { i32 }
-
-Index: test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
-===================================================================
---- test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
-+++ test/DebugInfo/X86/stmt-list-multiple-compile-units.ll
-@@ -1,5 +1,7 @@
- ; RUN: llc -O0 %s -mtriple=x86_64-apple-darwin -filetype=obj -o %t
- ; RUN: llvm-dwarfdump %t | FileCheck %s
-+; RUN: llc -O0 %s -mtriple=x86_64-apple-darwin -filetype=obj -o %t -dwarf-version=3
-+; RUN: llvm-dwarfdump %t | FileCheck %s -check-prefix=DWARF3
- ; RUN: llc < %s -O0 -mtriple=x86_64-apple-macosx10.7 | FileCheck %s -check-prefix=ASM
-
- ; rdar://13067005
-@@ -6,11 +8,11 @@
- ; CHECK: .debug_info contents:
- ; CHECK: DW_TAG_compile_unit
- ; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
--; CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x00000000)
-+; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
-
- ; CHECK: DW_TAG_compile_unit
- ; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
--; CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x0000003c)
-+; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000003c)
-
- ; CHECK: .debug_line contents:
- ; CHECK-NEXT: Line table prologue:
-@@ -21,6 +23,24 @@
- ; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple2.c
- ; CHECK-NOT: file_names
-
-+; DWARF3: .debug_info contents:
-+; DWARF3: DW_TAG_compile_unit
-+; DWARF3: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-+; DWARF3: DW_AT_stmt_list [DW_FORM_data4] (0x00000000)
-+
-+; DWARF3: DW_TAG_compile_unit
-+; DWARF3: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
-+; DWARF3: DW_AT_stmt_list [DW_FORM_data4] (0x0000003c)
-+
-+; DWARF3: .debug_line contents:
-+; DWARF3-NEXT: Line table prologue:
-+; DWARF3-NEXT: total_length: 0x00000038
-+; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple.c
-+; DWARF3: Line table prologue:
-+; DWARF3-NEXT: total_length: 0x00000039
-+; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple2.c
-+; DWARF3-NOT: file_names
-+
- ; PR15408
- ; ASM: L__DWARF__debug_info_begin0:
- ; ASM: .long 0 ## DW_AT_stmt_list
-Index: test/DebugInfo/X86/block-capture.ll
-===================================================================
---- test/DebugInfo/X86/block-capture.ll
-+++ test/DebugInfo/X86/block-capture.ll
-@@ -1,5 +1,7 @@
- ; RUN: llc -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj
- ; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s
-+; RUN: llc -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj -dwarf-version=3
-+; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DWARF3
-
- ; Checks that we emit debug info for the block variable declare.
- ; CHECK: DW_TAG_subprogram [3]
-@@ -7,6 +9,11 @@
- ; CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[{{.*}}] = "block")
- ; CHECK: DW_AT_location [DW_FORM_sec_offset] ({{.*}})
-
-+; DWARF3: DW_TAG_subprogram [3]
-+; DWARF3: DW_TAG_variable [5]
-+; DWARF3: DW_AT_name [DW_FORM_strp] ( .debug_str[{{.*}}] = "block")
-+; DWARF3: DW_AT_location [DW_FORM_data4] ({{.*}})
-+
- %struct.__block_descriptor = type { i64, i64 }
- %struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__block_descriptor* }
-
-Index: test/DebugInfo/X86/op_deref.ll
-===================================================================
---- test/DebugInfo/X86/op_deref.ll
-+++ test/DebugInfo/X86/op_deref.ll
-@@ -1,5 +1,7 @@
- ; RUN: llc -O0 -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj
- ; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DW-CHECK
-+; RUN: llc -O0 -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj -dwarf-version=3
-+; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s -check-prefix=DWARF3
-
- ; DW-CHECK: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000067] = "vla")
- ; FIXME: The location here needs to be fixed, but llvm-dwarfdump doesn't handle
-@@ -6,6 +8,11 @@
- ; DW_AT_location lists yet.
- ; DW-CHECK: DW_AT_location [DW_FORM_sec_offset] (0x00000000)
-
-+; DWARF3: DW_AT_name [DW_FORM_strp] ( .debug_str[0x00000067] = "vla")
-+; FIXME: The location here needs to be fixed, but llvm-dwarfdump doesn't handle
-+; DW_AT_location lists yet.
-+; DWARF3: DW_AT_location [DW_FORM_data4] (0x00000000)
-+
- ; Unfortunately llvm-dwarfdump can't unparse a list of DW_AT_locations
- ; right now, so we check the asm output:
- ; RUN: llc -O0 -mtriple=x86_64-apple-darwin %s -o - -filetype=asm | FileCheck %s -check-prefix=ASM-CHECK
-Index: test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
-===================================================================
---- test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
-+++ test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
-@@ -1,7 +1,10 @@
- ; RUN: llc -mtriple=i686-w64-mingw32 -o %t -filetype=obj %s
- ; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck %s
-+; RUN: llc -mtriple=i686-w64-mingw32 -o %t -filetype=obj -dwarf-version=3 %s
-+; RUN: llvm-dwarfdump -debug-dump=all %t | FileCheck %s -check-prefix=DWARF3
-
- ; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset]
-+; DWARF3: DW_AT_stmt_list [DW_FORM_data4]
- ;
- ; generated from:
- ; clang -g -S -emit-llvm test.c -o test.ll
-@@ -36,6 +39,6 @@ attributes #0 = { nounwind "less-precise-fpmad"="f
- !6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
- !7 = metadata !{metadata !8}
- !8 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
--!9 = metadata !{i32 2, metadata !"Dwarf Version", i32 3}
-+!9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
- !10 = metadata !{i32 3, i32 0, metadata !4, null}
- !11 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
OpenPOWER on IntegriCloud