mirror of
https://git.proxmox.com/git/llvm-toolchain
synced 2025-08-03 12:16:04 +00:00
* Sync the 3.8 changes into 3.9
* Disable the usage of ld gold on powerpc (Closes: #833583) * Revert drop-avx512-from-skylake.diff, it is causing some regressions in the testsuite * Disable lldb on ppc64 * libfuzzer depends on the same version of clang (Closes: #833564) * Fix the detection of gcc. This broke the build on the latest unstable * Ship libFuzzer in its own package (libfuzzer-X.Y-dev) (Closes: #820159) * Sync from Ubuntu. Many thanks to Matthias Klose - drop-avx512-from-skylake.diff: Don't enable AVX512 on Skylake, as it's a server cpu feature and breaks llvmpipe on workstations. - Remove the build tree before calling dh_strip; at least the amd64 buildd runs out of diskspace at this step. - Add support for gcc's attribute abi_tag (needed for compatibility with GCC 5's libstdc++); taken from the trunk (Closes: #797038) (LP: #1510042, #1488254) D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.diff D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.diff * Try to fix mips64el build, by enabling the same packages as the mips and mipsel versions * Link mips* with latomic. * Disable lldb on sparc64 (Closes: #832371) * Hopefully fix the FTBFS on armel * Fix the FTBFS under mips/mipsel? (enable the link against atomic) (Closes: #820537) * Bring back llvm-3.8-tools to life * ship clang-tblgen & yaml-bench as part of the libclang-common-X.Y-dev package * Add -gsplit-dwarf to CXXFLAGS to workaround the memory allocation issue on i386 (hopefully) * Add a symlink from usr/lib/llvm-3.8/share/llvm/cmake pointing to usr/share/llvm-3.8/cmake * Remove python-lldb-3.8 where liblldb-3.8-dev is not built * New maintenance release * debian/rules: Ensure ld-gold is used. CMake invokes the linker through g++ most of the time, therefore we need to set -Wl,-fuse-ld=gold. * Followup to fix the cmake install (Closes: #819072) * Enable FPXX by default on mips/mipsel (Closes: #826749) * New RC release * Improve the cmake detection (used for llvm.org/apt) * Standards-Version updated to 3.9.8 * Ignore outdated-autotools-helper-file * Install cmake files in usr/share/llvm-@LLVM_VERSION@/cmake/ instead of usr/share/llvm-@LLVM_VERSION@/cmake/ * Also install libLLVM-3.8.so.1 as a symlink * debian/patches/fix-cmake-config-prefix.diff: cover the CMake build system too (Closes: #819072) * Fix python-lldb dependencies and make proper symlinks to libLLVM and liblldb as suggested by Graham Inggs (Closes: #821022) * Fix liblldb suffix in lldb/scripts/Python/finishSwigPythonLLDB.py (Closes: #813798) * Fix LLVM bug 26158 - clang packages don't provide man pages * Add python-six as a dependency of python-lldb (thanks to Askar Safin). * Make python-lldb-3.8 depend on lldb-3.8-dev, to pick all the required dependencies * Unbreak circular dependency by Suggesting the python binding from liblldb-3.8-dev * Fix an issue with scan-view (Closes: #825101) * Team upload. * Disable polly on s390x and fix polly check. * Fix VCS fields. * Fix txt file installation issue, by putting a README.txt file with some explanation. * Tighten llvm dev dependency (Closes: #814142). * New upstream release * Install a missing library to unbreak lldb (Closes: #815809) * New snapshot release * Update the clang description for something more accurate (C++-11, 14, etc) * Update debian/orig-tar.sh to remove autoconf/config.sub autoconf/config.guess in polly * clang-tidy-3.8: Remove Breaks/Replaces on clang-modernize-3.8. * Disable lldb on s390x. * New snapshot release * Remove build-llvm/ after the install step to save space. Most of the rc1 builds failed because of hd space. * New snapshot release * Cmake migration. Done by Andrew Wilkins. Many thanks to him - Update patches to set SONAME in CMake build - Create symlinks with ".links", don't install from build tree - Remove LLVM-internal tools (lit, FileCheck, not, tblgen, etc.) - Remove llvm-X.Y-tools package, because it contained only internal tools that are not intended for distribution. - Remove autotools-specific artifacts from packages. - Remove "dummy" documentation artifacts from llvm-X.Y-docs package. Not built/installed by CMake, not useful. - Update control/rules to support CMake - Patch LLDB SWIG interfaces to workaround a bug in SWIG See https://llvm.org/bugs/show_bug.cgi?id=25468 - add missing files to clang-format - Add patch to fix sanitizer lit invocation - removed LLVM-internal tools (lit, FileCheck, not, *-tblgen, etc.); not installed by CMake, not intended for distribution - removed llvm-X.Y-tools (contained only internal tools) - removed autotools-specific artifacts (configure, Makefile, etc.) - removed dummy documentation files
This commit is contained in:
commit
584e8ad0b9
194
debian/changelog
vendored
194
debian/changelog
vendored
@ -1,5 +1,6 @@
|
||||
llvm-toolchain-3.9 (1:3.9~svn275918-1~exp2) experimental; urgency=medium
|
||||
|
||||
* Sync the 3.8 changes into 3.9
|
||||
* Fix the cmake paths in llvm-3.9-dev deb package. Thanks to Brad King
|
||||
for the patch (Closes: #819072)
|
||||
* LLVMConfig.cmake is now installed to <prefix>/lib/cmake/llvm instead of
|
||||
@ -161,6 +162,197 @@ llvm-toolchain-3.8 (1:3.8~+rc1-1~exp1) experimental; urgency=medium
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 20 Jan 2016 16:09:01 +0100
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-8) unstable; urgency=medium
|
||||
|
||||
* Disable the usage of ld gold on powerpc (Closes: #833583)
|
||||
* Revert drop-avx512-from-skylake.diff, it is causing some regressions in the
|
||||
testsuite
|
||||
* Disable lldb on ppc64
|
||||
* libfuzzer depends on the same version of clang (Closes: #833564)
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Sun, 07 Aug 2016 14:10:09 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-7) unstable; urgency=medium
|
||||
|
||||
* Fix the detection of gcc. This broke the build on the latest unstable
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Fri, 05 Aug 2016 09:55:15 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-6) unstable; urgency=medium
|
||||
|
||||
* Ship libFuzzer in its own package (libfuzzer-X.Y-dev) (Closes: #820159)
|
||||
* Sync from Ubuntu. Many thanks to Matthias Klose
|
||||
- drop-avx512-from-skylake.diff: Don't enable AVX512 on Skylake, as it's
|
||||
a server cpu feature and breaks llvmpipe on workstations.
|
||||
- Remove the build tree before calling dh_strip; at least the amd64 buildd
|
||||
runs out of diskspace at this step.
|
||||
- Add support for gcc's attribute abi_tag (needed for compatibility with
|
||||
GCC 5's libstdc++); taken from the trunk (Closes: #797038)
|
||||
(LP: #1510042, #1488254)
|
||||
D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.diff
|
||||
D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.diff
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Thu, 28 Jul 2016 11:15:04 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-5) unstable; urgency=medium
|
||||
|
||||
[ Gianfranco Costamagna ]
|
||||
* Try to fix mips64el build, by enabling the same
|
||||
packages as the mips and mipsel versions
|
||||
* Link mips* with latomic.
|
||||
|
||||
[ Sylvestre Ledru ]
|
||||
* Disable lldb on sparc64 (Closes: #832371)
|
||||
* Hopefully fix the FTBFS on armel
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 27 Jul 2016 22:49:09 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-4) unstable; urgency=medium
|
||||
|
||||
* Fix the FTBFS under mips/mipsel? (enable the link against atomic)
|
||||
(Closes: #820537)
|
||||
* Bring back llvm-3.8-tools to life
|
||||
* ship clang-tblgen & yaml-bench as part of the libclang-common-X.Y-dev
|
||||
package
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 20 Jul 2016 10:20:46 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-3) unstable; urgency=medium
|
||||
|
||||
* Add -gsplit-dwarf to CXXFLAGS to workaround the memory allocation
|
||||
issue on i386 (hopefully)
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Sat, 02 Jul 2016 20:59:08 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-2) unstable; urgency=medium
|
||||
|
||||
[ Sylvestre Ledru ]
|
||||
* Add a symlink from usr/lib/llvm-3.8/share/llvm/cmake
|
||||
pointing to usr/share/llvm-3.8/cmake
|
||||
|
||||
[ Gianfranco Costamagna ]
|
||||
* Remove python-lldb-3.8 where liblldb-3.8-dev is not built
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Tue, 28 Jun 2016 14:44:48 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1-1) unstable; urgency=medium
|
||||
|
||||
* New maintenance release
|
||||
|
||||
[ Kai Wasserbäch ]
|
||||
* debian/rules: Ensure ld-gold is used. CMake invokes the linker through
|
||||
g++ most of the time, therefore we need to set -Wl,-fuse-ld=gold.
|
||||
|
||||
[ Brad King ]
|
||||
* Followup to fix the cmake install (Closes: #819072)
|
||||
|
||||
[ YunQiang Su ]
|
||||
* Enable FPXX by default on mips/mipsel (Closes: #826749)
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Thu, 23 Jun 2016 08:49:29 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8.1~+rc1-1~exp1) experimental; urgency=medium
|
||||
|
||||
* New RC release
|
||||
* Improve the cmake detection (used for llvm.org/apt)
|
||||
* Standards-Version updated to 3.9.8
|
||||
* Ignore outdated-autotools-helper-file
|
||||
|
||||
[ Brad King ]
|
||||
* Install cmake files in usr/share/llvm-@LLVM_VERSION@/cmake/ instead of
|
||||
usr/share/llvm-@LLVM_VERSION@/cmake/
|
||||
* Also install libLLVM-3.8.so.1 as a symlink
|
||||
* debian/patches/fix-cmake-config-prefix.diff:
|
||||
cover the CMake build system too
|
||||
(Closes: #819072)
|
||||
|
||||
[ Pablo Oliveira ]
|
||||
* Fix python-lldb dependencies and make proper symlinks to libLLVM
|
||||
and liblldb as suggested by Graham Inggs (Closes: #821022)
|
||||
* Fix liblldb suffix in lldb/scripts/Python/finishSwigPythonLLDB.py
|
||||
(Closes: #813798)
|
||||
* Fix LLVM bug 26158 - clang packages don't provide man pages
|
||||
* Add python-six as a dependency of python-lldb (thanks to Askar Safin).
|
||||
|
||||
[ Gianfranco Costamagna ]
|
||||
* Make python-lldb-3.8 depend on lldb-3.8-dev, to pick all
|
||||
the required dependencies
|
||||
* Unbreak circular dependency by Suggesting the python binding from
|
||||
liblldb-3.8-dev
|
||||
|
||||
[ Alexis La Goutte ]
|
||||
* Fix an issue with scan-view (Closes: #825101)
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Thu, 26 May 2016 17:30:00 +0200
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8-2) unstable; urgency=medium
|
||||
|
||||
* Team upload.
|
||||
* Disable polly on s390x and fix polly check.
|
||||
* Fix VCS fields.
|
||||
|
||||
[ Sylvestre Ledru ]
|
||||
* Fix txt file installation issue, by putting a README.txt file
|
||||
with some explanation.
|
||||
|
||||
[ Graham Inggs ]
|
||||
* Tighten llvm dev dependency (Closes: #814142).
|
||||
|
||||
-- Gianfranco Costamagna <locutusofborg@debian.org> Mon, 07 Mar 2016 10:56:05 +0100
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
* Install a missing library to unbreak lldb (Closes: #815809)
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Thu, 03 Mar 2016 21:16:21 +0100
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8~+rc3-1~exp1) experimental; urgency=medium
|
||||
|
||||
* New snapshot release
|
||||
* Update the clang description for something more accurate (C++-11, 14, etc)
|
||||
* Update debian/orig-tar.sh to remove autoconf/config.sub autoconf/config.guess
|
||||
in polly
|
||||
|
||||
[ Matthias Klose ]
|
||||
* clang-tidy-3.8: Remove Breaks/Replaces on clang-modernize-3.8.
|
||||
* Disable lldb on s390x.
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Thu, 25 Feb 2016 14:26:14 +0100
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8~+rc2-1~exp1) experimental; urgency=medium
|
||||
|
||||
* New snapshot release
|
||||
* Remove build-llvm/ after the install step to save space.
|
||||
Most of the rc1 builds failed because of hd space.
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 03 Feb 2016 08:59:32 +0100
|
||||
|
||||
llvm-toolchain-3.8 (1:3.8~+rc1-1~exp1) experimental; urgency=medium
|
||||
|
||||
* New snapshot release
|
||||
* Cmake migration. Done by Andrew Wilkins. Many thanks to him
|
||||
- Update patches to set SONAME in CMake build
|
||||
- Create symlinks with ".links", don't install from build tree
|
||||
- Remove LLVM-internal tools (lit, FileCheck, not, tblgen, etc.)
|
||||
- Remove llvm-X.Y-tools package, because it contained only
|
||||
internal tools that are not intended for distribution.
|
||||
- Remove autotools-specific artifacts from packages.
|
||||
- Remove "dummy" documentation artifacts from llvm-X.Y-docs
|
||||
package. Not built/installed by CMake, not useful.
|
||||
- Update control/rules to support CMake
|
||||
- Patch LLDB SWIG interfaces to workaround a bug in SWIG
|
||||
See https://llvm.org/bugs/show_bug.cgi?id=25468
|
||||
- add missing files to clang-format
|
||||
- Add patch to fix sanitizer lit invocation
|
||||
- removed LLVM-internal tools (lit, FileCheck, not, *-tblgen, etc.);
|
||||
not installed by CMake, not intended for distribution
|
||||
- removed llvm-X.Y-tools (contained only internal tools)
|
||||
- removed autotools-specific artifacts (configure, Makefile, etc.)
|
||||
- removed dummy documentation files
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 20 Jan 2016 16:09:01 +0100
|
||||
|
||||
llvm-toolchain-snapshot (1:3.8~svn255217-1~exp1) experimental; urgency=medium
|
||||
|
||||
* New snapshot release
|
||||
@ -767,7 +959,7 @@ llvm-toolchain-3.4 (1:3.4~+rc1-3) unstable; urgency=low
|
||||
* If we get an unexpected pass, do not break the tests
|
||||
do-not-fail-on-unexpected-pass.diff (I am disabling some tests)
|
||||
* Fix the path detection of the objective h headers.
|
||||
* Also add usr/lib/llvm-3.4/lib/clang/3.4/include =>
|
||||
* Also add usr/lib/llvm-3.4/lib/clang/3.4/include =>
|
||||
usr/lib/clang/3.4/include symlink to simplify the path detection
|
||||
|
||||
-- Sylvestre Ledru <sylvestre@debian.org> Sun, 01 Dec 2013 17:49:46 +0100
|
||||
|
1
debian/clang-X.Y.install.in
vendored
1
debian/clang-X.Y.install.in
vendored
@ -35,4 +35,3 @@ usr/bin/modularize-@LLVM_VERSION@
|
||||
usr/bin/scan-build-@LLVM_VERSION@
|
||||
usr/bin/scan-view-@LLVM_VERSION@
|
||||
usr/bin/c-index-test-@LLVM_VERSION@
|
||||
|
||||
|
2
debian/clang-X.Y.manpages.in
vendored
2
debian/clang-X.Y.manpages.in
vendored
@ -1,4 +1,4 @@
|
||||
#build-llvm/tools/clang/docs/tools/clang-@LLVM_VERSION@.1
|
||||
clang/docs/_build/man/clang-@LLVM_VERSION@.1
|
||||
clang/tools/scan-build/man/scan-build-@LLVM_VERSION@.1
|
||||
debian/man/clang-check-@LLVM_VERSION@.1
|
||||
debian/man/scan-view-@LLVM_VERSION@.1
|
||||
|
32
debian/control
vendored
32
debian/control
vendored
@ -10,11 +10,11 @@ Build-Depends: debhelper (>= 9.0), flex, bison, dejagnu, tcl, expect,
|
||||
libjsoncpp-dev,
|
||||
lcov, procps, help2man, dh-ocaml, zlib1g-dev
|
||||
Build-Conflicts: oprofile, ocaml, libllvm-3.4-ocaml-dev, libllvm-3.5-ocaml-dev,
|
||||
libllvm-3.9-ocaml-dev
|
||||
libllvm-3.8-ocaml-dev, libllvm-3.9-ocaml-dev
|
||||
Standards-Version: 3.9.8
|
||||
Homepage: http://www.llvm.org/
|
||||
Vcs-Svn: svn://anonscm.debian.org/svn/pkg-llvm/llvm-toolchain/branches/snapshot/
|
||||
Vcs-Browser: http://svn.debian.org/viewsvn/pkg-llvm/llvm-toolchain/branches/snapshot/
|
||||
Vcs-Svn: svn://anonscm.debian.org/svn/pkg-llvm/llvm-toolchain/branches/3.8/
|
||||
Vcs-Browser: https://svn.debian.org/viewsvn/pkg-llvm/llvm-toolchain/branches/3.8/
|
||||
|
||||
# ------------- clang -------------
|
||||
|
||||
@ -156,6 +156,27 @@ Description: clang library - Common development package
|
||||
(profiling, etc).
|
||||
|
||||
|
||||
Package: libfuzzer-3.9-dev
|
||||
Architecture: any
|
||||
Section: libdevel
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, clang-3.9 (= ${binary:Version})
|
||||
Description: Library for coverage-guided fuzz testing
|
||||
LibFuzzer is a library for in-process, coverage-guided, evolutionary fuzzing
|
||||
of other libraries.
|
||||
.
|
||||
LibFuzzer is similar in concept to American Fuzzy Lop (AFL), but it performs
|
||||
all of its fuzzing inside a single process. This in-process fuzzing can be
|
||||
more restrictive and fragile, but is potentially much faster as there is no
|
||||
overhead for process start-up.
|
||||
.
|
||||
The fuzzer is linked with the library under test, and feeds fuzzed inputs to
|
||||
the library via a specific fuzzing entrypoint (aka 'target function'); the
|
||||
fuzzer then tracks which areas of the code are reached, and generates mutations
|
||||
on the corpus of input data in order to maximize the code coverage. The code
|
||||
coverage information for libFuzzer is provided by LLVM's SanitizerCoverage
|
||||
instrumentation.
|
||||
|
||||
|
||||
Package: python-clang-3.9
|
||||
Section: python
|
||||
Architecture: any
|
||||
@ -270,7 +291,7 @@ Description: Modular compiler and toolchain technologies, IR interpreter
|
||||
Package: llvm-3.9-dev
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, libffi-dev (>= 3.0.9), ${misc:Depends},
|
||||
llvm-3.9 (= ${binary:Version}), libtinfo-dev
|
||||
llvm-3.9 (= ${binary:Version}), libllvm3.9 (= ${binary:Version}), libtinfo-dev
|
||||
Replaces: llvm (<< 2.2-3)
|
||||
Description: Modular compiler and toolchain technologies, libraries and headers
|
||||
LLVM is a collection of libraries and tools that make it easy to build
|
||||
@ -307,7 +328,6 @@ Description: Modular compiler and toolchain technologies, tools
|
||||
.
|
||||
This package provides tools for testing.
|
||||
|
||||
|
||||
Package: libllvm-3.9-ocaml-dev
|
||||
Section: ocaml
|
||||
Architecture: any
|
||||
@ -426,7 +446,7 @@ Description: Modular compiler and toolchain technologies, examples
|
||||
# ------------- lldb -------------
|
||||
|
||||
Package: lldb-3.9
|
||||
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 x32 mips mipsel
|
||||
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 s390x sparc alpha hppa m68k powerpcspe ppc64 sh4 x32 mips mipsel
|
||||
# ia64 mips mipsel hurd powerpc ppc64el sparc64 have been removed
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm3.9 (= ${binary:Version}), llvm-3.9-dev
|
||||
Suggests: python-lldb-3.9
|
||||
|
1
debian/libclang1-X.Y.install.in
vendored
1
debian/libclang1-X.Y.install.in
vendored
@ -1,3 +1,2 @@
|
||||
usr/lib/llvm-@LLVM_VERSION@/lib/libclang-@LLVM_VERSION@.so.1 /usr/lib/@DEB_HOST_MULTIARCH@/
|
||||
usr/lib/llvm-@LLVM_VERSION@/lib/libclang.so.1
|
||||
|
||||
|
2
debian/llvm-X.Y-runtime.install.in
vendored
2
debian/llvm-X.Y-runtime.install.in
vendored
@ -1,8 +1,6 @@
|
||||
usr/lib/llvm-@LLVM_VERSION@/bin/lli
|
||||
usr/lib/llvm-@LLVM_VERSION@/bin/lli-child-target
|
||||
|
||||
usr/bin/lli-@LLVM_VERSION@
|
||||
usr/bin/lli-child-target-@LLVM_VERSION@
|
||||
|
||||
debian/llvm-@LLVM_VERSION@-runtime.binfmt usr/share/binfmts/
|
||||
|
||||
|
322
debian/patches/D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.diff
vendored
Normal file
322
debian/patches/D17567-PR23529-Sema-part-of-attrbute-abi_tag-support.diff
vendored
Normal file
@ -0,0 +1,322 @@
|
||||
Index: b/clang/docs/ItaniumMangleAbiTags.rst
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ b/clang/docs/ItaniumMangleAbiTags.rst
|
||||
@@ -0,0 +1,101 @@
|
||||
+========
|
||||
+ABI tags
|
||||
+========
|
||||
+
|
||||
+Introduction
|
||||
+============
|
||||
+
|
||||
+This text tries to describe gcc semantic for mangling "abi_tag" attributes
|
||||
+described in https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html
|
||||
+
|
||||
+There is no guarantee the following rules are correct, complete or make sense
|
||||
+in any way as they were determined empirically by experiments with gcc5.
|
||||
+
|
||||
+Declaration
|
||||
+===========
|
||||
+
|
||||
+ABI tags are declared in an abi_tag attribute and can be applied to a
|
||||
+function, variable, class or inline namespace declaration. The attribute takes
|
||||
+one or more strings (called tags); the order does not matter.
|
||||
+
|
||||
+See https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Attributes.html for
|
||||
+details.
|
||||
+
|
||||
+Tags on an inline namespace are called "implicit tags", all other tags are
|
||||
+"explicit tags".
|
||||
+
|
||||
+Mangling
|
||||
+========
|
||||
+
|
||||
+All tags that are "active" on an <unqualified-name> are emitted after the
|
||||
+<unqualified-name>, before <template-args> or <discriminator>, and are part of
|
||||
+the same <substitution> the <unqualified-name> is.
|
||||
+
|
||||
+They are mangled as:
|
||||
+
|
||||
+ <abi-tags> ::= <abi-tag>* # sort by name
|
||||
+ <abi-tag> ::= B <tag source-name>
|
||||
+
|
||||
+Example:
|
||||
+
|
||||
+ __attribute__((abi_tag("test")))
|
||||
+ void Func();
|
||||
+
|
||||
+ gets mangled as: _Z4FuncB4testv (prettified as `Func[abi:test]()`)
|
||||
+
|
||||
+Active tags
|
||||
+===========
|
||||
+
|
||||
+A namespace does not have any active tags. For types (class / struct / union /
|
||||
+enum), the explicit tags are the active tags.
|
||||
+
|
||||
+For variables and functions, the active tags are the explicit tags plus any
|
||||
+"required tags" which are not in the "available tags" set:
|
||||
+
|
||||
+ derived-tags := (required-tags - available-tags)
|
||||
+ active-tags := explicit-tags + derived-tags
|
||||
+
|
||||
+Required tags for a function
|
||||
+============================
|
||||
+
|
||||
+If a function is used as a local scope for another name, and is part of
|
||||
+another function as local scope, it doesn't have any required tags.
|
||||
+
|
||||
+If a function is used as a local scope for a guard variable name, it doesn't
|
||||
+have any required tags.
|
||||
+
|
||||
+Otherwise the function requires any implicit or explicit tag used in the name
|
||||
+for the return type.
|
||||
+
|
||||
+Example:
|
||||
+ namespace A {
|
||||
+ inline namespace B __attribute__((abi_tag)) {
|
||||
+ struct C { int x; };
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ A::C foo();
|
||||
+
|
||||
+ gets mangled as: _Z3fooB1Bv (prettified as `foo[abi:B]()`)
|
||||
+
|
||||
+Required tags for a variable
|
||||
+============================
|
||||
+
|
||||
+A variable requires any implicit or explicit tag used in its type.
|
||||
+
|
||||
+Available tags
|
||||
+==============
|
||||
+
|
||||
+All tags used in the prefix and in the template arguments for a name are
|
||||
+available. Also, for functions, all tags from the <bare-function-type>
|
||||
+(which might include the return type for template functions) are available.
|
||||
+
|
||||
+For <local-name>s all active tags used in the local part (<function-
|
||||
+encoding>) are available, but not implicit tags which were not active.
|
||||
+
|
||||
+Implicit and explicit tags used in the <unqualified-name> for a function (as
|
||||
+in the type of a cast operator) are NOT available.
|
||||
+
|
||||
+Example: a cast operator to std::string (which is
|
||||
+std::__cxx11::basic_string<...>) will use 'cxx11' as an active tag, as it is
|
||||
+required from the return type `std::string` but not available.
|
||||
Index: b/clang/include/clang/Basic/Attr.td
|
||||
===================================================================
|
||||
--- a/clang/include/clang/Basic/Attr.td
|
||||
+++ b/clang/include/clang/Basic/Attr.td
|
||||
@@ -349,6 +349,14 @@ class IgnoredAttr : Attr {
|
||||
// Attributes begin here
|
||||
//
|
||||
|
||||
+def AbiTag : Attr {
|
||||
+ let Spellings = [GCC<"abi_tag">];
|
||||
+ let Args = [VariadicStringArgument<"Tags">];
|
||||
+ let Subjects = SubjectList<[Struct, Var, Function, Namespace], ErrorDiag,
|
||||
+ "ExpectedStructClassVariableFunctionOrInlineNamespace">;
|
||||
+ let Documentation = [AbiTagsDocs];
|
||||
+}
|
||||
+
|
||||
def AddressSpace : TypeAttr {
|
||||
let Spellings = [GNU<"address_space">];
|
||||
let Args = [IntArgument<"AddressSpace">];
|
||||
Index: b/clang/include/clang/Basic/AttrDocs.td
|
||||
===================================================================
|
||||
--- a/clang/include/clang/Basic/AttrDocs.td
|
||||
+++ b/clang/include/clang/Basic/AttrDocs.td
|
||||
@@ -1859,3 +1859,16 @@ Marking virtual functions as ``disable_t
|
||||
|
||||
}];
|
||||
}
|
||||
+
|
||||
+def AbiTagsDocs : Documentation {
|
||||
+ let Content = [{
|
||||
+The ``abi_tag`` attribute can be applied to a function, variable, class or
|
||||
+inline namespace declaration to modify the mangled name of the entity. It gives
|
||||
+the ability to distinguish between different versions of the same entity but
|
||||
+with different ABI versions supported. For example, a newer version of a class
|
||||
+could have a different set of data members and thus have a different size. Using
|
||||
+the ``abi_tag`` attribute, it is possible to have different mangled names for
|
||||
+a global variable of the class type. Therefor, the old code could keep using
|
||||
+the old manged name and the new code will use the new mangled name with tags.
|
||||
+ }];
|
||||
+}
|
||||
Index: b/clang/include/clang/Basic/DiagnosticSemaKinds.td
|
||||
===================================================================
|
||||
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
|
||||
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
|
||||
@@ -2434,7 +2434,8 @@ def warn_attribute_wrong_decl_type : War
|
||||
"Objective-C instance methods|init methods of interface or class extension declarations|"
|
||||
"variables, functions and classes|Objective-C protocols|"
|
||||
"functions and global variables|structs, unions, and typedefs|structs and typedefs|"
|
||||
- "interface or protocol declarations|kernel functions|non-K&R-style functions}1">,
|
||||
+ "interface or protocol declarations|kernel functions|non-K&R-style functions|"
|
||||
+ "structs, classes, variables, functions, and inline namespaces}1">,
|
||||
InGroup<IgnoredAttributes>;
|
||||
def err_attribute_wrong_decl_type : Error<warn_attribute_wrong_decl_type.Text>;
|
||||
def warn_type_attribute_wrong_type : Warning<
|
||||
@@ -4144,6 +4145,13 @@ def err_definition_of_explicitly_default
|
||||
def err_redefinition_extern_inline : Error<
|
||||
"redefinition of a 'extern inline' function %0 is not supported in "
|
||||
"%select{C99 mode|C++}1">;
|
||||
+def warn_attr_abi_tag_namespace : Warning<
|
||||
+ "'abi_tag' attribute on %select{non-inline|anonymous}0 namespace ignored">,
|
||||
+ InGroup<IgnoredAttributes>;
|
||||
+def err_abi_tag_on_redeclaration : Error<
|
||||
+ "cannot add 'abi_tag' attribute in a redeclaration">;
|
||||
+def err_new_abi_tag_on_redeclaration : Error<
|
||||
+ "'abi_tag' %0 missing in original declaration">;
|
||||
|
||||
def note_deleted_dtor_no_operator_delete : Note<
|
||||
"virtual destructor requires an unambiguous, accessible 'operator delete'">;
|
||||
Index: b/clang/include/clang/Sema/AttributeList.h
|
||||
===================================================================
|
||||
--- a/clang/include/clang/Sema/AttributeList.h
|
||||
+++ b/clang/include/clang/Sema/AttributeList.h
|
||||
@@ -855,7 +855,8 @@ enum AttributeDeclKind {
|
||||
ExpectedStructOrTypedef,
|
||||
ExpectedObjectiveCInterfaceOrProtocol,
|
||||
ExpectedKernelFunction,
|
||||
- ExpectedFunctionWithProtoType
|
||||
+ ExpectedFunctionWithProtoType,
|
||||
+ ExpectedStructClassVariableFunctionOrInlineNamespace
|
||||
};
|
||||
|
||||
} // end namespace clang
|
||||
Index: b/clang/lib/Sema/SemaDecl.cpp
|
||||
===================================================================
|
||||
--- a/clang/lib/Sema/SemaDecl.cpp
|
||||
+++ b/clang/lib/Sema/SemaDecl.cpp
|
||||
@@ -2396,6 +2396,24 @@ void Sema::mergeDeclAttributes(NamedDecl
|
||||
}
|
||||
}
|
||||
|
||||
+ // Re-declaration cannot add abi_tag's.
|
||||
+ if (const auto *NewAbiTagAttr = New->getAttr<AbiTagAttr>()) {
|
||||
+ if (const auto *OldAbiTagAttr = Old->getAttr<AbiTagAttr>()) {
|
||||
+ for (const auto &NewTag : NewAbiTagAttr->tags()) {
|
||||
+ if (std::find(OldAbiTagAttr->tags_begin(), OldAbiTagAttr->tags_end(),
|
||||
+ NewTag) == OldAbiTagAttr->tags_end()) {
|
||||
+ Diag(NewAbiTagAttr->getLocation(),
|
||||
+ diag::err_new_abi_tag_on_redeclaration)
|
||||
+ << NewTag;
|
||||
+ Diag(OldAbiTagAttr->getLocation(), diag::note_previous_declaration);
|
||||
+ }
|
||||
+ }
|
||||
+ } else {
|
||||
+ Diag(NewAbiTagAttr->getLocation(), diag::err_abi_tag_on_redeclaration);
|
||||
+ Diag(Old->getLocation(), diag::note_previous_declaration);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (!Old->hasAttrs())
|
||||
return;
|
||||
|
||||
Index: b/clang/lib/Sema/SemaDeclAttr.cpp
|
||||
===================================================================
|
||||
--- a/clang/lib/Sema/SemaDeclAttr.cpp
|
||||
+++ b/clang/lib/Sema/SemaDeclAttr.cpp
|
||||
@@ -4446,6 +4446,42 @@ static void handleDeclspecThreadAttr(Sem
|
||||
Attr.getRange(), S.Context, Attr.getAttributeSpellingListIndex()));
|
||||
}
|
||||
|
||||
+static void handleAbiTagAttr(Sema &S, Decl *D, const AttributeList &Attr) {
|
||||
+ SmallVector<std::string, 4> Tags;
|
||||
+ for (unsigned I = 0, E = Attr.getNumArgs(); I != E; ++I) {
|
||||
+ StringRef Tag;
|
||||
+ if (!S.checkStringLiteralArgumentAttr(Attr, I, Tag))
|
||||
+ return;
|
||||
+ Tags.push_back(Tag);
|
||||
+ }
|
||||
+
|
||||
+ if (const auto *NS = dyn_cast<NamespaceDecl>(D)) {
|
||||
+ if (!NS->isInline()) {
|
||||
+ S.Diag(Attr.getLoc(), diag::warn_attr_abi_tag_namespace) << 0;
|
||||
+ return;
|
||||
+ }
|
||||
+ if (NS->isAnonymousNamespace()) {
|
||||
+ S.Diag(Attr.getLoc(), diag::warn_attr_abi_tag_namespace) << 1;
|
||||
+ return;
|
||||
+ }
|
||||
+ if (Attr.getNumArgs() == 0)
|
||||
+ Tags.push_back(NS->getName());
|
||||
+ } else if (!checkAttributeAtLeastNumArgs(S, Attr, 1))
|
||||
+ return;
|
||||
+
|
||||
+ // Store tags sorted and without duplicates.
|
||||
+ std::sort(Tags.begin(), Tags.end());
|
||||
+ Tags.erase(std::unique(Tags.begin(), Tags.end()), Tags.end());
|
||||
+
|
||||
+ D->addAttr(::new (S.Context)
|
||||
+ AbiTagAttr(Attr.getRange(), S.Context, Tags.data(), Tags.size(),
|
||||
+ Attr.getAttributeSpellingListIndex()));
|
||||
+
|
||||
+ // FIXME: remove this warning as soon as mangled part is ready.
|
||||
+ S.Diag(Attr.getRange().getBegin(), diag::warn_attribute_ignored)
|
||||
+ << Attr.getName();
|
||||
+}
|
||||
+
|
||||
static void handleARMInterruptAttr(Sema &S, Decl *D,
|
||||
const AttributeList &Attr) {
|
||||
// Check the attribute arguments.
|
||||
@@ -5360,6 +5396,9 @@ static void ProcessDeclAttribute(Sema &S
|
||||
case AttributeList::AT_Thread:
|
||||
handleDeclspecThreadAttr(S, D, Attr);
|
||||
break;
|
||||
+ case AttributeList::AT_AbiTag:
|
||||
+ handleAbiTagAttr(S, D, Attr);
|
||||
+ break;
|
||||
|
||||
// Thread safety attributes:
|
||||
case AttributeList::AT_AssertExclusiveLock:
|
||||
Index: b/clang/test/SemaCXX/attr-abi-tag-syntax.cpp
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ b/clang/test/SemaCXX/attr-abi-tag-syntax.cpp
|
||||
@@ -0,0 +1,43 @@
|
||||
+// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
|
||||
+
|
||||
+namespace N1 {
|
||||
+
|
||||
+namespace __attribute__((__abi_tag__)) {}
|
||||
+// expected-warning@-1 {{'abi_tag' attribute on non-inline namespace ignored}}
|
||||
+
|
||||
+namespace N __attribute__((__abi_tag__)) {}
|
||||
+// expected-warning@-1 {{'abi_tag' attribute on non-inline namespace ignored}}
|
||||
+
|
||||
+} // namespace N1
|
||||
+
|
||||
+namespace N2 {
|
||||
+
|
||||
+inline namespace __attribute__((__abi_tag__)) {}
|
||||
+// expected-warning@-1 {{'abi_tag' attribute on anonymous namespace ignored}}
|
||||
+
|
||||
+inline namespace N __attribute__((__abi_tag__)) {}
|
||||
+// FIXME: remove this warning as soon as attribute fully supported.
|
||||
+// expected-warning@-2 {{'__abi_tag__' attribute ignored}}
|
||||
+
|
||||
+} // namespcace N2
|
||||
+
|
||||
+__attribute__((abi_tag("B", "A"))) extern int a1;
|
||||
+// FIXME: remove this warning as soon as attribute fully supported.
|
||||
+// expected-warning@-2 {{'abi_tag' attribute ignored}}
|
||||
+
|
||||
+__attribute__((abi_tag("A", "B"))) extern int a1;
|
||||
+// expected-note@-1 {{previous declaration is here}}
|
||||
+// FIXME: remove this warning as soon as attribute fully supported.
|
||||
+// expected-warning@-3 {{'abi_tag' attribute ignored}}
|
||||
+
|
||||
+__attribute__((abi_tag("A", "C"))) extern int a1;
|
||||
+// expected-error@-1 {{'abi_tag' C missing in original declaration}}
|
||||
+// FIXME: remove this warning as soon as attribute fully supported.
|
||||
+// expected-warning@-3 {{'abi_tag' attribute ignored}}
|
||||
+
|
||||
+extern int a2;
|
||||
+// expected-note@-1 {{previous declaration is here}}
|
||||
+__attribute__((abi_tag("A")))extern int a2;
|
||||
+// expected-error@-1 {{cannot add 'abi_tag' attribute in a redeclaration}}
|
||||
+// FIXME: remove this warning as soon as attribute fully supported.
|
||||
+// expected-warning@-3 {{'abi_tag' attribute ignored}}
|
1234
debian/patches/D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.diff
vendored
Normal file
1234
debian/patches/D18035-PR23529-Mangler-part-of-attrbute-abi_tag-support.diff
vendored
Normal file
File diff suppressed because it is too large
Load Diff
19
debian/patches/lldb-link-atomic-cmake.patch
vendored
Normal file
19
debian/patches/lldb-link-atomic-cmake.patch
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
Description: Link with -latomic when mips* processor is detected
|
||||
Author: Gianfranco Costamagna <locutusofborg@debian.org>
|
||||
Last-Update: 2016-07-27
|
||||
|
||||
--- llvm-toolchain-3.8-3.8.1.orig/lldb/cmake/LLDBDependencies.cmake
|
||||
+++ llvm-toolchain-3.8-3.8.1/lldb/cmake/LLDBDependencies.cmake
|
||||
@@ -172,6 +172,12 @@ if (LLVM_BUILD_STATIC)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
+if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips" OR
|
||||
+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mipsel" OR
|
||||
+ CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "mips64el")
|
||||
+ list(APPEND LLDB_SYSTEM_LIBS atomic)
|
||||
+endif()
|
||||
+
|
||||
set( LLVM_LINK_COMPONENTS
|
||||
${LLVM_TARGETS_TO_BUILD}
|
||||
interpreter
|
0
debian/patches/lldb-test-makefile.diff
vendored
0
debian/patches/lldb-test-makefile.diff
vendored
@ -1,14 +0,0 @@
|
||||
--- a/lldb/scripts/interface/SBError.i
|
||||
+++ b/lldb/scripts/interface/SBError.i
|
||||
@@ -57,6 +57,11 @@
|
||||
condition and we get back a void process object.
|
||||
") SBError;
|
||||
|
||||
+%{
|
||||
+// https://llvm.org/bugs/show_bug.cgi?id=25468
|
||||
+#pragma GCC diagnostic ignored "-Wformat-security"
|
||||
+%}
|
||||
+
|
||||
class SBError {
|
||||
public:
|
||||
SBError ();
|
11
debian/patches/llvm26003-sanitizer-check-env.diff
vendored
Normal file
11
debian/patches/llvm26003-sanitizer-check-env.diff
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
--- a/compiler-rt/cmake/Modules/SanitizerUtils.cmake
|
||||
+++ b/compiler-rt/cmake/Modules/SanitizerUtils.cmake
|
||||
@@ -86,7 +86,7 @@
|
||||
# Add target to check code style for sanitizer runtimes.
|
||||
if(UNIX)
|
||||
add_custom_target(SanitizerLintCheck
|
||||
- COMMAND LLVM_CHECKOUT=${LLVM_MAIN_SRC_DIR} SILENT=1 TMPDIR=
|
||||
+ COMMAND env LLVM_CHECKOUT=${LLVM_MAIN_SRC_DIR} SILENT=1 TMPDIR=
|
||||
PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
|
||||
COMPILER_RT=${COMPILER_RT_SOURCE_DIR}
|
||||
${SANITIZER_LINT_SCRIPT}
|
5
debian/patches/series
vendored
5
debian/patches/series
vendored
@ -27,9 +27,10 @@ hurd-EIEIO-undef.diff
|
||||
silent-MCJIIT-tests.diff
|
||||
clang-analyzer-force-version.diff
|
||||
llvm25468-lldb-swig-format-security.diff
|
||||
#silent-test-transforms.diff
|
||||
install-scan-build-py.diff
|
||||
#scan-build-py-default.diff
|
||||
scan-view-fix-path.diff
|
||||
mips-fpxx-enable.diff
|
||||
disable-test-failing-sparc-i386.diff
|
||||
fix-cmake-config-prefix.diff
|
||||
lldb-test-makefile.diff
|
||||
lldb-link-atomic-cmake.patch
|
||||
|
37
debian/patches/silent-more-tests.diff
vendored
37
debian/patches/silent-more-tests.diff
vendored
@ -49,6 +49,7 @@ Index: llvm-toolchain-snapshot_3.9~svn266048/test/Feature/load_module.ll
|
||||
|
||||
@junk = global i32 0
|
||||
|
||||
<<<<<<< .working
|
||||
Index: llvm-toolchain-snapshot_3.9~svn266048/clang/test/SemaCXX/warn-memsize-comparison.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-snapshot_3.9~svn266048.orig/clang/test/SemaCXX/warn-memsize-comparison.cpp
|
||||
@ -81,3 +82,39 @@ Index: llvm-toolchain-snapshot_3.9~svn266048/clang/test/SemaCXX/warn-memsize-com
|
||||
if (memset(b1, 0, sizeof(b1) / 2)) {}
|
||||
if (memset(b1, 0, sizeof(b1) >> 2)) {}
|
||||
if (memset(b1, 0, 4 << 2)) {}
|
||||
||||||| .merge-left.r1825
|
||||
=======
|
||||
Index: llvm-toolchain-3.8_3.8~+rc1/clang/test/SemaCXX/warn-memsize-comparison.cpp
|
||||
===================================================================
|
||||
--- llvm-toolchain-3.8_3.8~+rc1.orig/clang/test/SemaCXX/warn-memsize-comparison.cpp
|
||||
+++ llvm-toolchain-3.8_3.8~+rc1/clang/test/SemaCXX/warn-memsize-comparison.cpp
|
||||
@@ -11,8 +11,6 @@ extern "C" int strncasecmp(const char *s
|
||||
extern "C" char *strncpy(char *dst, const char *src, size_t n);
|
||||
extern "C" char *strncat(char *dst, const char *src, size_t n);
|
||||
extern "C" char *strndup(const char *src, size_t n);
|
||||
-extern "C" size_t strlcpy(char *dst, const char *src, size_t size);
|
||||
-extern "C" size_t strlcat(char *dst, const char *src, size_t size);
|
||||
|
||||
void f() {
|
||||
char b1[80], b2[80];
|
||||
@@ -70,18 +68,6 @@ void f() {
|
||||
expected-note {{explicitly cast the argument}}
|
||||
if (strndup(b1, sizeof(b1)) != 0) {}
|
||||
|
||||
- if (strlcpy(b1, b2, sizeof(b1) != 0)) {} // \
|
||||
- expected-warning{{size argument in 'strlcpy' call is a comparison}} \
|
||||
- expected-note {{did you mean to compare}} \
|
||||
- expected-note {{explicitly cast the argument}}
|
||||
- if (strlcpy(b1, b2, sizeof(b1)) != 0) {}
|
||||
-
|
||||
- if (strlcat(b1, b2, sizeof(b1) != 0)) {} // \
|
||||
- expected-warning{{size argument in 'strlcat' call is a comparison}} \
|
||||
- expected-note {{did you mean to compare}} \
|
||||
- expected-note {{explicitly cast the argument}}
|
||||
- if (strlcat(b1, b2, sizeof(b1)) != 0) {}
|
||||
-
|
||||
if (memset(b1, 0, sizeof(b1) / 2)) {}
|
||||
if (memset(b1, 0, sizeof(b1) >> 2)) {}
|
||||
if (memset(b1, 0, 4 << 2)) {}
|
||||
|
||||
>>>>>>> .merge-right.r2043
|
||||
|
50
debian/rules
vendored
50
debian/rules
vendored
@ -3,9 +3,9 @@
|
||||
TARGET_BUILD := build-llvm
|
||||
DEB_INST := $(CURDIR)/debian/tmp/
|
||||
#GCC_VERSION := 4.8
|
||||
# The 5| in the regexp is a crappy workaround. g++ 5.2 in Debian is not providing a g++-5.2 binary (only g++-5)
|
||||
# The 5|6| in the regexp is a crappy workaround. g++ 5.2 in Debian is not providing a g++-5.2 binary (only g++-5)
|
||||
# accomodate that by hardcoding the 5 detection
|
||||
GCC_VERSION := $(shell dpkg-query -W -f '$${Version}' g++ | sed -rne 's,^([0-9]+:)?(5|[0-9]+\.[0-9]+|[0-9]+).*$$,\2,p')
|
||||
GCC_VERSION := $(shell dpkg-query -W -f '$${Version}' g++ | sed -rne 's,^([0-9]+:)?(5|6|[0-9]+\.[0-9]+|[0-9]+).*$$,\2,p')
|
||||
LLVM_VERSION := 3.9
|
||||
LLVM_VERSION_FULL := $(LLVM_VERSION).0
|
||||
SONAME_EXT := 1
|
||||
@ -17,6 +17,8 @@ endif
|
||||
|
||||
VENDOR=$(shell lsb_release -is)
|
||||
|
||||
BUILD_DIR=Release
|
||||
|
||||
DEB_HOST_MULTIARCH = $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
||||
DEB_HOST_ARCH_BITS = $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
|
||||
@ -44,6 +46,9 @@ export CXX=g++-$(GCC_VERSION)
|
||||
opt_flags = -g -O2
|
||||
ifneq (,$(findstring $(DEB_HOST_ARCH),armel))
|
||||
opt_flags += -marm
|
||||
# 3.8 fails to build, disable the compiler_rt builtins
|
||||
# See http://lists.llvm.org/pipermail/llvm-dev/2016-May/099761.html
|
||||
CMAKE_EXTRA += -DCOMPILER_RT_BUILD_BUILTINS=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 4.8-20121128-1~ ; echo $$?),0)
|
||||
@ -54,9 +59,9 @@ else
|
||||
control_vars = '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev'
|
||||
endif
|
||||
|
||||
BINUTILS_GOLD_ARCHS := amd64 armhf i386 powerpc powerpcspe ppc64 ppc64el sparc sparc64 x32
|
||||
BINUTILS_GOLD_ARCHS := amd64 armhf i386 powerpcspe ppc64 ppc64el sparc sparc64 x32
|
||||
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.23.1-1~exp3 ; echo $$?),0)
|
||||
ifneq (,$(findstring $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS)))
|
||||
ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS)))
|
||||
# -fused-ld=gold enables the gold linker (but is not supported by all archs / distro)
|
||||
LDFLAGS_EXTRA += -fuse-ld=gold
|
||||
CXXFLAGS_EXTRA += -Wl,-fuse-ld=gold
|
||||
@ -64,8 +69,9 @@ endif
|
||||
endif
|
||||
|
||||
# Enable polly (or not)
|
||||
ifeq (,$(filter $(DEB_HOST_ARCH), powerpc))
|
||||
POLLY_ENABLE=yes
|
||||
POLLY_ENABLE=yes
|
||||
ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc s390x))
|
||||
POLLY_ENABLE=no
|
||||
endif
|
||||
|
||||
ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS)))
|
||||
@ -222,12 +228,16 @@ override_dh_auto_configure: preconfigure
|
||||
-DLLVM_ENABLE_RTTI=ON \
|
||||
-DLLVM_ENABLE_FFI=ON \
|
||||
$(CMAKE_EXTRA) \
|
||||
-DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT); \
|
||||
|
||||
-DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT)
|
||||
|
||||
override_dh_auto_build:
|
||||
$(PRE_PROCESS) $(MAKE) $(NJOBS) -C $(TARGET_BUILD) VERBOSE=1 CLANG_VENDOR=$(VENDOR) CXXFLAGS="$(CXXFLAGS_EXTRA)" LDFLAGS="$(LDFLAGS_EXTRA)" REQUIRES_RTTI=1 DEBUGMAKE=1
|
||||
|
||||
cd $(TARGET_BUILD) \
|
||||
CFLAGS=`dpkg-buildflags --get CFLAGS`; \
|
||||
CFLAGS="$$CFLAGS `dpkg-buildflags --get CPPFLAGS`"; \
|
||||
echo $$CFLAGS; \
|
||||
bin/clang++ -c $$CFLAGS -std=c++11 ../lib/Fuzzer/*.cpp -IFuzzer; \
|
||||
ar ruv libFuzzer.a Fuzzer*.o
|
||||
|
||||
override_dh_prep: build_doc
|
||||
dh_prep
|
||||
@ -245,6 +255,8 @@ build_doc:
|
||||
done; \
|
||||
fi
|
||||
|
||||
cd $(CURDIR)/clang/docs/_build/man/; mv clang.1 clang-$(LLVM_VERSION).1
|
||||
|
||||
# Remove the copy of jquery. See bug #701087
|
||||
for d in $(TARGET_BUILD)/docs/html/_static/ $(TARGET_BUILD)/tools/clang/docs/html/_static/ $(TARGET_BUILD)/tools/clang/tools/extra/docs/html/_static/ $(TARGET_BUILD)/tools/polly/docs/html/_static/; do \
|
||||
cd $$d && rm -f jquery.js && ln -s /usr/share/javascript/jquery/jquery.js && cd -; \
|
||||
@ -277,12 +289,6 @@ override_dh_auto_install:
|
||||
cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && rm -f libclang.so.$(SONAME_EXT) libclang-$(LLVM_VERSION).so; \
|
||||
ln -s libclang-$(LLVM_VERSION).so.$(SONAME_EXT) libclang.so.$(SONAME_EXT)
|
||||
|
||||
# cd debian/tmp/usr/lib/llvm-$(LLVM_VERSION)/lib/ && \
|
||||
# mv liblldb.so.$(LLVM_VERSION_FULL) liblldb-$(LLVM_VERSION).so.$(SONAME_EXT) && \
|
||||
# rm -f liblldb.so && \
|
||||
# ln -s liblldb-$(LLVM_VERSION).so.$(SONAME_EXT) liblldb.so && \
|
||||
# ln -s liblldb-$(LLVM_VERSION).so.$(SONAME_EXT) liblldb.so.$(LLVM_VERSION_FULL)
|
||||
|
||||
# Remove artefact (where compiler-rt is built)
|
||||
# if test -d $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux; then \
|
||||
# cd $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux && rm -rf $$(find . -mindepth 2 -maxdepth 2 -type d) && rm -rf $$(find -empty) && rm -rf */.dir; \
|
||||
@ -291,6 +297,9 @@ override_dh_auto_install:
|
||||
mkdir -p $(CURDIR)/debian/clang-$(LLVM_VERSION)/usr/bin/
|
||||
cp compiler-rt/lib/asan/scripts/asan_symbolize.py $(CURDIR)/debian/clang-$(LLVM_VERSION)/usr/bin/asan_symbolize-$(LLVM_VERSION)
|
||||
|
||||
mkdir -p $(CURDIR)/debian/libfuzzer-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/
|
||||
cp -v $(TARGET_BUILD)/libFuzzer.a $(CURDIR)/debian/libfuzzer-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/
|
||||
|
||||
# Create this fake directory to make the install libclang-common-dev happy
|
||||
# under the unsupported archs of compiler-rt
|
||||
mkdir -p $(DEB_INST)/usr/lib/clang/$(LLVM_VERSION)/lib
|
||||
@ -298,6 +307,10 @@ override_dh_auto_install:
|
||||
mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION)/lib/clang_linux/
|
||||
mkdir -p $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux/
|
||||
mkdir -p $(TARGET_BUILD)/tools/clang/runtime/compiler-rt/clang_linux/
|
||||
# On some archs, the sanatizers are not built. As we explicitly includes some txt files, create
|
||||
# a fake txt to make sure it doesn't fail
|
||||
echo "The *.txt files, if available, contain helper to override some of the errors messages." > $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/README.txt
|
||||
echo "Please visit https://github.com/google/sanitizers/wiki/AddressSanitizer for help" >> $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/clang/$(LLVM_VERSION_FULL)/README.txt
|
||||
|
||||
# idem for the lldb python binding
|
||||
mkdir -p $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/python2.7/site-packages/lldb/
|
||||
@ -314,15 +327,14 @@ override_dh_auto_install:
|
||||
|
||||
# Rename binaries
|
||||
mkdir -p $(DEB_INST)/usr/bin/
|
||||
cd $(DEB_INST)/usr/bin/; rm -f *; \
|
||||
cd $(DEB_INST)/usr/bin/; \
|
||||
rm -f *; \
|
||||
for f in ../lib/llvm-$(LLVM_VERSION)/bin/*; do \
|
||||
ln -s $$f `basename $$f`-$(LLVM_VERSION); \
|
||||
echo "Link $$f to `basename $$f`-$(LLVM_VERSION)"; \
|
||||
done
|
||||
|
||||
# Rename some stuff with the version name
|
||||
# cp $(CURDIR)/$(TARGET_BUILD)/tools/clang/docs/tools/clang.1 $(CURDIR)/$(TARGET_BUILD)/tools/clang/docs/tools/clang-$(LLVM_VERSION).1
|
||||
|
||||
cp $(CURDIR)/clang/tools/scan-build/man/scan-build.1 $(CURDIR)/clang/tools/scan-build/man/scan-build-$(LLVM_VERSION).1
|
||||
|
||||
# copy the vim files (except that tablegen does not exist for indent
|
||||
@ -390,6 +402,8 @@ override_dh_installman:
|
||||
|
||||
|
||||
override_dh_strip:
|
||||
: # running out of diskspace on the buildds
|
||||
find $(TARGET_BUILD) -name '*.o' -o -name '*.a' | xargs -r rm -f
|
||||
dh_strip -p libclang$(SONAME_EXT)-$(LLVM_VERSION) --dbg-package=libclang$(SONAME_EXT)-$(LLVM_VERSION)-dbg
|
||||
dh_strip -p libllvm$(LLVM_VERSION) --dbg-package=libllvm$(LLVM_VERSION)-dbg
|
||||
dh_strip -p liblldb-$(LLVM_VERSION) --dbg-package=liblldb-$(LLVM_VERSION)-dbg
|
||||
|
4
debian/source.lintian-overrides
vendored
4
debian/source.lintian-overrides
vendored
@ -1,2 +1,6 @@
|
||||
# Removed by patch remove-dbtree.diff
|
||||
source: source-is-missing clang/www/analyzer/scripts/dbtree.js
|
||||
# No longer used (we are using cmake now)
|
||||
source: outdated-autotools-helper-file autoconf/config.guess 2011-08-20
|
||||
source: outdated-autotools-helper-file autoconf/config.sub 2011-11-02
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user