Merge remote-tracking branch 'origin/7' into snapshot

This commit is contained in:
Sylvestre Ledru 2018-12-27 00:21:54 +01:00
commit 837792d5cc
17 changed files with 183 additions and 294 deletions

33
debian/README.source vendored
View File

@ -1,5 +1,34 @@
All programs and libraries shipped in this package are trying to stay as close
as possible from upstream.
Repack of the snapshot release are done with orig-tar.sh which will checkout the sources.
However, because of the objectives of Debian, besides paths, some changes are
made.
-- Sylvestre Ledru <sylvestre@debian.org>, Tue, 26 Feb 2013 14:57:56 +0100
= File names =
* To make sure that most of the llvm-toolchain packages are co-installable,
files are installed in /usr/lib/llvm-X/
and symlinks are managed by the other package llvm-defaults
= CPU extensions =
* For x86, SSE2 extensions are disabled (and the target CPU is i686 instead of
pentium4.
* For armel, uses float ABI instead of hard.
* For armv7-a, NEON extensions are disabled.
* For mips, FPXX is enabled.
= Libraries =
* sonames are created
* Build-ID are enabled
-- Sylvestre Ledru <sylvestre@debian.org>, Wed, 26 Dec 2018 22:56:30 +0100

37
debian/changelog vendored
View File

@ -69,6 +69,35 @@ llvm-toolchain-snapshot (1:8~svn345569-1~exp1) experimental; urgency=medium
-- Sylvestre Ledru <sylvestre@debian.org> Tue, 30 Oct 2018 08:31:14 +0100
llvm-toolchain-7 (1:7.0.1-3) unstable; urgency=medium
* Also install clang-7-dbgsym libclang1-7-dbgsym in autopkgtest
to verify that debug symbols are present
* Cherry-pick upstream fix D52340 to address a rustc debuginfo
(Closes: #917209)
* Change the jit debug path from $HOME/.debug/jit/ to
$TMPDIR/.debug/jit/ (Closes: #916393)
* Document in README.source some Debian/Ubuntu specific changes
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 26 Dec 2018 22:57:45 +0100
llvm-toolchain-7 (1:7.0.1-2) unstable; urgency=medium
* Enable -DENABLE_LINKER_BUILD_ID:BOOL=ON as, unlike gcc, isn't enabled
by default in clang. Thanks to Adrian Bunk for the patch.
Once more, thanks to Rebecca Palmer (Closes: #916975)
* Build with -g1 also on 64bit architectures (thanks to Adrian too)
-- Sylvestre Ledru <sylvestre@debian.org> Fri, 21 Dec 2018 17:07:44 +0100
llvm-toolchain-7 (1:7.0.1-1) unstable; urgency=medium
* New release
* Remove the dbg workaround. Hopefully, the new version of
binutils will fix it (Closes: #913946)
-- Sylvestre Ledru <sylvestre@debian.org> Sun, 16 Dec 2018 13:07:54 +0100
llvm-toolchain-7 (1:7.0.1~+rc3-2) unstable; urgency=medium
* Fix llvm-config by stripping unnecessary flags
@ -165,7 +194,7 @@ llvm-toolchain-7 (1:7.0.1~+rc2-3) unstable; urgency=medium
* Disable gold for sparc* (Closes: #913260)
* Hide a symbol in openmp for mips64el
* Try to integrate a pach to make pch reproducible
* Try to integrate a patch to make pch reproducible
Thanks to Rebecca Palmer for the patch
(Closes: #877359)
* Fix the misscompilation issue causing rustc to crash (Closes: #913271)
@ -228,7 +257,7 @@ llvm-toolchain-7 (1:7-8) unstable; urgency=medium
(Closes: #909705)
* Add tests from old bugs to make sure they don't come back
(Closes: #889832, #827866)
* The sanitizers use the versionned llvm-symbolizer provided by the
* The sanitizers use the versioned llvm-symbolizer provided by the
llvm-X package (Closes: #753572)
-- Sylvestre Ledru <sylvestre@debian.org> Sat, 20 Oct 2018 16:00:58 +0200
@ -249,7 +278,7 @@ llvm-toolchain-7 (1:7-7~exp2) experimental; urgency=medium
(Closes: #909705)
* Add tests from old bugs to make sure they don't come back
(Closes: #889832, #827866)
* The sanitizers use the versionned llvm-symbolizer provided by the
* The sanitizers use the versioned llvm-symbolizer provided by the
llvm-X package (Closes: #753572)
-- Sylvestre Ledru <sylvestre@debian.org> Sun, 21 Oct 2018 18:34:20 +0200
@ -257,7 +286,7 @@ llvm-toolchain-7 (1:7-7~exp2) experimental; urgency=medium
llvm-toolchain-7 (1:7-7~exp1) experimental; urgency=medium
* Experiment the clang bootstrap
* Try to boostrap clang using clang
* Try to bootstrap clang using clang
-- Sylvestre Ledru <sylvestre@debian.org> Wed, 17 Oct 2018 20:15:57 +0200

14
debian/control vendored
View File

@ -104,7 +104,7 @@ Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Pre-Depends: ${misc:Pre-Depends}
Multi-Arch: same
Description: C interface to the clang library
Description: C interface to the Clang library
Clang project is a C, C++, Objective C and Objective C++ front-end
based on the LLVM compiler. Its goal is to offer a replacement to the
GNU Compiler Collection (GCC).
@ -112,7 +112,7 @@ Description: C interface to the clang library
Clang implements all of the ISO C++ 1998, 11 and 14 standards and also
provides most of the support of C++17.
.
This package contains the clang library.
This package contains the Clang library.
.
The C Interface to Clang provides a relatively small API that exposes
facilities for parsing source code into an abstract syntax tree (AST),
@ -126,7 +126,7 @@ Section: libdevel
Depends: ${shlibs:Depends}, ${misc:Depends}, ${dep:devlibs},
${dep:devlibs-objc}, libclang1-8 (= ${binary:Version}),
libclang-common-8-dev (= ${binary:Version})
Description: clang library - Development package
Description: Clang library - Development package
Clang project is a C, C++, Objective C and Objective C++ front-end
based on the LLVM compiler. Its goal is to offer a replacement to the
GNU Compiler Collection (GCC).
@ -134,14 +134,14 @@ Description: clang library - Development package
Clang implements all of the ISO C++ 1998, 11 and 14 standards and also
provides most of the support of C++17.
.
This package contains the clang headers to develop extensions over
This package contains the Clang headers to develop extensions over
libclang1-8.
Package: libclang-common-8-dev
Architecture: any
Section: libdevel
Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm8 (= ${binary:Version})
Description: clang library - Common development package
Description: Clang library - Common development package
Clang project is a C, C++, Objective C and Objective C++ front-end
based on the LLVM compiler. Its goal is to offer a replacement to the
GNU Compiler Collection (GCC).
@ -149,7 +149,7 @@ Description: clang library - Common development package
Clang implements all of the ISO C++ 1998, 11 and 14 standards and also
provides most of the support of C++17.
.
This package contains the clang generic headers and some libraries
This package contains the Clang generic headers and some libraries
(profiling, etc).
@ -205,7 +205,7 @@ Description: Clang examples
Clang implements all of the ISO C++ 1998, 11 and 14 standards and also
provides most of the support of C++17.
.
This package contains the clang examples.
This package contains the Clang examples.
# ------------- LLVM -------------

View File

@ -0,0 +1,32 @@
Index: llvm/lib/Bitcode/Reader/MetadataLoader.cpp
===================================================================
--- llvm.orig/lib/Bitcode/Reader/MetadataLoader.cpp
+++ llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -1313,7 +1313,7 @@
(Context, Tag, Name, File, Line, Scope, BaseType,
SizeInBits, AlignInBits, OffsetInBits, Flags,
Elements, RuntimeLang, VTableHolder, TemplateParams,
- Identifier));
+ Identifier, Discriminator));
if (!IsNotUsedInTypeRef && Identifier)
MetadataList.addTypeRef(*Identifier, *cast<DICompositeType>(CT));
Index: llvm/test/Assembler/debug-variant-discriminator.ll
===================================================================
--- llvm.orig/test/Assembler/debug-variant-discriminator.ll
+++ llvm/test/Assembler/debug-variant-discriminator.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
+; RUN: verify-uselistorder %s
+
+; CHECK: !named = !{!0, !1, !2}
+!named = !{!0, !1, !2}
+
+; CHECK: !0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer")
+; CHECK-NEXT: !1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2)
+; CHECK-NEXT: !2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial)
+; CHECK-NEXT: !3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)
+!0 = !DICompositeType(tag: DW_TAG_structure_type, name: "Outer", size: 64, align: 64, identifier: "Outer")
+!1 = !DICompositeType(tag: DW_TAG_variant_part, scope: !0, size: 64, discriminator: !2)
+!2 = !DIDerivedType(tag: DW_TAG_member, scope: !1, baseType: !3, size: 64, align: 64, flags: DIFlagArtificial)
+!3 = !DIBasicType(name: "u64", size: 64, encoding: DW_ATE_unsigned)

View File

@ -10,7 +10,7 @@ include_next to get the glibc (libc6-dev package) header.
However, in the previous example, because we have inttypes.h twice in the
include search path, clang's header will call itself without any effect.
Therefor, it will do include_next until the define from the libc is existing (ex: _INTTYPES_H)
Therefore, it will do include_next until the define from the libc is existing (ex: _INTTYPES_H)
Index: llvm-toolchain-7-7/clang/lib/Headers/inttypes.h

View File

@ -1,35 +0,0 @@
Index: llvm-toolchain-7-7/polly/CMakeLists.txt
===================================================================
--- llvm-toolchain-7-7.orig/polly/CMakeLists.txt
+++ llvm-toolchain-7-7/polly/CMakeLists.txt
@@ -91,6 +91,8 @@ else ()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-rtti")
endif ()
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+
# Add path for custom modules
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${POLLY_SOURCE_DIR}/cmake")
Index: llvm-toolchain-7-7/polly/lib/External/CMakeLists.txt
===================================================================
--- llvm-toolchain-7-7.orig/polly/lib/External/CMakeLists.txt
+++ llvm-toolchain-7-7/polly/lib/External/CMakeLists.txt
@@ -1,3 +1,6 @@
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
+
# External: Integer Set Library
if (POLLY_BUNDLED_ISL)
set(ISL_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/isl")
Index: llvm-toolchain-7-7/lib/Support/CMakeLists.txt
===================================================================
--- llvm-toolchain-7-7.orig/lib/Support/CMakeLists.txt
+++ llvm-toolchain-7-7/lib/Support/CMakeLists.txt
@@ -1,4 +1,6 @@
set(system_libs)
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
+
if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
set(system_libs ${system_libs} ${ZLIB_LIBRARIES})
endif()

View File

@ -1,46 +0,0 @@
libcxx atomic tests for old i386 fail with wrong Atomic inline width.
cmpxchg8b instruction is required for 8 byte atomics that clang was
assuming.
Too bad _GCC_ATOMIC_LLONG_LOCK_FREE 2 isn't supported even with this change
because llvm doesn't support unaligned atomic compare and exchange operation.
Fallback calls to libatomic.so should handle long long lock free but clang
can't tell program if libatomic is always lock free.
Related bug: https://llvm.org/bugs/show_bug.cgi?id=19355
Index: llvm-toolchain-snapshot_6.0~svn309319/clang/lib/Basic/Targets/X86.cpp
===================================================================
--- llvm-toolchain-snapshot_6.0~svn309319.orig/clang/lib/Basic/Targets/X86.cpp
+++ llvm-toolchain-snapshot_6.0~svn309319/clang/lib/Basic/Targets/X86.cpp
@@ -1133,7 +1133,7 @@ void X86TargetInfo::getTargetDefines(con
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
}
- if (CPU >= CK_i586)
+ if (isCmpXChg8Supported())
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
if (HasFloat128)
Index: llvm-toolchain-snapshot_6.0~svn309319/clang/lib/Basic/Targets/X86.h
===================================================================
--- llvm-toolchain-snapshot_6.0~svn309319.orig/clang/lib/Basic/Targets/X86.h
+++ llvm-toolchain-snapshot_6.0~svn309319/clang/lib/Basic/Targets/X86.h
@@ -281,6 +281,8 @@ class LLVM_LIBRARY_VISIBILITY X86TargetI
// acceptable.
// FIXME: This results in terrible diagnostics. Clang just says the CPU is
// invalid without explaining *why*.
+ if (!isCmpXChg8Supported())
+ MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 32;
switch (Kind) {
case CK_Generic:
// No processor selected!
@@ -548,8 +550,6 @@ public:
(1 << TargetInfo::LongDouble));
// x86-32 has atomics up to 8 bytes
- // FIXME: Check that we actually have cmpxchg8b before setting
- // MaxAtomicInlineWidth. (cmpxchg8b is an i586 instruction.)
MaxAtomicPromoteWidth = MaxAtomicInlineWidth = 64;
}

15
debian/patches/debug-jit-path.diff vendored Normal file
View File

@ -0,0 +1,15 @@
Index: llvm-toolchain-7_7.0.1~+rc3/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
===================================================================
--- llvm-toolchain-7_7.0.1~+rc3.orig/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
+++ llvm-toolchain-7_7.0.1~+rc3/lib/ExecutionEngine/PerfJITEvents/PerfJITEventListener.cpp
@@ -294,8 +294,8 @@ bool PerfJITEventListener::InitDebugging
// search for location to dump data to
if (const char *BaseDir = getenv("JITDUMPDIR"))
Path.append(BaseDir);
- else if (!sys::path::home_directory(Path))
- Path = ".";
+ else
+ sys::path::system_temp_directory(/*ErasedOnReboot*/ true, Path);
// create debug directory
Path += "/.debug/jit/";

View File

@ -1,41 +0,0 @@
When doing a bootstrap, we use a newly built clang.
When this one is used, if already installed on the system,
we have clang header in two places:
llvm-toolchain-7-7/build-llvm/lib/clang/7.0.0/include/inttypes.h
and
/usr/include/clang/7.0.0/include/inttypes.h
Because clang expects only one of his headers to be available, it uses
include_next to get the glibc (libc6-dev package) header.
However, in the previous example, because we have inttypes.h twice in the
include search path, clang's header will call itself without any effect.
Therefor, it will do include_next until the define from the libc is existing (ex: _INTTYPES_H)
Index: llvm-toolchain-7-7/clang/lib/Headers/inttypes.h
===================================================================
--- llvm-toolchain-7-7.orig/clang/lib/Headers/inttypes.h
+++ llvm-toolchain-7-7/clang/lib/Headers/inttypes.h
@@ -20,7 +20,7 @@
*
\*===----------------------------------------------------------------------===*/
-#ifndef __CLANG_INTTYPES_H
+#if !defined(__CLANG_INTTYPES_H) || !defined(_INTTYPES_H)
#define __CLANG_INTTYPES_H
#if defined(_MSC_VER) && _MSC_VER < 1800
Index: llvm-toolchain-7-7/clang/lib/Headers/limits.h
===================================================================
--- llvm-toolchain-7-7.orig/clang/lib/Headers/limits.h
+++ llvm-toolchain-7-7/clang/lib/Headers/limits.h
@@ -22,7 +22,7 @@
*
\*===----------------------------------------------------------------------===*/
-#ifndef __CLANG_LIMITS_H
+#if !defined(__CLANG_LIMITS_H) || !defined(_LIBC_LIMITS_H_)
#define __CLANG_LIMITS_H
/* The system's limits.h may, in turn, try to #include_next GCC's limits.h.

View File

@ -1,73 +0,0 @@
---
cmake/modules/AddLLVM.cmake | 2 -
polly/lib/CMakeLists.txt | 47 +++++++++++++++++---------------------------
2 files changed, 20 insertions(+), 29 deletions(-)
--- a/cmake/modules/AddLLVM.cmake
+++ b/cmake/modules/AddLLVM.cmake
@@ -501,7 +501,7 @@ function(llvm_add_library name)
# On DLL platforms symbols are imported from the tool by linking against it.
set(llvm_libs ${ARG_PLUGIN_TOOL})
elseif (DEFINED LLVM_LINK_COMPONENTS OR DEFINED ARG_LINK_COMPONENTS)
- if (LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
+ if (NOT ARG_STATIC AND LLVM_LINK_LLVM_DYLIB AND NOT ARG_DISABLE_LLVM_LINK_LLVM_DYLIB)
set(llvm_libs LLVM)
else()
llvm_map_components_to_libnames(llvm_libs
--- a/polly/lib/CMakeLists.txt
+++ b/polly/lib/CMakeLists.txt
@@ -66,35 +66,26 @@ endif (GPU_CODEGEN)
target_link_libraries(Polly PollyISL jsoncpp)
-if (BUILD_SHARED_LIBS)
- target_link_libraries(Polly
- LLVMSupport
- LLVMCore
- LLVMScalarOpts
- LLVMInstCombine
- LLVMTransformUtils
- LLVMAnalysis
- LLVMipo
- LLVMMC
+target_link_libraries(Polly
+ LLVMSupport
+ LLVMCore
+ LLVMScalarOpts
+ LLVMInstCombine
+ LLVMTransformUtils
+ LLVMAnalysis
+ LLVMipo
+ LLVMMC
# The libraries below are required for darwin: http://PR26392
- LLVMBitReader
- LLVMMCParser
- LLVMObject
- LLVMProfileData
- LLVMTarget
- LLVMVectorize
- )
- link_directories(
- ${LLVM_LIBRARY_DIR}
- )
-elseif (LLVM_LINK_LLVM_DYLIB)
- target_link_libraries(Polly
- LLVM
- )
- link_directories(
- ${LLVM_LIBRARY_DIR}
- )
-endif()
+ LLVMBitReader
+ LLVMMCParser
+ LLVMObject
+ LLVMProfileData
+ LLVMTarget
+ LLVMVectorize
+)
+link_directories(
+ ${LLVM_LIBRARY_DIR}
+)
# Build a monolithic Polly.a and a thin module LLVMPolly.moduleext that links to
# that static library.

View File

@ -1,58 +0,0 @@
From 8f577000b2fe2f5bf5d08e352a2f15f9421f9c82 Mon Sep 17 00:00:00 2001
From: Pavel Labath <labath@google.com>
Date: Thu, 8 Mar 2018 15:52:46 +0000
Subject: [PATCH] Install lldb's SB headers (pr36630)
These were removed in r309021 in what looks like an accidentally
committed change. This brings them back.
I also rename the header component to lldb-headers (instead of
lldb_headers) to match the llvm style and add a special
install-lldb-headers target, which installs just the headers.
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@327016 91177308-0d34-0410-b5e6-96231b3b80d8
Origin: upstream, https://github.com/llvm-mirror/lldb/commit/8f577000b2fe2f5bf5d08e352a2f15f9421f9c82.patch
Bug-Ubuntu: https://launchpad.net/bugs/1761009
Forwarded: will be done by Nishanth Aravamudan
Last-Update: 2018-04-05
--- llvm-toolchain-6.0-6.0.orig/lldb/cmake/modules/LLDBConfig.cmake
+++ llvm-toolchain-6.0-6.0/lldb/cmake/modules/LLDBConfig.cmake
@@ -277,27 +277,31 @@ include_directories(BEFORE
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
install(DIRECTORY include/
- COMPONENT lldb_headers
+ COMPONENT lldb-headers
DESTINATION include
FILES_MATCHING
PATTERN "*.h"
PATTERN ".svn" EXCLUDE
PATTERN ".cmake" EXCLUDE
PATTERN "Config.h" EXCLUDE
- PATTERN "lldb-*.h" EXCLUDE
- PATTERN "API/*.h" EXCLUDE
)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/
- COMPONENT lldb_headers
+ COMPONENT lldb-headers
DESTINATION include
FILES_MATCHING
PATTERN "*.h"
PATTERN ".svn" EXCLUDE
PATTERN ".cmake" EXCLUDE
- PATTERN "lldb-*.h" EXCLUDE
- PATTERN "API/*.h" EXCLUDE
)
+
+ add_custom_target(lldb-headers)
+ set_target_properties(lldb-headers PROPERTIES FOLDER "Misc")
+
+ if (NOT CMAKE_CONFIGURATION_TYPES)
+ add_llvm_install_targets(install-lldb-headers
+ COMPONENT lldb-headers)
+ endif()
endif()
if (NOT LIBXML2_FOUND AND NOT (CMAKE_SYSTEM_NAME MATCHES "Windows"))

View File

@ -3,7 +3,7 @@ for any debugging with lldb which makes it unusable unless default version
package has been installed. Small changes to code and debian/rules allows
a workaround for lldb-server start up.
To use this one needs to add cmake defination during configure. eg
To use this one needs to add cmake definition during configure. eg
-DDEBIAN_VERSION_SUFFIX=-$(LLVM_VERSION)
Better implementation would be to use /usr/share/llvm-$(VERSION)/bin but

View File

@ -19,6 +19,7 @@ fix-clang-path-and-build.diff
symbolizer-path.diff
clang-tidy-run-bin.diff
0001-tools-clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch
debug-jit-path.diff
# commented because of bug 903709
#force-gcc-header-obj.diff
@ -89,7 +90,7 @@ clang-baseline-fix-i386.patch
disable-sse2-old-x86.diff
clang-arm-default-vfp3-on-armv7a.patch
# For the boostrap
# For the bootstrap
bootstrap-fix-include-next.diff
clangd-atomic-cmake.patch
@ -111,3 +112,4 @@ D49754-powerpcspe-clang.diff
D54409-powerpcspe-register-spilling.diff
D54584-powerpcspe-double-parameter.diff

View File

@ -6,7 +6,7 @@ TARGET_VERSION_2=8_0
ORIG_VERSION_3=70
TARGET_VERSION_3=80
LIST=`ls debian/control debian/orig-tar.sh debian/rules debian/patches/clang-analyzer-force-version.diff debian/patches/clang-format-version.diff debian/patches/python-clangpath.diff debian/patches/scan-build-clang-path.diff debian/patches/lldb-libname.diff debian/patches/fix-scan-view-path.diff debian/patches/lldb-addversion-suffix-to-llvm-server-exec.patch debian/patches/clang-tidy-run-bin.diff debian/patches/fix-scan-view-path.diff debian/qualify-clang.sh debian/README debian/patches/clang-analyzer-force-version.diff debian/patches/clang-tidy-run-bin.diff`
LIST=`ls debian/control debian/orig-tar.sh debian/rules debian/patches/clang-analyzer-force-version.diff debian/patches/clang-format-version.diff debian/patches/python-clangpath.diff debian/patches/scan-build-clang-path.diff debian/patches/lldb-libname.diff debian/patches/fix-scan-view-path.diff debian/patches/lldb-addversion-suffix-to-llvm-server-exec.patch debian/patches/clang-tidy-run-bin.diff debian/patches/fix-scan-view-path.diff debian/qualify-clang.sh debian/README debian/patches/clang-analyzer-force-version.diff debian/patches/clang-tidy-run-bin.diff debian/tests/control`
for F in $LIST; do
sed -i -e "s|$ORIG_VERSION_3|$TARGET_VERSION_3|g" $F
sed -i -e "s|$ORIG_VERSION_2|$TARGET_VERSION_2|g" $F

View File

@ -7,7 +7,7 @@ if ! test -d debian/; then
fi
VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9]+).*,\1,p")
DETAILED_VERSION=$(dpkg-parsechangelog | sed -rne "s,^Version: 1:([0-9.]+)(~|-)(.*),\1\2\3,p")
LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb"
LIST="libomp5-${VERSION}_${DETAILED_VERSION}_amd64.deb libomp-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb python-lldb-${VERSION}_${DETAILED_VERSION}_amd64.deb libllvm${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}_${DETAILED_VERSION}_amd64.deb libclang-common-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}_${DETAILED_VERSION}_amd64.deb liblldb-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-runtime_${DETAILED_VERSION}_amd64.deb lld-${VERSION}_${DETAILED_VERSION}_amd64.deb libfuzzer-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libclang-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++abi-${VERSION}-dev_${DETAILED_VERSION}_amd64.deb libc++1-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}_${DETAILED_VERSION}_amd64.deb llvm-${VERSION}-tools_${DETAILED_VERSION}_amd64.deb clang-tools-${VERSION}_${DETAILED_VERSION}_amd64.deb clang-${VERSION}-dbgsym_${DETAILED_VERSION}_amd64.deb libclang1-${VERSION}-dbgsym_${DETAILED_VERSION}_amd64.deb"
echo "To install everything:"
echo "sudo dpkg -i $LIST"
@ -84,7 +84,7 @@ void increment(atomic_size_t *arg) {
atomic_fetch_add(arg, 1);
} ' > foo.c
#clang-$VERSION -v -c foo.c
clang-$VERSION -v -c foo.c
echo "#include <fenv.h>" > foo.cc
NBLINES=$(clang++-$VERSION -P -E foo.cc|wc -l)
@ -175,7 +175,7 @@ if (1==1) {
return 42;
}
return 0;}' > foo.c
rm foo
rm foo bar.cc
if test ! -f /usr/lib/llvm-$VERSION/bin/../lib/LLVMgold.so; then
echo "Install llvm-$VERSION-dev"
@ -211,13 +211,13 @@ clang-$VERSION -O3 -fpic -c -o bar.o bar.c
clang-$VERSION -fuse-ld=bfd -shared -o libfoo.so bar.o
clang-$VERSION -fuse-ld=bfd -o y x.o libfoo.so -Wl,-R,.
# Still failing, commenting
# ./y
./y || true
clang-$VERSION -O3 -c -o x.o x.c
clang-$VERSION -O3 -fpic -c -o bar.o bar.c
clang-$VERSION -fuse-ld=gold -shared -o libfoo.so bar.o
# Still failing, commenting
# clang-$VERSION -fuse-ld=gold -o y x.o libfoo.so -Wl,-R,.
clang-$VERSION -fuse-ld=gold -o y x.o libfoo.so -Wl,-R,. || true
rm -f x.c bar.c libfoo.so bar.o y x.o
@ -242,6 +242,28 @@ clang-$VERSION -fuse-ld=lld -flto -O2 foo.c main.c -o foo
clang-$VERSION -fuse-ld=lld-$VERSION -O2 foo.c main.c -o foo
./foo > /dev/null
# Bug 916975
file foo &> foo.log
if ! grep -q "BuildID" foo.log; then
echo "BuildID isn't part of the generated binary (lld generation)"
exit 1
fi
# Bug 916975
clang-$VERSION -O2 foo.c main.c -o foo2
file foo2 &> foo2.log
if ! grep "BuildID" foo2.log; then
echo "BuildID isn't part of the generated binary (ld generation)"
exit 1
fi
strip foo2
file foo2 &> foo2.log
if ! grep "BuildID" foo2.log; then
echo "BuildID isn't part of the generated binary (stripped)"
exit 1
fi
rm foo2 foo2.log
cat << EOF > test_fuzzer.cc
#include <stdint.h>
#include <stddef.h>
@ -617,8 +639,20 @@ if test ! -f /usr/bin/lldb-$VERSION; then
exit -1;
fi
# bug 913946
lldb-$VERSION -s lldb-cmd.txt bar
if dpkg -l|grep -q clang-$VERSION-dbgsym; then
# Testing if clang dbg symbol are here
lldb-$VERSION -s lldb-cmd.txt clang-$VERSION &> foo.log
if ! grep "main at driver.cpp" foo.log; then
echo "Could not find the debug info"
echo "Or the main() of clang isn't in driver.cpp anymore"
exit -1
fi
else
echo "clang-$VERSION-dbgsym isn't installed"
fi
echo '
#include <vector>
int main (void)

35
debian/rules vendored
View File

@ -73,6 +73,9 @@ opt_flags = -O2 -DNDEBUG
# Only enable g1 on archs which needs it (it fixes an OOM during dh_strip due to huge symbols)
ifeq ($(DEB_HOST_ARCH_BITS),32)
opt_flags += -g1
else
# Should be -g, but this causes buildd disk space issues
opt_flags += -g1
endif
ifneq (,$(findstring $(DEB_HOST_ARCH),armel))
@ -136,11 +139,11 @@ ifneq (,$(filter codecoverage,$(DEB_BUILD_OPTIONS)))
endif
# Enable for bootstrap
LDFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option
LDFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option -Wl,--build-id
CXXFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option
BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) -fno-addrsig
BOOTSTRAP_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA) # Nothing for now. Keeping in case we need it
CFLAGS_EXTRA += -fPIC -Wno-unused-command-line-argument -Wno-unknown-warning-option
BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) -fno-addrsig
BOOTSTRAP_CFLAGS_EXTRA = $(CFLAGS_EXTRA) # Nothing for now. Keeping in case we need it
# Enable polly (or not)
POLLY_ENABLE=yes
@ -362,11 +365,12 @@ override_dh_auto_configure: preconfigure
-DLLVM_ENABLE_FFI=ON \
$(CMAKE_EXTRA) \
-DLIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \
-DENABLE_LINKER_BUILD_ID=ON \
-DPOLLY_BUNDLED_JSONCPP=OFF \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="WebAssembly;AVR" \
-DCLANG_ENABLE_BOOTSTRAP=ON \
-DCLANG_VENDOR=$(VENDOR) \
-DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_VERBOSE_MAKEFILE;CMAKE_BUILD_TYPE;CMAKE_CXX_FLAGS_RELWITHDEBINFO;LLVM_LINK_LLVM_DYLIB;LLVM_INSTALL_UTILS;LLVM_VERSION_SUFFIX;LLVM_ENABLE_SPHINX;SPHINX_WARNINGS_AS_ERRORS;LLVM_BUILD_LLVM_DYLIB;LLVM_ENABLE_RTTI;LLVM_ENABLE_FFI;LIBCLANG_LIBRARY_VERSION;POLLY_BUNDLED_JSONCPP;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;LLVM_USE_PERF;LLVM_ENABLE_ASSERTIONS;LLVM_BINUTILS_INCDIR;LLVM_HOST_TRIPLE;;LLVM_COMPILER_CHECKED;COMPILER_RT_BUILD_BUILTINS;LIBOMP_LIBFLAGS;CMAKE_SHARED_LINKER_FLAGS"
-DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_VERBOSE_MAKEFILE;CMAKE_BUILD_TYPE;CMAKE_CXX_FLAGS_RELWITHDEBINFO;LLVM_LINK_LLVM_DYLIB;LLVM_INSTALL_UTILS;LLVM_VERSION_SUFFIX;LLVM_ENABLE_SPHINX;SPHINX_WARNINGS_AS_ERRORS;LLVM_BUILD_LLVM_DYLIB;LLVM_ENABLE_RTTI;LLVM_ENABLE_FFI;LIBCLANG_LIBRARY_VERSION;ENABLE_LINKER_BUILD_ID;POLLY_BUNDLED_JSONCPP;LLVM_EXPERIMENTAL_TARGETS_TO_BUILD;LLVM_USE_PERF;LLVM_ENABLE_ASSERTIONS;LLVM_BINUTILS_INCDIR;LLVM_HOST_TRIPLE;;LLVM_COMPILER_CHECKED;COMPILER_RT_BUILD_BUILTINS;LIBOMP_LIBFLAGS;CMAKE_SHARED_LINKER_FLAGS"
# make
@ -683,14 +687,8 @@ override_dh_installman:
override_dh_strip:
: # Workaround some issues with stripping by using llvm's
if test ! -f $(CURDIR)/strip; then \
ln -s $(CURDIR)/debian/llvm-$(LLVM_VERSION)/usr/lib/llvm-$(LLVM_VERSION)/bin/llvm-strip $(CURDIR)/strip; \
fi
: # running out of diskspace on the buildds
find $(TARGET_BUILD) -name '*.o' -o -name '*.a' -type f | xargs -r rm -f
# strip args in case we want to use llvm-strip
#PATH=$(CURDIR)/:$$PATH LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/
ifeq (0, $(strip $(shell dpkg --compare-versions $(DH_VERSION) ge 9.20160114; echo $$?)))
: # If we don't have the right version of debhelper, don't run the option
dh_strip -p libclang$(SONAME_EXT)-$(LLVM_VERSION) --dbgsym-migration='libclang$(SONAME_EXT)-$(LLVM_VERSION)-dbg (<< 1:8~svn327768-1~)'
@ -701,17 +699,20 @@ endif
# ifeq (${LLD_ENABLE},yes)
# PATH=$(CURDIR)/:$$PATH dh_strip -p liblld-$(LLVM_VERSION) --dbg-package=liblld-$(LLVM_VERSION)-dbg
# endif
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.28 ; echo $$?),0)
rm -f $(CURDIR)/libc++-$(LLVM_VERSION)-dev/usr/lib/llvm-$(LLVM_VERSION)/lib/*/operations.cpp.o
# strip segfaults on libFuzzer.a
PATH=$(CURDIR)/:$$PATH LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/ dh_strip -a -v -XlibFuzzer.a -Xlibc++.a -Xlibc++abi.a -Xlibc++experimental.a -XlibclangTidyModernizeModule.a
else
dh_strip -a -v
endif
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) lt 2.31.1-11 ; echo $$?),0)
: # Workaround some issues with stripping by using llvm's
if test ! -f $(CURDIR)/strip; then \
ln -s $(CURDIR)/debian/llvm-$(LLVM_VERSION)/usr/lib/llvm-$(LLVM_VERSION)/bin/llvm-strip $(CURDIR)/strip; \
fi
: # strip segfaults on libFuzzer.a and other libs
PATH=$(CURDIR)/:$$PATH LD_LIBRARY_PATH=$(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/:/usr/lib/*/libfakeroot dh_strip -a -v -XlibFuzzer.a -Xlibc++.a -Xlibc++abi.a -Xlibc++experimental.a -XlibclangTidyModernizeModule.a
: # Remove the workaround
rm $(CURDIR)/strip
: # for some reasons, the +x might be removed
chmod -f +x $(CURDIR)/debian/*/usr/lib/llvm-$(LLVM_VERSION)/bin/* || true
else
dh_strip -a -v
endif
override_dh_install:
# cp $(TARGET_BUILD)/lib/libLLVM-$(LLVM_VERSION).so $(DEB_INST)/usr/lib/llvm-$(LLVM_VERSION)/lib/libLLVM-$(LLVM_VERSION).so.$(SONAME_EXT)

View File

@ -1,3 +1,3 @@
Test-Command: bash -v ./debian/qualify-clang.sh
Depends: @, cmake, g++, file
Depends: @, cmake, g++, file, clang-7-dbgsym, libclang1-7-dbgsym
Restrictions: allow-stderr