diff --git a/.gitignore b/.gitignore index f7f7a13..32405b7 100644 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,5 @@ /llvm-12.0.1rc3.src.tar.xz.sig /llvm-12.0.1.src.tar.xz /llvm-12.0.1.src.tar.xz.sig +/llvm-13.0.0rc1.src.tar.xz +/llvm-13.0.0rc1.src.tar.xz.sig diff --git a/0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch b/0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch deleted file mode 100644 index 526b25f..0000000 --- a/0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 60760d66030695105bcf4364f22b7f6053a25253 Mon Sep 17 00:00:00 2001 -From: serge-sans-paille -Date: Thu, 8 Apr 2021 09:33:37 +0200 -Subject: [PATCH] [PATCH][llvm] Make source-interleave-prefix test case - compatible with llvm-test - -llvm-test runs test from a directory that's not the upstream one, and that leads -to some false positive. Workaround this by forcing the current working -directory. ---- - llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test b/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test -index 23ce55a..d260ee2 100644 ---- a/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test -+++ b/llvm/test/tools/llvm-objdump/X86/source-interleave-prefix.test -@@ -5,7 +5,7 @@ - - ; RUN: sed -e "s,SRC_COMPDIR,./Inputs,g" %p/Inputs/source-interleave.ll > %t-relative-path.ll - ; RUN: llc -o %t-relative-path.o -filetype=obj -mtriple=x86_64-pc-linux %t-relative-path.ll --; RUN: llvm-objdump --prefix myprefix --source %t-relative-path.o 2>&1 | \ -+; RUN: mkdir -p %t0 && cd %t0 && llvm-objdump --prefix myprefix --source %t-relative-path.o 2>&1 | \ - ; RUN: FileCheck %s --check-prefix=CHECK-BROKEN-PREFIX -DFILE=%t-relative-path.o -DPREFIX=. - ; CHECK-BROKEN-PREFIX: warning: '[[FILE]]': failed to find source [[PREFIX]]/Inputs/source-interleave-x86_64.c - --- -1.8.3.1 - diff --git a/0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch b/0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch new file mode 100644 index 0000000..82a00f2 --- /dev/null +++ b/0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch @@ -0,0 +1,75 @@ +From 3dc5722d5c7673a879f2b4680369d3ac8b6b64b6 Mon Sep 17 00:00:00 2001 +From: Tom Stellard +Date: Wed, 4 Aug 2021 14:05:38 -0700 +Subject: [PATCH] cmake: Allow shared libraries to customize the soname using + LLVM_ABI_REVISION + +The LLVM_ABI_REVISION variable is intended to be used for release +candidates which introduce an ABI change to a shared library. This +variable can be specified per library, so there is not one global value +for all of LLVM. + +For example, if we LLVM X.0.0-rc2 introduces an ABI change for a library +compared with LLVM X.0.0-rc1, then the LLVM_ABI_REVISION number for +library will be incremented by 1. + +In the main branch, LLVM_ABI_REVISION should always be 0, it is only +meant to be used in the release branch. + +Differential Revision: https://reviews.llvm.org/D105594 +--- + llvm/cmake/modules/AddLLVM.cmake | 7 +++++-- + llvm/tools/llvm-shlib/CMakeLists.txt | 9 +++++++++ + 3 files changed, 19 insertions(+), 2 deletions(-) + +diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake +index 3e009f5061d3..a09405a1be3e 100644 +--- a/llvm/cmake/modules/AddLLVM.cmake ++++ b/llvm/cmake/modules/AddLLVM.cmake +@@ -586,11 +586,14 @@ function(llvm_add_library name) + # Set SOVERSION on shared libraries that lack explicit SONAME + # specifier, on *nix systems that are not Darwin. + if(UNIX AND NOT APPLE AND NOT ARG_SONAME) ++ if (NOT LLVM_ABI_REVISION) ++ set(LLVM_ABI_REVISION 0) ++ endif() + set_target_properties(${name} + PROPERTIES + # Since 4.0.0, the ABI version is indicated by the major version +- SOVERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX} +- VERSION ${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}) ++ SOVERSION ${LLVM_VERSION_MAJOR}.${LLVM_ABI_REVISION} ++ VERSION ${LLVM_VERSION_MAJOR}.${LLVM_ABI_REVISION}) + endif() + endif() + +diff --git a/llvm/tools/llvm-shlib/CMakeLists.txt b/llvm/tools/llvm-shlib/CMakeLists.txt +index 76b9a25cbbcd..b876e7fed6b5 100644 +--- a/llvm/tools/llvm-shlib/CMakeLists.txt ++++ b/llvm/tools/llvm-shlib/CMakeLists.txt +@@ -2,6 +2,11 @@ + # library is enabled by setting LLVM_BUILD_LLVM_DYLIB=yes on the CMake + # commandline. By default the shared library only exports the LLVM C API. + ++# In the main branch, LLVM_ABI_REVISION should always be 0. In the release ++# branches, this should be incremented before each release candidate every ++# time the ABI of libLLVM.so changes. ++set(LLVM_ABI_REVISION 0 CACHE STRING "ABI Revision number for SONAMEs (default: 0)") ++ + set(SOURCES + libllvm.cpp + ) +@@ -67,6 +72,10 @@ if(LLVM_BUILD_LLVM_DYLIB) + set_property(TARGET LLVM APPEND_STRING PROPERTY + LINK_FLAGS + " -compatibility_version 1 -current_version ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") ++ else() ++ set_target_properties(LLVM ++ PROPERTIES ++ SOVERSION ${LLVM_ABI_REVISION}) + endif() + + if(TARGET libLLVMExports) +-- +2.27.0 + diff --git a/0001-test-Fix-tools-gold-X86-comdat-nodeduplicate.ll-on-n.patch b/0001-test-Fix-tools-gold-X86-comdat-nodeduplicate.ll-on-n.patch new file mode 100644 index 0000000..54a44c5 --- /dev/null +++ b/0001-test-Fix-tools-gold-X86-comdat-nodeduplicate.ll-on-n.patch @@ -0,0 +1,58 @@ +From 93da37dc58e9d1d4a685bcb6a30a9d3ff78733f9 Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Wed, 28 Jul 2021 21:56:23 -0700 +Subject: [PATCH] [test] Fix tools/gold/X86/comdat-nodeduplicate.ll on non-X86 + hosts + +When running this test on an aarch64 machine, it fails: + +``` +/usr/bin/ld.gold: error: .../test/tools/gold/X86/Output/comdat-nodeduplicate.ll.tmp/ab.lto.o: incompatible target +``` + +Specify the elf_x86_64 emulation as all of the other gold plugin tests +do. + +Reviewed By: MaskRay + +Differential Revision: https://reviews.llvm.org/D107020 + +(cherry picked from commit 5060224d9eed8b8359ed5090bb7c577b8575e9e7) +--- + llvm/test/tools/gold/X86/comdat-nodeduplicate.ll | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/llvm/test/tools/gold/X86/comdat-nodeduplicate.ll b/llvm/test/tools/gold/X86/comdat-nodeduplicate.ll +index 11d04d2aab1f..c27d91a1d437 100644 +--- a/llvm/test/tools/gold/X86/comdat-nodeduplicate.ll ++++ b/llvm/test/tools/gold/X86/comdat-nodeduplicate.ll +@@ -8,7 +8,7 @@ + ; RUN: llvm-as %t/b.ll -o %t/b.bc + ; RUN: llvm-as %t/c.ll -o %t/c.bc + +-; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext --plugin-opt=save-temps \ ++; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext --plugin-opt=save-temps \ + ; RUN: -u foo %t/a.bc --start-lib %t/b.bc --end-lib -o %t/ab + + ; RUN: FileCheck %s --check-prefix=RESOL_AB < %t/ab.resolution.txt +@@ -20,7 +20,7 @@ + ; DATA: 0x[[#%x,]] 01000000 00000000 ........ + + ;; __profc_foo from c.bc is non-prevailing and thus discarded. +-; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext --plugin-opt=save-temps \ ++; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext --plugin-opt=save-temps \ + ; RUN: -u foo -u c %t/a.bc --start-lib %t/b.bc %t/c.bc --end-lib -o %t/abc + ; RUN: FileCheck %s --check-prefix=RESOL_ABC < %t/abc.resolution.txt + ; RUN: llvm-readelf -x .data %t/abc | FileCheck %s --check-prefix=DATA +@@ -35,7 +35,7 @@ + ; RUN: opt --module-summary %t/b.ll -o %t/b.bc + ; RUN: opt --module-summary %t/c.ll -o %t/c.bc + +-; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext \ ++; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \ + ; RUN: -u foo %t/a.bc --start-lib %t/b.bc %t/c.bc --end-lib -o %t/abc + ; RUN: llvm-readelf -x .data %t/abc | FileCheck %s --check-prefix=DATA + +-- +2.27.0 + diff --git a/llvm.spec b/llvm.spec index 6ce2fb7..63671bc 100644 --- a/llvm.spec +++ b/llvm.spec @@ -10,10 +10,11 @@ %global llvm_libdir %{_libdir}/%{name} %global build_llvm_libdir %{buildroot}%{llvm_libdir} -#global rc_ver 3 -%global maj_ver 12 +%global rc_ver 1 +%global maj_ver 13 %global min_ver 0 -%global patch_ver 1 +%global patch_ver 0 +%global abi_revision 0 %global llvm_srcdir llvm-%{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:rc%{rc_ver}}.src %if %{with compat_build} @@ -46,9 +47,13 @@ %global build_install_prefix %{buildroot}%{install_prefix} +# Lower memory usage of dwz on s390x +%global _dwz_low_mem_die_limit_s390x 1 +%global _dwz_max_die_limit_s390x 1000000 + Name: %{pkg_name} Version: %{maj_ver}.%{min_ver}.%{patch_ver}%{?rc_ver:~rc%{rc_ver}} -Release: 3%{?dist} +Release: 1%{?dist} Summary: The Low Level Virtual Machine License: NCSA @@ -62,7 +67,9 @@ Source3: run-lit-tests Source4: lit.fedora.cfg.py %endif -Patch0: 0001-PATCH-llvm-Make-source-interleave-prefix-test-case-c.patch +Patch0: 0001-cmake-Allow-shared-libraries-to-customize-the-soname.patch +# This has been backported to release/13.x and should be in 13.0.0-rc2 +Patch1: 0001-test-Fix-tools-gold-X86-comdat-nodeduplicate.ll-on-n.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -261,6 +268,7 @@ pathfix.py -i %{__python3} -pn \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DLLVM_BUILD_EXTERNAL_COMPILER_RT:BOOL=ON \ -DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=OFF \ + -DLLVM_ABI_REVISION=%{abi_revision} \ \ -DSPHINX_WARNINGS_AS_ERRORS=OFF \ -DCMAKE_INSTALL_PREFIX=%{install_prefix} \ @@ -282,7 +290,6 @@ mkdir -p %{buildroot}/%{_bindir} # Fix some man pages ln -s llvm-config.1 %{buildroot}%{_mandir}/man1/llvm-config%{exec_suffix}-%{__isa_bits}.1 -mv %{buildroot}%{_mandir}/man1/*tblgen.1 %{buildroot}%{_mandir}/man1/llvm-tblgen.1 # Install binaries needed for lit tests %global test_binaries llvm-isel-fuzzer llvm-opt-fuzzer @@ -389,6 +396,10 @@ touch %{buildroot}%{_bindir}/llvm-config%{exec_suffix} %check +# Disable check section on arm due to some kind of memory related failure. +# Possibly related to https://bugzilla.redhat.com/show_bug.cgi?id=1920183 +%ifnarch %{arm} + # TODO: Fix the failures below %ifarch %{arm} rm test/tools/llvm-readobj/ELF/dependent-libraries.test @@ -400,6 +411,8 @@ rm test/tools/dsymutil/X86/swift-interface.test # FIXME: use %%cmake_build instead of %%__ninja LD_LIBRARY_PATH=%{buildroot}/%{pkg_libdir} %{__ninja} check-all -C %{_vpath_builddir} +%endif + %ldconfig_scriptlets libs %post devel @@ -448,6 +461,7 @@ fi %{_libdir}/bfd-plugins/LLVMgold.so %endif %{_libdir}/libLLVM-%{maj_ver}.%{min_ver}*.so +%{_libdir}/libLLVM-%{maj_ver}.so.%{abi_revision} %{_libdir}/libLTO.so* %else %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf @@ -516,6 +530,9 @@ fi %endif %changelog +* Wed Aug 04 2021 Tom Stellard - 13.0.0~rc1-1 +- 13.0.0-rc1 Release + * Thu Jul 22 2021 sguelton@redhat.com - 12.0.1-3 - Maintain versionned link to llvm-config diff --git a/sources b/sources index d7cf4bc..8c90ee1 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (llvm-12.0.1.src.tar.xz) = ff674afb4c8eea699a4756f1bb463f15098a7fa354c733de83c024f8f0cf238cd5f19ae3ec446831c7109235e293e2bf31d8562567ede163c8ec53af7306ba0f -SHA512 (llvm-12.0.1.src.tar.xz.sig) = 4c2904e13f1a51b624eed8f74fbf132ae1289f8e17d59b46bda78cd896a904f2bb53642fda7cef543905f17c3c9e2a65d5f97cd270b0182281518036d0fe1595 +SHA512 (llvm-13.0.0rc1.src.tar.xz) = 307d8162f905b92e33f27c7a75f78d1020a63c24a13d4befa4dd7b6ed90607919183919df9a626f705935dfccce3d36c2b99b9575bfc6f23f8df115374fa6823 +SHA512 (llvm-13.0.0rc1.src.tar.xz.sig) = 6b49f7b96a5ee0634d328cfaa6d47820cf89ee3363553670b46c7d3c071c3f624ee10f663315f31c03965a43177baccaaa0e88a75b4cfadeb3783b1d83c850b3