[arch-commits] Commit in gcc/trunk (PKGBUILD PR82155.patch Revert-eeb6872bf.patch)
Bartłomiej Piotrowski
bpiotrowski at archlinux.org
Sun Nov 26 21:23:22 UTC 2017
Date: Sunday, November 26, 2017 @ 21:23:21
Author: bpiotrowski
Revision: 310965
7.2.1-1: enable multilib support
Modified:
gcc/trunk/PKGBUILD
Deleted:
gcc/trunk/PR82155.patch
gcc/trunk/Revert-eeb6872bf.patch
------------------------+
PKGBUILD | 116 +++++++++++++++++++++++++++++++--------------
PR82155.patch | 119 -----------------------------------------------
Revert-eeb6872bf.patch | 82 --------------------------------
3 files changed, 81 insertions(+), 236 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2017-11-26 20:28:31 UTC (rev 310964)
+++ PKGBUILD 2017-11-26 21:23:21 UTC (rev 310965)
@@ -5,30 +5,26 @@
# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
# NOTE: libtool requires rebuilt with each new gcc version
-pkgname=(gcc gcc-libs gcc-fortran gcc-objc gcc-ada gcc-go)
-pkgver=7.2.0
+pkgname=(gcc gcc-libs gcc-fortran gcc-objc gcc-ada gcc-go lib32-gcc-libs)
+pkgver=7.2.1
_pkgver=${pkgver:0:1}
_islver=0.18
-pkgrel=3
+pkgrel=1
pkgdesc='The GNU Compiler Collection'
arch=(x86_64)
license=(GPL LGPL FDL custom)
url='http://gcc.gnu.org'
-makedepends=(binutils libmpc gcc-ada doxygen git)
+makedepends=(binutils libmpc gcc-ada doxygen git lib32-glibc)
checkdepends=(dejagnu inetutils)
options=(!emptydirs)
-_commit=1bd23ca8c30f4827c4bea23deedf7ca33a86ffb5
+_commit=aa909c285f8dc06238588cb2c045e73dc721ad9b
source=(git+https://gcc.gnu.org/git/gcc.git#commit=${_commit}
http://isl.gforge.inria.fr/isl-${_islver}.tar.bz2
- c89 c99
- Revert-eeb6872bf.patch
- PR82155.patch)
+ c89 c99)
md5sums=('SKIP'
'11436d6b205e516635b666090b94ab32'
'3d333df77302ed89e06a4a8539943b7d'
- 'da96f545b863e57c6ab2598c1ea9a740'
- 'e4c9c8b498b04c0f51d219d025ca8407'
- 'e77419f7d25aad0980c765012dc8c417')
+ 'da96f545b863e57c6ab2598c1ea9a740')
_libdir=usr/lib/gcc/$CHOST/$pkgver
@@ -42,17 +38,11 @@
sed -i 's@\./fixinc\.sh at -c true@' gcc/Makefile.in
# Arch Linux installs x86_64 libraries /lib
- [[ $CARCH == "x86_64" ]] && sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64
+ 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
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80717
- git apply ../Revert-eeb6872bf.patch
-
- # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82155
- patch -p1 -i ../PR82155.patch
-
mkdir -p "$srcdir/gcc-build"
}
@@ -88,7 +78,7 @@
--enable-install-libiberty \
--with-linker-hash-style=gnu \
--enable-gnu-indirect-function \
- --disable-multilib \
+ --enable-multilib \
--disable-werror \
--enable-checking=release \
--enable-default-pie \
@@ -112,12 +102,13 @@
"$srcdir/gcc/contrib/test_summary"
}
-
package_gcc-libs() {
pkgdesc='Runtime libraries shipped by GCC'
- groups=('base')
- depends=('glibc>=2.25')
+ groups=(base)
+ depends=('glibc>=2.26')
options+=(!strip)
+ provides=($pkgname-multilib)
+ replaces=($pkgname-multilib)
cd gcc-build
make -C $CHOST/libgcc DESTDIR="$pkgdir" install-shared
@@ -130,16 +121,12 @@
libgomp \
libitm \
libquadmath \
- libsanitizer/{a,l,ub}san \
+ libsanitizer/{a,l,ub,t}san \
libstdc++-v3/src \
libvtv; do
make -C $CHOST/$lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES
done
- if [[ $CARCH == "x86_64" ]]; then
- make -C $CHOST/libsanitizer/tsan DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES
- fi
-
make -C $CHOST/libobjc DESTDIR="$pkgdir" install-libs
make -C $CHOST/libstdc++-v3/po DESTDIR="$pkgdir" install
make -C $CHOST/libmpx DESTDIR="$pkgdir" install
@@ -151,6 +138,9 @@
make -C $CHOST/$lib DESTDIR="$pkgdir" install-info
done
+ # remove files provided by lib32-gcc-libs
+ rm -rf "$pkgdir"/usr/lib32/
+
# Install Runtime Library Exception
install -Dm644 "$srcdir/gcc/COPYING.RUNTIME" \
"$pkgdir/usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION"
@@ -158,8 +148,11 @@
package_gcc() {
pkgdesc="The GNU Compiler Collection - C and C++ frontends"
- depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.28' 'libmpc')
+ depends=("gcc-libs=$pkgver-$pkgrel" "lib32-gcc-libs=$pkgver-$pkgrel"
+ 'binutils>=2.28' libmpc)
groups=('base-devel')
+ provides=($pkgname-multilib)
+ replaces=($pkgname-multilib)
options+=(staticlibs)
cd gcc-build
@@ -171,18 +164,22 @@
install -m755 -t "$pkgdir/${_libdir}/" gcc/{cc1,cc1plus,collect2,lto1}
make -C $CHOST/libgcc DESTDIR="$pkgdir" install
- rm "$pkgdir"/usr/lib/libgcc_s.so*
+ make -C $CHOST/32/libgcc DESTDIR="$pkgdir" install
+ rm -f "$pkgdir"/usr/lib{,32}/libgcc_s.so*
make -C $CHOST/libstdc++-v3/src DESTDIR="$pkgdir" install
make -C $CHOST/libstdc++-v3/include DESTDIR="$pkgdir" install
make -C $CHOST/libstdc++-v3/libsupc++ DESTDIR="$pkgdir" install
make -C $CHOST/libstdc++-v3/python DESTDIR="$pkgdir" install
+ make -C $CHOST/32/libstdc++-v3/src DESTDIR="$pkgdir" install
+ make -C $CHOST/32/libstdc++-v3/include DESTDIR="$pkgdir" install
+ make -C $CHOST/32/libstdc++-v3/libsupc++ DESTDIR="$pkgdir" install
make DESTDIR="$pkgdir" install-libcc1
install -d "$pkgdir/usr/share/gdb/auto-load/usr/lib"
mv "$pkgdir"/usr/lib/libstdc++.so.6.*-gdb.py \
"$pkgdir/usr/share/gdb/auto-load/usr/lib/"
- rm "$pkgdir"/usr/lib/libstdc++.so*
+ rm "$pkgdir"/usr/lib{,32}/libstdc++.so*
make DESTDIR="$pkgdir" install-fixincludes
make -C gcc DESTDIR="$pkgdir" install-mkheaders
@@ -192,15 +189,19 @@
ln -s /usr/lib/gcc/$CHOST/$pkgver/liblto_plugin.so \
"$pkgdir/usr/lib/bfd-plugins/"
- make -C $CHOST/libcilkrts DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS \
- install-nodist_cilkincludeHEADERS
- make -C $CHOST/libgomp DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS \
- install-nodist_libsubincludeHEADERS
+ make -C $CHOST/libcilkrts DESTDIR="$pkgdir" install-nodist_{toolexeclib,cilkinclude}HEADERS
+ make -C $CHOST/libgomp DESTDIR="$pkgdir" install-nodist_{libsubinclude,toolexeclib}HEADERS
make -C $CHOST/libitm DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
make -C $CHOST/libquadmath DESTDIR="$pkgdir" install-nodist_libsubincludeHEADERS
make -C $CHOST/libsanitizer DESTDIR="$pkgdir" install-nodist_{saninclude,toolexeclib}HEADERS
make -C $CHOST/libsanitizer/asan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
make -C $CHOST/libmpx DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
+ make -C $CHOST/32/libcilkrts DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
+ make -C $CHOST/32/libgomp DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
+ make -C $CHOST/32/libitm DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
+ 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 $CHOST/32/libmpx DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS
make -C libiberty DESTDIR="$pkgdir" install
install -m644 libiberty/pic/libiberty.a "$pkgdir/usr/lib"
@@ -222,6 +223,9 @@
# install the libstdc++ man pages
make -C $CHOST/libstdc++-v3/doc DESTDIR="$pkgdir" doc-install-man
+ # remove files provided by lib32-gcc-libs
+ rm -f "$pkgdir"/usr/lib32/lib{stdc++,gcc_s}.so
+
# Install Runtime Library Exception
install -d "$pkgdir/usr/share/licenses/$pkgname/"
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \
@@ -231,6 +235,8 @@
package_gcc-fortran() {
pkgdesc='Fortran front-end for GCC'
depends=("gcc=$pkgver-$pkgrel")
+ provides=($pkgname-multilib)
+ replaces=($pkgname-multilib)
cd gcc-build
make -C $CHOST/libgfortran DESTDIR="$pkgdir" install-cafexeclibLTLIBRARIES \
@@ -250,6 +256,8 @@
package_gcc-objc() {
pkgdesc='Objective-C front-end for GCC'
depends=("gcc=$pkgver-$pkgrel")
+ provides=($pkgname-multilib)
+ replaces=($pkgname-multilib)
cd gcc-build
make DESTDIR="$pkgdir" -C $CHOST/libobjc install-headers
@@ -265,6 +273,8 @@
package_gcc-ada() {
pkgdesc='Ada front-end for GCC (GNAT)'
depends=("gcc=$pkgver-$pkgrel")
+ provides=($pkgname-multilib)
+ replaces=($pkgname-multilib)
options+=(staticlibs)
cd gcc-build/gcc
@@ -288,7 +298,8 @@
package_gcc-go() {
pkgdesc='Go front-end for GCC'
depends=("gcc=$pkgver-$pkgrel")
- provides=("go=1.8.1")
+ provides=("go=1.8.1" $pkgname-multilib)
+ replaces=($pkgname-multilib)
conflicts=(go)
cd gcc-build
@@ -304,3 +315,38 @@
ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \
"$pkgdir/usr/share/licenses/$pkgname/"
}
+
+package_lib32-gcc-libs() {
+ pkgdesc='32-bit runtime libraries shipped by GCC'
+ depends=('lib32-glibc>=2.26')
+ options=(!emptydirs !strip)
+
+ cd ${srcdir}/gcc-build
+
+ make -C $CHOST/32/libgcc DESTDIR="$pkgdir" install-shared
+ rm "$pkgdir/$_libdir/32/libgcc_eh.a"
+
+ for lib in libatomic \
+ libcilkrts \
+ 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
+ make -C $CHOST/32/libmpx DESTDIR="$pkgdir" install
+ rm "$pkgdir/usr/lib32/libmpx.spec"
+
+ # remove files provided by gcc-libs
+ rm -r "$pkgdir"/usr/lib
+
+ # Install Runtime Library Exception
+ install -Dm644 "$srcdir/gcc/COPYING.RUNTIME" \
+ "$pkgdir/usr/share/licenses/lib32-gcc-libs/RUNTIME.LIBRARY.EXCEPTION"
+}
Deleted: PR82155.patch
===================================================================
--- PR82155.patch 2017-11-26 20:28:31 UTC (rev 310964)
+++ PR82155.patch 2017-11-26 21:23:21 UTC (rev 310965)
@@ -1,119 +0,0 @@
-From: Pierre-Marie de Rodat <derodat at adacore dot com>
-To: gcc-patches at gcc dot gnu dot org
-Cc: Pierre-Marie de Rodat <derodat at adacore dot com>
-Subject: [PATCH] [PR82155] Fix crash in dwarf2out_abstract_function
-Date: Tue, 12 Sep 2017 08:00:03 +0200
-Message-Id: <20170912060003.32378-1-derodat at adacore.com>
-X-IsSubscribed: yes
-
-Hello,
-
-This patch is an attempt to fix the crash reported in PR82155.
-
-When generating a C++ class method for a class that is itself nested in
-a class method, dwarf2out_early_global_decl currently leaves the
-existing context DIE as it is if it already exists. However, it is
-possible that this call happens at a point where this context DIE is
-just a declaration that is itself not located in its own context.
-
->From there, if dwarf2out_early_global_decl is not called on any of the
-FUNCTION_DECL in the context chain, DIEs will be left badly scoped and
-some (such as the nested method) will be removed by the type pruning
-machinery. As a consequence, dwarf2out_abstract_function will will
-crash when called on the corresponding DECL because it asserts that the
-DECL has a DIE.
-
-This patch fixes this crash making dwarf2out_early_global_decl process
-context DIEs the same way we process abstract origins for FUNCTION_DECL:
-if the corresponding DIE exists but is only a declaration, call
-dwarf2out_decl anyway on it so that it is turned into a more complete
-DIE and so that it is relocated in the proper context.
-
-Bootstrapped and regtested on x86_64-linux. The crash this addresses is
-present both on trunk and on the gcc-7 branch: I suggest we commit this
-patch on both branches. Ok to commit? Thank you in advance!
-
-gcc/
-
- PR debug/82155
- * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
- on the FUNCTION_DECL function context if it has a DIE that is a
- declaration.
-
-gcc/testsuite/
-
- * g++.dg/pr82155.C: New testcase.
----
- gcc/dwarf2out.c | 10 ++++++++--
- gcc/testsuite/g++.dg/pr82155.C | 36 ++++++++++++++++++++++++++++++++++++
- 2 files changed, 44 insertions(+), 2 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/pr82155.C
-
-diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
-index 00d6d951ba3..4cfc9c186af 100644
---- a/gcc/dwarf2out.c
-+++ b/gcc/dwarf2out.c
-@@ -25500,10 +25500,16 @@ dwarf2out_early_global_decl (tree decl)
- so that all nested DIEs are generated at the proper scope in the
- first shot. */
- tree context = decl_function_context (decl);
-- if (context != NULL && lookup_decl_die (context) == NULL)
-+ if (context != NULL)
- {
-+ dw_die_ref context_die = lookup_decl_die (context);
- current_function_decl = context;
-- dwarf2out_decl (context);
-+
-+ /* Avoid emitting DIEs multiple times, but still process CONTEXT
-+ enough so that it lands in its own context. This avoids type
-+ pruning issues later on. */
-+ if (context_die == NULL || is_declaration_die (context_die))
-+ dwarf2out_decl (context);
- }
-
- /* Emit an abstract origin of a function first. This happens
-diff --git a/gcc/testsuite/g++.dg/pr82155.C b/gcc/testsuite/g++.dg/pr82155.C
-new file mode 100644
-index 00000000000..75d9b615f39
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/pr82155.C
-@@ -0,0 +1,36 @@
-+/* { dg-do compile { target c++11 } } */
-+/* { dg-options "-g -O2" } */
-+
-+template <typename a> struct b { a c; };
-+template <typename d> struct e { d *operator->(); };
-+template <typename d> class h {
-+public:
-+ typedef e<d> ag;
-+};
-+class i {
-+protected:
-+ i(int);
-+};
-+class j {
-+ virtual void k(int) = 0;
-+
-+public:
-+ int f;
-+ void l() { k(f); }
-+};
-+struct m : i {
-+ int cn;
-+ m() : i(cn) {
-+ struct n : j {
-+ n() {}
-+ void k(int) {}
-+ };
-+ }
-+};
-+struct o {
-+ o() {
-+ for (h<b<b<j *>>>::ag g;;)
-+ g->c.c->l();
-+ }
-+};
-+void fn1() { o(); }
---
-2.14.1
-
Deleted: Revert-eeb6872bf.patch
===================================================================
--- Revert-eeb6872bf.patch 2017-11-26 20:28:31 UTC (rev 310964)
+++ Revert-eeb6872bf.patch 2017-11-26 21:23:21 UTC (rev 310965)
@@ -1,82 +0,0 @@
-commit 43d83a70267a9e5c456d28de8e7348820446b712
-Author: Bartłomiej Piotrowski <bpiotrowski at archlinux.org>
-Date: Tue May 16 07:50:42 2017 +0200
-
- Revert "Prevent LTO wrappers to process a recursive execution"
-
- This reverts commit eeb6872bfdfd1e71b27de6f62a5f5c08a2efb015.
-
-diff --git a/gcc/file-find.c b/gcc/file-find.c
-index b072a4993d76..b5a1fe8494e8 100644
---- a/gcc/file-find.c
-+++ b/gcc/file-find.c
-@@ -208,38 +208,3 @@ prefix_from_string (const char *p, struct path_prefix *pprefix)
- }
- free (nstore);
- }
--
--void
--remove_prefix (const char *prefix, struct path_prefix *pprefix)
--{
-- struct prefix_list *remove, **prev, **remove_prev = NULL;
-- int max_len = 0;
--
-- if (pprefix->plist)
-- {
-- prev = &pprefix->plist;
-- for (struct prefix_list *pl = pprefix->plist; pl->next; pl = pl->next)
-- {
-- if (strcmp (prefix, pl->prefix) == 0)
-- {
-- remove = pl;
-- remove_prev = prev;
-- continue;
-- }
--
-- int l = strlen (pl->prefix);
-- if (l > max_len)
-- max_len = l;
--
-- prev = &pl;
-- }
--
-- if (remove_prev)
-- {
-- *remove_prev = remove->next;
-- free (remove);
-- }
--
-- pprefix->max_len = max_len;
-- }
--}
-diff --git a/gcc/file-find.h b/gcc/file-find.h
-index 8f49a3af273e..407feba26e74 100644
---- a/gcc/file-find.h
-+++ b/gcc/file-find.h
-@@ -41,7 +41,6 @@ extern void find_file_set_debug (bool);
- extern char *find_a_file (struct path_prefix *, const char *, int);
- extern void add_prefix (struct path_prefix *, const char *);
- extern void add_prefix_begin (struct path_prefix *, const char *);
--extern void remove_prefix (const char *prefix, struct path_prefix *);
- extern void prefix_from_env (const char *, struct path_prefix *);
- extern void prefix_from_string (const char *, struct path_prefix *);
-
-diff --git a/gcc/gcc-ar.c b/gcc/gcc-ar.c
-index 78d2fc1ad306..d5d80e042e5a 100644
---- a/gcc/gcc-ar.c
-+++ b/gcc/gcc-ar.c
-@@ -194,14 +194,6 @@ main (int ac, char **av)
- #ifdef CROSS_DIRECTORY_STRUCTURE
- real_exe_name = concat (target_machine, "-", PERSONALITY, NULL);
- #endif
-- /* Do not search original location in the same folder. */
-- char *exe_folder = lrealpath (av[0]);
-- exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0';
-- char *location = concat (exe_folder, PERSONALITY, NULL);
--
-- if (access (location, X_OK) == 0)
-- remove_prefix (exe_folder, &path);
--
- exe_name = find_a_file (&path, real_exe_name, X_OK);
- if (!exe_name)
- {
More information about the arch-commits
mailing list