[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