diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ad335a7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+SOURCES/lld-12.0.1.src.tar.xz
+SOURCES/tstellar-gpg-key.asc
diff --git a/.lld.metadata b/.lld.metadata
new file mode 100644
index 0000000..184b2a9
--- /dev/null
+++ b/.lld.metadata
@@ -0,0 +1,2 @@
+3b7e4908f6cf3a51590e37b4194180582cc1c32c SOURCES/lld-12.0.1.src.tar.xz
+b8d2648a01d36ed0186fd2c5af325fd28797f9a0 SOURCES/tstellar-gpg-key.asc
diff --git a/SOURCES/0001-PATCH-lld-CMake-Check-for-gtest-headers-even-if-lit..patch b/SOURCES/0001-PATCH-lld-CMake-Check-for-gtest-headers-even-if-lit..patch
new file mode 100644
index 0000000..ea10149
--- /dev/null
+++ b/SOURCES/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@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
+@@ -65,6 +65,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)
+@@ -74,12 +83,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/SOURCES/0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch b/SOURCES/0002-PATCH-lld-Import-compact_unwind_encoding.h-from-libu.patch
new file mode 100644
index 0000000..7d8beda
--- /dev/null
+++ b/SOURCES/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@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/SOURCES/lit.lld-test.cfg.py b/SOURCES/lit.lld-test.cfg.py
new file mode 100644
index 0000000..10d165b
--- /dev/null
+++ b/SOURCES/lit.lld-test.cfg.py
@@ -0,0 +1,12 @@
+#Clear lld_tools_dir so we don't accidently pick up tools from somewhere else
+config.lld_tools_dir = ""
+
+if hasattr(config, 'have_zlib'):
+    # Regression tests write output to this directory, so we need to be able to specify
+    # a temp directory when invoking lit. e.g. lit -Dlld_obj_root=/tmp/lit
+    config.lld_obj_root = "%(lld_obj_root)s" % lit_config.params
+    lit_config.load_config(config, '%(lld_test_root)s/lit.cfg.py' % lit_config.params)
+else:
+    # For unit tests, llvm_obj_root is used to find the unit test binaries.
+    config.lld_obj_root = '%(lld_unittest_bindir)s' % lit_config.params
+    lit_config.load_config(config, '%(lld_test_root)s/Unit/lit.cfg.py' % lit_config.params)
diff --git a/SOURCES/lld-12.0.1.src.tar.xz.sig b/SOURCES/lld-12.0.1.src.tar.xz.sig
new file mode 100644
index 0000000..204df67
Binary files /dev/null and b/SOURCES/lld-12.0.1.src.tar.xz.sig differ
diff --git a/SOURCES/run-lit-tests b/SOURCES/run-lit-tests
new file mode 100644
index 0000000..1a448d0
--- /dev/null
+++ b/SOURCES/run-lit-tests
@@ -0,0 +1,66 @@
+#!/bin/bash
+
+usage() {
+    cat << EOF
+usage: `basename $0` [OPTIONS]
+  --threads NUM         The number of threads to use for running tests.
+  --multilib-arch ARCH  Use this option to test 32-bit libs/binaries on
+                        64-bit hosts.
+EOF
+}
+
+threads_arg=''
+
+while [ $# -gt 0 ]; do
+    case $1 in
+        --threads)
+            shift
+            threads_arg="--threads $1"
+            ;;
+        --multilib-arch)
+            shift
+            ARCH=$1
+            ;;
+        * )
+            echo "unknown option: $1"
+            echo ""
+            usage
+            exit 1
+            ;;
+    esac
+    shift
+done
+
+if [ `whoami` = "root" ]; then
+    echo "error: lld tests do not support running as root."
+    exit 1
+fi
+
+set -xe
+
+if [ -z "$ARCH" ]; then
+    ARCH=`rpm --eval '%_arch'`
+fi
+
+case $ARCH in
+    arm)
+        ;&
+    i686)
+        LIB_DIR="/usr/lib/"
+        ;;
+    *)
+        LIB_DIR="/usr/lib64/"
+        ;;
+esac
+
+cd $(mktemp -d -p /var/tmp)
+ln -s /usr/include include
+tar -xzf /usr/share/lld/src/test.tar.gz
+ln -s /usr/share/lld/src/$ARCH.site.cfg.py test/lit.site.cfg.py
+ln -s /usr/share/lld/src/$ARCH.Unit.site.cfg.py test/Unit/lit.site.cfg.py
+
+LD_LIBRARY_PATH=$LIB_DIR/lld:$LD_LIBRARY_PATH \
+lit -v -s $threads_arg test \
+        -Dlld_obj_root=`pwd` \
+        -Dlld_test_root=`pwd`/test \
+        -Dlld_unittest_bindir=$LIB_DIR/lld
diff --git a/SPECS/lld.spec b/SPECS/lld.spec
new file mode 100644
index 0000000..f4a343e
--- /dev/null
+++ b/SPECS/lld.spec
@@ -0,0 +1,466 @@
+#%%global rc_ver 5
+%global lld_srcdir lld-%{version}%{?rc_ver:rc%{rc_ver}}.src
+%global maj_ver 12
+%global min_ver 0
+%global patch_ver 1
+
+# Don't include unittests in automatic generation of provides or requires.
+%global __provides_exclude_from ^%{_libdir}/lld/.*$
+%global __requires_exclude ^libgtest.*$
+
+Name:		lld
+Version:	%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}}
+Release:	2%{?dist}
+Summary:	The LLVM Linker
+
+License:	NCSA
+URL:		http://llvm.org
+Source0:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{lld_srcdir}.tar.xz
+Source1:	https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}%{?rc_ver:-rc%{rc_ver}}/%{lld_srcdir}.tar.xz.sig
+Source2:	tstellar-gpg-key.asc
+Source3:	run-lit-tests
+Source4:	lit.lld-test.cfg.py
+
+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:	gcc
+BuildRequires:	gcc-c++
+BuildRequires:	cmake
+BuildRequires:	ninja-build
+BuildRequires:	llvm-devel = %{version}
+BuildRequires:	llvm-test = %{version}
+BuildRequires:	ncurses-devel
+BuildRequires:	zlib-devel
+
+# For make check:
+BuildRequires:	python3-rpm-macros
+BuildRequires:	python3-lit
+BuildRequires:	llvm-googletest = %{version}
+
+# For gpg source verification
+BuildRequires:	gnupg2
+
+Requires(post): %{_sbindir}/update-alternatives
+Requires(preun): %{_sbindir}/update-alternatives
+
+Requires: lld-libs = %{version}-%{release}
+
+%description
+The LLVM project linker.
+
+%package devel
+Summary:	Libraries and header files for LLD
+Requires: lld-libs%{?_isa} = %{version}-%{release}
+# lld tools are referenced in the cmake files, so we need to add lld as a
+# dependency.
+Requires: %{name}%{?_isa} = %{version}-%{release}
+
+%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.
+
+%package test
+Summary: LLD regression tests
+Requires:	%{name}%{?_isa} = %{version}-%{release}
+Requires:	python3-lit
+Requires:	llvm-test(major) = %{maj_ver}
+Requires:	lld-libs = %{version}-%{release}
+
+%description test
+LLVM regression tests.
+
+%prep
+%{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
+%autosetup -n %{lld_srcdir} -p2
+
+
+%build
+
+# Disable lto since it causes the COFF/libpath.test lit test to crash.
+%global _lto_cflags %{nil}
+
+%cmake \
+	-GNinja \
+	-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
+	-DLLVM_DYLIB_COMPONENTS="all" \
+	-DCMAKE_SKIP_RPATH:BOOL=ON \
+	-DPYTHON_EXECUTABLE=%{__python3} \
+	-DLLVM_INCLUDE_TESTS=ON \
+	-DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
+	-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
+
+%cmake_build
+
+# Build the unittests so we can install them.
+%cmake_build --target lld-test-depends
+
+%install
+
+%global lit_cfg test/%{_arch}.site.cfg.py
+%global lit_unit_cfg test/Unit/%{_arch}.site.cfg.py
+%global lit_lld_test_cfg_install_path %{_datadir}/lld/lit.lld-test.cfg.py
+
+# Generate lit config files.  Strip off the last line that initiates the
+# test run, so we can customize the configuration.
+head -n -1 %{_target_platform}/test/lit.site.cfg.py >> %{lit_cfg}
+head -n -1 %{_target_platform}/test/Unit/lit.site.cfg.py >> %{lit_unit_cfg}
+
+# Patch lit config files to load custom config:
+for f in %{lit_cfg} %{lit_unit_cfg}; do
+  echo "lit_config.load_config(config, '%{lit_lld_test_cfg_install_path}')" >> $f
+done
+
+# Install test files
+install -d %{buildroot}%{_datadir}/lld/src
+cp %{SOURCE4} %{buildroot}%{_datadir}/lld/
+
+# The various tar options are there to make sur the archive is the same on 32 and 64 bit arch, i.e.
+# the archive creation is reproducible. Move arch-specific content out of the tarball
+mv %{lit_cfg} %{buildroot}%{_datadir}/lld/src/%{_arch}.site.cfg.py
+mv %{lit_unit_cfg} %{buildroot}%{_datadir}/lld/src/%{_arch}.Unit.site.cfg.py
+tar --sort=name --mtime='UTC 2020-01-01' -c test/ | gzip -n > %{buildroot}%{_datadir}/lld/src/test.tar.gz
+
+install -d %{buildroot}%{_libexecdir}/tests/lld
+install -m 0755 %{SOURCE3} %{buildroot}%{_libexecdir}/tests/lld
+
+# Install unit test binaries
+install -d %{buildroot}%{_libdir}/lld/
+cp -R %{_target_platform}/unittests %{buildroot}%{_libdir}/lld/
+rm -rf `find %{buildroot}%{_libdir}/lld/ -iname '*make*'`
+
+# Install gtest libraries
+cp %{_target_platform}/%{_lib}/libgtest*so* %{buildroot}%{_libdir}/lld/
+
+# Install libraries and binaries
+%cmake_install
+
+# This is generated by Patch1 during build and (probably) must be removed afterward
+rm %{buildroot}%{_includedir}/mach-o/compact_unwind_encoding.h
+
+# 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
+
+%check
+
+# armv7lhl tests disabled because of arm issue, see https://koji.fedoraproject.org/koji/taskinfo?taskID=33660162
+%ifnarch %{arm}
+%cmake_build --target check-lld
+%endif
+
+%ldconfig_scriptlets libs
+
+%files
+%license LICENSE.TXT
+%ghost %{_bindir}/ld
+%{_bindir}/lld*
+%{_bindir}/ld.lld
+%{_bindir}/ld64.lld
+%{_bindir}/ld64.lld.darwinnew
+%{_bindir}/wasm-ld
+
+%files devel
+%{_includedir}/lld
+%{_libdir}/liblld*.so
+%{_libdir}/cmake/lld/
+
+%files libs
+%{_libdir}/liblld*.so.*
+
+%files test
+%{_libexecdir}/tests/lld/
+%{_libdir}/lld/
+%{_datadir}/lld/src/test.tar.gz
+%{_datadir}/lld/src/%{_arch}.site.cfg.py
+%{_datadir}/lld/src/%{_arch}.Unit.site.cfg.py
+%{_datadir}/lld/lit.lld-test.cfg.py
+
+%changelog
+* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 12.0.1-2
+- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
+  Related: rhbz#1991688
+
+* Tue Jul 12 2021 Tom Stellard <tstellar@redhat.com> -12.0.1-1
+- 12.0.1 Release
+
+* Fri Apr 16 2021 Tom Stellard <tstellar@redhat.com> - 12.0.0-1
+- 12.0.0 Release
+
+* Thu Apr 08 2021 sguelton@redhat.com - 12.0.0-0.8.rc5
+- New upstream release candidate
+
+* Wed Apr 07 2021 Tom Stellard <tstellar@redhat.com> - 12.0.0-0.7.rc4
+- Set executable permissions on run-lit-tests
+
+* Fri Apr 02 2021 sguelton@redhat.com - 12.0.0-0.6.rc4
+- New upstream release candidate
+
+* Wed Mar 31 2021 Jonathan Wakely <jwakely@redhat.com> - 12.0.0-0.5.rc3
+- Rebuilt for removed libstdc++ symbols (#1937698)
+
+* Thu Mar 11 2021 sguelton@redhat.com - 12.0.0-0.4.rc3
+- LLVM 12.0.0 rc3
+
+* Wed Mar 10 2021 sguelton@redhat.com - 12.0.0-0.3.rc2
+- rebuilt
+
+* Wed Feb 24 2021 sguelton@redhat.com - 12.0.0-0.2.rc2
+- llvm 12.0.0-rc2 release
+
+* Tue Feb 16 2021 sguelton@redhat.com - 12.0.0-0.1.rc1
+- llvm 12.0.0-rc1 release
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@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@redhat.com - 11.0.1-2.rc2
+- llvm 11.0.1-rc2
+
+* Tue Dec 01 2020 sguelton@redhat.com - 11.0.1-1.rc1
+- llvm 11.0.1-rc1
+
+* Thu Nov 12 2020 sguelton@redhat.com - 11.0.0-3
+- Exclude s390x, unsupported upstream
+
+* Mon Oct 19 2020 sguelton@redhat.com - 11.0.0-2
+- Rebuilt with all gating tests on
+
+* Thu Oct 15 2020 sguelton@redhat.com - 11.0.0-1
+- Fix NVR
+
+* Mon Oct 12 2020 sguelton@redhat.com - 11.0.0-0.6
+- llvm 11.0.0 - final release
+
+* Thu Oct 08 2020 sguelton@redhat.com - 11.0.0-0.5.rc6
+- 11.0.0-rc6
+
+* Wed Oct 07 2020 sguelton@redhat.com - 11.0.0-0.4.rc5
+- Update CI tests
+
+* Fri Oct 02 2020 sguelton@redhat.com - 11.0.0-0.3.rc5
+- 11.0.0-rc5 Release
+
+* Sun Sep 27 2020 sguelton@redhat.com - 11.0.0-0.2.rc3
+- Fix NVR
+
+* Thu Sep 24 2020 sguelton@redhat.com - 11.0.0-0.1.rc3
+- 11.0.0-rc3 Release
+
+* Tue Sep 01 2020 sguelton@redhat.com - 11.0.0-0.1.rc2
+- 11.0.0-rc2 Release
+
+* Mon Aug 10 2020 Tom Stellard <tstellar@redhat.com> - 11.0.0-0.1.rc1
+- 11.0.0-rc1 Release
+
+* Mon Aug 10 2020 sguelton@redhat.com - 10.0.0-7
+- use %%license macro
+
+* Mon Aug 10 2020 Tom Stellard <tstellar@redhat.com> - 10.0.0-6
+- Disable LTO
+
+* Sat Aug 01 2020 Fedora Release Engineering <releng@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@fedoraproject.org> - 10.0.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Mon Jul 20 2020 sguelton@redhat.com - 10.0.0-3
+- Use generic cmake macros
+- Use Ninja as build system
+- Remove chrpath dependency
+
+* Fri Jul 17 2020 sguelton@redhat.com - 10.0.0-2
+- Make test archive arch-independent
+
+* Mon Mar 30 2020 sguelton@redhat.com - 10.0.0-1
+- 10.0.0 final
+
+* Wed Mar 25 2020 sguelton@redhat.com - 10.0.0-0.6.rc6
+- 10.0.0 rc6
+
+* Fri Mar 20 2020 sguelton@redhat.com - 10.0.0-0.5.rc5
+- 10.0.0 rc5
+
+* Sun Mar 15 2020 sguelton@redhat.com - 10.0.0-0.4.rc4
+- 10.0.0 rc4
+
+* Thu Mar 05 2020 sguelton@redhat.com - 10.0.0-0.3.rc3
+- 10.0.0 rc3
+
+* Fri Feb 14 2020 sguelton@redhat.com - 10.0.0-0.2.rc2
+- 10.0.0 rc2
+
+* Fri Jan 31 2020 sguelton@redhat.com - 10.0.0-0.1.rc1
+- 10.0.0 rc1
+
+* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 9.0.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Thu Dec 19 2019 Tom Stellard <tstellar@redhat.com> -9.0.1-1
+- 9.0.1 Release
+
+* Sat Dec 14 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-6
+- Fix some rpmdiff errors
+
+* Fri Dec 13 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-5
+- Remove build artifacts installed with unittests
+
+* Thu Dec 05 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-4
+- Enable GPG-based source file verification
+
+* Thu Dec 05 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-3
+- Add lld-test package
+
+* Thu Nov 14 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-2
+- Add explicit lld-libs requires to fix rpmdiff errors
+
+* Thu Sep 19 2019 Tom Stellard <tstellar@redhat.com> -9.0.0-1
+- 9.0.0 Release
+
+* Thu Aug 22 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-0.1.rc3
+- 9.0.0-rc3 Release
+
+* Tue Aug 20 2019 Tom Stellard <tstellar@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@redhat.com> - 8.0.0-2
+- Add update-alternative for ld
+
+* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 8.0.0-1.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
+
+* Wed Mar 20 2019 sguelton@redhat.com - 8.0.0-1
+- 8.0.0 final
+
+* Tue Mar 12 2019 sguelton@redhat.com - 8.0.0-0.4.rc4
+- 8.0.0 Release candidate 4
+
+* Tue Mar 5 2019 sguelton@redhat.com - 8.0.0-0.4.rc3
+- Cleanup specfile after llvm specfile update
+
+* Mon Mar 4 2019 sguelton@redhat.com - 8.0.0-0.3.rc3
+- 8.0.0 Release candidate 3
+
+* Fri Feb 22 2019 sguelton@redhat.com - 8.0.0-0.2.rc2
+- 8.0.0 Release candidate 2
+
+* Mon Feb 11 2019 sguelton@redhat.com - 8.0.0-0.1.rc1
+- 8.0.0 Release candidate 1
+
+* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 7.0.1-3.1
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
+
+* Mon Jan 14 2019 sguelton@redhat.com - 7.0.1-3
+- Fix lld + annobin integration & Setup basic CI tests
+
+* Mon Dec 17 2018 sguelton@redhat.com - 7.0.1-2
+- Update lit dependency
+
+* Mon Dec 17 2018 sguelton@redhat.com - 7.0.1-1
+- 7.0.1 Release
+
+* Tue Dec 04 2018 sguelton@redhat.com - 7.0.0-2
+- Ensure rpmlint passes on specfile
+
+* Mon Sep 24 2018 Tom Stellard <tstellar@redhat.com> - 7.0.0-1
+- 7.0.1 Release
+
+* Tue Sep 11 2018 Tom Stellard <tstellar@redhat.com> - 7.0.0-0.4.rc3
+- 7.0.0-rc3 Release
+
+* Fri Aug 31 2018 Tom Stellard <tstellar@redhat.com> - 7.0.0-0.3.rc2
+- 7.0.0-rc2 Release
+
+* Thu Aug 30 2018 Tom Stellard <tstellar@redhat.com> - 7.0.0-0.2.rc1
+- Enable make check
+
+* Mon Aug 13 2018 Tom Stellard <tstellar@redhat.com> - 7.0.0-0.1.rc1
+- 7.0.0-rc1 Release
+
+* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 6.0.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
+
+* Wed Jun 27 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-1
+- 6.0.1 Release
+
+* Fri May 11 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-0.1.rc1
+- 6.0.1-rc1 Release
+
+* Thu Mar 08 2018 Tom Stellard <tstellar@redhat.com> - 6.0.0-1
+- 6.0.0 Release
+
+* Tue Feb 13 2018 Tom Stellard <tstellar@redhat.com> - 6.0.0-0.3.rc2
+- 6.0.0-rc2 Release
+
+* Thu Feb 08 2018 Fedora Release Engineering <releng@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@redhat.com> - 6.0.0-0.1.rc1
+- 6.0.0-rc1 Release
+
+* Thu Dec 21 2017 Tom Stellard <tstellar@redhat.com> - 5.0.1-1
+- 5.0.1 Release
+
+* Mon Sep 11 2017 Tom Stellard <tstellar@redhat.com> - 5.0.0-1
+- 5.0.0 Release
+
+* Thu Aug 03 2017 Fedora Release Engineering <releng@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@fedoraproject.org> - 4.0.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Thu Jul 06 2017 Tom Stellard <tstellar@redhat.com> - 4.0.1-2
+- Backport r307092
+
+* Tue Jul 04 2017 Tom Stellard <tstellar@redhat.com> - 4.0.1-1
+- 4.0.1 Release
+
+* Tue Jul 04 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-4
+- Fix build without llvm-static
+
+* Wed May 31 2017 Tom Stellard <tstellar@redhat.com> - 4.0.0-3
+- Remove llvm-static dependency
+
+* Mon May 15 2017 Fedora Release Engineering <rel-eng@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@redhat.com> - 4.0.0-1
+- lld 4.0.0 Final Release