GNU bug report logs - #35568
[PATCH] gnu: gcc: Add 9.1.0.

Previous Next

Package: guix-patches;

Reported by: Carl Dong <contact <at> carldong.me>

Date: Sat, 4 May 2019 22:03:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 35568 in the body.
You can then email your comments to 35568 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#35568; Package guix-patches. (Sat, 04 May 2019 22:03:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Carl Dong <contact <at> carldong.me>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sat, 04 May 2019 22:03:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Carl Dong <contact <at> carldong.me>
To: "guix-patches <at> gnu.org" <guix-patches <at> gnu.org>
Subject: [PATCH] gnu: gcc: Add 9.1.0.
Date: Sat, 04 May 2019 22:02:14 +0000
* gnu/packages/gcc.scm (gcc-9): New variable.
* gnu/packages/commencement.scm (gcc-toolchain-9): New variable.
---
 gnu/packages/commencement.scm                 |   3 +
 gnu/packages/gcc.scm                          |  14 +++
 .../gcc-9-strmov-store-file-names.patch       | 114 ++++++++++++++++++
 3 files changed, 131 insertions(+)
 create mode 100644 gnu/packages/patches/gcc-9-strmov-store-file-names.patch

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index b07630a54d..a8ec677cee 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1085,4 +1085,7 @@ and binaries, plus debugging symbols in the @code{debug} output), and Binutils."
 (define-public gcc-toolchain-8
   (make-gcc-toolchain gcc-8))

+(define-public gcc-toolchain-9
+  (make-gcc-toolchain gcc-9))
+
 ;;; commencement.scm ends here
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index b9a9583410..eefce2737b 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -519,6 +519,20 @@ It also includes runtime support libraries for these languages.")))
               (patches (search-patches "gcc-8-strmov-store-file-names.patch"
                                        "gcc-5.0-libvtv-runpath.patch"))))))

+(define-public gcc-9
+  (package
+   (inherit gcc-8)
+   (version "9.1.0")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnu/gcc/gcc-"
+                                version "/gcc-" version ".tar.xz"))
+            (sha256
+             (base32
+              "1817nc2bqdc251k0lpc51cimna7v68xjrnvqzvc50q3ax4s6i9kr"))
+            (patches (search-patches "gcc-9-strmov-store-file-names.patch"
+                                     "gcc-5.0-libvtv-runpath.patch"))))))
+
 ;; Note: When changing the default gcc version, update
 ;;       the gcc-toolchain-* definitions and the gfortran definition
 ;;       accordingly.
diff --git a/gnu/packages/patches/gcc-9-strmov-store-file-names.patch b/gnu/packages/patches/gcc-9-strmov-store-file-names.patch
new file mode 100644
index 0000000000..0c5d70491a
--- /dev/null
+++ b/gnu/packages/patches/gcc-9-strmov-store-file-names.patch
@@ -0,0 +1,114 @@
+Make sure that statements such as:
+
+  strcpy (dst, "/gnu/store/…");
+
+or
+
+  static const char str[] = "/gnu/store/…";
+  …
+  strcpy (dst, str);
+
+do not result in chunked /gnu/store strings that are undetectable by
+Guix's GC and its grafting code.  See <https://bugs.gnu.org/24703>
+and <https://bugs.gnu.org/30395>.
+
+diff --git a/gcc/builtins.c b/gcc/builtins.c
+index d37d73fc4a0..dac33d9d29a 100644
+--- a/gcc/builtins.c
++++ b/gcc/builtins.c
+@@ -3282,6 +3282,58 @@ determine_block_size (tree len, rtx len_rtx,
+ 			  GET_MODE_MASK (GET_MODE (len_rtx)));
+ }
+
++extern void debug_tree (tree);
++
++/* Return true if STR contains the string "/gnu/store".  */
++
++bool
++store_reference_p (tree str)
++{
++  if (getenv ("GUIX_GCC_DEBUG") != NULL)
++    debug_tree (str);
++
++  if (TREE_CODE (str) == ADDR_EXPR)
++    str = TREE_OPERAND (str, 0);
++
++  if (TREE_CODE (str) == VAR_DECL
++      && TREE_STATIC (str)
++      && TREE_READONLY (str))
++    {
++      /* STR may be a 'static const' variable whose initial value
++         is a string constant.  See <https://bugs.gnu.org/30395>.  */
++      str = DECL_INITIAL (str);
++      if (str == NULL_TREE)
++        return false;
++    }
++
++  if (TREE_CODE (str) != STRING_CST)
++    return false;
++
++  int len;
++  const char *store;
++
++  store = getenv ("NIX_STORE") ? getenv ("NIX_STORE") : "/gnu/store";
++  len = strlen (store);
++
++  /* Size of the hash part of store file names, including leading slash and
++     trailing hyphen.  */
++  const int hash_len = 34;
++
++  if (TREE_STRING_LENGTH (str) < len + hash_len)
++    return false;
++
++  /* We cannot use 'strstr' because 'TREE_STRING_POINTER' returns a string
++     that is not necessarily NUL-terminated.  */
++
++  for (int i = 0; i < TREE_STRING_LENGTH (str) - (len + hash_len); i++)
++    {
++      if (strncmp (TREE_STRING_POINTER (str) + i, store, len) == 0)
++	return true;
++    }
++
++  return false;
++}
++
+ /* Try to verify that the sizes and lengths of the arguments to a string
+    manipulation function given by EXP are within valid bounds and that
+    the operation does not lead to buffer overflow or read past the end.
+@@ -3839,6 +3891,13 @@ expand_builtin_memory_copy_args (tree dest, tree src, tree len,
+   unsigned HOST_WIDE_INT max_size;
+   unsigned HOST_WIDE_INT probable_max_size;
+
++  /* Do not emit block moves, which translate to the 'movabs' instruction on
++     x86_64, when SRC refers to store items.  That way, store references
++     remain visible to the Guix GC and grafting code.  See
++     <https://bugs.gnu.org/24703>.  */
++  if (store_reference_p (src))
++    return NULL_RTX;
++
+   /* If DEST is not a pointer type, call the normal function.  */
+   if (dest_align == 0)
+     return NULL_RTX;
+diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
+index f30818042ee..56b592f9335 100644
+--- a/gcc/gimple-fold.c
++++ b/gcc/gimple-fold.c
+@@ -656,6 +656,8 @@ var_decl_component_p (tree var)
+ 	      && TREE_CODE (TREE_OPERAND (inner, 0)) == ADDR_EXPR));
+ }
+
++extern bool store_reference_p (tree);
++
+ /* Return TRUE if the SIZE argument, representing the size of an
+    object, is in a range of values of which exactly zero is valid.  */
+
+@@ -748,6 +750,9 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
+       off0 = build_int_cst (build_pointer_type_for_mode (char_type_node,
+ 							 ptr_mode, true), 0);
+
++      if (store_reference_p (src))
++        return false;
++
+       /* If we can perform the copy efficiently with first doing all loads
+          and then all stores inline it that way.  Currently efficiently
+ 	 means that we can load all the memory into a single integer
--
2.21.0






Information forwarded to guix-patches <at> gnu.org:
bug#35568; Package guix-patches. (Sun, 05 May 2019 14:34:02 GMT) Full text and rfc822 format available.

Message #8 received at 35568 <at> debbugs.gnu.org (full text, mbox):

From: Carl Dong <contact <at> carldong.me>
To: "35568 <at> debbugs.gnu.org" <35568 <at> debbugs.gnu.org>
Subject: [PATCH v2 1/3] gnu: gcc: Add 9.1.0.
Date: Sun, 05 May 2019 14:32:57 +0000
* gnu/packages/gcc.scm (gcc-9): New variable.
* gnu/packages/commencement.scm (gcc-toolchain-9): New variable.
* gnu/packages/patches/gcc-9-strmov-store-file-names.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add the patch.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/commencement.scm                 |   3 +
 gnu/packages/gcc.scm                          |  14 +++
 .../gcc-9-strmov-store-file-names.patch       | 114 ++++++++++++++++++
 4 files changed, 132 insertions(+)
 create mode 100644 gnu/packages/patches/gcc-9-strmov-store-file-names.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index a0f40d13ae..7363655f38 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -814,6 +814,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-6-source-date-epoch-1.patch		\
   %D%/packages/patches/gcc-6-source-date-epoch-2.patch		\
   %D%/packages/patches/gcc-8-strmov-store-file-names.patch	\
+  %D%/packages/patches/gcc-9-strmov-store-file-names.patch	\
   %D%/packages/patches/gd-CVE-2018-5711.patch			\
   %D%/packages/patches/gd-CVE-2018-1000222.patch		\
   %D%/packages/patches/gd-CVE-2019-6977.patch			\
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index b07630a54d..a8ec677cee 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1085,4 +1085,7 @@ and binaries, plus debugging symbols in the @code{debug} output), and Binutils."
 (define-public gcc-toolchain-8
   (make-gcc-toolchain gcc-8))

+(define-public gcc-toolchain-9
+  (make-gcc-toolchain gcc-9))
+
 ;;; commencement.scm ends here
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index b9a9583410..eefce2737b 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -519,6 +519,20 @@ It also includes runtime support libraries for these languages.")))
               (patches (search-patches "gcc-8-strmov-store-file-names.patch"
                                        "gcc-5.0-libvtv-runpath.patch"))))))

+(define-public gcc-9
+  (package
+   (inherit gcc-8)
+   (version "9.1.0")
+   (source (origin
+            (method url-fetch)
+            (uri (string-append "mirror://gnu/gcc/gcc-"
+                                version "/gcc-" version ".tar.xz"))
+            (sha256
+             (base32
+              "1817nc2bqdc251k0lpc51cimna7v68xjrnvqzvc50q3ax4s6i9kr"))
+            (patches (search-patches "gcc-9-strmov-store-file-names.patch"
+                                     "gcc-5.0-libvtv-runpath.patch"))))))
+
 ;; Note: When changing the default gcc version, update
 ;;       the gcc-toolchain-* definitions and the gfortran definition
 ;;       accordingly.
diff --git a/gnu/packages/patches/gcc-9-strmov-store-file-names.patch b/gnu/packages/patches/gcc-9-strmov-store-file-names.patch
new file mode 100644
index 0000000000..0c5d70491a
--- /dev/null
+++ b/gnu/packages/patches/gcc-9-strmov-store-file-names.patch
@@ -0,0 +1,114 @@
+Make sure that statements such as:
+
+  strcpy (dst, "/gnu/store/…");
+
+or
+
+  static const char str[] = "/gnu/store/…";
+  …
+  strcpy (dst, str);
+
+do not result in chunked /gnu/store strings that are undetectable by
+Guix's GC and its grafting code.  See <https://bugs.gnu.org/24703>
+and <https://bugs.gnu.org/30395>.
+
+diff --git a/gcc/builtins.c b/gcc/builtins.c
+index d37d73fc4a0..dac33d9d29a 100644
+--- a/gcc/builtins.c
++++ b/gcc/builtins.c
+@@ -3282,6 +3282,58 @@ determine_block_size (tree len, rtx len_rtx,
+ 			  GET_MODE_MASK (GET_MODE (len_rtx)));
+ }
+
++extern void debug_tree (tree);
++
++/* Return true if STR contains the string "/gnu/store".  */
++
++bool
++store_reference_p (tree str)
++{
++  if (getenv ("GUIX_GCC_DEBUG") != NULL)
++    debug_tree (str);
++
++  if (TREE_CODE (str) == ADDR_EXPR)
++    str = TREE_OPERAND (str, 0);
++
++  if (TREE_CODE (str) == VAR_DECL
++      && TREE_STATIC (str)
++      && TREE_READONLY (str))
++    {
++      /* STR may be a 'static const' variable whose initial value
++         is a string constant.  See <https://bugs.gnu.org/30395>.  */
++      str = DECL_INITIAL (str);
++      if (str == NULL_TREE)
++        return false;
++    }
++
++  if (TREE_CODE (str) != STRING_CST)
++    return false;
++
++  int len;
++  const char *store;
++
++  store = getenv ("NIX_STORE") ? getenv ("NIX_STORE") : "/gnu/store";
++  len = strlen (store);
++
++  /* Size of the hash part of store file names, including leading slash and
++     trailing hyphen.  */
++  const int hash_len = 34;
++
++  if (TREE_STRING_LENGTH (str) < len + hash_len)
++    return false;
++
++  /* We cannot use 'strstr' because 'TREE_STRING_POINTER' returns a string
++     that is not necessarily NUL-terminated.  */
++
++  for (int i = 0; i < TREE_STRING_LENGTH (str) - (len + hash_len); i++)
++    {
++      if (strncmp (TREE_STRING_POINTER (str) + i, store, len) == 0)
++	return true;
++    }
++
++  return false;
++}
++
+ /* Try to verify that the sizes and lengths of the arguments to a string
+    manipulation function given by EXP are within valid bounds and that
+    the operation does not lead to buffer overflow or read past the end.
+@@ -3839,6 +3891,13 @@ expand_builtin_memory_copy_args (tree dest, tree src, tree len,
+   unsigned HOST_WIDE_INT max_size;
+   unsigned HOST_WIDE_INT probable_max_size;
+
++  /* Do not emit block moves, which translate to the 'movabs' instruction on
++     x86_64, when SRC refers to store items.  That way, store references
++     remain visible to the Guix GC and grafting code.  See
++     <https://bugs.gnu.org/24703>.  */
++  if (store_reference_p (src))
++    return NULL_RTX;
++
+   /* If DEST is not a pointer type, call the normal function.  */
+   if (dest_align == 0)
+     return NULL_RTX;
+diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
+index f30818042ee..56b592f9335 100644
+--- a/gcc/gimple-fold.c
++++ b/gcc/gimple-fold.c
+@@ -656,6 +656,8 @@ var_decl_component_p (tree var)
+ 	      && TREE_CODE (TREE_OPERAND (inner, 0)) == ADDR_EXPR));
+ }
+
++extern bool store_reference_p (tree);
++
+ /* Return TRUE if the SIZE argument, representing the size of an
+    object, is in a range of values of which exactly zero is valid.  */
+
+@@ -748,6 +750,9 @@ gimple_fold_builtin_memory_op (gimple_stmt_iterator *gsi,
+       off0 = build_int_cst (build_pointer_type_for_mode (char_type_node,
+ 							 ptr_mode, true), 0);
+
++      if (store_reference_p (src))
++        return false;
++
+       /* If we can perform the copy efficiently with first doing all loads
+          and then all stores inline it that way.  Currently efficiently
+ 	 means that we can load all the memory into a single integer
--
2.21.0






Information forwarded to guix-patches <at> gnu.org:
bug#35568; Package guix-patches. (Sun, 05 May 2019 14:34:02 GMT) Full text and rfc822 format available.

Message #11 received at 35568 <at> debbugs.gnu.org (full text, mbox):

From: Carl Dong <contact <at> carldong.me>
To: "35568 <at> debbugs.gnu.org" <35568 <at> debbugs.gnu.org>
Subject: [PATCH v2 2/3] gnu: cross-base: Apply gcc 8 patch to gcc >= 8.
Date: Sun, 05 May 2019 14:33:46 +0000
* gnu/packages/cross-base.scm (cross-gcc): Apply gcc 8 patch to gcc >= 8.
* gnu/packages/patches/gcc-8-cross-environment-variables.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add the patch.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/cross-base.scm                   |  7 +-
 .../gcc-8-cross-environment-variables.patch   | 67 +++++++++++++++++++
 3 files changed, 72 insertions(+), 3 deletions(-)
 create mode 100644 gnu/packages/patches/gcc-8-cross-environment-variables.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 7363655f38..847ebf677c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -813,6 +813,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-6-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-6-source-date-epoch-1.patch		\
   %D%/packages/patches/gcc-6-source-date-epoch-2.patch		\
+  %D%/packages/patches/gcc-8-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-8-strmov-store-file-names.patch	\
   %D%/packages/patches/gcc-9-strmov-store-file-names.patch	\
   %D%/packages/patches/gd-CVE-2018-5711.patch			\
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index bb3d6d916a..25caacb723 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -205,9 +205,10 @@ target that libc."
               (patches
                (append
                 (origin-patches (package-source xgcc))
-                (cons (if (version>=? (package-version xgcc) "6.0")
-                          (search-patch "gcc-6-cross-environment-variables.patch")
-                          (search-patch "gcc-cross-environment-variables.patch"))
+                (cons (cond
+                       ((version>=? (package-version xgcc) "8.0") (search-patch "gcc-8-cross-environment-variables.patch"))
+                       ((version>=? (package-version xgcc) "6.0") (search-patch "gcc-6-cross-environment-variables.patch"))
+                       (else  (search-patch "gcc-cross-environment-variables.patch")))
                       (cross-gcc-patches target))))
               (modules '((guix build utils)))
               (snippet
diff --git a/gnu/packages/patches/gcc-8-cross-environment-variables.patch b/gnu/packages/patches/gcc-8-cross-environment-variables.patch
new file mode 100644
index 0000000000..06309bdf9d
--- /dev/null
+++ b/gnu/packages/patches/gcc-8-cross-environment-variables.patch
@@ -0,0 +1,67 @@
+Search path environment variables for cross-compilers.  See the discussion
+at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.
+
+Note: Touch 'C_INCLUDE_PATH' et al. rather than 'CPATH', as discussed
+at <http://bugs.gnu.org/22186>.
+
+diff --git a/gcc/gcc.c b/gcc/gcc.c
+index a716f708259..dc7862f413a 100644
+--- a/gcc/gcc.c
++++ b/gcc/gcc.c
+@@ -4342,7 +4342,7 @@ process_command (unsigned int decoded_options_count,
+     }
+
+   temp = env.get (LIBRARY_PATH_ENV);
+-  if (temp && *cross_compile == '0')
++  if (temp)
+     {
+       const char *startp, *endp;
+       char *nstore = (char *) alloca (strlen (temp) + 3);
+diff --git a/gcc/incpath.c b/gcc/incpath.c
+index b11c6a57939..a66a94a04e5 100644
+--- a/gcc/incpath.c
++++ b/gcc/incpath.c
+@@ -472,8 +472,8 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
+ 			 int stdinc, int cxx_stdinc, int verbose)
+ {
+   static const char *const lang_env_vars[] =
+-    { "C_INCLUDE_PATH", "CPLUS_INCLUDE_PATH",
+-      "OBJC_INCLUDE_PATH", "OBJCPLUS_INCLUDE_PATH" };
++    { "CROSS_C_INCLUDE_PATH", "CROSS_CPLUS_INCLUDE_PATH",
++      "CROSS_OBJC_INCLUDE_PATH", "CROSS_OBJCPLUS_INCLUDE_PATH" };
+   cpp_options *cpp_opts = cpp_get_options (pfile);
+   size_t idx = (cpp_opts->objc ? 2: 0);
+
+@@ -484,7 +484,7 @@ register_include_chains (cpp_reader *pfile, const char *sysroot,
+
+   /* CPATH and language-dependent environment variables may add to the
+      include chain.  */
+-  add_env_var_paths ("CPATH", INC_BRACKET);
++  add_env_var_paths ("CROSS_CPATH", INC_BRACKET);
+   add_env_var_paths (lang_env_vars[idx], INC_SYSTEM);
+
+   target_c_incpath.extra_pre_includes (sysroot, iprefix, stdinc);
+diff --git a/gcc/system.h b/gcc/system.h
+index 4abc321c71d..d6186476024 100644
+--- a/gcc/system.h
++++ b/gcc/system.h
+@@ -1209,4 +1209,6 @@ helper_const_non_const_cast (const char *p)
+ void qsort_chk (void *, size_t, size_t, int (*)(const void *, const void *));
+ #endif
+
++#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH"
++
+ #endif /* ! GCC_SYSTEM_H */
+diff --git a/gcc/tlink.c b/gcc/tlink.c
+index ec20bd2fa0f..cd17bdce004 100644
+--- a/gcc/tlink.c
++++ b/gcc/tlink.c
+@@ -456,7 +456,7 @@ recompile_files (void)
+   file *f;
+
+   putenv (xstrdup ("COMPILER_PATH="));
+-  putenv (xstrdup ("LIBRARY_PATH="));
++  putenv (xstrdup (LIBRARY_PATH_ENV "="));
+
+   while ((f = file_pop ()) != NULL)
+     {
--
2.21.0






Information forwarded to guix-patches <at> gnu.org:
bug#35568; Package guix-patches. (Sun, 05 May 2019 14:36:02 GMT) Full text and rfc822 format available.

Message #14 received at 35568 <at> debbugs.gnu.org (full text, mbox):

From: Carl Dong <contact <at> carldong.me>
To: "35568 <at> debbugs.gnu.org" <35568 <at> debbugs.gnu.org>
Subject: [PATCH v2 3/3] gnu: gcc <at> 9: Fix limits.h include for cross builds.
Date: Sun, 05 May 2019 14:35:13 +0000
This allows us to supply gcc-9 as an optional argument to cross-gcc,
successfully constructing gcc-9-based cross-compilers.

* gnu/packages/gcc.scm (gcc-9)[source](patches): Add
  "gcc-9-asan-fix-limits-include.patch".
* gnu/packages/patches/gcc-9-asan-fix-limits-include.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add the patch.
---
 gnu/local.mk                                        |  1 +
 gnu/packages/gcc.scm                                |  1 +
 .../patches/gcc-9-asan-fix-limits-include.patch     | 13 +++++++++++++
 3 files changed, 15 insertions(+)
 create mode 100644 gnu/packages/patches/gcc-9-asan-fix-limits-include.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 847ebf677c..f2e10a4e24 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -815,6 +815,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/gcc-6-source-date-epoch-2.patch		\
   %D%/packages/patches/gcc-8-cross-environment-variables.patch	\
   %D%/packages/patches/gcc-8-strmov-store-file-names.patch	\
+  %D%/packages/patches/gcc-9-asan-fix-limits-include.patch	\
   %D%/packages/patches/gcc-9-strmov-store-file-names.patch	\
   %D%/packages/patches/gd-CVE-2018-5711.patch			\
   %D%/packages/patches/gd-CVE-2018-1000222.patch		\
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index eefce2737b..50c58c1828 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -531,6 +531,7 @@ It also includes runtime support libraries for these languages.")))
              (base32
               "1817nc2bqdc251k0lpc51cimna7v68xjrnvqzvc50q3ax4s6i9kr"))
             (patches (search-patches "gcc-9-strmov-store-file-names.patch"
+                                     "gcc-9-asan-fix-limits-include.patch"
                                      "gcc-5.0-libvtv-runpath.patch"))))))

 ;; Note: When changing the default gcc version, update
diff --git a/gnu/packages/patches/gcc-9-asan-fix-limits-include.patch b/gnu/packages/patches/gcc-9-asan-fix-limits-include.patch
new file mode 100644
index 0000000000..2f5ce7c697
--- /dev/null
+++ b/gnu/packages/patches/gcc-9-asan-fix-limits-include.patch
@@ -0,0 +1,13 @@
+diff --git a/libsanitizer/asan/asan_linux.cc b/libsanitizer/asan/asan_linux.cc
+index d92d0596b7c..7926536a0c3 100644
+--- a/libsanitizer/asan/asan_linux.cc
++++ b/libsanitizer/asan/asan_linux.cc
+@@ -30,7 +30,7 @@
+ #include <sys/types.h>
+ #include <dlfcn.h>
+ #include <fcntl.h>
+-#include <limits.h>
++#include <linux/limits.h>
+ #include <pthread.h>
+ #include <stdio.h>
+ #include <unistd.h>
--
2.21.0






Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Mon, 06 May 2019 09:14:02 GMT) Full text and rfc822 format available.

Notification sent to Carl Dong <contact <at> carldong.me>:
bug acknowledged by developer. (Mon, 06 May 2019 09:14:02 GMT) Full text and rfc822 format available.

Message #19 received at 35568-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Carl Dong <contact <at> carldong.me>
Cc: 35568-done <at> debbugs.gnu.org
Subject: Re: [bug#35568] [PATCH] gnu: gcc: Add 9.1.0.
Date: Mon, 06 May 2019 11:13:28 +0200
Hi Carl,

I applied all 3 patches and just got gcc <at> 9 built for x86_64.  \o/

I didn’t build the GCC 9 cross-compilers but I don’t see anything fishy
and you have enough interest in it that we’ll surely know if something
breaks.  ;-)

Thank you!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 03 Jun 2019 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 328 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.