diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a535748
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/lld-7.0.1.src.tar.xz
diff --git a/.lld.metadata b/.lld.metadata
new file mode 100644
index 0000000..cad80df
--- /dev/null
+++ b/.lld.metadata
@@ -0,0 +1 @@
+3b69e107f27d466488838d5fa65bdfd77b885007 SOURCES/lld-7.0.1.src.tar.xz
diff --git a/SOURCES/0001-CMake-Check-for-gtest-headers-even-if-lit.py-is-not-.patch b/SOURCES/0001-CMake-Check-for-gtest-headers-even-if-lit.py-is-not-.patch
new file mode 100644
index 0000000..c4af14d
--- /dev/null
+++ b/SOURCES/0001-CMake-Check-for-gtest-headers-even-if-lit.py-is-not-.patch
@@ -0,0 +1,47 @@
+From e5bdf4580677da063abe8d3880fbab9eaa7a7efe Mon Sep 17 00:00:00 2001
+From: Tom Stellard <tstellar@redhat.com>
+Date: Thu, 30 Aug 2018 08:53:56 -0700
+Subject: [PATCH] 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.
+---
+ CMakeLists.txt | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e2fbdbf..c9b2927 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -75,6 +75,15 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")
+       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)
+@@ -84,12 +93,6 @@ Please install Python or specify the PYTHON_EXECUTABLE CMake variable.")
+         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/0001-Partial-support-of-SHT_GROUP-without-flag.patch b/SOURCES/0001-Partial-support-of-SHT_GROUP-without-flag.patch
new file mode 100644
index 0000000..c060ba3
--- /dev/null
+++ b/SOURCES/0001-Partial-support-of-SHT_GROUP-without-flag.patch
@@ -0,0 +1,121 @@
+diff -r -u --new-file lld-7.0.1.src.orig/ELF/InputFiles.cpp lld-7.0.1.src/ELF/InputFiles.cpp
+--- lld-7.0.1.src.orig/ELF/InputFiles.cpp	2019-01-25 10:12:56.412850573 +0000
++++ lld-7.0.1.src/ELF/InputFiles.cpp	2019-01-25 10:14:50.557726268 +0000
+@@ -324,17 +324,6 @@
+   return Signature;
+ }
+ 
+-template <class ELFT>
+-ArrayRef<typename ObjFile<ELFT>::Elf_Word>
+-ObjFile<ELFT>::getShtGroupEntries(const Elf_Shdr &Sec) {
+-  const ELFFile<ELFT> &Obj = this->getObj();
+-  ArrayRef<Elf_Word> Entries =
+-      CHECK(Obj.template getSectionContentsAsArray<Elf_Word>(&Sec), this);
+-  if (Entries.empty() || Entries[0] != GRP_COMDAT)
+-    fatal(toString(this) + ": unsupported SHT_GROUP format");
+-  return Entries.slice(1);
+-}
+-
+ template <class ELFT> bool ObjFile<ELFT>::shouldMerge(const Elf_Shdr &Sec) {
+   // On a regular link we don't merge sections if -O0 (default is -O1). This
+   // sometimes makes the linker significantly faster, although the output will
+@@ -439,22 +428,33 @@
+     case SHT_GROUP: {
+       // De-duplicate section groups by their signatures.
+       StringRef Signature = getShtGroupSignature(ObjSections, Sec);
+-      bool IsNew = ComdatGroups.insert(CachedHashStringRef(Signature)).second;
+       this->Sections[I] = &InputSection::Discarded;
+ 
+-      // If it is a new section group, we want to keep group members.
+-      // Group leader sections, which contain indices of group members, are
+-      // discarded because they are useless beyond this point. The only
+-      // exception is the -r option because in order to produce re-linkable
+-      // object files, we want to pass through basically everything.
++      ArrayRef<Elf_Word> Entries =
++          CHECK(Obj.template getSectionContentsAsArray<Elf_Word>(&Sec), this);
++      if (Entries.empty())
++        fatal(toString(this) + ": empty SHT_GROUP");
++
++      // The first word of a SHT_GROUP section contains flags. Currently,
++      // the standard defines only "GRP_COMDAT" flag for the COMDAT group.
++      // An group with the empty flag doesn't define anything; such sections
++      // are just skipped.
++      if (Entries[0] == 0)
++        continue;
++
++      if (Entries[0] != GRP_COMDAT)
++        fatal(toString(this) + ": unsupported SHT_GROUP format");
++
++      bool IsNew = ComdatGroups.insert(CachedHashStringRef(Signature)).second;
+       if (IsNew) {
+         if (Config->Relocatable)
+           this->Sections[I] = createInputSection(Sec);
+         continue;
+       }
+ 
++
+       // Otherwise, discard group members.
+-      for (uint32_t SecIndex : getShtGroupEntries(Sec)) {
++      for (uint32_t SecIndex : Entries.slice(1)) {
+         if (SecIndex >= Size)
+           fatal(toString(this) +
+                 ": invalid section index in group: " + Twine(SecIndex));
+diff -r -u --new-file lld-7.0.1.src.orig/test/ELF/sht-group-empty.test lld-7.0.1.src/test/ELF/sht-group-empty.test
+--- lld-7.0.1.src.orig/test/ELF/sht-group-empty.test	1970-01-01 00:00:00.000000000 +0000
++++ lld-7.0.1.src/test/ELF/sht-group-empty.test	2019-01-25 10:13:19.312026250 +0000
+@@ -0,0 +1,55 @@
++# RUN: yaml2obj %s -o %t.o
++# RUN: ld.lld %t.o %t.o -o %t -r
++# RUN: llvm-readobj -s %t | FileCheck %s
++
++# CHECK:     Name: .text.foo
++# CHECK:     Name: .rela.text.foo
++
++--- !ELF
++FileHeader:
++  Class:           ELFCLASS64
++  Data:            ELFDATA2LSB
++  Type:            ET_REL
++  Machine:         EM_X86_64
++Sections:
++  - Name:            .group
++    Type:            SHT_GROUP
++    Link:            .symtab
++    Info:            foo
++    Members:
++      - SectionOrType:    GRP_COMDAT
++      - SectionOrType:    .text.foo
++      - SectionOrType:    .text.bar
++      - SectionOrType:    .note
++  - Name:            .note
++    Type:            SHT_NOTE
++    Flags:           [ SHF_GROUP ]
++  - Name:            .text.foo
++    Type:            SHT_PROGBITS
++    Flags:           [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ]
++  - Name:            .text.bar
++    Type:            SHT_PROGBITS
++    Flags:           [ SHF_ALLOC, SHF_EXECINSTR, SHF_GROUP ]
++  - Name:            .rela.text.foo
++    Type:            SHT_RELA
++    Flags:           [ SHF_INFO_LINK, SHF_GROUP ]
++    Link:            .symtab
++    Info:            .text.foo
++    Relocations:
++      - Offset:          0x0000000000000000
++        Symbol:          foo
++        Type:            R_X86_64_64
++  - Name:            .rela.text.bar
++    Type:            SHT_RELA
++    Flags:           [ SHF_INFO_LINK, SHF_GROUP ]
++    Link:            .symtab
++    Info:            .text.bar
++    Relocations:
++      - Offset:          0x0000000000000000
++        Symbol:          bar
++        Type:            R_X86_64_64
++Symbols:
++  Global:
++    - Name:            foo
++    - Name:            bar
++
diff --git a/SOURCES/0001-lld-Prefer-using-the-newest-installed-python-version.patch b/SOURCES/0001-lld-Prefer-using-the-newest-installed-python-version.patch
new file mode 100644
index 0000000..c8499d2
--- /dev/null
+++ b/SOURCES/0001-lld-Prefer-using-the-newest-installed-python-version.patch
@@ -0,0 +1,26 @@
+From 39ce39a20a0854380997df7912e739b6c348f8a1 Mon Sep 17 00:00:00 2001
+From: Tom Stellard <tstellar@redhat.com>
+Date: Thu, 30 Aug 2018 14:59:06 -0700
+Subject: [PATCH] [lld] Prefer using the newest installed python version rather
+ than 2.7
+
+This only affects the lit tests, which seem to pass fine with python3.
+---
+ CMakeLists.txt | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 087377d..6e5f2a7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -56,7 +56,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+   include(HandleLLVMOptions)
+ 
+   if(LLVM_INCLUDE_TESTS)
+-    set(Python_ADDITIONAL_VERSIONS 2.7)
+     include(FindPythonInterp)
+     if(NOT PYTHONINTERP_FOUND)
+       message(FATAL_ERROR
+-- 
+1.8.3.1
+
diff --git a/SPECS/lld.spec b/SPECS/lld.spec
new file mode 100644
index 0000000..3b701db
--- /dev/null
+++ b/SPECS/lld.spec
@@ -0,0 +1,166 @@
+%global lld_srcdir lld-%{version}%{?rc_ver:rc%{rc_ver}}.src
+
+Name:		lld
+Version:	7.0.1
+Release:	3%{?dist}
+Summary:	The LLVM Linker
+
+License:	NCSA
+URL:		http://llvm.org
+Source0:	http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/%{lld_srcdir}.tar.xz
+
+Patch0:		0001-CMake-Check-for-gtest-headers-even-if-lit.py-is-not-.patch
+Patch1:		0001-lld-Prefer-using-the-newest-installed-python-version.patch
+Patch2:		0001-Partial-support-of-SHT_GROUP-without-flag.patch
+
+BuildRequires:  gcc
+BuildRequires:  gcc-c++
+BuildRequires: cmake
+BuildRequires: llvm-devel = %{version}
+BuildRequires: llvm-static = %{version}
+BuildRequires: ncurses-devel
+BuildRequires: zlib-devel
+BuildRequires: chrpath
+
+# For make check:
+# This pulls in /usr/bin/python3
+BuildRequires:	python3-devel
+BuildRequires: python3-lit = 0.7.1
+BuildRequires: llvm-googletest
+
+%description
+The LLVM project linker.
+
+%package devel
+Summary:	Libraries and header files for LLD
+
+%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
+%autosetup -n %{name}-%{version}%{?rc_ver:rc%{rc_ver}}.src -p1
+
+%build
+
+mkdir %{_target_platform}
+cd %{_target_platform}
+
+%cmake .. \
+	-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
+	-DLLVM_DYLIB_COMPONENTS="all" \
+	-DLLVM_INCLUDE_TESTS=ON \
+	-DLLVM_MAIN_SRC_DIR=%{_datadir}/llvm/src \
+	-DLLVM_EXTERNAL_LIT=%{_bindir}/lit \
+	-DLLVM_LIT_ARGS="-sv \
+		-DFileCheck=%{_libdir}/llvm/FileCheck \
+		-Dcount=%{_libdir}/llvm/count \
+		-Dnot=%{_libdir}/llvm/not \
+		--path %{_libdir}/llvm" \
+%if 0%{?__isa_bits} == 64
+	-DLLVM_LIBDIR_SUFFIX=64
+%else
+	-DLLVM_LIBDIR_SUFFIX=
+%endif
+
+%make_build
+
+%install
+cd %{_target_platform}
+%make_install
+
+# Remove rpath
+chrpath --delete %{buildroot}%{_bindir}/*
+chrpath --delete %{buildroot}%{_libdir}/*.so*
+
+%check
+make -C %{_target_platform} %{?_smp_mflags} check-lld
+
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
+%files
+%{_bindir}/lld*
+%{_bindir}/ld.lld
+%{_bindir}/ld64.lld
+%{_bindir}/wasm-ld
+
+%files devel
+%{_includedir}/lld
+%{_libdir}/liblld*.so
+
+%files libs
+%{_libdir}/liblld*.so.*
+
+%changelog
+* Mon Jan 14 2019 sguelton@redhat.com - 7.0.1-3
+- Fix lld + annobin integration & Setup basic CI tests
+
+* Sat Dec 15 2018 Tom Stellard <tstellar@redhat.com> - 7.0.1-2
+- Bump required python3-lit version
+
+* Fri Dec 14 2018 Tom Stellard <tstellar@redhat.com> - 7.0.1-1
+- 7.0.1-1 Release
+
+* Mon Dec 10 2018 Tom Stellard <tstellar@redhat.com> - 7.0.1-0.2.rc3
+- 7.0.1-rc3 Release
+
+* Tue Nov 27 2018 Tom Stellard <tstellar@redhat.com> - 7.0.0-1
+- 7.0.0 Release
+
+* Mon Oct 01 2018 Tom Stellard <tstellar@redhat.com> - 6.0.1-2
+- Drop scl macros
+
+* 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