gcc: update to 7.2.0

This commit is contained in:
Jürgen Buchmüller 2017-08-16 09:36:51 +02:00
parent 637230b81c
commit 1c2290eec1
7 changed files with 50 additions and 932 deletions

View File

@ -59,7 +59,7 @@ libgcc_s.so.1 libgcc-4.4.0_1
libgcj.so.17 libgcj-6.3.0_1
libgcj-tools.so.17 libgcj-6.2.1_1
libgij.so.17 libgcj-6.2.1_1
libgo.so.9 libgo-6.2.1_1
libgo.so.11 libgo-7.2.0_1
libmpx.so.2 libmpx-6.2.1_1
libmpxwrappers.so.2 libmpx-6.2.1_1
libperl.so.5.26 perl-5.26.0_1
@ -786,7 +786,7 @@ libgdkmm-2.4.so.1 gtkmm2-2.24.0_1
libgtkmm-2.4.so.1 gtkmm2-2.24.0_1
libseed-gtk3.so.0 libseed-3.0.0_1
libquadmath.so.0 libquadmath-4.4.0_1
libgfortran.so.3 libgfortran-4.4.0_1
libgfortran.so.4 libgfortran-7.2.0_1
libmozjs185.so.1.0 js-1.8.5_1
libwebp.so.7 libwebp-0.6.0_1
libwebpmux.so.3 libwebp-0.6.0_1
@ -1605,7 +1605,7 @@ libextractor_common.so.1 libextractor-1.1_1
libpano13.so.3 libpano13-2.9.19_1
libubsan.so.0 libsanitizer-6.3.0_1
libtsan.so.0 libsanitizer-6.3.0_1
libasan.so.3 libsanitizer-6.3.0_1
libasan.so.4 libsanitizer-7.2.0_1
liblsan.so.0 libsanitizer-6.3.0_1
libcilkrts.so.5 libcilkrts-6.3.0_1
libvtv.so.0 libvtv-6.3.0_1

View File

@ -1,544 +0,0 @@
# HG changeset patch
# Parent 90a7a3809a7ccb60e357b5e88382260877f82257
Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one.
diff -r 90a7a3809a7c libstdc++-v3/configure.host
--- a/libstdc++-v3/configure.host Thu Dec 24 11:22:15 2015 -0500
+++ b/libstdc++-v3/configure.host Thu Dec 24 11:24:45 2015 -0500
@@ -266,6 +266,13 @@
os_include_dir="os/bsd/freebsd"
;;
gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+ # check for musl by target
+ case "${host_os}" in
+ *-musl*)
+ os_include_dir="os/generic"
+ ;;
+ *)
+
if [ "$uclibc" = "yes" ]; then
os_include_dir="os/uclibc"
elif [ "$bionic" = "yes" ]; then
@@ -274,6 +274,9 @@
os_include_dir="os/gnu-linux"
fi
;;
+
+ esac
+ ;;
hpux*)
os_include_dir="os/hpux"
;;
diff -r 30a957f60ddb gcc/ginclude/stddef.h
--- a/gcc/ginclude/stddef.h Thu Dec 24 11:24:45 2015 -0500
+++ b/gcc/ginclude/stddef.h Thu Dec 24 11:24:47 2015 -0500
@@ -184,6 +184,7 @@
#ifndef _GCC_SIZE_T
#ifndef _SIZET_
#ifndef __size_t
+#ifndef __DEFINED_size_t /* musl */
#define __size_t__ /* BeOS */
#define __SIZE_T__ /* Cray Unicos/Mk */
#define _SIZE_T
@@ -200,6 +201,7 @@
#define ___int_size_t_h
#define _GCC_SIZE_T
#define _SIZET_
+#define __DEFINED_size_t /* musl */
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|| defined(__DragonFly__) \
|| defined(__FreeBSD_kernel__)
@@ -218,6 +220,7 @@
typedef long ssize_t;
#endif /* __BEOS__ */
#endif /* !(defined (__GNUG__) && defined (size_t)) */
+#endif /* __DEFINED_size_t */
#endif /* __size_t */
#endif /* _SIZET_ */
#endif /* _GCC_SIZE_T */
# HG changeset patch
# Parent 90228af47e55eb338c7f672e4aca5ac81cf5f14c
A fix for libgomp to correctly request a POSIX version for time support.
diff -r 90228af47e55 libgomp/config/posix/time.c
--- a/libgomp/config/posix/time.c Thu Dec 24 11:24:47 2015 -0500
+++ b/libgomp/config/posix/time.c Thu Dec 24 11:24:49 2015 -0500
@@ -29,6 +29,8 @@
The following implementation uses the most simple POSIX routines.
If present, POSIX 4 clocks should be used instead. */
+#define _POSIX_C_SOURCE 199309L /* for clocks */
+
#include "libgomp.h"
#include <unistd.h>
#if TIME_WITH_SYS_TIME
diff -r b08d4bc3d2ba libgcc/unwind-dw2-fde-dip.c
--- a/libgcc/unwind-dw2-fde-dip.c Thu Dec 24 11:24:49 2015 -0500
+++ b/libgcc/unwind-dw2-fde-dip.c Thu Dec 24 11:24:51 2015 -0500
@@ -46,6 +46,10 @@
#include "unwind-compat.h"
#include "gthr.h"
+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
+# define USE_PT_GNU_EH_FRAME
+#endif
+
#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
&& (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
diff -r 1f375ed3689f gcc/gcc.c
--- a/gcc/gcc.c Thu Dec 24 11:24:53 2015 -0500
+++ b/gcc/gcc.c Thu Dec 24 11:24:56 2015 -0500
@@ -860,7 +860,7 @@
#ifndef LINK_SSP_SPEC
#ifdef TARGET_LIBC_PROVIDES_SSP
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
- "|fstack-protector-strong|fstack-protector-explicit:}"
+ "|fstack-protector-strong|fstack-protector-explicit:-lssp_nonshared}"
#else
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
"|fstack-protector-strong|fstack-protector-explicit" \
# HG changeset patch
# Parent 76b553fabcf19eec5df2df7f05ce15a4bf8c3996
Support for mips-linux-musl.
diff -r 76b553fabcf1 gcc/config/mips/linux.h
--- a/gcc/config/mips/linux.h Thu Dec 24 11:25:02 2015 -0500
+++ b/gcc/config/mips/linux.h Thu Dec 24 11:25:04 2015 -0500
@@ -31,6 +31,13 @@
#undef UCLIBC_DYNAMIC_LINKER32
#define UCLIBC_DYNAMIC_LINKER32 \
"%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
+
+#undef MUSL_DYNAMIC_LINKER32
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1"
+#undef MUSL_DYNAMIC_LINKER64
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1"
+#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1"
+
#undef UCLIBC_DYNAMIC_LINKER64
#define UCLIBC_DYNAMIC_LINKER64 \
"%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
# HG changeset patch
# Parent 971d410411735f0b04eb07236659097986926213
Support for powerpc-linux-musl.
diff -r 971d41041173 gcc/config.gcc
--- a/gcc/config.gcc Fri Dec 25 08:44:09 2015 -0500
+++ b/gcc/config.gcc Fri Dec 25 09:42:16 2015 -0500
@@ -2475,6 +2475,10 @@
powerpc*-*-linux*paired*)
tm_file="${tm_file} rs6000/750cl.h" ;;
esac
+ case ${target} in
+ *-linux*-musl*)
+ enable_secureplt=yes ;;
+ esac
if test x${enable_secureplt} = xyes; then
tm_file="rs6000/secureplt.h ${tm_file}"
fi
diff -r a522e4b04c77 gcc/config/microblaze/microblaze.h
--- a/gcc/config/microblaze/microblaze.h Thu Dec 24 11:25:11 2015 -0500
+++ b/gcc/config/microblaze/microblaze.h Thu Dec 24 11:25:13 2015 -0500
@@ -218,6 +218,12 @@
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
+#undef SIZE_TYPE
+#define SIZE_TYPE "unsigned int"
+
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE "int"
+
#define CONSTANT_ALIGNMENT(EXP, ALIGN) \
((TREE_CODE (EXP) == STRING_CST || TREE_CODE (EXP) == CONSTRUCTOR) \
&& (ALIGN) < BITS_PER_WORD \
diff -r f2936ad874dd gcc/config/sh/linux.h
--- a/gcc/config/sh/linux.h Fri Sep 28 16:32:03 2012 +1000
+++ b/gcc/config/sh/linux.h Thu Dec 24 11:25:15 2015 -0500
@@ -64,7 +64,14 @@
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
+#define MUSL_DYNAMIC_LINKER_E "eb"
+#else
+#define MUSL_DYNAMIC_LINKER_E
+#endif
+
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
#undef SUBTARGET_LINK_EMUL_SUFFIX
#define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
Do not use weak references on any targets for gthread. Necessary on musl, safe elsewhere.
diff -r e180e4cfc879 libgcc/gthr.h
--- a/libgcc/gthr.h Thu Dec 24 11:25:15 2015 -0500
+++ b/libgcc/gthr.h Thu Dec 24 11:25:17 2015 -0500
@@ -136,10 +136,8 @@
/* The pe-coff weak support isn't fully compatible to ELF's weak.
For static libraries it might would work, but as we need to deal
with shared versions too, we disable it for mingw-targets. */
-#ifdef __MINGW32__
#undef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 0
-#endif
#ifndef GTHREAD_USE_WEAK
#define GTHREAD_USE_WEAK 1
From 0a9ed0479203cb7e69c3745b0c259007410f39ba Mon Sep 17 00:00:00 2001
From: Szabolcs Nagy <nsz@port70.net>
Date: Sat, 24 Oct 2015 20:09:53 +0000
Subject: [PATCH 47/47] libgcc_s: Use alias for __cpu_indicator_init instead of
symver
Adapter from
https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00899.html
This fix was debated but hasnt been applied gcc upstream since
they expect musl to support '@' in symbol versioning which is
a sun/gnu versioning extention. This patch however avoids the
need for the '@' symbols at all
libgcc/Changelog:
2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
* config/i386/cpuinfo.c (__cpu_indicator_init_local): Add.
(__cpu_indicator_init@GCC_4.8.0, __cpu_model@GCC_4.8.0): Remove.
* config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Remove -DUSE_ELF_SYMVER.
gcc/Changelog:
2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
* config/i386/i386.c (ix86_expand_builtin): Make __builtin_cpu_init
call __cpu_indicator_init_local instead of __cpu_indicator_init.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Rejected
gcc/config/i386/i386.c | 4 ++--
libgcc/config/i386/cpuinfo.c | 6 +++---
libgcc/config/i386/t-linux | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 861a029..1c97d72 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -40497,10 +40497,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
{
case IX86_BUILTIN_CPU_INIT:
{
- /* Make it call __cpu_indicator_init in libgcc. */
+ /* Make it call __cpu_indicator_init_local in libgcc.a. */
tree call_expr, fndecl, type;
type = build_function_type_list (integer_type_node, NULL_TREE);
- fndecl = build_fn_decl ("__cpu_indicator_init", type);
+ fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
call_expr = build_call_expr (fndecl, 0);
return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
}
diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
index 8c2248d..6c82f15 100644
--- a/libgcc/config/i386/cpuinfo.c
+++ b/libgcc/config/i386/cpuinfo.c
@@ -485,7 +485,7 @@ __cpu_indicator_init (void)
return 0;
}
-#if defined SHARED && defined USE_ELF_SYMVER
-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init@GCC_4.8.0");
-__asm__ (".symver __cpu_model, __cpu_model@GCC_4.8.0");
+#ifndef SHARED
+int __cpu_indicator_init_local (void)
+ __attribute__ ((weak, alias ("__cpu_indicator_init")));
#endif
diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
index 11bb46e..4f47f7b 100644
--- a/libgcc/config/i386/t-linux
+++ b/libgcc/config/i386/t-linux
@@ -3,4 +3,4 @@
# t-slibgcc-elf-ver and t-linux
SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver
-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
+HOST_LIBGCC2_CFLAGS += -mlong-double-80
--
2.9.0
--- a/boehm-gc/os_dep.c 2013-09-17 07:46:00.969884340 +0000
+++ b/boehm-gc/os_dep.c 2013-09-17 06:53:53.629884946 +0000
@@ -26,7 +26,7 @@
# define __KERNEL__
# include <asm/signal.h>
# undef __KERNEL__
-# else
+# elif defined(__GLIBC__)
/* Kernels prior to 2.1.1 defined struct sigcontext_struct instead of */
/* struct sigcontext. libc6 (glibc2) uses "struct sigcontext" in */
/* prototypes, so we have to include the top-level sigcontext.h to */
--- a/boehm-gc/dyn_load.c
+++ b/boehm-gc/dyn_load.c
@@ -459,9 +459,7 @@
/* For glibc 2.2.4+. Unfortunately, it doesn't work for older */
/* versions. Thanks to Jakub Jelinek for most of the code. */
-# if (defined(LINUX) || defined (__GLIBC__)) /* Are others OK here, too? */ \
- && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
- || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
+# if (defined(LINUX) || defined (__GLIBC__))
/* We have the header files for a glibc that includes dl_iterate_phdr. */
/* It may still not be available in the library on the target system. */
--- a/boehm-gc/include/private/gcconfig.h
+++ b/boehm-gc/include/private/gcconfig.h
@@ -696,7 +696,7 @@
# ifdef __ELF__
# define DYNAMIC_LOADING
# include <features.h>
-# if defined(__GLIBC__)&& __GLIBC__>=2
+# if 1
# define SEARCH_FOR_DATA_START
# else /* !GLIBC2 */
extern char **__environ;
@@ -1167,7 +1167,7 @@
# define DATASTART ((ptr_t)((((word) (_etext)) + 0xfff) & ~0xfff))
# endif
# include <features.h>
-# if defined(__GLIBC__) && __GLIBC__ >= 2
+# if 1
# define SEARCH_FOR_DATA_START
# else
extern char **__environ;
@@ -1387,7 +1387,7 @@
# define HBLKSIZE 4096
# endif
# define USE_GENERIC_PUSH_REGS
-# if __GLIBC__ == 2 && __GLIBC_MINOR__ >= 2 || __GLIBC__ > 2
+# if 1
# define LINUX_STACKBOTTOM
# else
# define STACKBOTTOM 0x80000000
@@ -1909,7 +1909,7 @@
# ifdef __ELF__
# define DYNAMIC_LOADING
# include <features.h>
-# if defined(__GLIBC__) && __GLIBC__ >= 2
+# if 1
# define SEARCH_FOR_DATA_START
# else
extern char **__environ;
--- a/libjava/gnu/gcj/convert/natIconv.cc
+++ b/libjava/gnu/gcj/convert/natIconv.cc
@@ -24,6 +24,13 @@
#ifdef HAVE_ICONV
#include <iconv.h>
+#include <endian.h>
+
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define UCS2_CHARSET "UCS-2BE"
+#else
+#define UCS2_CHARSET "UCS-2LE"
+#endif
template<typename T>
static inline size_t
@@ -45,7 +52,7 @@
_Jv_GetStringUTFRegion (encoding, 0, encoding->length(), buffer);
buffer[len] = '\0';
- iconv_t h = iconv_open ("UCS-2", buffer);
+ iconv_t h = iconv_open (UCS2_CHARSET, buffer);
if (h == (iconv_t) -1)
throw new ::java::io::UnsupportedEncodingException (encoding);
@@ -99,18 +106,6 @@
throw new ::java::io::CharConversionException ();
}
- if (iconv_byte_swap)
- {
- size_t max = (old_out - outavail) / sizeof (jchar);
- for (size_t i = 0; i < max; ++i)
- {
- // Byte swap.
- jchar c = (((out[outpos + i] & 0xff) << 8)
- | ((out[outpos + i] >> 8) & 0xff));
- outbuf[i] = c;
- }
- }
-
inpos += old_in - inavail;
return (old_out - outavail) / sizeof (jchar);
#else /* HAVE_ICONV */
@@ -145,7 +140,7 @@
_Jv_GetStringUTFRegion (encoding, 0, encoding->length(), buffer);
buffer[len] = '\0';
- iconv_t h = iconv_open (buffer, "UCS-2");
+ iconv_t h = iconv_open (buffer, UCS2_CHARSET);
if (h == (iconv_t) -1)
throw new ::java::io::UnsupportedEncodingException (encoding);
@@ -187,20 +182,6 @@
char *inbuf = (char *) &chars[inpos];
char *outbuf = (char *) &out[count];
- if (iconv_byte_swap)
- {
- // Ugly performance penalty -- don't use losing systems!
- temp_buffer = (jchar *) _Jv_Malloc (inlength * sizeof (jchar));
- for (int i = 0; i < inlength; ++i)
- {
- // Byte swap.
- jchar c = (((chars[inpos + i] & 0xff) << 8)
- | ((chars[inpos + i] >> 8) & 0xff));
- temp_buffer[i] = c;
- }
- inbuf = (char *) temp_buffer;
- }
-
size_t loop_old_in = old_in;
while (1)
{
@@ -252,44 +233,7 @@
jboolean
gnu::gcj::convert::IOConverter::iconv_init (void)
{
- // Some versions of iconv() always return their UCS-2 results in
- // big-endian order, and they also require UCS-2 inputs to be in
- // big-endian order. For instance, glibc 2.1.3 does this. If the
- // UTF-8=>UCS-2 iconv converter has this feature, then we assume
- // that all UCS-2 converters do. (This might not be the best
- // heuristic, but is is all we've got.)
- jboolean result = false;
-#ifdef HAVE_ICONV
- iconv_t handle = iconv_open ("UCS-2", "UTF-8");
- if (handle != (iconv_t) -1)
- {
- jchar c;
- unsigned char in[4];
- char *inp, *outp;
- size_t inc, outc, r;
-
- // This is the UTF-8 encoding of \ufeff. At least Tru64 UNIX libiconv
- // needs the trailing NUL byte, otherwise iconv fails with EINVAL.
- in[0] = 0xef;
- in[1] = 0xbb;
- in[2] = 0xbf;
- in[3] = 0x00;
-
- inp = (char *) in;
- inc = 4;
- outp = (char *) &c;
- outc = 2;
-
- r = iconv_adapter (iconv, handle, &inp, &inc, &outp, &outc);
- // Conversion must be complete for us to use the result.
- if (r != (size_t) -1 && inc == 0 && outc == 0)
- result = (c != 0xfeff);
-
- // Release iconv handle.
- iconv_close (handle);
- }
-#endif /* HAVE_ICONV */
- return result;
+ return false;
}
void
--- a/libjava/gnu/classpath/natSystemProperties.cc
+++ b/libjava/gnu/classpath/natSystemProperties.cc
@@ -289,7 +289,7 @@
// just default to `en_US'.
setlocale (LC_ALL, "");
char *locale = setlocale (LC_MESSAGES, "");
- if (locale && strlen (locale) >= 2)
+ if (locale && strlen (locale) >= 2 && (locale[2] == '\0' || locale[2] == '_'))
{
char buf[3];
buf[2] = '\0';
--- a/libjava/posix-threads.cc
+++ b/libjava/posix-threads.cc
@@ -657,6 +657,7 @@
struct sched_param param;
pthread_attr_t attr;
struct starter *info;
+ size_t ss;
if (data->flags & FLAG_START)
return;
@@ -675,8 +676,25 @@
// Set stack size if -Xss option was given.
if (gcj::stack_size > 0)
{
- int e = pthread_attr_setstacksize (&attr, gcj::stack_size);
+ ss = gcj::stack_size;
+ }
+ else
+ {
+ int e = pthread_attr_getstacksize (&attr, &ss);
+ if (e != 0)
+ JvFail (strerror (e));
+
+ // Request at least 1meg of stack
+ if (ss >= 1024 * 1024)
+ ss = 0;
+ else
+ ss = 1024 * 1024;
+ }
+
+ if (ss)
+ {
+ int e = pthread_attr_setstacksize (&attr, ss);
if (e != 0)
JvFail (strerror (e));
}
info = (struct starter *) _Jv_AllocBytes (sizeof (struct starter));
--- a/libgo/mksysinfo.sh
+++ b/libgo/mksysinfo.sh
@@ -166,6 +166,13 @@ cat > sysinfo.c <<EOF
#if defined(HAVE_SCHED_H)
#include <sched.h>
#endif
+#if !defined(__GLIBC__)
+#include <sys/types.h>
+#undef off64_t
+#undef loff_t
+typedef off_t loff_t;
+typedef off_t off64_t;
+#endif
/* Constants that may only be defined as expressions on some systems,
expressions too complex for -fdump-go-spec to handle. These are
--- a/libgo/runtime/proc.c 2016-09-23 16:17:22.000000000 +0200
+++ b/libgo/runtime/proc.c 2016-10-03 07:33:42.186000000 +0200
@@ -150,6 +150,20 @@
asm ("st %%g7, %0" : "=m"(c->uc_mcontext.gregs[REG_G7]));
}
+# elif !defined(__GLIBC__)
+
+static inline void
+initcontext(void)
+{
+ // FIXME: Do we need to save (part of) the current context?
+}
+
+static inline void
+fixcontext(ucontext_t *c __attribute__ ((unused)))
+{
+ // FIXME: Do we need to restore (part of) the current context?
+}
+
# else
# error unknown case for SETCONTEXT_CLOBBERS_TLS

View File

@ -1,211 +0,0 @@
Cherry picked the gcc commits 14c2f22a1877f6b60a2f7c2f83ffb032759456a6
and 72edc2c02f8b4768ad660f46a1c7e2400c0a8e06 changes and edited
to apply with patch_args -p0
--- libgcc/config/aarch64/linux-unwind.h
+++ libgcc/config/aarch64/linux-unwind.h
@@ -55,7 +55,7 @@ aarch64_fallback_frame_state (struct _Unwind_Context *context,
struct rt_sigframe
{
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
};
struct rt_sigframe *rt_;
--- libgcc/config/alpha/linux-unwind.h
+++ libgcc/config/alpha/linux-unwind.h
@@ -51,7 +51,7 @@ alpha_fallback_frame_state (struct _Unwind_Context *context,
{
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
sc = &rt_->uc.uc_mcontext;
}
--- libgcc/config/bfin/linux-unwind.h
+++ libgcc/config/bfin/linux-unwind.h
@@ -52,7 +52,7 @@ bfin_fallback_frame_state (struct _Unwind_Context *context,
void *puc;
char retcode[8];
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
--- libgcc/config/i386/linux-unwind.h
+++ libgcc/config/i386/linux-unwind.h
@@ -58,7 +58,7 @@ x86_64_fallback_frame_state (struct _Unwind_Context *context,
if (*(unsigned char *)(pc+0) == 0x48
&& *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
{
- struct ucontext *uc_ = context->cfa;
+ ucontext_t *uc_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
because it does not alias anything. */
@@ -138,7 +138,7 @@ x86_fallback_frame_state (struct _Unwind_Context *context,
siginfo_t *pinfo;
void *puc;
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
--- libgcc/config/m68k/linux-unwind.h
+++ libgcc/config/m68k/linux-unwind.h
@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* <sys/ucontext.h> is unfortunately broken right now. */
struct uw_ucontext {
unsigned long uc_flags;
- struct ucontext *uc_link;
+ ucontext_t *uc_link;
stack_t uc_stack;
mcontext_t uc_mcontext;
unsigned long uc_filler[80];
--- libgcc/config/nios2/linux-unwind.h
+++ libgcc/config/nios2/linux-unwind.h
@@ -38,7 +38,7 @@ struct nios2_mcontext {
struct nios2_ucontext {
unsigned long uc_flags;
- struct ucontext *uc_link;
+ ucontext_t *uc_link;
stack_t uc_stack;
struct nios2_mcontext uc_mcontext;
sigset_t uc_sigmask; /* mask last for extensibility */
--- libgcc/config/pa/linux-unwind.h
+++ libgcc/config/pa/linux-unwind.h
@@ -80,7 +80,7 @@ pa32_fallback_frame_state (struct _Unwind_Context *context,
struct sigcontext *sc;
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *frame;
/* rt_sigreturn trampoline:
--- libgcc/config/sh/linux-unwind.h
+++ libgcc/config/sh/linux-unwind.h
@@ -82,7 +82,7 @@ sh_fallback_frame_state (struct _Unwind_Context *context,
{
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_ = context->cfa;
/* The void * cast is necessary to avoid an aliasing warning.
The aliasing warning is correct, but should not be a problem
--- libgcc/config/tilepro/linux-unwind.h
+++ libgcc/config/tilepro/linux-unwind.h
@@ -61,7 +61,7 @@ tile_fallback_frame_state (struct _Unwind_Context *context,
struct rt_sigframe {
unsigned char save_area[C_ABI_SAVE_AREA_SIZE];
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_;
/* Return if this is not a signal handler. */
--- libgcc/config/xtensa/linux-unwind.h
+++ libgcc/config/xtensa/linux-unwind.h
@@ -67,7 +67,7 @@ xtensa_fallback_frame_state (struct _Unwind_Context *context,
struct rt_sigframe {
siginfo_t info;
- struct ucontext uc;
+ ucontext_t uc;
} *rt_;
/* movi a2, __NR_rt_sigreturn; syscall */
--- libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 2015-10-21 09:32:45.000000000 +0200
+++ libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc 2017-08-05 18:16:36.004549680 +0200
@@ -267,7 +267,7 @@
// Alternate stack for signal handling.
InternalScopedBuffer<char> handler_stack_memory(kHandlerStackSize);
- struct sigaltstack handler_stack;
+ stack_t handler_stack;
internal_memset(&handler_stack, 0, sizeof(handler_stack));
handler_stack.ss_sp = handler_stack_memory.data();
handler_stack.ss_size = kHandlerStackSize;
--- libsanitizer/sanitizer_common/sanitizer_linux.cc 2015-11-23 10:07:18.000000000 +0100
+++ libsanitizer/sanitizer_common/sanitizer_linux.cc 2017-08-05 19:03:06.916498311 +0200
@@ -546,8 +546,7 @@
}
#endif
-uptr internal_sigaltstack(const struct sigaltstack *ss,
- struct sigaltstack *oss) {
+uptr internal_sigaltstack(const void *ss, void *oss) {
return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss);
}
--- libsanitizer/sanitizer_common/sanitizer_linux.h 2015-10-21 09:32:45.000000000 +0200
+++ libsanitizer/sanitizer_common/sanitizer_linux.h 2017-08-05 19:03:47.631527380 +0200
@@ -20,6 +20,5 @@
struct link_map; // Opaque type returned by dlopen().
-struct sigaltstack;
namespace __sanitizer {
// Dirent structure for getdents(). Note that this structure is different from
@@ -28,8 +29,7 @@
// Syscall wrappers.
uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
-uptr internal_sigaltstack(const struct sigaltstack* ss,
- struct sigaltstack* oss);
+uptr internal_sigaltstack(const void* ss, void* oss);
uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
__sanitizer_sigset_t *oldset);
void internal_sigfillset(__sanitizer_sigset_t *set);
--- libsanitizer/tsan/tsan_platform_linux.cc
+++ libsanitizer/tsan/tsan_platform_linux.cc
@@ -287,7 +287,7 @@ void InitializePlatform() {
int ExtractResolvFDs(void *state, int *fds, int nfd) {
#if SANITIZER_LINUX && !SANITIZER_ANDROID
int cnt = 0;
- __res_state *statp = (__res_state*)state;
+ struct __res_state *statp = (struct __res_state*)state;
for (int i = 0; i < MAXNS && cnt < nfd; i++) {
if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
fds[cnt++] = statp->_u._ext.nssocks[i];
--- libjava/include/i386-signal.h 2011-12-20 13:18:26.000000000 +0100
+++ libjava/include/i386-signal.h 2017-08-07 16:28:12.038745548 +0200
@@ -29,7 +29,7 @@
#define HANDLE_DIVIDE_OVERFLOW \
do \
{ \
- struct ucontext *_uc = (struct ucontext *)_p; \
+ ucontext_t *_uc = (ucontext_t *)_p; \
gregset_t &_gregs = _uc->uc_mcontext.gregs; \
unsigned char *_eip = (unsigned char *)_gregs[REG_EIP]; \
\
--- libjava/include/s390-signal.h 2011-01-03 21:52:22.000000000 +0100
+++ libjava/include/s390-signal.h 2017-08-07 16:28:25.206763588 +0200
@@ -51,7 +51,7 @@
struct \
{ \
unsigned long int uc_flags; \
- struct ucontext *uc_link; \
+ ucontext_t *uc_link; \
stack_t uc_stack; \
mcontext_t uc_mcontext; \
unsigned long sigmask[2]; \
--- libjava/include/x86_64-signal.h 2013-01-04 13:49:55.000000000 +0100
+++ libjava/include/x86_64-signal.h 2017-08-07 16:28:36.446778971 +0200
@@ -28,7 +28,7 @@
#define HANDLE_DIVIDE_OVERFLOW \
do \
{ \
- struct ucontext *_uc = (struct ucontext *)_p; \
+ ucontext_t *_uc = (ucontext_t *)_p; \
gregset_t &_gregs = _uc->uc_mcontext.gregs; \
unsigned char *_rip = (unsigned char *)_gregs[REG_RIP]; \
\

View File

@ -1,60 +0,0 @@
Based on https://gcc.gnu.org/ml/gcc-patches/2015-06/txtLtaPOCTgpq.txt
Support for deterministic builds with externally defined
values for the macros __DATE__, __TIME__ and __DATETIME__.
If the environment variable SOURCE_DATE_EPOCH is defined,
use its value instead of the time(2) return value as
seconds since the Epoch.
Use strtoll() to convert SOURCE_DATE_EPOCH just in case
time_t is some day promoted to a 64 bit value.
--- libcpp/macro.c
+++ libcpp/macro.c
@@ -356,14 +356,38 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node)
slow on some systems. */
time_t tt;
struct tm *tb = NULL;
+ char *source_date_epoch;
- /* (time_t) -1 is a legitimate value for "number of seconds
- since the Epoch", so we have to do a little dance to
- distinguish that from a genuine error. */
- errno = 0;
- tt = time(NULL);
- if (tt != (time_t)-1 || errno == 0)
- tb = localtime (&tt);
+ /* Allow the date and time to be set externally by an exported
+ environment variable to enable reproducible builds. */
+ source_date_epoch = getenv ("SOURCE_DATE_EPOCH");
+ if (source_date_epoch)
+ {
+ errno = 0;
+ tt = (time_t) strtoll (source_date_epoch, NULL, 10);
+ if (errno == 0)
+ {
+ tb = gmtime (&tt);
+ if (tb == NULL)
+ cpp_error (pfile, CPP_DL_ERROR,
+ "SOURCE_DATE_EPOCH=\"%s\" is not a valid date",
+ source_date_epoch);
+ }
+ else
+ cpp_error (pfile, CPP_DL_ERROR,
+ "SOURCE_DATE_EPOCH=\"%s\" is not a valid number",
+ source_date_epoch);
+ }
+ else
+ {
+ /* (time_t) -1 is a legitimate value for "number of seconds
+ since the Epoch", so we have to do a little dance to
+ distinguish that from a genuine error. */
+ errno = 0;
+ tt = time(NULL);
+ if (tt != (time_t)-1 || errno == 0)
+ tb = localtime (&tt);
+ }
if (tb)
{

View File

@ -0,0 +1,23 @@
--- gcc/targhooks.c 2017-02-07 12:29:06.644837000 +0100
+++ gcc/targhooks.c 2017-10-29 17:08:58.318032821 +0100
@@ -856,8 +856,8 @@
if (t == NULL_TREE)
{
t = build_function_type_list (void_type_node, NULL_TREE);
- t = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL,
- get_identifier ("__stack_chk_fail_local"), t);
+ t = build_decl (UNKNOWN_LOCATION,
+ FUNCTION_DECL, get_identifier ("__stack_chk_fail"), t);
TREE_STATIC (t) = 1;
TREE_PUBLIC (t) = 1;
DECL_EXTERNAL (t) = 1;
@@ -866,8 +866,8 @@
TREE_NOTHROW (t) = 1;
DECL_ARTIFICIAL (t) = 1;
DECL_IGNORED_P (t) = 1;
+ DECL_VISIBILITY (t) = VISIBILITY_DEFAULT;
DECL_VISIBILITY_SPECIFIED (t) = 1;
- DECL_VISIBILITY (t) = VISIBILITY_HIDDEN;
stack_chk_fail_decl = t;
}

View File

@ -1,16 +1,15 @@
# Template build file for 'gcc'
_majorver=6.3
_gcjrel=17
_majorver=7.2
pkgname=gcc
version=${_majorver}.0
revision=5
revision=1
short_desc="The GNU C Compiler"
maintainer="Juan RP <xtraeme@voidlinux.eu>"
homepage="http://gcc.gnu.org"
license="GFDL-1.2, GPL-3, LGPL-2.1"
distfiles="${GNU_SITE}/gcc/gcc-${version}/gcc-${version}.tar.bz2"
checksum=f06ae7f3f790fbf0f018f6d40e844451e6bc3b7bc96e128e63b09825c1f8b29f
distfiles="${GNU_SITE}/gcc/gcc-${version}/gcc-${version}.tar.xz"
checksum=1cf7adf8ff4b5aa49041c8734bbcf1ad18cc4c94d0029aae0f4e48841088479a
nopie=yes
lib32disabled=yes
@ -27,12 +26,9 @@ subpackages="libgcc libgomp libgomp-devel libatomic libatomic-devel"
subpackages+=" libssp libssp-devel"
if [ -n "$CHROOT_READY" -a -z "$CROSS_BUILD" ]; then
# Required by gcj
hostmakedepends+=" zip unzip"
subpackages+=" gcc-fortran gcc-objc gcc-objc++"
subpackages+=" libgfortran-devel libgfortran"
subpackages+=" libobjc-devel libobjc"
subpackages+=" gcc-gcj libgcj-devel libgcj gcc-gcj-jdk-compat"
case "$XBPS_TARGET_MACHINE" in
*-musl) # Go won't link for musl libc
;;
@ -82,11 +78,22 @@ esac
replaces="gcc-c++>=0"
pre_configure() {
case "$XBPS_TARGET_MACHINE" in
*-musl) patch -Np1 -i ${FILESDIR}/gcc-${version}-musl.diff;;
esac
# _FORTIFY_SOURCE needs an optimization level.
sed -i "/ac_cpp=/s/\$CPPFLAGS/\$CPPFLAGS -O2/" {gcc,libiberty}/configure
if [ -n "$nopie" ]; then
# Fix configure failures by adding -no-pie when linking conftest.c files
find -name configure -exec sed -i {} \
-e 's;$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS;& -no-pie;' \
\;
# Fix linking error for fixincl by adding -no-pie
sed -i fixincludes/Makefile.in \
-e 's;-o $(FI);-no-pie &;' \
-e 's;-o $@;-no-pie &;'
# Fix linking error for gotools by adding -no-pie
sed -i gotools/Makefile.in \
-e 's;LINK = .*;& -no-pie;'
fi
}
do_configure() {
local _langs _args _hash
@ -131,7 +138,7 @@ do_configure() {
_args+=" --with-mpc=${XBPS_MASTERDIR}/usr"
_args+=" --build=${_triplet}"
else
_langs="c,c++,objc,obj-c++,fortran,lto,java"
_langs="c,c++,objc,obj-c++,fortran,lto"
case "$XBPS_TARGET_MACHINE" in
*-musl) # Linking libgo.so is broken for musl libc
;;
@ -139,7 +146,6 @@ do_configure() {
;;
esac
_args+=" --build=${_triplet}"
_args+=" --enable-java-gc=boehm"
_args+=" --enable-fast-character"
fi
fi
@ -159,7 +165,6 @@ do_configure() {
export CFLAGS="${CFLAGS/-D_FORTIFY_SOURCE=2/}"
export CXXFLAGS="${CXXFLAGS/-D_FORTIFY_SOURCE=2/}"
export glibcxx_cv_c99_math_cxx98=yes glibcxx_cv_c99_math_cxx11=yes
_args+=" --prefix=/usr"
_args+=" --mandir=/usr/share/man"
@ -177,6 +182,8 @@ do_configure() {
_args+=" --enable-serial-configure"
_args+=" --disable-werror"
_args+=" --disable-nls"
_args+=" --enable-default-pie"
_args+=" --enable-default-ssp"
_args+=" --enable-checking=release"
_args+=" --disable-libstdcxx-pch"
_args+=" --with-isl"
@ -189,9 +196,9 @@ do_configure() {
mkdir -p build
cd build
CONFIG_SHELL=/bin/bash ${wrksrc}/configure ${_args}
}
do_build() {
export glibcxx_cv_c99_math_cxx98=yes glibcxx_cv_c99_math_cxx11=yes
if [ -z "$CHROOT_READY" ]; then
export LD_LIBRARY_PATH="${XBPS_MASTERDIR}/usr/lib"
fi
@ -262,73 +269,6 @@ do_install() {
esac
}
gcc-gcj_package() {
lib32disabled=yes
depends="gcc>=${_majorver} libgcj-devel>=${_majorver}"
short_desc+=" - Java compiler frontend"
pkg_install() {
for f in gcj jv-convert gjarsigner gjar grmic jcf-dump \
gtnameserv gcjh gnative2ascii gserialver gkeytool \
gij grmiregistry grmid gorbd gcj-dbtool gjavah \
gc-analyze gappletviewer rebuild-gcj-db aot-compile; do
vmove usr/bin/${f}
done
for f in gcj jv-convert gjarsigner gjar grmic jcf-dump gjdoc \
gtnameserv gcjh gnative2ascii gserialver gkeytool \
gij grmiregistry grmid gorbd gcj-dbtool gjavah \
gc-analyze gappletviewer rebuild-gcj-db aot-compile; do
if [ -f ${DESTDIR}/usr/share/man/man1/${f}.1 ]; then
vmove usr/share/man/man1/${f}.1
fi
done
vmove usr/bin/${_triplet}-gcj
vmove usr/lib/gcc/${_triplet}/${_majorver}/jc1
vmove usr/lib/gcc/${_triplet}/${_majorver}/jvgenmain
vmove usr/share/info/gcj.info
touch ${PKGDESTDIR}/usr/share/info/dir
}
}
gcc-gcj-jdk-compat_package() {
lib32disabled=yes
depends="gcc-gcj fastjar"
short_desc+=" - JDK compatiblity layer"
pkg_install() {
local jvm_dir=$PKGDESTDIR/usr/lib/jvm
local jdk_dir=$jvm_dir/java-1.5-gcj
local jdk_bin_dir=$jdk_dir/bin
local jre_dir=$jdk_dir/jre
local jre_bin_dir=$jre_dir/bin
local jre_lib_dir=$jre_dir/lib
local arch=
case "$XBPS_TARGET_MACHINE" in
i686*) arch=i386 ;;
x86_64*) arch=amd64 ;;
arm*) arch=arm ;;
esac
mkdir -p $jdk_bin_dir
ln -sfr $PKGDESTDIR/usr/bin/gij $jdk_bin_dir/java
ln -sfr $PKGDESTDIR/usr/bin/fastjar $jdk_bin_dir/fastjar
ln -sfr $PKGDESTDIR/usr/bin/grmic $jdk_bin_dir/rmic
ln -sfr $PKGDESTDIR/usr/bin/gjavah $jdk_bin_dir/javah
ln -sfr $PKGDESTDIR/usr/bin/ecj1 $jdk_bin_dir/javac
ln -sfr $PKGDESTDIR/usr/bin/gappletviewer $jdk_bin_dir/appletviewer
ln -sfr $PKGDESTDIR/usr/bin/gjarsigner $jdk_bin_dir/jarsigner
ln -sfr $PKGDESTDIR/usr/bin/grmiregistry $jdk_bin_dir/rmiregistry
ln -sfr $PKGDESTDIR/usr/bin/gkeytool $jdk_bin_dir/keytool
mkdir -p $jre_bin_dir $jre_lib_dir/$arch
ln -sfr $PKGDESTDIR/usr/bin/gij $jre_bin_dir/java
ln -sfr $PKGDESTDIR/usr/bin/grmiregistry $jre_bin_dir/rmiregistry
ln -sfr $PKGDESTDIR/usr/bin/gkeytool $jre_bin_dir/keytool
ln -sfr $PKGDESTDIR/usr/share/java/libgcj-$gccver.jar $jre_lib_dir/rt.jar
ln -sfr $PKGDESTDIR/usr/share/java/libgcj-tools-$gccver.jar $jre_lib_dir/tools.jar
ln -sfr $PKGDESTDIR/usr/lib/gcj-$version-$_gcjrel/libjvm.so $jre_lib_dir/$arch
ln -sfr $PKGDESTDIR/usr/lib/gcj-$version-$_gcjrel/libjavamath.so $jre_lib_dir/$arch
ln -sfr $PKGDESTDIR/usr/lib/gcj-$version-$_gcjrel/classmap.db $jre_lib_dir/$arch
}
}
gcc-go_package() {
lib32disabled=yes
depends="gcc>=${_majorver} libgo-devel>=${_majorver}"
@ -391,35 +331,6 @@ gcc-objc_package() {
vmove usr/lib/gcc/${_triplet}/${_majorver}/cc1obj
}
}
libgcj-devel_package() {
short_desc+=" - Java library - development files"
pkg_install() {
vmove usr/include/c++/${_majorver}/gnu
vmove usr/include/c++/${_majorver}/java
vmove usr/include/c++/${_majorver}/javax
vmove usr/include/c++/${_majorver}/sun
vmove usr/include/c++/${_majorver}/gcj
vmove usr/include/c++/${_majorver}/org
vmove usr/lib/gcc/${_triplet}/${_majorver}/plugin/include/java
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/jni*"
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/gcj*"
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/jvm*"
vmove "usr/lib/gcc/${_triplet}/${_majorver}/include/jawt*"
vmove usr/lib/pkgconfig/libgcj-${_majorver%.*}.pc
}
}
libgcj_package() {
short_desc+=" - Java libraries"
pkg_install() {
vmove "usr/lib/libgcj*.so*"
vmove "usr/lib/libgij.so*"
vmove usr/lib/gcj-${version}-$_gcjrel
vmove usr/lib/logging.properties
vmove usr/lib/libgcj.spec
vmove usr/lib/security/classpath.security
vmove usr/share/java
}
}
libgfortran-devel_package() {
depends="libgfortran>=${_majorver}"
short_desc+=" - Fortran library - development files"
@ -444,7 +355,6 @@ libgo-devel_package() {
short_desc+=" - Go library - development files"
pkg_install() {
vmove usr/lib/libgo.a
vmove usr/lib/libnetgo.a
vmove usr/lib/libgobegin.a
vmove usr/lib/libgolibbegin.a
vmove usr/lib/libgo.so

View File

@ -405,8 +405,8 @@ readonly XBPS_VERSION_REQ="0.46"
readonly XBPS_VERSION=$(xbps-uhelper -V|awk '{print $2}')
readonly XBPS_SRC_VERSION="113"
export XBPS_MACHINE=$(xbps-uhelper arch)
readonly XBPS_GCC_VERSION_MAJOR=6
readonly XBPS_GCC_VERSION_MINOR=3
readonly XBPS_GCC_VERSION_MAJOR=7
readonly XBPS_GCC_VERSION_MINOR=2
readonly XBPS_GCC_VERSION_BUILD=0
readonly XBPS_GCC_VERSION=${XBPS_GCC_VERSION_MAJOR}.${XBPS_GCC_VERSION_MINOR}.${XBPS_GCC_VERSION_BUILD}