import llvm-10.0.0-2.module+el8.3.0+7175+8045d94b

This commit is contained in:
CentOS Sources 2020-07-28 08:59:10 -04:00 committed by Stepan Oksanichenko
parent e691927b4f
commit 5f98b5e154
10 changed files with 92 additions and 559 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/llvm-9.0.0.src.tar.xz
SOURCES/hans-gpg-key.asc
SOURCES/llvm-10.0.0.src.tar.xz

View File

@ -1 +1,2 @@
7ef2527ba3da7603a41ce3592a8cd890f8d27ffa SOURCES/llvm-9.0.0.src.tar.xz
32fa4b0193960f05064f2ab31b5a89c7cf48a0b9 SOURCES/hans-gpg-key.asc
85f2d89205fb190c61c8a98dad2a58e27a1540da SOURCES/llvm-10.0.0.src.tar.xz

View File

@ -1,223 +0,0 @@
From 8987da9a2cac6c5bd39ba100ffd1aaede94dc6a0 Mon Sep 17 00:00:00 2001
From: Michael Pozulp <pozulp.llvm@gmail.com>
Date: Fri, 9 Aug 2019 19:10:55 +0000
Subject: [PATCH] [Docs][llvm-strip] Add help text to llvm-strip rst doc
Summary: Addresses https://bugs.llvm.org/show_bug.cgi?id=42383
Reviewers: jhenderson, alexshap, rupprecht
Reviewed By: jhenderson
Subscribers: wolfgangp, jakehehrlich, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D65384
llvm-svn: 368464
---
llvm/docs/CommandGuide/llvm-strip.md | 16 ----
llvm/docs/CommandGuide/llvm-strip.rst | 167 ++++++++++++++++++++++++++++++++++
2 files changed, 167 insertions(+), 16 deletions(-)
delete mode 100644 llvm/docs/CommandGuide/llvm-strip.md
create mode 100644 llvm/docs/CommandGuide/llvm-strip.rst
diff --git a/llvm/docs/CommandGuide/llvm-strip.md b/llvm/docs/CommandGuide/llvm-strip.md
deleted file mode 100644
index dd6e859..0000000
--- a/llvm/docs/CommandGuide/llvm-strip.md
+++ /dev/null
@@ -1,16 +0,0 @@
-# llvm-strip - object stripping tool
-
-## SYNOPSIS
-
-**llvm-strip** [*options*]
-
-## DESCRIPTION
-
-**llvm-strip** is a tool to strip sections and symbols from object files.
-
-The tool is still in active development, but in most scenarios it works as a
-drop-in replacement for GNU's **strip**.
-
-## SEE ALSO
-
-[llvm-objcopy](llvm-objcopy.html)
diff --git a/llvm/docs/CommandGuide/llvm-strip.rst b/llvm/docs/CommandGuide/llvm-strip.rst
new file mode 100644
index 0000000..6e02482
--- /dev/null
+++ b/llvm/docs/CommandGuide/llvm-strip.rst
@@ -0,0 +1,167 @@
+llvm-strip - object stripping tool
+==================================
+
+.. program:: llvm-strip
+
+SYNOPSIS
+--------
+
+:program:`llvm-strip` [*options*] *inputs...*
+
+DESCRIPTION
+-----------
+
+:program:`llvm-strip` is a tool to strip sections and symbols from object files.
+If no other stripping or remove options are specified, :option:`--strip-all`
+will be enabled by default.
+
+The input files are modified in-place. If "-" is specified for the input file,
+the input is read from the program's standard input stream.
+
+If the input is an archive, any requested operations will be applied to each
+archive member individually.
+
+The tool is still in active development, but in most scenarios it works as a
+drop-in replacement for GNU's :program:`strip`.
+
+GENERIC AND CROSS-PLATFORM OPTIONS
+----------------------------------
+
+The following options are either agnostic of the file format, or apply to
+multiple file formats.
+
+.. option:: --disable-deterministic-archives, -U
+
+ Use real values for UIDs, GIDs and timestamps when updating archive member
+ headers.
+
+.. option:: --discard-all, -x
+
+ Remove most local symbols from the output. Different file formats may limit
+ this to a subset of the local symbols. For example, file and section symbols in
+ ELF objects will not be discarded.
+
+.. option:: --enable-deterministic-archives, -D
+
+ Enable deterministic mode when stripping archives, i.e. use 0 for archive member
+ header UIDs, GIDs and timestamp fields. On by default.
+
+.. option:: --help, -h
+
+ Print a summary of command line options.
+
+.. option:: --no-strip-all
+
+ Disable --strip-all.
+
+.. option:: -o <file>
+
+ Write output to <file>. Multiple input files cannot be used in combination
+ with -o.
+
+.. option:: --regex
+
+ If specified, symbol and section names specified by other switches are treated
+ as extended POSIX regular expression patterns.
+
+.. option:: --remove-section <section>, -R
+
+ Remove the specified section from the output. Can be specified multiple times
+ to remove multiple sections simultaneously.
+
+.. option:: --strip-all-gnu
+
+ Remove all symbols, debug sections and relocations from the output. This option
+ is equivalent to GNU :program:`strip`'s ``--strip-all`` switch.
+
+.. option:: --strip-all, -S
+
+ For ELF objects, remove from the output all symbols and non-alloc sections not
+ within segments, except for .gnu.warning sections and the section name table.
+
+ For COFF objects, remove all symbols, debug sections, and relocations from the
+ output.
+
+.. option:: --strip-debug, -g
+
+ Remove all debug sections.
+
+.. option:: --strip-sections
+
+ Remove all section headers and all sections not in segments.
+
+.. option:: --strip-symbol <symbol>, -N
+
+ Remove all symbols named ``<symbol>`` from the output. Can be specified
+ multiple times to remove multiple symbols.
+
+.. option:: --strip-unneeded
+
+ Remove all local or undefined symbols that are not required by relocations.
+
+.. option:: --version, -V
+
+ Display the version of this program.
+
+COFF-SPECIFIC OPTIONS
+---------------------
+
+The following options are implemented only for COFF objects. If used with other
+objects, :program:`llvm-strip` will either emit an error or silently ignore
+them.
+
+.. option:: --only-keep-debug
+
+ Remove the contents of non-debug sections from the output, but keep the section
+ headers.
+
+ELF-SPECIFIC OPTIONS
+--------------------
+
+The following options are implemented only for ELF objects. If used with other
+objects, :program:`llvm-strip` will either emit an error or silently ignore
+them.
+
+.. option:: --allow-broken-links
+
+ Allow llvm-strip to remove sections even if it would leave invalid section
+ references. Any invalid sh_link fields will be set to zero.
+
+.. option:: --discard-locals, -X
+
+ Remove local symbols starting with ".L" from the output.
+
+.. option:: --keep-file-symbols
+
+ Keep symbols of type `STT_FILE`, even if they would otherwise be stripped.
+
+ .. option:: --keep-section <section>
+
+ When removing sections from the output, do not remove sections named
+ ``<section>``. Can be specified multiple times to keep multiple sections.
+
+.. option:: --keep-symbol <symbol>, -K
+
+ Do not remove symbols named ``<symbol>``. Can be specified multiple times to
+ keep multiple symbols.
+
+.. option:: --preserve-dates, -p
+
+ Preserve access and modification timestamps.
+
+
+EXIT STATUS
+-----------
+
+:program:`llvm-strip` exits with a non-zero exit code if there is an error.
+Otherwise, it exits with code 0.
+
+BUGS
+----
+
+To report bugs, please visit <http://llvm.org/bugs/>.
+
+SEE ALSO
+--------
+
+:manpage:`llvm-objcopy(1)`
--
1.8.3.1

View File

@ -1,28 +0,0 @@
From d15c835028bcc72a8695d047f0acaa530aa54716 Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 31 Jul 2019 20:43:42 -0700
Subject: [PATCH] Filter out cxxflags not supported by clang
---
llvm/tools/llvm-config/CMakeLists.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/llvm/tools/llvm-config/CMakeLists.txt b/llvm/tools/llvm-config/CMakeLists.txt
index 8e97a10..9b9b7d1 100644
--- a/llvm/tools/llvm-config/CMakeLists.txt
+++ b/llvm/tools/llvm-config/CMakeLists.txt
@@ -43,7 +43,11 @@ set(LLVM_SRC_ROOT ${LLVM_MAIN_SRC_DIR})
set(LLVM_OBJ_ROOT ${LLVM_BINARY_DIR})
set(LLVM_CPPFLAGS "${LLVM_DEFINITIONS}")
set(LLVM_CFLAGS "${LLVM_C_STD_FLAG} ${LLVM_DEFINITIONS}")
+STRING(REGEX REPLACE "-mcet" "" LLVM_CFLAGS ${LLVM_CFLAGS})
+STRING(REGEX REPLACE "-fcf-protection" "" LLVM_CFLAGS ${LLVM_CFLAGS})
set(LLVM_CXXFLAGS "${LLVM_CXX_STD_FLAG} ${LLVM_CXX_STDLIB_FLAG} ${COMPILE_FLAGS} ${LLVM_DEFINITIONS}")
+STRING(REGEX REPLACE "-mcet" "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS})
+STRING(REGEX REPLACE "-fcf-protection" "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS})
set(LLVM_BUILD_SYSTEM cmake)
set(LLVM_HAS_RTTI ${LLVM_CONFIG_HAS_RTTI})
set(LLVM_DYLIB_VERSION "${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}")
--
1.8.3.1

View File

@ -1,34 +0,0 @@
From f0762684457a883b6813b48c98a1e94e377bc06b Mon Sep 17 00:00:00 2001
From: Tom Stellard <tstellar@redhat.com>
Date: Wed, 28 Aug 2019 19:31:21 -0700
Subject: [PATCH] Pass target to gold linker to avoid faliures on i686
---
llvm/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll b/llvm/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll
index 525bf2d..01291bd 100644
--- a/llvm/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll
+++ b/llvm/test/tools/gold/X86/linkonce_odr_unnamed_addr.ll
@@ -3,7 +3,7 @@
; RUN: opt -module-summary %s -o %t.o
; RUN: opt -module-summary %p/Inputs/linkonce_odr_unnamed_addr.ll -o %t2.o
-; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext \
+; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \
; RUN: --plugin-opt=save-temps \
; RUN: %t.o %t2.o -o %t3.o
; RUN: llvm-dis %t.o.1.promote.bc -o - | FileCheck %s
@@ -11,7 +11,7 @@
; Now test when one module is a native object. In that case we must be
; conservative and not auto hide.
; RUN: llc %p/Inputs/linkonce_odr_unnamed_addr.ll -o %t2native.o -filetype=obj
-; RUN: %gold -plugin %llvmshlibdir/LLVMgold%shlibext \
+; RUN: %gold -m elf_x86_64 -plugin %llvmshlibdir/LLVMgold%shlibext \
; RUN: --plugin-opt=save-temps \
; RUN: %t.o %t2native.o -o %t3.o
; RUN: llvm-dis %t.o.1.promote.bc -o - | FileCheck %s --check-prefix=NOSUMMARY
--
1.8.3.1

View File

@ -1,248 +0,0 @@
From e4e77bb8bf741f52b43b90987646f1c118914848 Mon Sep 17 00:00:00 2001
From: Jordan Rupprecht <rupprecht@google.com>
Date: Wed, 21 Aug 2019 18:00:17 +0000
Subject: [PATCH] [docs] Convert remaining command guide entries from md to
rst.
Summary:
Linking between markdown and rst files is currently not supported very well, e.g. the current llvm-addr2line docs [1] link to "llvm-symbolizer" instead of "llvm-symbolizer.html". This is weirdly broken in different ways depending on which versions of sphinx and recommonmark are being used, so workaround the bug by using rst everywhere.
[1] http://llvm.org/docs/CommandGuide/llvm-addr2line.html
Reviewers: jhenderson
Reviewed By: jhenderson
Subscribers: lebedev.ri, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66305
llvm-svn: 369553
---
llvm/docs/CommandGuide/llvm-addr2line.md | 28 -----------------------
llvm/docs/CommandGuide/llvm-addr2line.rst | 38 +++++++++++++++++++++++++++++++
llvm/docs/CommandGuide/llvm-ranlib.md | 17 --------------
llvm/docs/CommandGuide/llvm-ranlib.rst | 23 +++++++++++++++++++
llvm/docs/CommandGuide/llvm-size.md | 10 --------
llvm/docs/CommandGuide/llvm-size.rst | 15 ++++++++++++
llvm/docs/CommandGuide/llvm-strings.md | 10 --------
llvm/docs/CommandGuide/llvm-strings.rst | 15 ++++++++++++
8 files changed, 91 insertions(+), 65 deletions(-)
delete mode 100644 llvm/docs/CommandGuide/llvm-addr2line.md
create mode 100644 llvm/docs/CommandGuide/llvm-addr2line.rst
delete mode 100644 llvm/docs/CommandGuide/llvm-ranlib.md
create mode 100644 llvm/docs/CommandGuide/llvm-ranlib.rst
delete mode 100644 llvm/docs/CommandGuide/llvm-size.md
create mode 100644 llvm/docs/CommandGuide/llvm-size.rst
delete mode 100644 llvm/docs/CommandGuide/llvm-strings.md
create mode 100644 llvm/docs/CommandGuide/llvm-strings.rst
diff --git a/llvm/docs/CommandGuide/llvm-addr2line.md b/llvm/docs/CommandGuide/llvm-addr2line.md
deleted file mode 100644
index 03224c4..0000000
--- a/llvm/docs/CommandGuide/llvm-addr2line.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# llvm-addr2line - a drop-in replacement for addr2line
-
-## SYNOPSIS
-
-**llvm-addr2line** [*options*]
-
-## DESCRIPTION
-
-**llvm-addr2line** is an alias for the [llvm-symbolizer](llvm-symbolizer) tool
-with different defaults. The goal is to make it a drop-in replacement for
-GNU's **addr2line**.
-
-Here are some of those differences:
-
-* Defaults not to print function names. Use [-f](llvm-symbolizer-opt-f)
- to enable that.
-
-* Defaults not to demangle function names. Use [-C](llvm-symbolizer-opt-C)
- to switch the demangling on.
-
-* Defaults not to print inlined frames. Use [-i](llvm-symbolizer-opt-i)
- to show inlined frames for a source code location in an inlined function.
-
-* Uses [--output-style=GNU](llvm-symbolizer-opt-output-style) by default.
-
-## SEE ALSO
-
-Refer to [llvm-symbolizer](llvm-symbolizer) for additional information.
diff --git a/llvm/docs/CommandGuide/llvm-addr2line.rst b/llvm/docs/CommandGuide/llvm-addr2line.rst
new file mode 100644
index 0000000..08f1b69
--- /dev/null
+++ b/llvm/docs/CommandGuide/llvm-addr2line.rst
@@ -0,0 +1,38 @@
+llvm-addr2line - a drop-in replacement for addr2line
+====================================================
+
+.. program:: llvm-addr2line
+
+SYNOPSIS
+--------
+
+:program:`llvm-addr2line` [*options*]
+
+DESCRIPTION
+-----------
+
+:program:`llvm-addr2line` is an alias for the :manpage:`llvm-symbolizer(1)`
+tool with different defaults. The goal is to make it a drop-in replacement for
+GNU's :program:`addr2line`.
+
+Here are some of those differences:
+
+- Defaults not to print function names. Use `-f`_ to enable that.
+
+- Defaults not to demangle function names. Use `-C`_ to switch the
+ demangling on.
+
+- Defaults not to print inlined frames. Use `-i`_ to show inlined
+ frames for a source code location in an inlined function.
+
+- Uses `--output-style=GNU`_ by default.
+
+SEE ALSO
+--------
+
+:manpage:`llvm-symbolizer(1)`
+
+.. _-f: llvm-symbolizer.html#llvm-symbolizer-opt-f
+.. _-C: llvm-symbolizer.html#llvm-symbolizer-opt-c
+.. _-i: llvm-symbolizer.html#llvm-symbolizer-opt-i
+.. _--output-style=GNU: llvm-symbolizer.html#llvm-symbolizer-opt-output-style
diff --git a/llvm/docs/CommandGuide/llvm-ranlib.md b/llvm/docs/CommandGuide/llvm-ranlib.md
deleted file mode 100644
index 4377364..0000000
--- a/llvm/docs/CommandGuide/llvm-ranlib.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# llvm-ranlib - generates an archive index
-
-## SYNOPSIS
-
-**llvm-ranlib** [*options*]
-
-## DESCRIPTION
-
-**llvm-ranlib** is an alias for the [llvm-ar](llvm-ar.html) tool that generates
-an index for an archive. It can be used as a replacement for GNU's **ranlib**
-tool.
-
-Running **llvm-ranlib** is equivalent to running **llvm-ar s**.
-
-## SEE ALSO
-
-Refer to [llvm-ar](llvm-ar.html) for additional information.
diff --git a/llvm/docs/CommandGuide/llvm-ranlib.rst b/llvm/docs/CommandGuide/llvm-ranlib.rst
new file mode 100644
index 0000000..314a330
--- /dev/null
+++ b/llvm/docs/CommandGuide/llvm-ranlib.rst
@@ -0,0 +1,23 @@
+llvm-ranlib - generates an archive index
+========================================
+
+.. program:: llvm-ranlib
+
+SYNOPSIS
+--------
+
+:program:`llvm-ranlib` [*options*]
+
+DESCRIPTION
+-----------
+
+:program:`llvm-ranlib` is an alias for the :doc:`llvm-ar <llvm-ar>` tool that
+generates an index for an archive. It can be used as a replacement for GNUs
+:program:`ranlib` tool.
+
+Running :program:`llvm-ranlib` is equivalent to running ``llvm-ar s``.
+
+SEE ALSO
+--------
+
+:manpage:`llvm-ar(1)`
diff --git a/llvm/docs/CommandGuide/llvm-size.md b/llvm/docs/CommandGuide/llvm-size.md
deleted file mode 100644
index 3952708..0000000
--- a/llvm/docs/CommandGuide/llvm-size.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# llvm-size - print segment sizes
-
-## SYNOPSIS
-
-**llvm-size** [*options*]
-
-## DESCRIPTION
-
-**llvm-size** is a tool that prints segment sizes in object files. The goal is
-to make it a drop-in replacement for GNU's **size**.
diff --git a/llvm/docs/CommandGuide/llvm-size.rst b/llvm/docs/CommandGuide/llvm-size.rst
new file mode 100644
index 0000000..0dce15c
--- /dev/null
+++ b/llvm/docs/CommandGuide/llvm-size.rst
@@ -0,0 +1,15 @@
+llvm-size - print size information
+==================================
+
+.. program:: llvm-size
+
+SYNOPSIS
+--------
+
+:program:`llvm-size` [*options*]
+
+DESCRIPTION
+-----------
+
+:program:`llvm-size` is a tool that prints size information for object files.
+The goal is to make it a drop-in replacement for GNUs :program:`size`.
diff --git a/llvm/docs/CommandGuide/llvm-strings.md b/llvm/docs/CommandGuide/llvm-strings.md
deleted file mode 100644
index b5871c4..0000000
--- a/llvm/docs/CommandGuide/llvm-strings.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# llvm-strings - print strings
-
-## SYNOPSIS
-
-**llvm-strings** [*options*]
-
-## DESCRIPTION
-
-**llvm-strings** is a tool that prints strings in object files. The goal is to
-make it a drop-in replacement for GNU's **size**.
diff --git a/llvm/docs/CommandGuide/llvm-strings.rst b/llvm/docs/CommandGuide/llvm-strings.rst
new file mode 100644
index 0000000..d8ab9cb
--- /dev/null
+++ b/llvm/docs/CommandGuide/llvm-strings.rst
@@ -0,0 +1,15 @@
+llvm-strings - print strings
+============================
+
+.. program:: llvm-strings
+
+SYNOPSIS
+--------
+
+:program:`llvm-strings` [*options*]
+
+DESCRIPTION
+-----------
+
+:program:`llvm-strings` is a tool that prints strings in files. The goal is to
+make it a drop-in replacement for GNUs :program:`strings`.
--
1.8.3.1

View File

@ -0,0 +1,23 @@
From bab5908df544680ada0a3cf431f55aeccfbdb321 Mon Sep 17 00:00:00 2001
From: serge-sans-paille <sguelton@redhat.com>
Date: Mon, 13 Apr 2020 13:44:15 +0200
Subject: [PATCH] Normalize working directory when running llvm-mc in test
Otherwise, depending on the lit location used to run the test, llvm-mc adds an
include_directories entry in the dwarf output, which breaks tests in some setup.
Differential Revision: https://reviews.llvm.org/D77876
---
llvm/test/MC/MachO/gen-dwarf.s | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/llvm/test/MC/MachO/gen-dwarf.s b/llvm/test/MC/MachO/gen-dwarf.s
index 0813856d625f..6d39d278e818 100644
--- a/llvm/test/MC/MachO/gen-dwarf.s
+++ b/llvm/test/MC/MachO/gen-dwarf.s
@@ -1,4 +1,4 @@
-// RUN: llvm-mc -g -triple i386-apple-darwin10 %s -filetype=obj -o %t
+// RUN: mkdir -p %t0 && cd %t0 && llvm-mc -g -triple i386-apple-darwin10 %s -filetype=obj -o %t
// RUN: llvm-dwarfdump -all %t | FileCheck %s
.globl _bar

Binary file not shown.

View File

@ -49,16 +49,10 @@ esac
cd $(mktemp -d)
ln -s /usr/include include
tar -xzf /usr/share/llvm/src/test.tar.gz
ln -s $ARCH.site.cfg.py test/lit.site.cfg.py
ln -s $ARCH.site.cfg.py test/Unit/lit.site.cfg.py
# llvm_obj_root is used to determine the directory the tests will run in.
# test/MC/MachO/gen-dwarf.s fails if llvm_obj_root is a parent directory
# of the source file. To workaround this, we set llvm_obj_root to a
# different directory than the one used to store the test sources.
# This also matches better how tests are run from the llvm source tree.
ln -s /usr/share/llvm/src/$ARCH.site.cfg.py test/lit.site.cfg.py
ln -s /usr/share/llvm/src/$ARCH.Unit.site.cfg.py test/Unit/lit.site.cfg.py
lit -v -s $threads_arg test \
-Dllvm_obj_root=$(mktemp -d) \
-Dllvm_obj_root=`pwd` \
-Dllvm_test_root=`pwd`/test \
-Dllvm_unittest_bindir=$LIB_DIR/llvm \
-Dllvm_shlib_dir=$LIB_DIR

View File

@ -10,12 +10,12 @@
%global llvm_libdir %{_libdir}/%{name}
%global build_llvm_libdir %{buildroot}%{llvm_libdir}
%global maj_ver 9
#%%global rc_ver 6
%global baserelease 2
%global llvm_srcdir llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src
%global maj_ver 10
%global min_ver 0
%global patch_ver 0
#%%global rc_ver 3
%global baserelease 5
%if %{with compat_build}
%global pkg_name llvm%{maj_ver}.%{min_ver}
@ -50,24 +50,35 @@ Summary: The Low Level Virtual Machine
License: NCSA
URL: http://llvm.org
Source0: http://%{?rc_ver:pre}releases.llvm.org/%{version}/%{?rc_ver:rc%{rc_ver}}/llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src.tar.xz
%if 0%{?rc_ver:1}
Source0: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{llvm_srcdir}.tar.xz
Source3: https://prereleases.llvm.org/%{version}/rc%{rc_ver}/%{llvm_srcdir}.tar.xz.sig
%else
Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{llvm_srcdir}.tar.xz
Source3: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/%{llvm_srcdir}.tar.xz.sig
%endif
%if %{without compat_build}
Source1: run-lit-tests
Source2: lit.fedora.cfg.py
%endif
Source4: https://prereleases.llvm.org/%{version}/hans-gpg-key.asc
Patch0: 0001-Filter-out-cxxflags-not-supported-by-clang.patch
# TODO: I'm not sure why this is needed. Could be a change in newer version
# of gold.
Patch1: 0001-Pass-target-to-gold-linker-to-avoid-faliures-on-i686.patch
##Patch0: 0001-Filter-out-cxxflags-not-supported-by-clang.patch
Patch2: 0001-CMake-Split-static-library-exports-into-their-own-ex.patch
Patch3: 0001-CMake-Split-test-binary-exports-into-their-own-expor.patch
Patch4: bab5908df544680ada0a3cf431f55aeccfbdb321.patch
# RHEL-specific patches.
Patch101: 0001-Deactivate-markdown-doc.patch
# Patches to convert md files to rst since we don't have the md parser in RHEL.
Patch102: 0001-Docs-llvm-strip-Add-help-text-to-llvm-strip-rst-doc.patch
Patch103: 0001-docs-Convert-remaining-command-guide-entries-from-md.patch
#Patch102: 0001-Docs-llvm-strip-Add-help-text-to-llvm-strip-rst-doc.patch
#Patch103: 0001-docs-Convert-remaining-command-guide-entries-from-md.patch
### Fix crash in kernel bpf self-tests
##Patch5: 0001-BPF-Handling-type-conversions-correctly-for-CO-RE.patch
##Patch6: 0001-BPF-annotate-DIType-metadata-for-builtin-preseve_arr.patch
##
### Fix Rust codegen bug, https://github.com/rust-lang/rust/issues/69225
##Patch7: 0001-Revert-SCEV-add-no-wrap-flag-for-SCEVAddExpr.patch
BuildRequires: gcc
BuildRequires: gcc-c++
@ -79,6 +90,8 @@ BuildRequires: ncurses-devel
BuildRequires: python3-sphinx
%if !0%{?rhel}
BuildRequires: python3-recommonmark
%else
BuildRequires: pandoc
%endif
BuildRequires: multilib-rpm-config
%if %{with gold}
@ -108,6 +121,7 @@ tools as well as libraries with equivalent functionality.
%package devel
Summary: Libraries and header files for LLVM
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
# The installed LLVM cmake files will add -ledit to the linker flags for any
# app that requires the libLLVMLineEditor, so we need to make sure
# libedit-devel is available.
@ -149,6 +163,7 @@ Static libraries for the LLVM compiler infrastructure.
%package test
Summary: LLVM regression tests
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: python3-lit
# The regression tests need gold.
Requires: binutils
@ -172,12 +187,16 @@ LLVM's modified googletest sources.
%endif
%prep
%autosetup -n llvm-%{version}%{?rc_ver:rc%{rc_ver}}.src -p2
%autosetup -n %{llvm_srcdir} -p2
pathfix.py -i %{__python3} -pn \
test/BugPoint/compile-custom.ll.py \
tools/opt-viewer/*.py
# Convert markdown files to rst to cope with the absence of recommonmark in rhel.
# The sed expression takes care of a slight difference between pandoc markdown and sphinx markdown.
find -name '*.md' | while read md; do sed -r -e 's/^( )*\* /\n\1\* /' ${md} | pandoc -f markdown -o ${md%.md}.rst ; done
%build
mkdir -p _build
cd _build
@ -251,6 +270,7 @@ cd _build
-DLLVM_INSTALL_TOOLCHAIN_ONLY:BOOL=OFF \
\
-DSPHINX_WARNINGS_AS_ERRORS=OFF \
-DCMAKE_INSTALL_PREFIX=%{install_prefix} \
-DLLVM_INSTALL_SPHINX_HTML_DIR=%{_pkgdocdir}/html \
-DSPHINX_EXECUTABLE=%{_bindir}/sphinx-build-3
@ -280,6 +300,8 @@ do
install -m 0755 ./_build/bin/$f %{buildroot}%{_bindir}
done
# Remove testing of update utility tools
rm -rf test/tools/UpdateTestChecks
%multilib_fix_c_header --file %{_includedir}/llvm/Config/llvm-config.h
@ -321,7 +343,12 @@ install -m 0755 %{SOURCE1} %{buildroot}%{_libexecdir}/tests/llvm
# Install lit tests. We need to put these in a tarball otherwise rpm will complain
# about some of the test inputs having the wrong object file format.
install -d %{buildroot}%{_datadir}/llvm/
tar -czf %{install_srcdir}/test.tar.gz test/
# 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} %{install_srcdir}/%{_arch}.site.cfg.py
mv %{lit_unit_cfg} %{install_srcdir}/%{_arch}.Unit.site.cfg.py
tar --sort=name --mtime='UTC 2020-01-01' -c test/ | gzip -n > %{install_srcdir}/test.tar.gz
# Install the unit test binaries
mkdir -p %{build_llvm_libdir}
@ -343,7 +370,7 @@ cp -R unittests/DebugInfo/PDB/Inputs %{buildroot}%{_datadir}/llvm/src/unittests/
mkdir -p %{buildroot}/%{_bindir}
for f in %{buildroot}/%{install_bindir}/*; do
filename=`basename $f`
ln -s %{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{exec_suffix}
ln -s ../../../%{install_bindir}/$filename %{buildroot}/%{_bindir}/$filename%{exec_suffix}
done
# Move header files
@ -363,7 +390,7 @@ EOF
# Add version suffix to man pages and move them to mandir.
mkdir -p %{buildroot}/%{_mandir}/man1
for f in `ls %{build_install_prefix}/share/man/man1/*`; do
for f in %{build_install_prefix}/share/man/man1/*; do
filename=`basename $f | cut -f 1 -d '.'`
mv $f %{buildroot}%{_mandir}/man1/$filename%{exec_suffix}.1
done
@ -477,6 +504,8 @@ fi
%{llvm_libdir}/unittests/
%{_datadir}/llvm/src/unittests
%{_datadir}/llvm/src/test.tar.gz
%{_datadir}/llvm/src/%{_arch}.site.cfg.py
%{_datadir}/llvm/src/%{_arch}.Unit.site.cfg.py
%{_datadir}/llvm/lit.fedora.cfg.py
%{_bindir}/not
%{_bindir}/count
@ -495,6 +524,24 @@ fi
%endif
%changelog
* Wed Jun 24 2020 sguelton@redhat.com - 10.0.0-2
- Reproducible build of test.tar.gz, see rhbz#1820319
* Tue Apr 7 2020 sguelton@redhat.com - 10.0.0-1
- 10.0.0 Release
* Thu Feb 27 2020 Josh Stone <jistone@redhat.com> - 9.0.1-4
- Fix a codegen bug for Rust
* Fri Jan 17 2020 Tom Stellard <tstellar@redhat.com> - 9.0.1-3
- Add explicit Requires from sub-packages to llvm-libs
* Fri Jan 10 2020 Tom Stellard <tstellar@redhat.com> - 9.0.1-2
- Fix crash with kernel bpf self-tests
* Thu Dec 19 2019 tstellar@redhat.com - 9.0.1-1
- 9.0.1 Release
* Wed Oct 30 2019 Tom Stellard <tstellar@redhat.com> - 9.0.0-5
- Remove work-around for threading issue in gold