The package rpms/lld15.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/lld15.git/commit/?id=cc4719937d4f....
Change:
+ExcludeArch: s390x
Thanks.
Full change:
============
commit cc4719937d4f9758590b6454dcc8e2962d6945c9
Author: Tulio Magno Quites Machado Filho <tuliom(a)redhat.com>
Date: Mon Feb 27 15:19:56 2023 -0300
Import lld15
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e1b9ff7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/*.tar.xz
+/*.xz.sig
+/*.src.rpm
diff --git a/0001-PATCH-lld-CMake-Check-for-gtest-headers-even-if-lit..patch
b/0001-PATCH-lld-CMake-Check-for-gtest-headers-even-if-lit..patch
new file mode 100644
index 0000000..ac8ed67
--- /dev/null
+++ b/0001-PATCH-lld-CMake-Check-for-gtest-headers-even-if-lit..patch
@@ -0,0 +1,48 @@
+From 760568cd24acd6ae9083b0dfea2c7c0ea6f0adc2 Mon Sep 17 00:00:00 2001
+From: Tom Stellard <tstellar(a)redhat.com>
+Date: Thu, 30 Aug 2018 08:53:56 -0700
+Subject: [PATCH 1/2] [PATCH][lld] CMake: Check for gtest headers even if
+ lit.py is not present
+
+This makes it possible to build the unittests even withotu a full
+checkout of the llvm source tree.
+---
+ lld/CMakeLists.txt | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/lld/CMakeLists.txt b/lld/CMakeLists.txt
+index d4e561b..a7406d1c 100644
+--- a/lld/CMakeLists.txt
++++ b/lld/CMakeLists.txt
+@@ -68,6 +68,15 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+ set(LLVM_UTILS_PROVIDED ON)
+ endif()
+
++ # Check for gtest
++ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest)
++ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
++ AND NOT EXISTS
${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
++ AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
++ add_subdirectory(${UNITTEST_DIR} utils/unittest)
++ endif()
++
++ # Check for lit
+ if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py)
+ # Note: path not really used, except for checking if lit was found
+ set(LLVM_LIT ${LLVM_MAIN_SRC_DIR}/utils/lit/lit.py)
+@@ -77,12 +86,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+ set(LLVM_UTILS_PROVIDED ON)
+ set(LLD_TEST_DEPS FileCheck not)
+ endif()
+- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest)
+- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h
+- AND NOT EXISTS
${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
+- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt)
+- add_subdirectory(${UNITTEST_DIR} utils/unittest)
+- endif()
+ else()
+ # Seek installed Lit.
+ find_program(LLVM_LIT
+--
+1.8.3.1
+
diff --git a/0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch
b/0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch
new file mode 100644
index 0000000..7d8beda
--- /dev/null
+++ b/0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch
@@ -0,0 +1,498 @@
+From 43dfe54ce017c8d37eaec480a2f13a492bbc4203 Mon Sep 17 00:00:00 2001
+From: serge-sans-paille <sguelton(a)redhat.com>
+Date: Thu, 25 Feb 2021 14:24:14 +0100
+Subject: [PATCH 2/2] [PATCH][lld] Import compact_unwind_encoding.h from
+ libunwind
+
+This avoids an implicit cross package dependency
+---
+ lld/include/mach-o/compact_unwind_encoding.h | 477 +++++++++++++++++++++++++++
+ 1 file changed, 477 insertions(+)
+ create mode 100644 lld/include/mach-o/compact_unwind_encoding.h
+
+diff --git a/lld/include/mach-o/compact_unwind_encoding.h
b/lld/include/mach-o/compact_unwind_encoding.h
+new file mode 100644
+index 0000000..5301b10
+--- /dev/null
++++ b/lld/include/mach-o/compact_unwind_encoding.h
+@@ -0,0 +1,477 @@
++//===------------------ mach-o/compact_unwind_encoding.h ------------------===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See
https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//
++// Darwin's alternative to DWARF based unwind encodings.
++//
++//===----------------------------------------------------------------------===//
++
++
++#ifndef __COMPACT_UNWIND_ENCODING__
++#define __COMPACT_UNWIND_ENCODING__
++
++#include <stdint.h>
++
++//
++// Compilers can emit standard DWARF FDEs in the __TEXT,__eh_frame section
++// of object files. Or compilers can emit compact unwind information in
++// the __LD,__compact_unwind section.
++//
++// When the linker creates a final linked image, it will create a
++// __TEXT,__unwind_info section. This section is a small and fast way for the
++// runtime to access unwind info for any given function. If the compiler
++// emitted compact unwind info for the function, that compact unwind info will
++// be encoded in the __TEXT,__unwind_info section. If the compiler emitted
++// DWARF unwind info, the __TEXT,__unwind_info section will contain the offset
++// of the FDE in the __TEXT,__eh_frame section in the final linked image.
++//
++// Note: Previously, the linker would transform some DWARF unwind infos into
++// compact unwind info. But that is fragile and no longer done.
++
++
++//
++// The compact unwind endoding is a 32-bit value which encoded in an
++// architecture specific way, which registers to restore from where, and how
++// to unwind out of the function.
++//
++typedef uint32_t compact_unwind_encoding_t;
++
++
++// architecture independent bits
++enum {
++ UNWIND_IS_NOT_FUNCTION_START = 0x80000000,
++ UNWIND_HAS_LSDA = 0x40000000,
++ UNWIND_PERSONALITY_MASK = 0x30000000,
++};
++
++
++
++
++//
++// x86
++//
++// 1-bit: start
++// 1-bit: has lsda
++// 2-bit: personality index
++//
++// 4-bits: 0=old, 1=ebp based, 2=stack-imm, 3=stack-ind, 4=DWARF
++// ebp based:
++// 15-bits (5*3-bits per reg) register permutation
++// 8-bits for stack offset
++// frameless:
++// 8-bits stack size
++// 3-bits stack adjust
++// 3-bits register count
++// 10-bits register permutation
++//
++enum {
++ UNWIND_X86_MODE_MASK = 0x0F000000,
++ UNWIND_X86_MODE_EBP_FRAME = 0x01000000,
++ UNWIND_X86_MODE_STACK_IMMD = 0x02000000,
++ UNWIND_X86_MODE_STACK_IND = 0x03000000,
++ UNWIND_X86_MODE_DWARF = 0x04000000,
++
++ UNWIND_X86_EBP_FRAME_REGISTERS = 0x00007FFF,
++ UNWIND_X86_EBP_FRAME_OFFSET = 0x00FF0000,
++
++ UNWIND_X86_FRAMELESS_STACK_SIZE = 0x00FF0000,
++ UNWIND_X86_FRAMELESS_STACK_ADJUST = 0x0000E000,
++ UNWIND_X86_FRAMELESS_STACK_REG_COUNT = 0x00001C00,
++ UNWIND_X86_FRAMELESS_STACK_REG_PERMUTATION = 0x000003FF,
++
++ UNWIND_X86_DWARF_SECTION_OFFSET = 0x00FFFFFF,
++};
++
++enum {
++ UNWIND_X86_REG_NONE = 0,
++ UNWIND_X86_REG_EBX = 1,
++ UNWIND_X86_REG_ECX = 2,
++ UNWIND_X86_REG_EDX = 3,
++ UNWIND_X86_REG_EDI = 4,
++ UNWIND_X86_REG_ESI = 5,
++ UNWIND_X86_REG_EBP = 6,
++};
++
++//
++// For x86 there are four modes for the compact unwind encoding:
++// UNWIND_X86_MODE_EBP_FRAME:
++// EBP based frame where EBP is push on stack immediately after return address,
++// then ESP is moved to EBP. Thus, to unwind ESP is restored with the current
++// EPB value, then EBP is restored by popping off the stack, and the return
++// is done by popping the stack once more into the pc.
++// All non-volatile registers that need to be restored must have been saved
++// in a small range in the stack that starts EBP-4 to EBP-1020. The offset/4
++// is encoded in the UNWIND_X86_EBP_FRAME_OFFSET bits. The registers saved
++// are encoded in the UNWIND_X86_EBP_FRAME_REGISTERS bits as five 3-bit entries.
++// Each entry contains which register to restore.
++// UNWIND_X86_MODE_STACK_IMMD:
++// A "frameless" (EBP not used as frame pointer) function with a small
++// constant stack size. To return, a constant (encoded in the compact
++// unwind encoding) is added to the ESP. Then the return is done by
++// popping the stack into the pc.
++// All non-volatile registers that need to be restored must have been saved
++// on the stack immediately after the return address. The stack_size/4 is
++// encoded in the UNWIND_X86_FRAMELESS_STACK_SIZE (max stack size is 1024).
++// The number of registers saved is encoded in UNWIND_X86_FRAMELESS_STACK_REG_COUNT.
++// UNWIND_X86_FRAMELESS_STACK_REG_PERMUTATION constains which registers were
++// saved and their order.
++// UNWIND_X86_MODE_STACK_IND:
++// A "frameless" (EBP not used as frame pointer) function large constant
++// stack size. This case is like the previous, except the stack size is too
++// large to encode in the compact unwind encoding. Instead it requires that
++// the function contains "subl $nnnnnnnn,ESP" in its prolog. The compact
++// encoding contains the offset to the nnnnnnnn value in the function in
++// UNWIND_X86_FRAMELESS_STACK_SIZE.
++// UNWIND_X86_MODE_DWARF:
++// No compact unwind encoding is available. Instead the low 24-bits of the
++// compact encoding is the offset of the DWARF FDE in the __eh_frame section.
++// This mode is never used in object files. It is only generated by the
++// linker in final linked images which have only DWARF unwind info for a
++// function.
++//
++// The permutation encoding is a Lehmer code sequence encoded into a
++// single variable-base number so we can encode the ordering of up to
++// six registers in a 10-bit space.
++//
++// The following is the algorithm used to create the permutation encoding used
++// with frameless stacks. It is passed the number of registers to be saved and
++// an array of the register numbers saved.
++//
++//uint32_t permute_encode(uint32_t registerCount, const uint32_t registers[6])
++//{
++// uint32_t renumregs[6];
++// for (int i=6-registerCount; i < 6; ++i) {
++// int countless = 0;
++// for (int j=6-registerCount; j < i; ++j) {
++// if ( registers[j] < registers[i] )
++// ++countless;
++// }
++// renumregs[i] = registers[i] - countless -1;
++// }
++// uint32_t permutationEncoding = 0;
++// switch ( registerCount ) {
++// case 6:
++// permutationEncoding |= (120*renumregs[0] + 24*renumregs[1]
++// + 6*renumregs[2] + 2*renumregs[3]
++// + renumregs[4]);
++// break;
++// case 5:
++// permutationEncoding |= (120*renumregs[1] + 24*renumregs[2]
++// + 6*renumregs[3] + 2*renumregs[4]
++// + renumregs[5]);
++// break;
++// case 4:
++// permutationEncoding |= (60*renumregs[2] + 12*renumregs[3]
++// + 3*renumregs[4] + renumregs[5]);
++// break;
++// case 3:
++// permutationEncoding |= (20*renumregs[3] + 4*renumregs[4]
++// + renumregs[5]);
++// break;
++// case 2:
++// permutationEncoding |= (5*renumregs[4] + renumregs[5]);
++// break;
++// case 1:
++// permutationEncoding |= (renumregs[5]);
++// break;
++// }
++// return permutationEncoding;
++//}
++//
++
++
++
++
++//
++// x86_64
++//
++// 1-bit: start
++// 1-bit: has lsda
++// 2-bit: personality index
++//
++// 4-bits: 0=old, 1=rbp based, 2=stack-imm, 3=stack-ind, 4=DWARF
++// rbp based:
++// 15-bits (5*3-bits per reg) register permutation
++// 8-bits for stack offset
++// frameless:
++// 8-bits stack size
++// 3-bits stack adjust
++// 3-bits register count
++// 10-bits register permutation
++//
++enum {
++ UNWIND_X86_64_MODE_MASK = 0x0F000000,
++ UNWIND_X86_64_MODE_RBP_FRAME = 0x01000000,
++ UNWIND_X86_64_MODE_STACK_IMMD = 0x02000000,
++ UNWIND_X86_64_MODE_STACK_IND = 0x03000000,
++ UNWIND_X86_64_MODE_DWARF = 0x04000000,
++
++ UNWIND_X86_64_RBP_FRAME_REGISTERS = 0x00007FFF,
++ UNWIND_X86_64_RBP_FRAME_OFFSET = 0x00FF0000,
++
++ UNWIND_X86_64_FRAMELESS_STACK_SIZE = 0x00FF0000,
++ UNWIND_X86_64_FRAMELESS_STACK_ADJUST = 0x0000E000,
++ UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT = 0x00001C00,
++ UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION = 0x000003FF,
++
++ UNWIND_X86_64_DWARF_SECTION_OFFSET = 0x00FFFFFF,
++};
++
++enum {
++ UNWIND_X86_64_REG_NONE = 0,
++ UNWIND_X86_64_REG_RBX = 1,
++ UNWIND_X86_64_REG_R12 = 2,
++ UNWIND_X86_64_REG_R13 = 3,
++ UNWIND_X86_64_REG_R14 = 4,
++ UNWIND_X86_64_REG_R15 = 5,
++ UNWIND_X86_64_REG_RBP = 6,
++};
++//
++// For x86_64 there are four modes for the compact unwind encoding:
++// UNWIND_X86_64_MODE_RBP_FRAME:
++// RBP based frame where RBP is push on stack immediately after return address,
++// then RSP is moved to RBP. Thus, to unwind RSP is restored with the current
++// EPB value, then RBP is restored by popping off the stack, and the return
++// is done by popping the stack once more into the pc.
++// All non-volatile registers that need to be restored must have been saved
++// in a small range in the stack that starts RBP-8 to RBP-2040. The offset/8
++// is encoded in the UNWIND_X86_64_RBP_FRAME_OFFSET bits. The registers saved
++// are encoded in the UNWIND_X86_64_RBP_FRAME_REGISTERS bits as five 3-bit entries.
++// Each entry contains which register to restore.
++// UNWIND_X86_64_MODE_STACK_IMMD:
++// A "frameless" (RBP not used as frame pointer) function with a small
++// constant stack size. To return, a constant (encoded in the compact
++// unwind encoding) is added to the RSP. Then the return is done by
++// popping the stack into the pc.
++// All non-volatile registers that need to be restored must have been saved
++// on the stack immediately after the return address. The stack_size/8 is
++// encoded in the UNWIND_X86_64_FRAMELESS_STACK_SIZE (max stack size is 2048).
++// The number of registers saved is encoded in
UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT.
++// UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION constains which registers were
++// saved and their order.
++// UNWIND_X86_64_MODE_STACK_IND:
++// A "frameless" (RBP not used as frame pointer) function large constant
++// stack size. This case is like the previous, except the stack size is too
++// large to encode in the compact unwind encoding. Instead it requires that
++// the function contains "subq $nnnnnnnn,RSP" in its prolog. The compact
++// encoding contains the offset to the nnnnnnnn value in the function in
++// UNWIND_X86_64_FRAMELESS_STACK_SIZE.
++// UNWIND_X86_64_MODE_DWARF:
++// No compact unwind encoding is available. Instead the low 24-bits of the
++// compact encoding is the offset of the DWARF FDE in the __eh_frame section.
++// This mode is never used in object files. It is only generated by the
++// linker in final linked images which have only DWARF unwind info for a
++// function.
++//
++
++
++// ARM64
++//
++// 1-bit: start
++// 1-bit: has lsda
++// 2-bit: personality index
++//
++// 4-bits: 4=frame-based, 3=DWARF, 2=frameless
++// frameless:
++// 12-bits of stack size
++// frame-based:
++// 4-bits D reg pairs saved
++// 5-bits X reg pairs saved
++// DWARF:
++// 24-bits offset of DWARF FDE in __eh_frame section
++//
++enum {
++ UNWIND_ARM64_MODE_MASK = 0x0F000000,
++ UNWIND_ARM64_MODE_FRAMELESS = 0x02000000,
++ UNWIND_ARM64_MODE_DWARF = 0x03000000,
++ UNWIND_ARM64_MODE_FRAME = 0x04000000,
++
++ UNWIND_ARM64_FRAME_X19_X20_PAIR = 0x00000001,
++ UNWIND_ARM64_FRAME_X21_X22_PAIR = 0x00000002,
++ UNWIND_ARM64_FRAME_X23_X24_PAIR = 0x00000004,
++ UNWIND_ARM64_FRAME_X25_X26_PAIR = 0x00000008,
++ UNWIND_ARM64_FRAME_X27_X28_PAIR = 0x00000010,
++ UNWIND_ARM64_FRAME_D8_D9_PAIR = 0x00000100,
++ UNWIND_ARM64_FRAME_D10_D11_PAIR = 0x00000200,
++ UNWIND_ARM64_FRAME_D12_D13_PAIR = 0x00000400,
++ UNWIND_ARM64_FRAME_D14_D15_PAIR = 0x00000800,
++
++ UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK = 0x00FFF000,
++ UNWIND_ARM64_DWARF_SECTION_OFFSET = 0x00FFFFFF,
++};
++// For arm64 there are three modes for the compact unwind encoding:
++// UNWIND_ARM64_MODE_FRAME:
++// This is a standard arm64 prolog where FP/LR are immediately pushed on the
++// stack, then SP is copied to FP. If there are any non-volatile registers
++// saved, then are copied into the stack frame in pairs in a contiguous
++// range right below the saved FP/LR pair. Any subset of the five X pairs
++// and four D pairs can be saved, but the memory layout must be in register
++// number order.
++// UNWIND_ARM64_MODE_FRAMELESS:
++// A "frameless" leaf function, where FP/LR are not saved. The return
address
++// remains in LR throughout the function. If any non-volatile registers
++// are saved, they must be pushed onto the stack before any stack space is
++// allocated for local variables. The stack sized (including any saved
++// non-volatile registers) divided by 16 is encoded in the bits
++// UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK.
++// UNWIND_ARM64_MODE_DWARF:
++// No compact unwind encoding is available. Instead the low 24-bits of the
++// compact encoding is the offset of the DWARF FDE in the __eh_frame section.
++// This mode is never used in object files. It is only generated by the
++// linker in final linked images which have only DWARF unwind info for a
++// function.
++//
++
++
++
++
++
++////////////////////////////////////////////////////////////////////////////////
++//
++// Relocatable Object Files: __LD,__compact_unwind
++//
++////////////////////////////////////////////////////////////////////////////////
++
++//
++// A compiler can generated compact unwind information for a function by adding
++// a "row" to the __LD,__compact_unwind section. This section has the
++// S_ATTR_DEBUG bit set, so the section will be ignored by older linkers.
++// It is removed by the new linker, so never ends up in final executables.
++// This section is a table, initially with one row per function (that needs
++// unwind info). The table columns and some conceptual entries are:
++//
++// range-start pointer to start of function/range
++// range-length
++// compact-unwind-encoding 32-bit encoding
++// personality-function or zero if no personality function
++// lsda or zero if no LSDA data
++//
++// The length and encoding fields are 32-bits. The other are all pointer sized.
++//
++// In x86_64 assembly, these entry would look like:
++//
++// .section __LD,__compact_unwind,regular,debug
++//
++// #compact unwind for _foo
++// .quad _foo
++// .set L1,LfooEnd-_foo
++// .long L1
++// .long 0x01010001
++// .quad 0
++// .quad 0
++//
++// #compact unwind for _bar
++// .quad _bar
++// .set L2,LbarEnd-_bar
++// .long L2
++// .long 0x01020011
++// .quad __gxx_personality
++// .quad except_tab1
++//
++//
++// Notes: There is no need for any labels in the the __compact_unwind section.
++// The use of the .set directive is to force the evaluation of the
++// range-length at assembly time, instead of generating relocations.
++//
++// To support future compiler optimizations where which non-volatile registers
++// are saved changes within a function (e.g. delay saving non-volatiles until
++// necessary), there can by multiple lines in the __compact_unwind table for one
++// function, each with a different (non-overlapping) range and each with
++// different compact unwind encodings that correspond to the non-volatiles
++// saved at that range of the function.
++//
++// If a particular function is so wacky that there is no compact unwind way
++// to encode it, then the compiler can emit traditional DWARF unwind info.
++// The runtime will use which ever is available.
++//
++// Runtime support for compact unwind encodings are only available on 10.6
++// and later. So, the compiler should not generate it when targeting pre-10.6.
++
++
++
++
++////////////////////////////////////////////////////////////////////////////////
++//
++// Final Linked Images: __TEXT,__unwind_info
++//
++////////////////////////////////////////////////////////////////////////////////
++
++//
++// The __TEXT,__unwind_info section is laid out for an efficient two level lookup.
++// The header of the section contains a coarse index that maps function address
++// to the page (4096 byte block) containing the unwind info for that function.
++//
++
++#define UNWIND_SECTION_VERSION 1
++struct unwind_info_section_header
++{
++ uint32_t version; // UNWIND_SECTION_VERSION
++ uint32_t commonEncodingsArraySectionOffset;
++ uint32_t commonEncodingsArrayCount;
++ uint32_t personalityArraySectionOffset;
++ uint32_t personalityArrayCount;
++ uint32_t indexSectionOffset;
++ uint32_t indexCount;
++ // compact_unwind_encoding_t[]
++ // uint32_t personalities[]
++ // unwind_info_section_header_index_entry[]
++ // unwind_info_section_header_lsda_index_entry[]
++};
++
++struct unwind_info_section_header_index_entry
++{
++ uint32_t functionOffset;
++ uint32_t secondLevelPagesSectionOffset; // section offset to start of
regular or compress page
++ uint32_t lsdaIndexArraySectionOffset; // section offset to start of
lsda_index array for this range
++};
++
++struct unwind_info_section_header_lsda_index_entry
++{
++ uint32_t functionOffset;
++ uint32_t lsdaOffset;
++};
++
++//
++// There are two kinds of second level index pages: regular and compressed.
++// A compressed page can hold up to 1021 entries, but it cannot be used
++// if too many different encoding types are used. The regular page holds
++// 511 entries.
++//
++
++struct unwind_info_regular_second_level_entry
++{
++ uint32_t functionOffset;
++ compact_unwind_encoding_t encoding;
++};
++
++#define UNWIND_SECOND_LEVEL_REGULAR 2
++struct unwind_info_regular_second_level_page_header
++{
++ uint32_t kind; // UNWIND_SECOND_LEVEL_REGULAR
++ uint16_t entryPageOffset;
++ uint16_t entryCount;
++ // entry array
++};
++
++#define UNWIND_SECOND_LEVEL_COMPRESSED 3
++struct unwind_info_compressed_second_level_page_header
++{
++ uint32_t kind; // UNWIND_SECOND_LEVEL_COMPRESSED
++ uint16_t entryPageOffset;
++ uint16_t entryCount;
++ uint16_t encodingsPageOffset;
++ uint16_t encodingsCount;
++ // 32-bit entry array
++ // encodings array
++};
++
++#define UNWIND_INFO_COMPRESSED_ENTRY_FUNC_OFFSET(entry) (entry &
0x00FFFFFF)
++#define UNWIND_INFO_COMPRESSED_ENTRY_ENCODING_INDEX(entry) ((entry >> 24)
& 0xFF)
++
++
++
++#endif
++
+--
+1.8.3.1
+
diff --git a/lld15.spec b/lld15.spec
new file mode 100644
index 0000000..34e79f4
--- /dev/null
+++ b/lld15.spec
@@ -0,0 +1,530 @@
+%global toolchain clang
+
+# Opt out of
https://fedoraproject.org/wiki/Changes/fno-omit-frame-pointer
+#
https://bugzilla.redhat.com/show_bug.cgi?id=2158587
+%undefine _include_frame_pointers
+
+%bcond_without check
+%bcond_without compat_build
+
+#global rc_ver 3
+%global lld_srcdir lld-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src
+%global maj_ver 15
+%global min_ver 0
+%global patch_ver 7
+
+%if %{with compat_build}
+%global pkg_name lld%{maj_ver}
+%global install_prefix %{_libdir}/llvm%{maj_ver}
+%global install_includedir %{install_prefix}/include
+%global install_libdir %{install_prefix}/lib
+%else
+%global pkg_name lld
+%global install_prefix /usr
+%global install_includedir %{_includedir}
+%global install_libdir %{_libdir}
+%endif
+
+Name: %{pkg_name}
+Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}
+Release: 3%{?dist}
+Summary: The LLVM Linker
+
+License: Apache-2.0 WITH LLVM-exception OR NCSA
+URL:
http://llvm.org
+Source0:
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}...
+Source1:
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{maj_ver}...
+Source2: release-keys.asc
+
+ExcludeArch: s390x
+
+Patch0: 0001-PATCH-lld-CMake-Check-for-gtest-headers-even-if-lit..patch
+
+# Bundle libunwind header need during build for MachO support
+Patch1: 0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch
+
+BuildRequires: clang
+BuildRequires: cmake
+BuildRequires: ninja-build
+%if %{with compat_build}
+BuildRequires: llvm%{maj_ver}-devel = %{version}
+%else
+BuildRequires: llvm-devel = %{version}
+BuildRequires: llvm-test = %{version}
+BuildRequires: llvm-googletest = %{version}
+%endif
+BuildRequires: ncurses-devel
+BuildRequires: zlib-devel
+
+# For make check:
+BuildRequires: python3-rpm-macros
+BuildRequires: python3-lit
+
+# For gpg source verification
+BuildRequires: gnupg2
+
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+Requires: %{name}-libs = %{version}-%{release}
+
+%description
+The LLVM project linker.
+
+%package devel
+Summary: Libraries and header files for LLD
+Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+%if %{without compat_build}
+# lld tools are referenced in the cmake files, so we need to add lld as a
+# dependency.
+Requires: %{name}%{?_isa} = %{version}-%{release}
+%endif
+
+%description devel
+This package contains library and header files needed to develop new native
+programs that use the LLD infrastructure.
+
+%package libs
+Summary: LLD shared libraries
+
+%description libs
+Shared libraries for LLD.
+
+%prep
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}'
--data='%{SOURCE0}'
+%autosetup -n %{lld_srcdir} -p2
+
+%if %{with compat_build}
+# For compat builds, we don't want to build the actual lld binary. While there is an
+# LLD_BUILD_TOOLS cmake option, it is incomplete in various ways (e.g. still leaves
install
+# targets and symlinks), so instead skip the tools/lld build entirely.
+# We can't simply delete the binaries after the fact, because this would leave checks
for
+# their existence in the cmake exports.
+sed 's/add_subdirectory(tools\/lld)//' -i CMakeLists.txt
+%endif
+
+%build
+
+%cmake \
+ -GNinja \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_INSTALL_PREFIX=%{install_prefix} \
+ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
+ -DLLVM_DYLIB_COMPONENTS="all" \
+ -DCMAKE_SKIP_RPATH:BOOL=ON \
+ -DPYTHON_EXECUTABLE=%{__python3} \
+%if %{with compat_build}
+ -DLLVM_CMAKE_DIR=%{install_libdir}/cmake/llvm \
+ -DLLVM_INCLUDE_TESTS=OFF \
+%else
+ -DLLVM_INCLUDE_TESTS=ON \
+ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
+ -DLLVM_LIT_ARGS="-sv \
+ --path %{_libdir}/llvm" \
+%if 0%{?__isa_bits} == 64
+ -DLLVM_LIBDIR_SUFFIX=64 \
+%else
+ -DLLVM_LIBDIR_SUFFIX= \
+%endif
+%endif
+ -DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src
+
+%cmake_build
+
+%install
+
+# Install libraries and binaries
+%cmake_install
+
+# This is generated by Patch1 during build and (probably) must be removed afterward
+rm %{buildroot}%{install_includedir}/mach-o/compact_unwind_encoding.h
+
+%if %{without compat_build}
+# Required when using update-alternatives:
+#
https://docs.fedoraproject.org/en-US/packaging-guidelines/Alternatives/
+touch %{buildroot}%{_bindir}/ld
+
+%post
+%{_sbindir}/update-alternatives --install %{_bindir}/ld ld %{_bindir}/ld.lld 1
+
+%postun
+if [ $1 -eq 0 ] ; then
+ %{_sbindir}/update-alternatives --remove ld %{_bindir}/ld.lld
+fi
+%endif
+
+%check
+
+%if %{without compat_build}
+%if %{with check}
+%cmake_build --target check-lld
+%endif
+
+%ldconfig_scriptlets libs
+%endif
+
+%if %{without compat_build}
+%files
+%license LICENSE.TXT
+%ghost %{_bindir}/ld
+%{_bindir}/lld*
+%{_bindir}/ld.lld
+%{_bindir}/ld64.lld
+%{_bindir}/wasm-ld
+%endif
+
+%files devel
+%{install_includedir}/lld
+%{install_libdir}/liblld*.so
+%{install_libdir}/cmake/lld/
+
+%files libs
+%{install_libdir}/liblld*.so.*
+
+%changelog
+* Thu Jan 19 2023 Tulio Magno Quites Machado Filho <tuliom(a)redhat.com> - 15.0.7-3
+- Update license to SPDX identifiers.
+- Include the Apache license adopted in 2019.
+
+* Thu Jan 19 2023 Fedora Release Engineering <releng(a)fedoraproject.org> - 15.0.7-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Fri Jan 13 2023 Nikita Popov <npopov(a)redhat.com> - 15.0.7-1
+- Update to LLVM 15.0.7
+
+* Mon Jan 09 2023 Tom Stellard <tstellar(a)redhat.com> - 15.0.6-2
+- Omit frame pointers when building
+
+* Tue Dec 06 2022 Nikita Popov <npopov(a)redhat.com> - 15.0.6-1
+- Update to LLVM 15.0.6
+
+* Mon Nov 14 2022 Tulio Magno Quites Machado Filho <tuliom(a)redhat.com> - 15.0.4-2
+- Enable LTO.
+
+* Mon Nov 07 2022 Nikita Popov <npopov(a)redhat.com> - 15.0.4-1
+- Update to LLVM 15.0.4
+
+* Tue Oct 11 2022 Nikita Popov <npopov(a)redhat.com> - 15.0.0-2
+- Remove lld-test package
+
+* Tue Sep 06 2022 Nikita Popov <npopov(a)redhat.com> - 15.0.0-1
+- Update to LLVM 15.0.0
+
+* Tue Aug 09 2022 Nikita Popov <npopov(a)redhat.com> - 14.0.5-4
+- Backport --package-metadata flag
+
+* Thu Jul 21 2022 Fedora Release Engineering <releng(a)fedoraproject.org> - 14.0.5-3
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Mon Jul 11 2022 Konrad Kleine <kkleine(a)redhat.com> - 14.0.5-2
+- Set build type to RelWithDebInfo
+
+* Fri Jun 17 2022 Timm Bäder <tbaeder(a)redhat.com> - 14.0.5-1
+- Update to 14.0.5
+
+* Thu Mar 31 2022 Tom Stellard <tstellar(a)redhat.com> - 14.0.0-2
+- Fix CI test failure: gcc-compat-basic
+
+* Mon Feb 28 2022 Timm Bäder <tbaeder(a)redhat.com> - 14.0.0~rc1-1
+- Update to 14.0.0rc1
+
+* Thu Feb 03 2022 Nikita Popov <npopov(a)redhat.com> - 13.0.1-1
+- Update to LLVM 13.0.1 final
+
+* Tue Feb 01 2022 Nikita Popov <npopov(a)redhat.com> - 13.0.1~rc3-1
+- Update to LLVM 13.0.1 rc3
+
+* Thu Jan 20 2022 Fedora Release Engineering <releng(a)fedoraproject.org> -
13.0.1~rc2-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Fri Jan 14 2022 Nikita Popov <npopov(a)redhat.com> - 13.0.1~rc2-1
+- Update to LLVM 13.0.1rc2
+
+* Wed Jan 12 2022 Nikita Popov <npopov(a)redhat.com> - 13.0.1~rc1-1
+- Update to LLVM 13.0.1rc1
+
+* Wed Oct 06 2021 Tom Stellard <tstellar(a)redhat.com> - 13.0.0-2
+- Rebuild for llvm soname bump
+
+* Fri Oct 01 2021 Tom Stellard <tstellar(a)redhat.com> - 13.0.0-1
+- 13.0.0 Release
+
+* Thu Sep 30 2021 Tom Stellard <tstellar(a)redhat.com> - 13.0.0~rc4-1
+- 13.0.0-rc4 Release
+
+* Mon Sep 20 2021 Tom Stellard <tstellar(a)redhat.com> - 13.0.0~rc1-3
+- 13.0.0-rc3 Release
+
+* Tue Sep 14 2021 Konrad Kleine <kkleine(a)redhat.com> - 13.0.0~rc1-2
+- Add --without=check option
+
+* Fri Aug 06 2021 Tom Stellard <tstellar(a)redhat.com> - 13.0.0~rc1-1
+- 13.0.0-rc1 Release
+
+* Thu Jul 22 2021 Fedora Release Engineering <releng(a)fedoraproject.org> - 12.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Tue Jul 13 2021 Tom Stellard <tstellar(a)redhat.com> - 12.0.1-1
+- 12.0.1 Release
+
+* Wed Jun 30 2021 Tom Stellard <tstellar(a)redhat.com> - 12.0.1~rc3-1
+- 12.0.1-rc3 Release
+
+* Tue Jun 01 2021 Tom Stellard <tstellar(a)redhat.com> - 12.0.1~rc1-1
+- 12.0.1-rc1 Release
+
+* Fri Apr 16 2021 Tom Stellard <tstellar(a)redhat.com> - 12.0.0-1
+- 12.0.0 Release
+
+* Thu Apr 08 2021 sguelton(a)redhat.com - 12.0.0-0.8.rc5
+- New upstream release candidate
+
+* Wed Apr 07 2021 Tom Stellard <tstellar(a)redhat.com> - 12.0.0-0.7.rc4
+- Set executable permissions on run-lit-tests
+
+* Fri Apr 02 2021 sguelton(a)redhat.com - 12.0.0-0.6.rc4
+- New upstream release candidate
+
+* Wed Mar 31 2021 Jonathan Wakely <jwakely(a)redhat.com> - 12.0.0-0.5.rc3
+- Rebuilt for removed libstdc++ symbols (#1937698)
+
+* Thu Mar 11 2021 sguelton(a)redhat.com - 12.0.0-0.4.rc3
+- LLVM 12.0.0 rc3
+
+* Wed Mar 10 2021 sguelton(a)redhat.com - 12.0.0-0.3.rc2
+- rebuilt
+
+* Wed Feb 24 2021 sguelton(a)redhat.com - 12.0.0-0.2.rc2
+- llvm 12.0.0-rc2 release
+
+* Tue Feb 16 2021 sguelton(a)redhat.com - 12.0.0-0.1.rc1
+- llvm 12.0.0-rc1 release
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng(a)fedoraproject.org> -
11.1.0-0.3.rc2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Fri Jan 22 2021 Serge Guelton - 11.1.0-0.2.rc2
+- llvm 11.1.0-rc2 release
+
+* Thu Jan 14 2021 Serge Guelton - 11.1.0-0.1.rc1
+- 11.1.0-rc1 release
+
+* Wed Jan 06 2021 Serge Guelton - 11.0.1-3
+- LLVM 11.0.1 final
+
+* Tue Dec 22 2020 sguelton(a)redhat.com - 11.0.1-2.rc2
+- llvm 11.0.1-rc2
+
+* Tue Dec 01 2020 sguelton(a)redhat.com - 11.0.1-1.rc1
+- llvm 11.0.1-rc1
+
+* Thu Nov 12 2020 sguelton(a)redhat.com - 11.0.0-3
+- Exclude s390x, unsupported upstream
+
+* Mon Oct 19 2020 sguelton(a)redhat.com - 11.0.0-2
+- Rebuilt with all gating tests on
+
+* Thu Oct 15 2020 sguelton(a)redhat.com - 11.0.0-1
+- Fix NVR
+
+* Mon Oct 12 2020 sguelton(a)redhat.com - 11.0.0-0.6
+- llvm 11.0.0 - final release
+
+* Thu Oct 08 2020 sguelton(a)redhat.com - 11.0.0-0.5.rc6
+- 11.0.0-rc6
+
+* Wed Oct 07 2020 sguelton(a)redhat.com - 11.0.0-0.4.rc5
+- Update CI tests
+
+* Fri Oct 02 2020 sguelton(a)redhat.com - 11.0.0-0.3.rc5
+- 11.0.0-rc5 Release
+
+* Sun Sep 27 2020 sguelton(a)redhat.com - 11.0.0-0.2.rc3
+- Fix NVR
+
+* Thu Sep 24 2020 sguelton(a)redhat.com - 11.0.0-0.1.rc3
+- 11.0.0-rc3 Release
+
+* Tue Sep 01 2020 sguelton(a)redhat.com - 11.0.0-0.1.rc2
+- 11.0.0-rc2 Release
+
+* Mon Aug 10 2020 Tom Stellard <tstellar(a)redhat.com> - 11.0.0-0.1.rc1
+- 11.0.0-rc1 Release
+
+* Mon Aug 10 2020 sguelton(a)redhat.com - 10.0.0-7
+- use %%license macro
+
+* Mon Aug 10 2020 Tom Stellard <tstellar(a)redhat.com> - 10.0.0-6
+- Disable LTO
+
+* Sat Aug 01 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 10.0.0-5
+- Second attempt - Rebuilt for
+
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Tue Jul 28 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 10.0.0-4
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon Jul 20 2020 sguelton(a)redhat.com - 10.0.0-3
+- Use generic cmake macros
+- Use Ninja as build system
+- Remove chrpath dependency
+
+* Fri Jul 17 2020 sguelton(a)redhat.com - 10.0.0-2
+- Make test archive arch-independent
+
+* Mon Mar 30 2020 sguelton(a)redhat.com - 10.0.0-1
+- 10.0.0 final
+
+* Wed Mar 25 2020 sguelton(a)redhat.com - 10.0.0-0.6.rc6
+- 10.0.0 rc6
+
+* Fri Mar 20 2020 sguelton(a)redhat.com - 10.0.0-0.5.rc5
+- 10.0.0 rc5
+
+* Sun Mar 15 2020 sguelton(a)redhat.com - 10.0.0-0.4.rc4
+- 10.0.0 rc4
+
+* Thu Mar 05 2020 sguelton(a)redhat.com - 10.0.0-0.3.rc3
+- 10.0.0 rc3
+
+* Fri Feb 14 2020 sguelton(a)redhat.com - 10.0.0-0.2.rc2
+- 10.0.0 rc2
+
+* Fri Jan 31 2020 sguelton(a)redhat.com - 10.0.0-0.1.rc1
+- 10.0.0 rc1
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng(a)fedoraproject.org> - 9.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Dec 19 2019 Tom Stellard <tstellar(a)redhat.com> -9.0.1-1
+- 9.0.1 Release
+
+* Sat Dec 14 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-6
+- Fix some rpmdiff errors
+
+* Fri Dec 13 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-5
+- Remove build artifacts installed with unittests
+
+* Thu Dec 05 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-4
+- Enable GPG-based source file verification
+
+* Thu Dec 05 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-3
+- Add lld-test package
+
+* Thu Nov 14 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-2
+- Add explicit lld-libs requires to fix rpmdiff errors
+
+* Thu Sep 19 2019 Tom Stellard <tstellar(a)redhat.com> -9.0.0-1
+- 9.0.0 Release
+
+* Thu Aug 22 2019 Tom Stellard <tstellar(a)redhat.com> - 9.0.0-0.1.rc3
+- 9.0.0-rc3 Release
+
+* Tue Aug 20 2019 Tom Stellard <tstellar(a)redhat.com> - 8.0.0-3
+- touch /usr/bin/ld as required by the packaging guidelines for
+ update-alternatives
+
+* Tue Aug 13 2019 Tom Stellard <tstellar(a)redhat.com> - 8.0.0-2
+- Add update-alternative for ld
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
8.0.0-1.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Mar 20 2019 sguelton(a)redhat.com - 8.0.0-1
+- 8.0.0 final
+
+* Tue Mar 12 2019 sguelton(a)redhat.com - 8.0.0-0.4.rc4
+- 8.0.0 Release candidate 4
+
+* Tue Mar 5 2019 sguelton(a)redhat.com - 8.0.0-0.4.rc3
+- Cleanup specfile after llvm specfile update
+
+* Mon Mar 4 2019 sguelton(a)redhat.com - 8.0.0-0.3.rc3
+- 8.0.0 Release candidate 3
+
+* Fri Feb 22 2019 sguelton(a)redhat.com - 8.0.0-0.2.rc2
+- 8.0.0 Release candidate 2
+
+* Mon Feb 11 2019 sguelton(a)redhat.com - 8.0.0-0.1.rc1
+- 8.0.0 Release candidate 1
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng(a)fedoraproject.org> -
7.0.1-3.1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Jan 14 2019 sguelton(a)redhat.com - 7.0.1-3
+- Fix lld + annobin integration & Setup basic CI tests
+
+* Mon Dec 17 2018 sguelton(a)redhat.com - 7.0.1-2
+- Update lit dependency
+
+* Mon Dec 17 2018 sguelton(a)redhat.com - 7.0.1-1
+- 7.0.1 Release
+
+* Tue Dec 04 2018 sguelton(a)redhat.com - 7.0.0-2
+- Ensure rpmlint passes on specfile
+
+* Mon Sep 24 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-1
+- 7.0.1 Release
+
+* Tue Sep 11 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.4.rc3
+- 7.0.0-rc3 Release
+
+* Fri Aug 31 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.3.rc2
+- 7.0.0-rc2 Release
+
+* Thu Aug 30 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.2.rc1
+- Enable make check
+
+* Mon Aug 13 2018 Tom Stellard <tstellar(a)redhat.com> - 7.0.0-0.1.rc1
+- 7.0.0-rc1 Release
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng(a)fedoraproject.org> - 6.0.1-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Jun 27 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-1
+- 6.0.1 Release
+
+* Fri May 11 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.1-0.1.rc1
+- 6.0.1-rc1 Release
+
+* Thu Mar 08 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-1
+- 6.0.0 Release
+
+* Tue Feb 13 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-0.3.rc2
+- 6.0.0-rc2 Release
+
+* Thu Feb 08 2018 Fedora Release Engineering <releng(a)fedoraproject.org> -
6.0.0-0.2.rc1
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Thu Jan 25 2018 Tom Stellard <tstellar(a)redhat.com> - 6.0.0-0.1.rc1
+- 6.0.0-rc1 Release
+
+* Thu Dec 21 2017 Tom Stellard <tstellar(a)redhat.com> - 5.0.1-1
+- 5.0.1 Release
+
+* Mon Sep 11 2017 Tom Stellard <tstellar(a)redhat.com> - 5.0.0-1
+- 5.0.0 Release
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.0.1-4
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 4.0.1-3
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Thu Jul 06 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-2
+- Backport r307092
+
+* Tue Jul 04 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.1-1
+- 4.0.1 Release
+
+* Tue Jul 04 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-4
+- Fix build without llvm-static
+
+* Wed May 31 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-3
+- Remove llvm-static dependency
+
+* Mon May 15 2017 Fedora Release Engineering <rel-eng(a)lists.fedoraproject.org> -
4.0.0-2
+- Rebuilt for
https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild
+
+* Tue Mar 14 2017 Tom Stellard <tstellar(a)redhat.com> - 4.0.0-1
+- lld 4.0.0 Final Release
diff --git a/release-keys.asc b/release-keys.asc
new file mode 100644
index 0000000..0d3789a
--- /dev/null
+++ b/release-keys.asc
@@ -0,0 +1,104 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+9RmlwZlOTFGcWBYl/cfRONn9qi9a6w==
+=Lvw+
+-----END PGP PUBLIC KEY BLOCK-----
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBFrqgT0BEAC7xo0WH+eNrLlU5LrCk59KmImn1abFcmWNd8kYr5XfqmJKyVqo
+EY7A/yRjf+Yn1621EDkpKPjbql7q7MlZMpqKVdOWKWgmhvz08IOKJxaIABd/iIRT
+FwhIvB68YjtmzcoOJRi1wLnwuG55fJ9E69HyZ33jgAlRaWV3bE/YyszoTlZriUOE
+RbzC5WzX004cE9evlrr+YLt5Y6z7tntOdSXPLyGOFAO5LYMsHsEdi2JBYWrjlslG
+6iJr5iEt9v442PrJ79YYbu5QWe/6APRWtI3AtKBp7y250oon2lbj+bIVD7U9fOBB
+n/Frqx54UN22sJycET63hgYW4pIjIi5zq+FF15aU+ZqBdtNltoX4hEN7wlDpuNc0
+ezVu2Z8hdt8thpjiFUioTQ1t3RmsN6N548VwxmHdoYpAmiZqPIYBYvm85JB7S/3h
+RLuoeGxufBhXGCpnG8ghTOGtbbdanuLB/UROFXTdyZbTCBN5S6jvwkPSaHG7H35Z
+3fazMriTXwL1RGAbKITSWhDe5dXy/yOInWe8emJx+35vwQYCB2L4S8wRyQyRw6x4
+YoXCscW041DUMBX2CC7SjMCcmAC39UX1c3GbTpS3rkJR9cmXt50nviMnKpIwlIPd
+ZYhmxKifwTJ70+c4GVK2o0MG9bTYvpYhLnYxv6iJCfgmT40E+qkDSzSoZwARAQAB
+tCJUb20gU3RlbGxhcmQgPHRzdGVsbGFyQHJlZGhhdC5jb20+iQI/BBMBAgApBQJa
+6oE9AhsDBQkB4TOABwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQoseUqYZB
+nYp8Gg//RmX6Nup/Dv05jTL7dKRBSD08MF400tRtTmRhIuAgGv27qO2hbqzprKVu
+vd20vKBB9CNZpXC2oY8k9VhGv2PZNi/X7iuULIYmzjeFMbJ5CjU6XvuUBmNasITH
+6K/0KLhGebPs5h/DNtd7lbzDm86dLcjxgl6LXUULaSyYvTAKn6YB6mAv5J3qJs2X
+lfTmenNh9p7TPFTfcMHcS70ywjqKXlDiH0q9bRKJnSX7xUFlTHjKkNnAcRjlPaGf
+wUUhIPrnpDboqfwfcmScLrHANW9nwFWSFkNAJu1HQUEuF+An/RZUHDxFbLPKKAIp
+hwZ0aORTfBVZ80AjehDMYCbmp1DJeTyLjC1/94un6mlxPIKnPPPM8rMxr83xnrvP
++Y1+pJaDUL7ZvKnmt2LrGRa9GvsNiYKpCNCORfiwZTeSxxXb+LgaodnbCHvGBnk7
+nlbLdMY08vNlxSx8LNyG0krFxJw/rq260+73yc+qjENeG68fozTEy/4jSVrF4t3m
+8AAUu5r6i/Aomo7Q27TjU928bbCVunpvDpserfDqr3zsA96LO9k8T6THR6zC9i+R
+LiN9Vjl+Rr2YuU26DjFYkCNEA2kNflYCWPJi5I0eodTPZrIPBWJ+H0YTRX31bMH9
+X88FnWJuCwaqAMN3rWlX/lXNCouWDdCuPWseZApISAMnVDE2mM+JAlYEEwEIAEAC
+GwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgBYhBEdOIjFqv0eFqIxujqLHlKmG
+QZ2KBQJgkytfBQkJaxEiAAoJEKLHlKmGQZ2Kv8YP/jNPjcMAP0ZTpUcYV46mGKwf
+aQ0g5FUMSfxP7uJHtctj2dUckPGpA9SAH+ApiJutVgTQpWqNJKPd2vVxOiu5sywN
+iDKCOMlKug5m6lgLX5h3zBvSN90Hpn4I0qHRA3rgENLoPs/UYBxohvFPIhOOjPqO
+HIUuSPhAIuIZawxtqlADswHiKPy38Ao5GnWRb60zKfrB+N+ZiOtg7ITrlTGYm2tX
+0W9iWUG32gIA/RX2qmFPoLrDFqsk66Eir0Ghk5gppRrmpEl/M1lqA8bxlqWto/8w
+V8yDbSEu5fmM3WN3OUcSA23lYJi4j656Q4hS5PU+IWuZbBhcpYwDGexV5+m/ySZb
+wtHZMIb4Au+dgJHCvRiSqHgplyfiamxX5CfA0DJVHoGXpBOw8a2geRT0+DrjSbOS
++CDDnlfmQLfHgjEuyQPU8V0Wlb0tJEvnPPqNPmAv0Rv7MC4qmD/zDrgwuddpfr1x
+H+nWus2plR8E6p/x9uvPLb3plJ94ri1XjXiJPyPvqzBAwA40Zeg0rE7sTVwCC3E9
+RZa7dHh17exkcZdOIS/vRQ1G/VNaOVUwrcC/vIMgZSe37bCLeOKViMtacAiBJDjo
+INC1QJ2F3CYVwktrcgmuz9S8e2WrqdTWwijjConB80EwfHQllz5sp/jU6Bgv297X
+UXkgpk1y+ibQ9/syRQpFuQINBFrqgT0BEADB2vDHMuexkaUm3rPi6SvyMGcsHWle
+feAWm+UjROKIaV77rHwo0/8ncKbtoQx4ZZjDXdI77M2bXB7tPgyEML90bWDMMGN/
+gnpwWSsiDRWpFIV/+hD6B+l9UaEi4UvEstUbIchOkGrZgPZ4Qism4FSVosEK+FE7
+EKCT4PSS+LiBKSxJZB8/g2uX+3pJvVxYurvcVpTmiNlXvUyll4KMpzy5e0KKa/0y
+w9h7SAre5399cSM8E7PDQZQDb1EwbyVyO2yDLgs+p3yzPtRJAydaqRPmT1JbSCYf
+hcihTrViMA4EDN5GRjH2EElI37+2HMpgLs4rc6Abz1F4FUVFhqWJXCKUcAIrG17w
+A7YUlYg38S6Xws2Xj1VfZ/WP7/qIMJZidYTHZbN9WWCaifCPfLlE5VDNsa8y6Mxm
+uFMBAB4PpB1gmmP9pPZsOzV9SmeYt8h2P8cVKDW2f56azpBZvZX6NFn8e0+ZDXS4
+8BQz31G2Xdfa3uOEV0J3JxPXcEbfuPzDHb7OMYP+2Ypjox1TozT1e9zr46SQl9OF
+MglOBnwLZJ9baA/IqZkqLq5iu5Oqda44EIVNAntQ3gebi3+q3YG1SvNUseIy2+8y
+cNWtdDuWv366Af0okCdrKAdap8+KbREer9uXhamtvxc49RCoWwuKoKfBz0RdVvMv
+R/Py2xV8A7PaIQARAQABiQIlBBgBAgAPBQJa6oE9AhsMBQkB4TOAAAoJEKLHlKmG
+QZ2KAaMQALHif2E0PBLVt09vlr4i8jAsQvDrzRajmVPd2B9RpfNU6HJe/y93SZd2
+udr9vzgmfd2o5u12vbegKNiMRgp1VyHQDmYlce27jrH5aPuKmos78+o5/p5yPWCv
+Rj8zxGKh7le7UPO+7UveKu+bgb3zwTj6bEuHX7fVI+WjGmEH3bbjDGamWxXrpfGc
+7+Jr8TN4ZO2OwYBcFOS9U2ZQ6TxrPaCSIm6+j8f+a9HPOuuDc62mMuV/EWQZy0i7
+DhDqU2PNpVjQDWQNpHA8oLDrjNFAoJS8gbHABVsFM1VnwBNT2MKcZQmm05dlQ+ll
+S6meHNCvTniKIKC+Giz1Yd5JVGDACZWWPxEz6VhpQW/twkxRqwlUdpFt7UgDquTL
+M1beQUCZRt81yJTNdrggbhQ2POxOdIO0CPiQv7U1IzndZp6baedeBw4a7FCbj6GY
+cQeHxQCrWpQrwigiseG5uhhS9aiaVFEHja9baSLfXlZu/vsR4MdDG5/iEpier/Xw
+h1qnpTSY+r31Uw3lTUlPHzlg47PMgPslaIhCzfVggxh9bTqxcDbuYJ7NuoMho3tN
+yWfeofTJ7PhKzoXM2Y/rRFoM5gNh1RVA19ngLT5Jwiof8fPZvHJ/9ZkHn+O7eMNm
+m5++gYza3pnn2/PoGpGGAKok+sfJiq5Tb7RUefyJTeZiyTZ/XJrA
+=tMzl
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/sources b/sources
new file mode 100644
index 0000000..76661bd
--- /dev/null
+++ b/sources
@@ -0,0 +1,2 @@
+SHA512 (lld-15.0.7.src.tar.xz) =
5dc0690c1eb3c37ee29c4add65a08f7b93ce1363cf9099243c9dc1124d1ca77fe19bbf24dad3984de4553eda716f706d49dff63461b709bec6645272e67f0178
+SHA512 (lld-15.0.7.src.tar.xz.sig) =
f0cf9c7ef3c99f17c40bd28436ecfdbd939f8e145f2ccc5f8c52ec846b633dc073e6bd5dc6cdc6ce213f7404a491ea992440b5d0ba080ba68aadf480f9a5d373