diff options
author | Vladislav Nepogodin | 2022-07-06 18:54:16 +0400 |
---|---|---|
committer | Vladislav Nepogodin | 2022-07-06 18:54:16 +0400 |
commit | 944688993f865a873932de83f78b0eb72fd5f862 (patch) | |
tree | 3a519220e7a1538b9df8c3b9362e45e9e0d73647 | |
parent | 086f6942a020081963627d40653d4c8648e8ce4e (diff) | |
download | aur-944688993f865a873932de83f78b0eb72fd5f862.tar.gz |
🔄 Sync with gcc-git
-rw-r--r-- | .SRCINFO | 110 | ||||
-rw-r--r-- | PKGBUILD | 356 | ||||
-rw-r--r-- | fs64270.patch | 26 | ||||
-rw-r--r-- | gcc11-Wno-format-security.patch | 27 | ||||
-rw-r--r-- | gdc_phobos_path.patch | 14 | ||||
-rw-r--r-- | ipa-fix-ICE-in-get_default_value.patch | 80 | ||||
-rw-r--r-- | ipa-fix-bit-CPP-when-combined-with-IPA-bit-CP.patch | 147 |
7 files changed, 250 insertions, 510 deletions
@@ -1,132 +1,150 @@ pkgbase = gccrs-git - pkgdesc = The GNU Compiler Collection with rust support - pkgver = 12.0.0_r189195.gca0b06f86fd + pkgdesc = The GNU Compiler Collection with rust front-end + pkgver = 13.0.0_r193646.g3164de6ac1b pkgrel = 1 url = https://github.com/Rust-GCC/gccrs arch = x86_64 - license = GPL + license = GPL3 license = LGPL license = FDL license = custom checkdepends = dejagnu + checkdepends = expect checkdepends = inetutils - makedepends = git + checkdepends = python-pytest + checkdepends = tcl makedepends = binutils - makedepends = libmpc - makedepends = gcc-ada makedepends = doxygen + makedepends = gcc-ada + makedepends = git makedepends = lib32-glibc makedepends = lib32-gcc-libs - makedepends = python + makedepends = libisl + makedepends = libmpc makedepends = libxcrypt + makedepends = python + makedepends = zstd options = !emptydirs + options = !lto + options = !debug source = gccrs::git+https://github.com/Rust-GCC/gccrs.git - source = https://mirrors.slackware.com/slackware/slackware64-current/source/l/isl/isl-0.24.tar.xz source = c89 source = c99 - source = gdc_phobos_path.patch - source = fs64270.patch - source = ipa-fix-bit-CPP-when-combined-with-IPA-bit-CP.patch - source = ipa-fix-ICE-in-get_default_value.patch source = gcc-ada-repro.patch - source = gcc11-Wno-format-security.patch - sha256sums = SKIP sha256sums = SKIP sha256sums = de48736f6e4153f03d0a5d38ceb6c6fdb7f054e8f47ddd6af0a3dbf14f27b931 sha256sums = 2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a - sha256sums = c86372c207d174c0918d4aedf1cb79f7fc093649eb1ad8d9450dccc46849d308 - sha256sums = 1ef190ed4562c4db8c1196952616cd201cfdd788b65f302ac2cc4dabb4d72cee - sha256sums = fcb11c9bcea320afd202b031b48f8750aeaedaa4b0c5dddcd2c0a16381e927e4 - sha256sums = 42865f2af3f48140580c4ae70b6ea03b5bdca0f29654773ef0d42ce00d60ea16 sha256sums = 1773f5137f08ac1f48f0f7297e324d5d868d55201c03068670ee4602babdef2f - sha256sums = 504e4b5a08eb25b6c35f19fdbe0c743ae4e9015d0af4759e74150006c283585e pkgname = gccrs-git - pkgdesc = The GNU Compiler Collection - C and C++ frontends + pkgdesc = The GNU Compiler Collection - C and C++ frontends (git version) groups = base-devel-git - depends = gccrs-libs-git=12.0.0_r189195.gca0b06f86fd-1 + depends = gccrs-libs-git=13.0.0_r193646.g3164de6ac1b-1 depends = binutils>=2.28 depends = libmpc + depends = zstd + depends = libisl.so optdepends = lib32-gcc-libs-git: for generating code for 32-bit ABI provides = gcc provides = gcc-multilib provides = gcc-multilib-git conflicts = gcc + conflicts = gcc-git replaces = gcc-multilib-git options = !emptydirs options = staticlibs + options = debug pkgname = gccrs-libs-git - pkgdesc = Runtime libraries shipped by GCC - depends = glibc - provides = gccrs-libs=12.0.0_r189195.gca0b06f86fd-1 + pkgdesc = Runtime libraries shipped by GCC (git version) + depends = glibc>=2.27 + provides = gcc-libs-git=13.0.0_r193646.g3164de6ac1b-1 + provides = gcc-libs provides = gcc-multilib provides = gcc-multilib-git provides = libgo.so provides = libgfortran.so - provides = libgphobos.so provides = libubsan.so provides = libasan.so provides = libtsan.so provides = liblsan.so + conflicts = gcc-libs + conflicts = gcc-libs-git replaces = gcc-multilib-git - replaces = libgphobos-git + options = !emptydirs + options = !strip + +pkgname = lib32-gccrs-libs-git + pkgdesc = 32-bit runtime libraries shipped by GCC (git version) + groups = multilib-devel-git + depends = lib32-glibc>=2.27 + provides = lib32-gcc-libs + provides = libgo.so + provides = libgfortran.so + provides = libubsan.so + provides = libasan.so + conflicts = lib32-gcc-libs + conflicts = lib32-gcc-libs-git options = !emptydirs options = !strip pkgname = gccrs-fortran-git - pkgdesc = Fortran front-end for GCC - depends = gcc-git=12.0.0_r189195.gca0b06f86fd-1 + pkgdesc = Fortran front-end for GCC (git version) + depends = gccrs-git=13.0.0_r193646.g3164de6ac1b-1 + depends = libisl.so provides = gcc-fortran provides = gcc-multilib provides = gcc-multilib-git conflicts = gcc-fortran + conflicts = gcc-fortran-git replaces = gcc-multilib-git pkgname = gccrs-objc-git - pkgdesc = Objective-C front-end for GCC - depends = gcc-git=12.0.0_r189195.gca0b06f86fd-1 + pkgdesc = Objective-C front-end for GCC (git version) + depends = gccrs-git=13.0.0_r193646.g3164de6ac1b-1 + depends = libisl.so provides = gcc-multilib provides = gcc-multilib-git conflicts = gcc-objc + conflicts = gcc-objc-git replaces = gcc-multilib-git pkgname = gccrs-ada-git - pkgdesc = Ada front-end for GCC (GNAT) - depends = gcc-git=12.0.0_r189195.gca0b06f86fd-1 + pkgdesc = Ada front-end for GCC (GNAT) (git version) + depends = gccrs-git=13.0.0_r193646.g3164de6ac1b-1 + depends = libisl.so provides = gcc-ada provides = gcc-multilib provides = gcc-multilib-git conflicts = gcc-ada + conflicts = gcc-ada-git replaces = gcc-multilib-git options = !emptydirs options = staticlibs pkgname = gccrs-go-git - pkgdesc = Go front-end for GCC - depends = gcc-git=12.0.0_r189195.gca0b06f86fd-1 - provides = go=1.12.2 + pkgdesc = Go front-end for GCC (git version) + depends = gccrs-git=13.0.0_r193646.g3164de6ac1b-1 + depends = libisl.so + provides = go=1.18 provides = gcc-multilib provides = gcc-multilib-git conflicts = gcc-go + conflicts = gcc-go-git conflicts = go conflicts = go-git replaces = gcc-multilib-git -pkgname = gccrs-d-git - pkgdesc = D frontend for GCC - depends = gcc-git=12.0.0_r189195.gca0b06f86fd-1 - provides = gcc-d - provides = gdc - provides = gdc-git - conflicts = gcc-d - replaces = gdc-git - options = staticlibs - pkgname = gccrs-rust-git pkgdesc = Rust frontend for GCC - depends = gccrs-git=12.0.0_r189195.gca0b06f86fd-1 + depends = gccrs-git=13.0.0_r193646.g3164de6ac1b-1 + depends = libisl.so provides = gcc-rust provides = gcc-rust-git conflicts = gcc-rust replaces = gcc-rust-git + +pkgname = libgccrsjit-git + pkgdesc = Just-In-Time Compilation with GCC backend (git version) + depends = gccrs-git=13.0.0_r193646.g3164de6ac1b-1 + depends = libisl.so @@ -1,41 +1,51 @@ # Maintainer: Vladislav Nepogodin <nepogodin.vlad@gmail.com> # Contributor: João Figueiredo & chaotic-aur <islandc0der@chaotic.cx> +# toolchain build order: linux-api-headers->glibc->binutils->gcc->glibc->binutils->gcc +# NOTE: libtool requires rebuilt with each new gcc version + +# You probably don't need support for all the languages, feel free to remove the ones you don't; +# Just edit the --enable-languages option as well as the pkgname array, and comment out the pkg functions :) + pkgbase=gccrs-git -pkgname=({gccrs,gccrs-libs,gccrs-fortran,gccrs-objc,gccrs-ada,gccrs-go,gccrs-d,gccrs-rust}-git) -pkgver=12.0.0_r189195.gca0b06f86fd +pkgname=({gccrs,gccrs-libs,lib32-gccrs-libs,gccrs-fortran,gccrs-objc,gccrs-ada,gccrs-go,gccrs-rust,libgccrsjit}-git) +pkgver=13.0.0_r193646.g3164de6ac1b _majorver=${pkgver%%.*} -_isl_link=https://mirrors.slackware.com/slackware/slackware64-current/source/l/isl -_isl=$(curl -s "$_isl_link/?C=M;O=A" | grep "isl-.*tar\.xz" | tail -1 | sed -e 's/.*href="//' -e 's/\.mirrorlist.*//') pkgrel=1 -pkgdesc='The GNU Compiler Collection with rust support' -arch=($CARCH) -license=(GPL LGPL FDL custom) +pkgdesc='The GNU Compiler Collection with rust front-end' +arch=(x86_64) +license=(GPL3 LGPL FDL custom) url='https://github.com/Rust-GCC/gccrs' -makedepends=(git binutils libmpc gcc-ada doxygen lib32-glibc lib32-gcc-libs python libxcrypt) -checkdepends=(dejagnu inetutils) -options=(!emptydirs) +makedepends=( + binutils + doxygen + gcc-ada + git + lib32-glibc + lib32-gcc-libs + libisl + libmpc + libxcrypt + python + zstd +) +checkdepends=( + dejagnu + expect + inetutils + python-pytest + tcl +) +options=(!emptydirs !lto !debug) _libdir=usr/lib/gcc/$CHOST/${pkgver%_*} - source=("${pkgname%-git}::git+https://github.com/Rust-GCC/gccrs.git" - $_isl_link/$_isl c89 c99 - gdc_phobos_path.patch - fs64270.patch - ipa-fix-bit-CPP-when-combined-with-IPA-bit-CP.patch - ipa-fix-ICE-in-get_default_value.patch gcc-ada-repro.patch - gcc11-Wno-format-security.patch) +) sha256sums=('SKIP' - 'SKIP' 'de48736f6e4153f03d0a5d38ceb6c6fdb7f054e8f47ddd6af0a3dbf14f27b931' '2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a' - 'c86372c207d174c0918d4aedf1cb79f7fc093649eb1ad8d9450dccc46849d308' - '1ef190ed4562c4db8c1196952616cd201cfdd788b65f302ac2cc4dabb4d72cee' - 'fcb11c9bcea320afd202b031b48f8750aeaedaa4b0c5dddcd2c0a16381e927e4' - '42865f2af3f48140580c4ae70b6ea03b5bdca0f29654773ef0d42ce00d60ea16' - '1773f5137f08ac1f48f0f7297e324d5d868d55201c03068670ee4602babdef2f' - '504e4b5a08eb25b6c35f19fdbe0c743ae4e9015d0af4759e74150006c283585e') + '1773f5137f08ac1f48f0f7297e324d5d868d55201c03068670ee4602babdef2f') pkgver() { cd ${pkgbase%-git} @@ -45,134 +55,124 @@ pkgver() { prepare() { cd gccrs - # link isl for in-tree build - ln -s ../${_isl%.tar.xz} isl ||: - # Do not run fixincludes sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in # Arch Linux installs x86_64 libraries /lib sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64 - # hack! - some configure tests for header files using "$CPP $CPPFLAGS" - sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {libiberty,gcc}/configure - - # D hacks - patch -p1 -i "$srcdir/gdc_phobos_path.patch" - # Reproducible gcc-ada patch -Np0 < "$srcdir/gcc-ada-repro.patch" - # configure.ac: When adding -Wno-format, also add -Wno-format-security - patch -Np0 < "$srcdir/gcc11-Wno-format-security.patch" - mkdir -p "$srcdir/gccrs-build" + mkdir -p "$srcdir/libgccjit-build" } build() { + local _confflags=( + --prefix=/usr + --libdir=/usr/lib + --libexecdir=/usr/lib + --mandir=/usr/share/man + --infodir=/usr/share/info + --with-bugurl=https://bugs.archlinux.org/ + --with-linker-hash-style=gnu + --with-system-zlib + --enable-__cxa_atexit + --enable-cet=auto + --enable-checking=release + --enable-clocale=gnu + --enable-default-pie + --enable-default-ssp + --enable-gnu-indirect-function + --enable-gnu-unique-object + --enable-linker-build-id + --enable-lto + --enable-multilib + --enable-plugin + --enable-shared + --enable-threads=posix + --disable-libssp + --disable-libstdcxx-pch + --disable-werror + --with-build-config=bootstrap-lto + --enable-link-serialization=1 + ) cd gccrs-build - # using -pipe causes spurious test-suite failures - # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48565 - CFLAGS=${CFLAGS/-pipe} - CXXFLAGS=${CXXFLAGS/-pipe} - - # See https://aur.archlinux.org/pkgbase/gcc-git/#comment-822240 - CXXFLAGS=${CXXFLAGS/-Werror=format-security} - - # avoid warning _FORTIFY_SOURCE requires compiling with optimization (-O) - CPPFLAGS+=" -O2" - CPPFLAGS=${CPPFLAGS/-Werror=format-security} - - "$srcdir/gccrs/configure" --prefix=/usr \ - --libdir=/usr/lib \ - --libexecdir=/usr/lib \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --with-bugurl=https://bugs.archlinux.org/ \ - --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d,rust \ - --with-isl \ - --with-linker-hash-style=gnu \ - --with-system-zlib \ - --enable-__cxa_atexit \ - --enable-cet=auto \ - --enable-checking=release \ - --enable-clocale=gnu \ - --enable-default-pie \ - --enable-default-ssp \ - --enable-gnu-indirect-function \ - --enable-gnu-unique-object \ - --enable-install-libiberty \ - --enable-linker-build-id \ - --enable-lto \ - --enable-multilib \ - --enable-plugin \ - --enable-shared \ - --enable-threads=posix \ - --disable-libssp \ - --disable-libstdcxx-pch \ - --disable-libunwind-exceptions \ - --disable-werror \ - --disable-bootstrap \ - gdc_include_dir=/usr/include/dlang/gdc - - make + # Credits @allanmcrae + # https://github.com/allanmcrae/toolchain/blob/f18604d70c5933c31b51a320978711e4e6791cf1/gcc/PKGBUILD + # TODO: properly deal with the build issues resulting from this + CFLAGS=${CFLAGS/-Werror=format-security/} + CXXFLAGS=${CXXFLAGS/-Werror=format-security/} + + "$srcdir/gccrs/configure" \ + --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,rust \ + --enable-bootstrap \ + "${_confflags[@]:?_confflags unset}" + + # see https://bugs.archlinux.org/task/71777 for rationale re *FLAGS handling + make -O STAGE1_CFLAGS="-O2" \ + BOOT_CFLAGS="$CFLAGS" \ + BOOT_LDFLAGS="$LDFLAGS" \ + LDFLAGS_FOR_TARGET="$LDFLAGS" \ + bootstrap # make documentation - make -C $CHOST/libstdc++-v3/doc doc-man-doxygen + make -O -C $CHOST/libstdc++-v3/doc doc-man-doxygen + + # Build libgccjit separately, to avoid building all compilers with --enable-host-shared + # which brings a performance penalty + cd "${srcdir}"/libgccrsjit-build + + "$srcdir/gccrs/configure" \ + --enable-languages=jit \ + --disable-bootstrap \ + --enable-host-shared \ + "${_confflags[@]:?_confflags unset}" + + cp -a gccrs/libgccjit.so* ../gccrs-build/gcc/ } check() { cd gccrs-build - # disable libphobos test to avoid segfaults and other unfunny ways to waste my time - sed -i '/maybe-check-target-libphobos \\/d' Makefile - - make check-rust || true + make -O -k check-rust || true "$srcdir/gccrs/contrib/test_summary" } package_gccrs-libs-git() { - pkgdesc='Runtime libraries shipped by GCC' - depends=(glibc) - options+=(!strip) - provides=("gccrs-libs=$pkgver-$pkgrel" gcc-multilib{,-git} libgo.so libgfortran.so libgphobos.so - libubsan.so libasan.so libtsan.so liblsan.so) - replaces=(gcc-multilib-git libgphobos-git) - - cd gccrs-build/$CHOST - make -C libgcc DESTDIR="$pkgdir" install-shared + pkgdesc='Runtime libraries shipped by GCC (git version)' + depends=('glibc>=2.27') + options=(!emptydirs !strip) + provides=("gcc-libs-git=$pkgver-$pkgrel" gcc-libs gcc-multilib{,-git} libgo.so libgfortran.so + libubsan.so libasan.so libtsan.so liblsan.so) + conflicts=(gcc-libs{,-git}) + replaces=(gcc-multilib-git) + + cd gccrs-build + make -C $CHOST/libgcc DESTDIR="$pkgdir" install-shared rm -f "$pkgdir/$_libdir/libgcc_eh.a" - # beautiful hack I came up with to skip libs when they're missing :) - # i.e. when the respective languages were disabled - shopt -s nullglob for lib in libatomic \ - [l]ibgfortran \ - [l]ibgo \ - libgomp \ - libitm \ - libquadmath \ - libsanitizer/{a,l,ub,t}san \ - libstdc++-v3/src \ - libvtv; do - make -C $lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES + libgfortran \ + libgo \ + libgomp \ + libitm \ + libquadmath \ + libsanitizer/{a,l,ub,t}san \ + libstdc++-v3/src \ + libvtv; do + make -C $CHOST/$lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES done - shopt -u nullglob - - # why ! and || instead of just &&, i hear you ask? - # so that $? is always 0 (unless make fails) - [[ ! -e libobjc ]] || make -C libobjc DESTDIR="$pkgdir" install-libs - make -C libstdc++-v3/po DESTDIR="$pkgdir" install - make -C libphobos DESTDIR="$pkgdir" install - rm -rf "$pkgdir"/$_libdir/include/d/ - rm -f "$pkgdir"/usr/lib/libgphobos.spec + make -C $CHOST/libobjc DESTDIR="$pkgdir" install-libs + make -C $CHOST/libstdc++-v3/po DESTDIR="$pkgdir" install for lib in libgomp \ - libitm \ - libquadmath; do - make -C $lib DESTDIR="$pkgdir" install-info + libitm \ + libquadmath; do + make -C $CHOST/$lib DESTDIR="$pkgdir" install-info done # remove files provided by lib32-gcc-libs @@ -184,14 +184,14 @@ package_gccrs-libs-git() { } package_gccrs-git() { - pkgdesc="The GNU Compiler Collection - C and C++ frontends" - depends=("gccrs-libs-git=$pkgver-$pkgrel" "binutils>=2.28" libmpc) + pkgdesc="The GNU Compiler Collection - C and C++ frontends (git version)" + depends=("gccrs-libs-git=$pkgver-$pkgrel" "binutils>=2.28" libmpc zstd libisl.so) groups=(base-devel-git) optdepends=('lib32-gcc-libs-git: for generating code for 32-bit ABI') provides=(gcc{,-multilib{,-git}}) - conflicts=(gcc) + conflicts=(gcc{,-git}) replaces=(gcc-multilib-git) - options+=(staticlibs) + options=(!emptydirs staticlibs debug) cd gccrs-build @@ -239,14 +239,9 @@ package_gccrs-git() { make -C $CHOST/32/libsanitizer DESTDIR="$pkgdir" install-nodist_{saninclude,toolexeclib}HEADERS make -C $CHOST/32/libsanitizer/asan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS - make -C libiberty DESTDIR="$pkgdir" install - install -m644 libiberty/pic/libiberty.a "$pkgdir/usr/lib" - make -C gcc DESTDIR="$pkgdir" install-man install-info - - # don't fail if can't remove the files (when certain languages were disabled) - rm "$pkgdir"/usr/share/man/man1/{gccgo,gfortran,gdc}.1 ||: - rm "$pkgdir"/usr/share/info/{gccgo,gfortran,gnat-style,gnat_rm,gnat_ugn,gdc}.info ||: + rm "$pkgdir"/usr/share/man/man1/{gccgo,gfortran}.1 + rm "$pkgdir"/usr/share/info/{gccgo,gfortran,gnat-style,gnat_rm,gnat_ugn}.info make -C libcpp DESTDIR="$pkgdir" install make -C gcc DESTDIR="$pkgdir" install-po @@ -275,10 +270,10 @@ package_gccrs-git() { } package_gccrs-fortran-git() { - pkgdesc='Fortran front-end for GCC' - depends=("gcc-git=$pkgver-$pkgrel") + pkgdesc='Fortran front-end for GCC (git version)' + depends=("gccrs-git=$pkgver-$pkgrel" libisl.so) provides=(gcc-fortran gcc-multilib{,-git}) - conflicts=(gcc-fortran) + conflicts=(gcc-fortran{,-git}) replaces=(gcc-multilib-git) cd gccrs-build @@ -299,10 +294,10 @@ package_gccrs-fortran-git() { } package_gccrs-objc-git() { - pkgdesc='Objective-C front-end for GCC' - depends=("gcc-git=$pkgver-$pkgrel") + pkgdesc='Objective-C front-end for GCC (git version)' + depends=("gccrs-git=$pkgver-$pkgrel" libisl.so) provides=(gcc-multilib{,-git}) - conflicts=(gcc-objc) + conflicts=(gcc-objc{,-git}) replaces=(gcc-multilib-git) cd gccrs-build @@ -317,12 +312,12 @@ package_gccrs-objc-git() { } package_gccrs-ada-git() { - pkgdesc='Ada front-end for GCC (GNAT)' - depends=("gcc-git=$pkgver-$pkgrel") + pkgdesc='Ada front-end for GCC (GNAT) (git version)' + depends=("gccrs-git=$pkgver-$pkgrel" libisl.so) provides=(gcc-ada gcc-multilib{,-git}) - conflicts=(gcc-ada) + conflicts=(gcc-ada{,-git}) replaces=(gcc-multilib-git) - options+=(staticlibs) + options=(!emptydirs staticlibs) cd gccrs-build/gcc make DESTDIR="$pkgdir" ada.install-{common,info} @@ -357,10 +352,10 @@ package_gccrs-ada-git() { } package_gccrs-go-git() { - pkgdesc='Go front-end for GCC' - depends=("gcc-git=$pkgver-$pkgrel") - provides=("go=1.12.2" gcc-multilib{,-git}) - conflicts=(gcc-go go{,-git}) + pkgdesc='Go front-end for GCC (git version)' + depends=("gccrs-git=$pkgver-$pkgrel" libisl.so) + provides=("go=1.18" gcc-multilib{,-git}) + conflicts=(gcc-go{,-git} go{,-git}) replaces=(gcc-multilib-git) cd gccrs-build @@ -378,26 +373,18 @@ package_gccrs-go-git() { "$pkgdir/usr/share/licenses/$pkgname/" } -package_gccrs-d-git() { - pkgdesc="D frontend for GCC" - depends=("gcc-git=$pkgver-$pkgrel") - provides=(gcc-d gdc{,-git}) - conflicts=(gcc-d) - replaces=(gdc-git) - options=(staticlibs) +package_gccrs-rust-git() { + pkgdesc="Rust frontend for GCC" + depends=("gccrs-git=$pkgver-$pkgrel" libisl.so) + provides=(gcc-rust{,-git}) + conflicts=(gcc-rust) + replaces=(gcc-rust-git) cd gccrs-build - make -C gcc DESTDIR="$pkgdir" d.install-{common,man,info} - - install -Dm755 gcc/gdc "$pkgdir"/usr/bin/gdc - install -Dm755 gcc/d21 "$pkgdir"/"$_libdir"/d21 - - make -C $CHOST/libphobos DESTDIR="$pkgdir" install - rm -f "$pkgdir/usr/lib/"lib{gphobos,gdruntime}.so* - rm -f "$pkgdir/usr/lib32/"lib{gphobos,gdruntime}.so* + make -C gcc DESTDIR="$pkgdir" rust.install-{common,man,info} - install -d "$pkgdir"/usr/include/dlang - ln -s /"${_libdir}"/include/d "$pkgdir"/usr/include/dlang/gdc + install -Dm755 gcc/gccrs "$pkgdir"/usr/bin/gccrs + install -Dm755 gcc/rust1 "$pkgdir"/"$_libdir"/rust1 # Install Runtime Library Exception install -d "$pkgdir/usr/share/licenses/$pkgname/" @@ -405,18 +392,47 @@ package_gccrs-d-git() { "$pkgdir/usr/share/licenses/$pkgname/" } -package_gccrs-rust-git() { - pkgdesc="Rust frontend for GCC" - depends=("gccrs-git=$pkgver-$pkgrel") - provides=(gcc-rust{,-git}) - conflicts=(gcc-rust) - replaces=(gcc-rust-git) +package_lib32-gccrs-libs-git() { + pkgdesc='32-bit runtime libraries shipped by GCC (git version)' + depends=('lib32-glibc>=2.27') + provides=(lib32-gcc-libs libgo.so libgfortran.so libubsan.so libasan.so) + conflicts=(lib32-gcc-libs{,-git}) + groups=(multilib-devel-git) + options=(!emptydirs !strip) cd gccrs-build - make -C gcc DESTDIR="$pkgdir" rust.install-{common,man,info} - install -Dm755 gcc/gccrs "$pkgdir"/usr/bin/gccrs - install -Dm755 gcc/rust1 "$pkgdir"/"$_libdir"/rust1 + make -C $CHOST/32/libgcc DESTDIR="$pkgdir" install-shared + rm -f "$pkgdir/$_libdir/32/libgcc_eh.a" + + for lib in libatomic \ + libgfortran \ + libgo \ + libgomp \ + libitm \ + libquadmath \ + libsanitizer/{a,l,ub}san \ + libstdc++-v3/src \ + libvtv; do + make -C $CHOST/32/$lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES + done + + make -C $CHOST/32/libobjc DESTDIR="$pkgdir" install-libs + + # remove files provided by gcc-libs + rm -rf "$pkgdir"/usr/lib + + # Install Runtime Library Exception + install -Dm644 "$srcdir/gcc/COPYING.RUNTIME" \ + "$pkgdir/usr/share/licenses/lib32-gcc-libs/RUNTIME.LIBRARY.EXCEPTION" +} + +package_libgccrsjit-git() { + pkgdesc="Just-In-Time Compilation with GCC backend (git version)" + depends=("gccrs-git=$pkgver-$pkgrel" libisl.so) + + cd gccrs-build + make -C gcc DESTDIR="$pkgdir" jit.install-common jit.install-info # Install Runtime Library Exception install -d "$pkgdir/usr/share/licenses/$pkgname/" diff --git a/fs64270.patch b/fs64270.patch deleted file mode 100644 index 7b9e142c6be8..000000000000 --- a/fs64270.patch +++ /dev/null @@ -1,26 +0,0 @@ -Disable ssp on -nostdlib, -nodefaultlibs and -ffreestanding - ---- a/gcc/gcc.c 2017-07-04 09:15:57.740793000 +0200 -+++ b/gcc/gcc.c 2018-03-02 13:58:44.387741114 +0100 -@@ -857,6 +857,12 @@ proper position among the other output f - #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G" - #endif - -+#ifdef ENABLE_DEFAULT_SSP -+#define NO_SSP_SPEC "%{nostdlib|nodefaultlibs|ffreestanding:-fno-stack-protector} " -+#else -+#define NO_SSP_SPEC "" -+#endif -+ - #ifndef LINK_SSP_SPEC - #ifdef TARGET_LIBC_PROVIDES_SSP - #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ -@@ -1131,7 +1148,7 @@ static const char *cc1_options = - %{-version:--version}\ - %{-help=*:--help=%*}\ - %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}}\ -- %{fsyntax-only:-o %j} %{-param*}\ -+ %{fsyntax-only:-o %j} %{-param*} " NO_SSP_SPEC "\ - %{coverage:-fprofile-arcs -ftest-coverage}\ - %{fprofile-arcs|fprofile-generate*|coverage:\ - %{!fprofile-update=singel:\ diff --git a/gcc11-Wno-format-security.patch b/gcc11-Wno-format-security.patch deleted file mode 100644 index 974ea44d0f85..000000000000 --- a/gcc11-Wno-format-security.patch +++ /dev/null @@ -1,27 +0,0 @@ -2017-02-25 Jakub Jelinek <jakub@redhat.com> - - * configure.ac: When adding -Wno-format, also add -Wno-format-security. - * configure: Regenerated. - ---- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 -+++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 -@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings, - AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), - [],[enable_build_format_warnings=yes]) - AS_IF([test $enable_build_format_warnings = no], -- [wf_opt=-Wno-format],[wf_opt=]) -+ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) - ACX_PROG_CXX_WARNING_OPTS( - m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], - [-Wcast-qual -Wno-error=format-diag $wf_opt])), ---- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 -+++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 -@@ -6647,7 +6647,7 @@ else - fi - - if test $enable_build_format_warnings = no; then : -- wf_opt=-Wno-format -+ wf_opt="-Wno-format -Wno-format-security" - else - wf_opt= - fi diff --git a/gdc_phobos_path.patch b/gdc_phobos_path.patch deleted file mode 100644 index 6f43b6ee7a96..000000000000 --- a/gdc_phobos_path.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Naur a/gcc/d/d-incpath.cc b/gcc/d/d-incpath.cc ---- a/gcc/d/d-incpath.cc 2019-01-01 13:31:55.000000000 +0100 -+++ b/gcc/d/d-incpath.cc 2019-06-28 08:32:00.326241502 +0200 -@@ -140,7 +140,7 @@ - path = xstrdup (p->fname); - - /* Add D-specific suffix. */ -- path = concat (path, "/d", NULL); -+ path = concat (path, "/dlang/gdc", NULL); - - /* Ignore duplicate entries. */ - bool found = false; - - diff --git a/ipa-fix-ICE-in-get_default_value.patch b/ipa-fix-ICE-in-get_default_value.patch deleted file mode 100644 index 572299462ff4..000000000000 --- a/ipa-fix-ICE-in-get_default_value.patch +++ /dev/null @@ -1,80 +0,0 @@ -From f91770216eade83f068528c1e4f00e2ac3b23044 Mon Sep 17 00:00:00 2001 -From: Martin Liska <mliska@suse.cz> -Date: Thu, 13 Aug 2020 09:38:41 +0200 -Subject: [PATCH] ipa: fix ICE in get_default_value - -The patch aligns code with ipcp_bits_lattice::set_to_constant -where we properly mask m_value with m_mask. The same should -be done here. - -gcc/ChangeLog: - - PR ipa/96482 - * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value - with m_mask. - -gcc/testsuite/ChangeLog: - - PR ipa/96482 - * gcc.dg/ipa/pr96482-2.c: New test. ---- - gcc/ipa-cp.c | 2 +- - gcc/testsuite/gcc.dg/ipa/pr96482-2.c | 33 ++++++++++++++++++++++++++++ - 2 files changed, 34 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gcc.dg/ipa/pr96482-2.c - -diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c -index 2b21280d919..e4910a04ffa 100644 ---- a/gcc/ipa-cp.c -+++ b/gcc/ipa-cp.c -@@ -1048,7 +1048,7 @@ ipcp_bits_lattice::meet_with_1 (widest_int value, widest_int mask, - - widest_int old_mask = m_mask; - m_mask = (m_mask | mask) | (m_value ^ value); -- m_value &= value; -+ m_value &= ~m_mask; - - if (wi::sext (m_mask, precision) == -1) - return set_to_bottom (); -diff --git a/gcc/testsuite/gcc.dg/ipa/pr96482-2.c b/gcc/testsuite/gcc.dg/ipa/pr96482-2.c -new file mode 100644 -index 00000000000..54b71ac4fc0 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/ipa/pr96482-2.c -@@ -0,0 +1,33 @@ -+/* PR ipa/96482 */ -+/* { dg-do compile } */ -+/* { dg-options "-O2" } */ -+ -+int i2c_transfer(); -+void _dev_err(); -+ -+struct i2c_msg { -+ char bufaddr; -+ int adapterdev; -+} wdt87xx_i2c_xfer_client; -+ -+int wdt87xx_i2c_xfer_client_0, wdt87xx_i2c_xfer_rxdata, wdt87xx_get_string_str_idx; -+ -+void -+static wdt87xx_i2c_xfer(void *txdata, unsigned rxlen) { -+ struct i2c_msg msgs[] = {wdt87xx_i2c_xfer_client_0, rxlen, -+ wdt87xx_i2c_xfer_rxdata}; -+ int error = i2c_transfer(wdt87xx_i2c_xfer_client, msgs); -+ _dev_err("", __func__, error); -+} -+static void wdt87xx_get_string(unsigned len) { -+ char tx_buf[] = {wdt87xx_get_string_str_idx, 3}; -+ int rx_len = len + 2; -+ wdt87xx_i2c_xfer(tx_buf, rx_len); -+} -+ -+void -+wdt87xx_ts_probe_tx_buf() { -+ wdt87xx_get_string(34); -+ wdt87xx_get_string(8); -+ wdt87xx_i2c_xfer(wdt87xx_ts_probe_tx_buf, 2); -+} --- -2.28.0 - diff --git a/ipa-fix-bit-CPP-when-combined-with-IPA-bit-CP.patch b/ipa-fix-bit-CPP-when-combined-with-IPA-bit-CP.patch deleted file mode 100644 index cd812623cec3..000000000000 --- a/ipa-fix-bit-CPP-when-combined-with-IPA-bit-CP.patch +++ /dev/null @@ -1,147 +0,0 @@ -From d58f078ce2d53e5dab6b3d0d5f960504268e1894 Mon Sep 17 00:00:00 2001 -From: Martin Liska <mliska@suse.cz> -Date: Wed, 12 Aug 2020 09:21:51 +0200 -Subject: [PATCH] ipa: fix bit CPP when combined with IPA bit CP - -As mentioned in the PR, let's consider the following example: - -int -__attribute__((noinline)) -foo(int arg) -{ - if (arg == 3) - return 1; - if (arg == 4) - return 123; - - __builtin_unreachable (); -} - -during WPA we find all calls of the function -(yes the call with value 5 is UBSAN): - - Node: foo/0: - param [0]: 5 [loc_time: 4, loc_size: 2, prop_time: 0, prop_size: 0] - 3 [loc_time: 3, loc_size: 3, prop_time: 0, prop_size: 0] - ctxs: VARIABLE - Bits: value = 0x5, mask = 0x6 - -in LTRANS we have the following VRP info: - - # RANGE [3, 3] NONZERO 3 - -when we AND masks in get_default_value we end up with 6 & 3 = 2 (0x010). -That means the only second (least significant bit) is unknown and -value (5 = 0x101) & ~mask gives us either 7 (0x111) or 5 (0x101). - -That's why if (arg_2(D) == 3) gets optimized to false. - -gcc/ChangeLog: - - PR ipa/96482 - * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Drop value bits - for bits that are unknown. - (ipcp_bits_lattice::set_to_constant): Likewise. - * tree-ssa-ccp.c (get_default_value): Add sanity check that - IPA CP bit info has all bits set to zero in bits that - are unknown. - -gcc/testsuite/ChangeLog: - - PR ipa/96482 - * gcc.dg/ipa/pr96482.c: New test. ---- - gcc/ipa-cp.c | 3 +- - gcc/testsuite/gcc.dg/ipa/pr96482.c | 44 ++++++++++++++++++++++++++++++ - gcc/tree-ssa-ccp.c | 3 ++ - 3 files changed, 49 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gcc.dg/ipa/pr96482.c - -diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c -index 945a69977f3..2b21280d919 100644 ---- a/gcc/ipa-cp.c -+++ b/gcc/ipa-cp.c -@@ -1011,7 +1011,7 @@ ipcp_bits_lattice::set_to_constant (widest_int value, widest_int mask) - { - gcc_assert (top_p ()); - m_lattice_val = IPA_BITS_CONSTANT; -- m_value = value; -+ m_value = wi::bit_and (wi::bit_not (mask), value); - m_mask = mask; - return true; - } -@@ -1048,6 +1048,7 @@ ipcp_bits_lattice::meet_with_1 (widest_int value, widest_int mask, - - widest_int old_mask = m_mask; - m_mask = (m_mask | mask) | (m_value ^ value); -+ m_value &= value; - - if (wi::sext (m_mask, precision) == -1) - return set_to_bottom (); -diff --git a/gcc/testsuite/gcc.dg/ipa/pr96482.c b/gcc/testsuite/gcc.dg/ipa/pr96482.c -new file mode 100644 -index 00000000000..68ead798d28 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/ipa/pr96482.c -@@ -0,0 +1,44 @@ -+/* PR ipa/96482 */ -+/* { dg-do run } */ -+/* { dg-options "-O2 -flto" } */ -+/* { dg-require-effective-target lto } */ -+ -+int -+__attribute__((noinline)) -+foo(int arg) -+{ -+ if (arg == 3) -+ return 1; -+ if (arg == 4) -+ return 123; -+ -+ __builtin_unreachable (); -+} -+ -+int -+__attribute__((noinline)) -+baz(int x) -+{ -+ if (x != 0) -+ return foo(3); /* called */ -+ -+ return 1; -+} -+ -+int -+__attribute__((noinline)) -+bar(int x) -+{ -+ if (x == 0) -+ return foo(5); /* not executed */ -+ -+ return 1; -+} -+ -+int main(int argc, char **argv) -+{ -+ if (bar(argc) != baz(argc)) -+ __builtin_abort (); -+ -+ return 0; -+} -diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c -index 7e3921869b8..65dffe06530 100644 ---- a/gcc/tree-ssa-ccp.c -+++ b/gcc/tree-ssa-ccp.c -@@ -306,6 +306,9 @@ get_default_value (tree var) - { - val.lattice_val = CONSTANT; - val.value = value; -+ widest_int ipa_value = wi::to_widest (value); -+ /* Unknown bits from IPA CP must be equal to zero. */ -+ gcc_assert (wi::bit_and (ipa_value, mask) == 0); - val.mask = mask; - if (nonzero_bits != -1) - val.mask &= extend_mask (nonzero_bits, --- -2.28.0 - |