Hello community, here is the log from the commit of package llvm6 for openSUSE:Factory checked in at 2018-07-07 21:55:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/llvm6 (Old) and /work/SRC/openSUSE:Factory/.llvm6.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "llvm6" Sat Jul 7 21:55:47 2018 rev:8 rq:620159 version:6.0.0 Changes: -------- --- /work/SRC/openSUSE:Factory/llvm6/llvm6.changes 2018-06-18 13:50:05.853661425 +0200 +++ /work/SRC/openSUSE:Factory/.llvm6.new/llvm6.changes 2018-07-07 21:56:57.755426941 +0200 @@ -1,0 +2,6 @@ +Fri Jun 29 00:21:52 UTC 2018 - [email protected] + +- llvm6-fix-gdb-index-crash.patch + * From upstream, fix lld --gdb-index crash. + +------------------------------------------------------------------- New: ---- llvm6-fix-gdb-index-crash.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ llvm6.spec ++++++ --- /var/tmp/diff_new_pack.44NS8p/_old 2018-07-07 21:56:59.575424631 +0200 +++ /var/tmp/diff_new_pack.44NS8p/_new 2018-07-07 21:56:59.579424625 +0200 @@ -100,6 +100,7 @@ Patch18: llvm-build-tests-with-rtti.patch Patch19: llvm6-fix-InstCombine.patch Patch20: llvm_build_tablegen_component_as_shared_library.patch +Patch21: llvm6-fix-gdb-index-crash.patch BuildRequires: binutils-devel >= 2.21.90 BuildRequires: binutils-gold BuildRequires: cmake @@ -515,6 +516,7 @@ %patch18 -p1 %patch19 -p2 %patch20 -p1 +%patch21 -p1 pushd cfe-%{version}.src %patch1 -p1 ++++++ llvm6-fix-gdb-index-crash.patch ++++++ commit d227a3b47ef9e57d86127c7a94b4d06fdf1bfd2d Author: Rafael Espindola <[email protected]> Date: Wed Mar 21 21:31:25 2018 +0000 Handle abbr_offset with relocations. This is mostly just plumbing to get a DWARFDataExtractor where we compute abbr_offset so we can use getRelocatedValue. This is part of PR36793. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@328154 91177308-0d34-0410-b5e6-96231b3b80d8 --- llvm-6.0.0.src/test/DebugInfo/X86/abbr_offset.s.sav 2018-06-29 02:29:06.993601497 +0200 +++ llvm-6.0.0.src/test/DebugInfo/X86/abbr_offset.s 2018-06-29 02:29:06.993601497 +0200 @@ -0,0 +1,51 @@ +# RUN: llvm-mc -triple x86_64-pc-linux %s -filetype=obj -o - | \ +# RUN: llvm-dwarfdump - | FileCheck %s + +# This test simulates the result of ld -r. That produces files where +# abbr_offset is not zero. + +# CHECK: abbr_offset = 0x0000 +# CHECK: abbr_offset = 0x0008 + + .section .debug_abbrev,"",@progbits +.Labbrev1: + .byte 1 # Abbreviation Code + .byte 17 # DW_TAG_compile_unit + .byte 0 # DW_CHILDREN_no + .byte 16 # DW_AT_stmt_list + .byte 23 # DW_FORM_sec_offset + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 0 # EOM(3) + +.Labbrev2: + .byte 1 # Abbreviation Code + .byte 17 # DW_TAG_compile_unit + .byte 0 # DW_CHILDREN_no + .byte 16 # DW_AT_stmt_list + .byte 23 # DW_FORM_sec_offset + .byte 0 # EOM(1) + .byte 0 # EOM(2) + .byte 0 # EOM(3) + + .section .debug_info,"",@progbits + .long .Lend0 - .Lbegin0 # Length of Unit +.Lbegin0: + .short 4 # DWARF version number + .long .Labbrev1 # Offset Into Abbrev. Section + .byte 8 # Address Size (in bytes) + .byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit + .long .Lline_table_start0 # DW_AT_stmt_list +.Lend0: + + .long .Lend1 - .Lbegin1 # Length of Unit +.Lbegin1: + .short 4 # DWARF version number + .long .Labbrev2 # Offset Into Abbrev. Section + .byte 8 # Address Size (in bytes) + .byte 1 # Abbrev [1] 0xb:0x1f DW_TAG_compile_unit + .long .Lline_table_start0 # DW_AT_stmt_list +.Lend1: + + .section .debug_line,"",@progbits +.Lline_table_start0: --- llvm-6.0.0.src/lib/DebugInfo/DWARF/DWARFTypeUnit.cpp.sav 2018-06-29 02:29:01.217592047 +0200 +++ llvm-6.0.0.src/lib/DebugInfo/DWARF/DWARFTypeUnit.cpp 2018-06-29 02:29:06.993601497 +0200 @@ -18,7 +18,7 @@ using namespace llvm; -bool DWARFTypeUnit::extractImpl(DataExtractor debug_info, +bool DWARFTypeUnit::extractImpl(const DWARFDataExtractor &debug_info, uint32_t *offset_ptr) { if (!DWARFUnit::extractImpl(debug_info, offset_ptr)) return false; --- llvm-6.0.0.src/lib/DebugInfo/DWARF/DWARFUnit.cpp.sav 2018-06-29 02:29:01.221592053 +0200 +++ llvm-6.0.0.src/lib/DebugInfo/DWARF/DWARFUnit.cpp 2018-06-29 02:29:06.993601497 +0200 @@ -32,7 +32,7 @@ using namespace dwarf; void DWARFUnitSectionBase::parse(DWARFContext &C, const DWARFSection &Section) { const DWARFObject &D = C.getDWARFObj(); - parseImpl(C, Section, C.getDebugAbbrev(), &D.getRangeSection(), + parseImpl(C, D, Section, C.getDebugAbbrev(), &D.getRangeSection(), D.getStringSection(), D.getStringOffsetSection(), &D.getAddrSection(), D.getLineSection(), D.isLittleEndian(), false, false); @@ -41,7 +41,7 @@ void DWARFUnitSectionBase::parse(DWARFCo void DWARFUnitSectionBase::parseDWO(DWARFContext &C, const DWARFSection &DWOSection, bool Lazy) { const DWARFObject &D = C.getDWARFObj(); - parseImpl(C, DWOSection, C.getDebugAbbrevDWO(), &D.getRangeDWOSection(), + parseImpl(C, D, DWOSection, C.getDebugAbbrevDWO(), &D.getRangeDWOSection(), D.getStringDWOSection(), D.getStringOffsetDWOSection(), &D.getAddrSection(), D.getLineDWOSection(), C.isLittleEndian(), true, Lazy); @@ -92,7 +92,8 @@ bool DWARFUnit::getStringOffsetSectionIt return true; } -bool DWARFUnit::extractImpl(DataExtractor debug_info, uint32_t *offset_ptr) { +bool DWARFUnit::extractImpl(const DWARFDataExtractor &debug_info, + uint32_t *offset_ptr) { Length = debug_info.getU32(offset_ptr); // FIXME: Support DWARF64. FormParams.Format = DWARF32; @@ -102,7 +103,7 @@ bool DWARFUnit::extractImpl(DataExtracto FormParams.AddrSize = debug_info.getU8(offset_ptr); AbbrOffset = debug_info.getU32(offset_ptr); } else { - AbbrOffset = debug_info.getU32(offset_ptr); + AbbrOffset = debug_info.getRelocatedValue(4, offset_ptr); FormParams.AddrSize = debug_info.getU8(offset_ptr); } if (IndexEntry) { @@ -129,7 +130,8 @@ bool DWARFUnit::extractImpl(DataExtracto return true; } -bool DWARFUnit::extract(DataExtractor debug_info, uint32_t *offset_ptr) { +bool DWARFUnit::extract(const DWARFDataExtractor &debug_info, + uint32_t *offset_ptr) { clear(); Offset = *offset_ptr; --- llvm-6.0.0.src/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h.sav 2018-06-29 02:29:01.217592047 +0200 +++ llvm-6.0.0.src/include/llvm/DebugInfo/DWARF/DWARFTypeUnit.h 2018-06-29 02:29:06.989601490 +0200 @@ -46,7 +46,8 @@ public: static const DWARFSectionKind Section = DW_SECT_TYPES; protected: - bool extractImpl(DataExtractor debug_info, uint32_t *offset_ptr) override; + bool extractImpl(const DWARFDataExtractor &debug_info, + uint32_t *offset_ptr) override; }; } // end namespace llvm --- llvm-6.0.0.src/include/llvm/DebugInfo/DWARF/DWARFUnit.h.sav 2018-06-29 02:29:01.217592047 +0200 +++ llvm-6.0.0.src/include/llvm/DebugInfo/DWARF/DWARFUnit.h 2018-06-29 02:29:06.993601497 +0200 @@ -56,7 +56,8 @@ public: protected: ~DWARFUnitSectionBase() = default; - virtual void parseImpl(DWARFContext &Context, const DWARFSection &Section, + virtual void parseImpl(DWARFContext &Context, const DWARFObject &Obj, + const DWARFSection &Section, const DWARFDebugAbbrev *DA, const DWARFSection *RS, StringRef SS, const DWARFSection &SOS, const DWARFSection *AOS, const DWARFSection &LS, @@ -116,14 +117,14 @@ public: } private: - void parseImpl(DWARFContext &Context, const DWARFSection &Section, - const DWARFDebugAbbrev *DA, const DWARFSection *RS, - StringRef SS, const DWARFSection &SOS, const DWARFSection *AOS, - const DWARFSection &LS, bool LE, bool IsDWO, - bool Lazy) override { + void parseImpl(DWARFContext &Context, const DWARFObject &Obj, + const DWARFSection &Section, const DWARFDebugAbbrev *DA, + const DWARFSection *RS, StringRef SS, const DWARFSection &SOS, + const DWARFSection *AOS, const DWARFSection &LS, bool LE, + bool IsDWO, bool Lazy) override { if (Parsed) return; - DataExtractor Data(Section.Data, LE, 0); + DWARFDataExtractor Data(Obj, Section, LE, 0); if (!Parser) { const DWARFUnitIndex *Index = nullptr; if (IsDWO) @@ -269,7 +270,8 @@ class DWARFUnit { } protected: - virtual bool extractImpl(DataExtractor debug_info, uint32_t *offset_ptr); + virtual bool extractImpl(const DWARFDataExtractor &debug_info, + uint32_t *offset_ptr); /// Size in bytes of the unit header. virtual uint32_t getHeaderSize() const { return getVersion() <= 4 ? 11 : 12; } @@ -327,7 +329,7 @@ public: } - bool extract(DataExtractor debug_info, uint32_t* offset_ptr); + bool extract(const DWARFDataExtractor &debug_info, uint32_t *offset_ptr); /// extractRangeList - extracts the range list referenced by this compile /// unit from .debug_ranges section. Returns true on success.
