Merge branch '7' of salsa.debian.org:pkg-llvm-team/llvm-toolchain into 7

This commit is contained in:
Sylvestre Ledru 2018-08-27 10:59:28 +02:00
commit b43597d581
7 changed files with 133 additions and 28 deletions

4
debian/NEWS vendored
View File

@ -1,5 +1,7 @@
llvm-toolchain-snapshot (1:7~svn322880-1) unstable; urgency=medium
llvm-toolchain-7 (1:7-1) unstable; urgency=medium
* From version 7, llvm-toolchain also provides libc++, libc++abi
and OpenMP packages
* Packages, binaries and libraries have been renamed.
Instead of the X.Y naming, we moved to X to match the
naming from upstream.

16
debian/changelog vendored
View File

@ -1,3 +1,19 @@
llvm-toolchain-7 (1:7~+rc2-1~exp2) experimental; urgency=medium
* Force sphinx to be >> 1.2.3
* also ignore libc++experimental.a on dh_strip (fails on stretch)
* Make libc++-7-dev & libc++abi-7-dev coinstallable
[ John Paul Adrian Glaubitz ]
* Don't build with ld.gold on powerpcspe
* Disable polly on powerpcspe
* Add upstream patch to make rustc build on powerpc
[ Gianfranco Costamagna ]
* Enable lld on ppc64el
-- Sylvestre Ledru <sylvestre@debian.org> Fri, 24 Aug 2018 15:19:54 +0200
llvm-toolchain-7 (1:7~+rc2-1~exp1) experimental; urgency=medium
* New snapshot release

37
debian/control vendored
View File

@ -6,7 +6,8 @@ Uploaders: Sylvestre Ledru <sylvestre@debian.org>
Build-Depends: debhelper (>= 9.0), flex, bison, dejagnu, tcl, expect,
cmake, perl, libtool, chrpath, texinfo, sharutils, libffi-dev (>= 3.0.9),
lsb-release, patchutils, diffstat, xz-utils, python-dev,
libedit-dev, libncurses5-dev, swig, python-six, python-sphinx, binutils-dev,
libedit-dev, libncurses5-dev, swig, python-six, python-sphinx (>= 1.3.6),
binutils-dev,
libjsoncpp-dev, pkg-config,
lcov, procps, help2man, zlib1g-dev,
g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel powerpc ppc64 s390 s390x sparc sparc64 x32],
@ -378,8 +379,8 @@ Description: Modular compiler and toolchain technologies, examples
# ------------- lld -------------
Package: lld-7
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel
# ia64 mips mipsel hurd powerpc ppc64el have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32
# ia64 hurd powerpc have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm7 (= ${binary:Version}), llvm-7-dev
Pre-Depends: ${misc:Pre-Depends}
Description: LLVM-based linker
@ -388,8 +389,8 @@ Description: LLVM-based linker
Project.
Package: liblld-7
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel
# ia64 mips mipsel hurd powerpc ppc64el have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32
# ia64 hurd powerpc have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm7 (= ${binary:Version})
Pre-Depends: ${misc:Pre-Depends}
Section: libs
@ -402,8 +403,8 @@ Description: LLVM-based linker, library
Package: liblld-7-dev
Section: libdevel
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32 mips mipsel
# ia64 mips mipsel hurd powerpc ppc64el have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc alpha hppa m68k powerpcspe ppc64 sh4 sparc64 x32
# ia64 hurd powerpc have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, lld-7 (= ${binary:Version}),
liblld-7 (= ${binary:Version})
Pre-Depends: ${misc:Pre-Depends}
@ -418,8 +419,8 @@ Description: LLVM-based linker, header files
# ------------- lldb -------------
Package: lldb-7
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32
# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm7 (= ${binary:Version}), llvm-7-dev,
python-lldb-7
Pre-Depends: ${misc:Pre-Depends}
@ -429,8 +430,8 @@ Description: Next generation, high-performance debugger
Project, such as the Clang expression parser and LLVM disassembler.
Package: liblldb-7
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32
# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, libllvm7 (= ${binary:Version})
Pre-Depends: ${misc:Pre-Depends}
Section: libs
@ -445,8 +446,8 @@ Description: Next generation, high-performance debugger, library
Package: python-lldb-7
Section: python
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32
# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, liblldb-7-dev, python, python-six
Conflicts: python-lldb-3.8, python-lldb-3.9, python-lldb-x.y
Replaces: python-lldb-x.y
@ -462,8 +463,8 @@ Description: Next generation, high-performance debugger, python lib
Package: liblldb-7-dev
Section: libdevel
Architecture: amd64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32 mips mipsel arm64 ppc64el
# ia64 mips mipsel hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Architecture: amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el kfreebsd-amd64 kfreebsd-i386 s390 sparc hppa m68k sh4 x32
# ia64 hurd powerpc powerpcspe ppc64 alpha s390x sparc64 have been removed
Depends: ${shlibs:Depends}, ${misc:Depends}, lldb-7 (= ${binary:Version})
Replaces: lldb-7-dev (<= 7~svn215195-2)
Breaks: lldb-7-dev (<< 7~svn215195-2)
@ -589,9 +590,9 @@ Section: libdevel
Architecture: any
Multi-Arch: same
Depends: libc++abi1-7 (= ${binary:Version}), ${misc:Depends}
Replaces: libc++-dev (<= 6.0.1-1), libc++-7-dev, libc++abi-dev (<= 6.0.1-1)
Breaks: libc++-dev (<= 6.0.1-1), libc++-7-dev, libc++abi-dev (<= 6.0.1-1)
Provides: libc++-dev, libc++-7-dev, libc++abi-dev
Replaces: libc++-dev (<= 6.0.1-1), libc++abi-dev (<= 6.0.1-1)
Breaks: libc++-dev (<= 6.0.1-1), libc++abi-dev (<= 6.0.1-1)
Provides: libc++abi-dev
Description: LLVM low level support for a standard C++ library (development files)
libc++abi is another implementation of low level support for a standard C++
library.

65
debian/patches/D51108.diff vendored Normal file
View File

@ -0,0 +1,65 @@
Index: llvm-toolchain-6.0-6.0.1/lib/Target/PowerPC/PPCISelLowering.cpp
===================================================================
--- llvm-toolchain-6.0-6.0.1.orig/lib/Target/PowerPC/PPCISelLowering.cpp
+++ llvm-toolchain-6.0-6.0.1/lib/Target/PowerPC/PPCISelLowering.cpp
@@ -3351,9 +3351,14 @@
// Argument stored in memory.
assert(VA.isMemLoc());
+ // Get the extended size of the argument type in stack
unsigned ArgSize = VA.getLocVT().getStoreSize();
- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(),
- isImmutable);
+ // Get the actual size of the argument type
+ unsigned ObjSize = VA.getValVT().getStoreSize();
+ unsigned ArgOffset = VA.getLocMemOffset();
+ // Stack objects in PPC32 are right justified.
+ ArgOffset += ArgSize - ObjSize;
+ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable);
// Create load nodes to retrieve arguments from the stack.
SDValue FIN = DAG.getFrameIndex(FI, PtrVT);
@@ -5303,10 +5308,11 @@
Arg = PtrOff;
}
- if (VA.isRegLoc()) {
- if (Arg.getValueType() == MVT::i1)
- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg);
+ // Ensure callee will get either 0x00000001 or 0x00000000.
+ if (Arg.getValueType() == MVT::i1)
+ Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg);
+ if (VA.isRegLoc()) {
seenFloatArg |= VA.getLocVT().isFloatingPoint();
// Put argument in a physical register.
RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
Index: llvm-toolchain-6.0-6.0.1/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
===================================================================
--- /dev/null
+++ llvm-toolchain-6.0-6.0.1/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
@@ -0,0 +1,24 @@
+; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s
+target triple = "powerpc-unknown-linux-gnu"
+
+define zeroext i1 @check_callee(
+ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext,
+ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext,
+ i1 zeroext %s1
+) {
+ call void @check_caller(
+ i1 zeroext true, i1 zeroext true, i1 zeroext true, i1 zeroext true,
+ i1 zeroext true, i1 zeroext true, i1 zeroext true, i1 zeroext true,
+ i1 zeroext %s1)
+ ret i1 true
+}
+
+; CHECK-LABEL: @check_callee
+; CHECK: lbz {{[0-9]+}}, 27(1)
+; CHECK: stw {{[0-9]+}}, 8(1)
+
+declare void @check_caller(
+ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext,
+ i1 zeroext, i1 zeroext, i1 zeroext, i1 zeroext,
+ i1 zeroext
+)

View File

@ -58,7 +58,7 @@ impl-path-hurd.diff
openmp-check-execstack.diff
openmp-soname.diff
openmp-mips-affinity.patch
D51108.diff
# libcxx
libcxxabi-test-don-t-fail-extended-long-double.patch

View File

@ -187,9 +187,8 @@ int main(void) {
clang-$VERSION foo.c -fopenmp -o o
./o > /dev/null
if test ! -f /usr/lib/llvm-$VERSION/lib/libomp.so; then
echo "Install libomp-$VERSION-dev";
if test ! -f /usr/lib/llvm-$VERSION/include/c++/v1/vector; then
echo "Install libc++-$VERSION-dev";
exit -1;
fi
@ -221,12 +220,34 @@ if ! ldd o 2>&1|grep -q libc++abi.so.1; then
echo "not linked against libc++abi.so.1"
exit -1
fi
./o > /dev/null
clang++-$VERSION -std=c++11 -stdlib=libc++ foo.cpp -o o
./o > /dev/null
clang++-$VERSION -std=c++14 -stdlib=libc++ foo.cpp -lc++experimental -o o
./o > /dev/null
if test ! -f /usr/lib/llvm-$VERSION/include/cxxabi.h; then
echo "Install libc++abi-$VERSION-dev";
exit -1;
fi
# Force the usage of libc++abi
clang++-$VERSION -stdlib=libc++ -lc++abi foo.cpp -o o
./o > /dev/null
if ! ldd o 2>&1|grep -q libc++abi.so.1; then
echo "not linked against libc++abi.so.1"
exit -1
fi
# Use the libc++abi and uses the libstc++ headers
clang++-$VERSION -lc++abi foo.cpp -o o
./o > /dev/null
if ! ldd o 2>&1|grep -q libstdc++.so.; then
echo "not linked against libstdc++"
exit -1
fi
# fs from C++17
echo '
#include <filesystem>

10
debian/rules vendored
View File

@ -57,7 +57,7 @@ ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' bin
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) lt 7.1.0-7~ || \
dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' g++-$(GCC_VERSION)) ge 7.2.0-2; echo $$?),0)
# Only pass -gsplit-dwarf with working version of gcc 7
# More: https://bugs.llvm.org/show_bug.cgi?id=34140 & https://bugs.debian.org/873709
# More: https://bugs.llvm.org/show_bug.cgi?id=34140 & https://bugs.debian.org/873609
CXXFLAGS_EXTRA += -gsplit-dwarf
else
$(error "Broken gcc version for -gsplit-dwarf support. Please use < gcc 7 or >= 7.2.0-2")
@ -95,7 +95,7 @@ else
control_vars = '-Vdep:devlibs=libstdc++6-$(GCC_VERSION)-dev'
endif
BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 powerpcspe ppc64 ppc64el sparc sparc64 x32 s390x
BINUTILS_GOLD_ARCHS := amd64 arm64 armhf i386 ppc64 ppc64el sparc sparc64 x32 s390x
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.23.1-1~exp3 ; echo $$?),0)
ifneq (,$(filter $(DEB_HOST_ARCH),$(BINUTILS_GOLD_ARCHS)))
# -fused-ld=gold enables the gold linker (but is not supported by all archs / distro)
@ -107,7 +107,7 @@ endif
# Enable polly (or not)
POLLY_ENABLE=yes
ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc s390x))
ifeq (,$(filter-out $(DEB_HOST_ARCH), powerpc powerpcspe s390x))
POLLY_ENABLE=no
endif
@ -157,7 +157,7 @@ else
endif
LLDB_ENABLE=yes
LLDB_DISABLE_ARCHS := hurd-i386 ia64 mips64el powerpc powerpcspe ppc64 s390x sparc64
LLDB_DISABLE_ARCHS := hurd-i386 ia64 powerpc powerpcspe ppc64 s390x sparc64
# hurd has threading issues
ifeq (,$(filter-out $(LLDB_DISABLE_ARCHS), $(DEB_HOST_ARCH)))
# Disable LLDB for this arch.
@ -609,7 +609,7 @@ endif
# endif
ifeq ($(shell dpkg --compare-versions $(shell dpkg-query -W -f '$${Version}' binutils) ge 2.28 ; echo $$?),0)
# strip segfaults on libFuzzer.a
dh_strip -a -v -XlibFuzzer.a -Xlibc++.a -Xlibc++abi.a
dh_strip -a -v -XlibFuzzer.a -Xlibc++.a -Xlibc++abi.a -Xlibc++experimental.a
else
dh_strip -a -v
endif