summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO10
-rw-r--r--0003-gcc-4.9-ustate.patch31
-rw-r--r--0004-glibc-2.31-libsanitizer.patch38
-rw-r--r--PKGBUILD28
4 files changed, 97 insertions, 10 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 8843d8258448..566bef6d0275 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -22,12 +22,14 @@ pkgbase = gcc49-multilib
options = !strip
options = !buildflags
source = ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.4/gcc-4.9.4.tar.bz2
- source = http://isl.gforge.inria.fr/isl-0.12.2.tar.bz2
- source = http://www.bastoul.net/cloog/pages/download/cloog-0.18.1.tar.gz
+ source = ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.12.2.tar.bz2
+ source = ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.18.1.tar.gz
source = gcc-4.9-fix-build-with-gcc-6.patch
source = 0000-gcc-4.9.ucontext.patch
source = 0001-gcc-4.9-SIGSEGV.patch
source = 0002-gcc-4.9-__res_state.patch
+ source = 0003-gcc-4.9-ustate.patch
+ source = 0004-glibc-2.31-libsanitizer.patch
md5sums = 87c24a4090c1577ba817ec6882602491
md5sums = e039bfcfb6c2ab039b8ee69bf883e824
md5sums = e34fca0540d840e5d0f6427e98c92252
@@ -35,6 +37,8 @@ pkgbase = gcc49-multilib
md5sums = 4a0dc704f1d92ceb4dd8608811241cec
md5sums = e787a03f0c38434490515a5823eca0b8
md5sums = c64d1e20274ff4fbfacdd11bef2e1273
+ md5sums = b27134678242f358c9b81cd73a1bcba1
+ md5sums = 931ee06584a47f3bdb5ea57fa2d5f76f
sha256sums = 6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092
sha256sums = f4b3dbee9712850006e44f0db2103441ab3d13b406f77996d1df19ee89d11fb4
sha256sums = 02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196
@@ -42,5 +46,7 @@ pkgbase = gcc49-multilib
sha256sums = 44ea987c9ee1ab3234f20eca51f8d6c68910b579e63ec58ff7a0dde38093f6ba
sha256sums = eb59578cbf32da94d7a11fabf83950c580f0f6fb58f893426d6a258b7e44351e
sha256sums = 9ce8a94aad61a26839687734b48f0628e610663cd0d5ad9edfc6e571cf294bac
+ sha256sums = 11f2adf34c32ec2d121a14cd10751d79c77aebe7e4592d4cfaa7190953bdf782
+ sha256sums = 526568532a879f2755fb7e834c1c55caae53252713562e21a51c861463cb5931
pkgname = gcc49-multilib
diff --git a/0003-gcc-4.9-ustate.patch b/0003-gcc-4.9-ustate.patch
new file mode 100644
index 000000000000..064e0cf7717e
--- /dev/null
+++ b/0003-gcc-4.9-ustate.patch
@@ -0,0 +1,31 @@
+--- libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2013-12-19 13:54:11.000000000 +0100
++++ libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2018-09-16 15:23:46.141733145 +0200
+@@ -81,7 +81,6 @@
+ #include <sys/statvfs.h>
+ #include <sys/timex.h>
+ #include <sys/user.h>
+-#include <sys/ustat.h>
+ #include <linux/cyclades.h>
+ #include <linux/if_eql.h>
+ #include <linux/if_plip.h>
+@@ -163,7 +162,19 @@
+ unsigned struct_old_utsname_sz = sizeof(struct old_utsname);
+ unsigned struct_oldold_utsname_sz = sizeof(struct oldold_utsname);
+ unsigned struct_itimerspec_sz = sizeof(struct itimerspec);
+- unsigned struct_ustat_sz = sizeof(struct ustat);
++ // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which
++ // has been removed from glibc 2.28.
++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \
++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \
++ || defined(__x86_64__)
++#define SIZEOF_STRUCT_USTAT 32
++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \
++ || defined(__powerpc__) || defined(__s390__) || defined(__sparc__)
++#define SIZEOF_STRUCT_USTAT 20
++#else
++#error Unknown size of struct ustat
++#endif
++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT;
+ #endif // SANITIZER_LINUX
+
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
diff --git a/0004-glibc-2.31-libsanitizer.patch b/0004-glibc-2.31-libsanitizer.patch
new file mode 100644
index 000000000000..2a3465ab2f29
--- /dev/null
+++ b/0004-glibc-2.31-libsanitizer.patch
@@ -0,0 +1,38 @@
+--- gcc-4.9.4/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2020-03-21 17:37:23.620440276 +0100
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc 2020-03-21 17:36:36.520276053 +0100
+@@ -939,7 +939,11 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, gid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cuid);
+ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid);
++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31)
++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit
++ on many architectures. */
+ CHECK_SIZE_AND_OFFSET(ipc_perm, mode);
++#endif
+ CHECK_SIZE_AND_OFFSET(ipc_perm, __seq);
+
+ CHECK_TYPE_SIZE(shmid_ds);
+--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h 2014-10-14 21:26:42.000000000 +0200
++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h 2020-03-21 13:03:32.238797548 +0100
+@@ -154,20 +154,13 @@ namespace __sanitizer {
+ u64 __unused1;
+ u64 __unused2;
+ #elif defined(__sparc__)
+-# if defined(__arch64__)
+ unsigned mode;
+- unsigned short __pad1;
+-# else
+- unsigned short __pad1;
+- unsigned short mode;
+ unsigned short __pad2;
+-# endif
+ unsigned short __seq;
+ unsigned long long __unused1;
+ unsigned long long __unused2;
+ #else
+- unsigned short mode;
+- unsigned short __pad1;
++ unsigned int mode;
+ unsigned short __seq;
+ unsigned short __pad2;
+ #if defined(__x86_64__) && !defined(_LP64)
diff --git a/PKGBUILD b/PKGBUILD
index 3628df0f5a12..eade4e0277f8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -30,12 +30,16 @@ options=('!emptydirs' '!strip' '!buildflags')
source=(
"ftp://gcc.gnu.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.bz2"
#ftp://gcc.gnu.org/pub/gcc/snapshots/${_snapshot}/gcc-${_snapshot}.tar.bz2
- "http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2"
- "http://www.bastoul.net/cloog/pages/download/cloog-${_cloogver}.tar.gz"
+ #"http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2"
+ "ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-${_islver}.tar.bz2"
+ #"http://www.bastoul.net/cloog/pages/download/cloog-${_cloogver}.tar.gz"
+ "ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-${_cloogver}.tar.gz"
'gcc-4.9-fix-build-with-gcc-6.patch'
'0000-gcc-4.9.ucontext.patch'
'0001-gcc-4.9-SIGSEGV.patch'
'0002-gcc-4.9-__res_state.patch'
+ '0003-gcc-4.9-ustate.patch'
+ '0004-glibc-2.31-libsanitizer.patch'
)
md5sums=('87c24a4090c1577ba817ec6882602491'
'e039bfcfb6c2ab039b8ee69bf883e824'
@@ -43,14 +47,18 @@ md5sums=('87c24a4090c1577ba817ec6882602491'
'91f27a8002df38cf2ca971ca80feb9d7'
'4a0dc704f1d92ceb4dd8608811241cec'
'e787a03f0c38434490515a5823eca0b8'
- 'c64d1e20274ff4fbfacdd11bef2e1273')
+ 'c64d1e20274ff4fbfacdd11bef2e1273'
+ 'b27134678242f358c9b81cd73a1bcba1'
+ '931ee06584a47f3bdb5ea57fa2d5f76f')
sha256sums=('6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092'
'f4b3dbee9712850006e44f0db2103441ab3d13b406f77996d1df19ee89d11fb4'
'02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196'
'd775a053fad367f5490111038fde7c875b4e842919d2d197f95b915e1ae562a9'
'44ea987c9ee1ab3234f20eca51f8d6c68910b579e63ec58ff7a0dde38093f6ba'
'eb59578cbf32da94d7a11fabf83950c580f0f6fb58f893426d6a258b7e44351e'
- '9ce8a94aad61a26839687734b48f0628e610663cd0d5ad9edfc6e571cf294bac')
+ '9ce8a94aad61a26839687734b48f0628e610663cd0d5ad9edfc6e571cf294bac'
+ '11f2adf34c32ec2d121a14cd10751d79c77aebe7e4592d4cfaa7190953bdf782'
+ '526568532a879f2755fb7e834c1c55caae53252713562e21a51c861463cb5931')
if [ -n "${_snapshot:-}" ]; then
_basedir="gcc-${_snapshot}"
@@ -95,6 +103,9 @@ prepare() {
'x86_64') sed -e '/m64=/ s/lib64/lib/' -i 'gcc/config/i386/t-linux64' ;;
esac
+ patch -Nbup0 -i "${srcdir}/0003-gcc-4.9-ustate.patch"
+ patch -p1 -i "${srcdir}/0004-glibc-2.31-libsanitizer.patch"
+
if ! grep -qFxe "${pkgver%%_*}" 'gcc/BASE-VER'; then
echo "Version has changed from ${pkgver%%_*} to"
cat 'gcc/BASE-VER'
@@ -103,7 +114,7 @@ prepare() {
fi
# remove -V and -qversion as their aren't supported in gcc7
- sed -e 's/ -V -qversion/ /g' -i $(grep --include='configure' -lrFe '-V -qversion')
+ #sed -e 's/ -V -qversion/ /g' -i $(grep --include='configure' -lrFe '-V -qversion')
rm -rf 'gcc-build'
mkdir 'gcc-build'
@@ -122,7 +133,6 @@ build() {
--disable-libssp
--disable-libstdcxx-pch
--disable-libunwind-exceptions
- --disable-libsanitizer
--enable-multilib
--disable-werror
--enable-__cxa_atexit
@@ -155,9 +165,10 @@ build() {
)
../configure "${_conf[@]}"
- sed -e 's/^STAGE1_CXXFLAGS.*$/& -std=gnu++11/' -i 'Makefile'
+ sed -e 's/^STAGE1_CXXFLAGS.*$/& -std=gnu++11/' -i 'Makefile'
fi
+ # The GCC 4.9 library is otherwise found incorrectly when invoking host tools
LD_PRELOAD='/usr/lib/libstdc++.so' \
nice make -s
@@ -186,12 +197,13 @@ package() {
set -u
cd "${_basedir}/gcc-build"
+ # The GCC 4.9 library is otherwise found incorrectly zhen invoking host tools
LD_PRELOAD='/usr/lib/libstdc++.so' \
make -j1 DESTDIR="${pkgdir}" install
## Lazy way of dealing with conflicting man and info pages and locales...
rm -rf "${pkgdir}/usr"/{share,include}/
- find "${pkgdir}/" -name '*iberty*' -exec rm '{}' '+'
+ find "${pkgdir}/" -name '*iberty*' -delete
# Move potentially conflicting stuff to version specific subdirectory
case "${CARCH}" in