summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO22
-rw-r--r--0003-gcc-4.9-ustate.patch31
-rw-r--r--0004-glibc-2.31-libsanitizer.patch38
-rw-r--r--PKGBUILD138
4 files changed, 159 insertions, 70 deletions
diff --git a/.SRCINFO b/.SRCINFO
index b359f5990a32..566bef6d0275 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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)
diff --git a/PKGBUILD b/PKGBUILD
index d8fe36f7bfb0..eade4e0277f8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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' \