diff options
-rw-r--r-- | .SRCINFO | 22 | ||||
-rw-r--r-- | 0003-gcc-4.9-ustate.patch | 31 | ||||
-rw-r--r-- | 0004-glibc-2.31-libsanitizer.patch | 38 | ||||
-rw-r--r-- | PKGBUILD | 138 |
4 files changed, 159 insertions, 70 deletions
@@ -1,5 +1,3 @@ -# Generated by mksrcinfo v8 -# Wed Sep 13 18:03:30 UTC 2017 pkgbase = gcc49-multilib pkgdesc = The GNU Compiler Collection for multilib (4.9.x) pkgver = 4.9.4 @@ -21,13 +19,26 @@ pkgbase = gcc49-multilib provides = gcc49 conflicts = gcc49 options = !emptydirs + 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 + md5sums = 91f27a8002df38cf2ca971ca80feb9d7 + md5sums = 4a0dc704f1d92ceb4dd8608811241cec + md5sums = e787a03f0c38434490515a5823eca0b8 + md5sums = c64d1e20274ff4fbfacdd11bef2e1273 + md5sums = b27134678242f358c9b81cd73a1bcba1 + md5sums = 931ee06584a47f3bdb5ea57fa2d5f76f sha256sums = 6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092 sha256sums = f4b3dbee9712850006e44f0db2103441ab3d13b406f77996d1df19ee89d11fb4 sha256sums = 02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196 @@ -35,6 +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) @@ -26,26 +26,39 @@ makedepends+=('lib32-glibc>=2.20' 'texinfo') checkdepends=('dejagnu' 'inetutils') provides=("gcc${_pkgver//\./}") # no version as it is completely contained in the name conflicts=("gcc${_pkgver//\./}") -options=('!emptydirs') +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' + 'e34fca0540d840e5d0f6427e98c92252' + '91f27a8002df38cf2ca971ca80feb9d7' + '4a0dc704f1d92ceb4dd8608811241cec' + 'e787a03f0c38434490515a5823eca0b8' + 'c64d1e20274ff4fbfacdd11bef2e1273' + 'b27134678242f358c9b81cd73a1bcba1' + '931ee06584a47f3bdb5ea57fa2d5f76f') sha256sums=('6c11d292cd01b294f9f84c9a59c230d80e9e4a47e5c6355f046bb36d4f358092' 'f4b3dbee9712850006e44f0db2103441ab3d13b406f77996d1df19ee89d11fb4' '02500a4edd14875f94fe84cbeda4290425cb0c1c2474c6f75d75a303d64b4196' 'd775a053fad367f5490111038fde7c875b4e842919d2d197f95b915e1ae562a9' '44ea987c9ee1ab3234f20eca51f8d6c68910b579e63ec58ff7a0dde38093f6ba' 'eb59578cbf32da94d7a11fabf83950c580f0f6fb58f893426d6a258b7e44351e' - '9ce8a94aad61a26839687734b48f0628e610663cd0d5ad9edfc6e571cf294bac') - -PKGEXT='.pkg.tar.gz' + '9ce8a94aad61a26839687734b48f0628e610663cd0d5ad9edfc6e571cf294bac' + '11f2adf34c32ec2d121a14cd10751d79c77aebe7e4592d4cfaa7190953bdf782' + '526568532a879f2755fb7e834c1c55caae53252713562e21a51c861463cb5931') if [ -n "${_snapshot:-}" ]; then _basedir="gcc-${_snapshot}" @@ -90,10 +103,18 @@ prepare() { 'x86_64') sed -e '/m64=/ s/lib64/lib/' -i 'gcc/config/i386/t-linux64' ;; esac - echo "${pkgver}" > 'gcc/BASE-VER' + patch -Nbup0 -i "${srcdir}/0003-gcc-4.9-ustate.patch" + patch -p1 -i "${srcdir}/0004-glibc-2.31-libsanitizer.patch" - # hack! - some configure tests for header files using "$CPP $CPPFLAGS" - sed -e '/^ac_cpp=/ s/\$CPPFLAGS/\$CPPFLAGS -O2/' -i {libiberty,gcc}/configure + if ! grep -qFxe "${pkgver%%_*}" 'gcc/BASE-VER'; then + echo "Version has changed from ${pkgver%%_*} to" + cat 'gcc/BASE-VER' + set +u + false + 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') rm -rf 'gcc-build' mkdir 'gcc-build' @@ -106,73 +127,59 @@ build() { cd "${_basedir}/gcc-build" if [ ! -s 'Makefile' ]; then - # Doesn't like FORTIFY_SOURCE - CPPFLAGS="${CPPFLAGS//-D_FORTIFY_SOURCE=?/}" - - # Doesn't like -fstack-protector-strong - CFLAGS="${CFLAGS//-fstack-protector-strong/-fstack-protector}" - CXXFLAGS="${CXXFLAGS//-fstack-protector-strong/-fstack-protector}" - - # using -pipe causes spurious test-suite failures - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565 - CFLAGS="${CFLAGS/-pipe/}" - CXXFLAGS="${CXXFLAGS/-pipe/}" - - # Flags from new compilers that old compilers don't recognize - CFLAGS="${CFLAGS/-fno-plt/}" - CXXFLAGS="${CXXFLAGS/-fno-plt/}" - - CFLAGS="${CFLAGS/-Wformat-overflow=[0-9]/}" - CXXFLAGS="${CXXFLAGS/-Wformat-overflow=[0-9]/}" - # The following options are one per line, mostly sorted so they are easy to diff compare to other gcc packages. - ../configure \ - --build="${CHOST}" \ - --disable-libssp \ - --disable-libstdcxx-pch \ - --disable-libunwind-exceptions \ - --enable-multilib \ - --disable-werror \ - --enable-__cxa_atexit \ - --enable-checking='release' \ - --enable-clocale='gnu' \ - --enable-cloog-backend='isl' \ - --enable-gnu-unique-object \ - --enable-install-libiberty \ - --enable-languages='c,c++,fortran,go,lto,objc,obj-c++' \ - --enable-linker-build-id \ - --enable-lto \ - --enable-plugin \ - --enable-shared \ - --enable-threads='posix' \ - --enable-version-specific-runtime-libs \ - --infodir='/usr/share/info' \ - --libdir='/usr/lib' \ - --libexecdir='/usr/lib' \ - --mandir='/usr/share/man' \ - --program-suffix="-${_pkgver}" \ - --with-bugurl='https://bugs.archlinux.org/' \ - --with-linker-hash-style='gnu' \ - --with-system-zlib \ + local _conf=( + --build="${CHOST}" + --disable-libssp + --disable-libstdcxx-pch + --disable-libunwind-exceptions + --enable-multilib + --disable-werror + --enable-__cxa_atexit + --enable-checking='release' + --enable-clocale='gnu' + --enable-cloog-backend='isl' + --enable-gnu-unique-object + --enable-install-libiberty + --enable-languages='c,c++,fortran,go,lto,objc,obj-c++' + --enable-linker-build-id + --enable-lto + --enable-plugin + --enable-shared + --enable-threads='posix' + --enable-version-specific-runtime-libs + --infodir='/usr/share/info' + --libdir='/usr/lib' + --libexecdir='/usr/lib' + --mandir='/usr/share/man' + --program-suffix="-${_pkgver}" + --with-bugurl='https://bugs.archlinux.org/' + --with-linker-hash-style='gnu' + --with-system-zlib --prefix='/usr' -# CXX='g++-6.3' CC='gcc-6.3' - + # CXX='g++-6.3' CC='gcc-6.3' # gcc-5.0 changes # --with-default-libstdcxx-abi=c++98 - before gcc-5.0 c++ rebuild # --enable-gnu-indirect-function -# --with-isl - cloog no longer needed +# --with-isl - cloog no longer needed + ) + ../configure "${_conf[@]}" + + sed -e 's/^STAGE1_CXXFLAGS.*$/& -std=gnu++11/' -i 'Makefile' fi - local _nproc="$(nproc)"; _nproc=$((_nproc>8?8:_nproc)) + # The GCC 4.9 library is otherwise found incorrectly when invoking host tools LD_PRELOAD='/usr/lib/libstdc++.so' \ - nice make -j "${_nproc}" + nice make -s + + set +u; msg 'Compile complete'; set -u # make documentation make -s -j1 -C "${CHOST}/libstdc++-v3/doc" 'doc-man-doxygen' set +u } -_fn_check() { +_check_disabled() { set -u cd "${_basedir}/gcc-build" @@ -190,18 +197,19 @@ 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 - 'x86_64') mv "${pkgdir}/usr/lib/gcc/${CHOST}"/lib*/ "${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/" ;; + 'x86_64') mv "${pkgdir}/usr/lib/gcc/${CHOST}"/lib*/ "${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver%%_*}/" ;; esac - #mv "${pkgdir}/usr/lib"/lib* "${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver}/" + #mv "${pkgdir}/usr/lib"/lib* "${pkgdir}/usr/lib/gcc/${CHOST}/${pkgver%%_*}/" # Install Runtime Library Exception install -Dpm644 '../COPYING.RUNTIME' \ |