diff options
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | 0003-gcc-4.9-ustate.patch | 31 | ||||
-rw-r--r-- | 0004-glibc-2.31-libsanitizer.patch | 38 | ||||
-rw-r--r-- | PKGBUILD | 28 |
4 files changed, 97 insertions, 10 deletions
@@ -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) @@ -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 |