From 8fcf6725578e0c8cd2fd94803a7ca400e716daf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy=20K=C3=A1roly=20G=C3=A1briel?= Date: Thu, 23 Mar 2017 15:15:47 +0000 Subject: [PATCH] gcc: Updated (6.1.0 -> 6.3.0) --- base/gcc/gcc.desc | 6 +- base/musl/pkg/gcc/201-cilkrts.patch | 59 +++++++++++++++ base/musl/pkg/gcc/202-posix_memalign.patch | 42 +++++++++++ base/musl/pkg/gcc/203-libgcc_s.patch | 56 ++++++++++++++ .../pkg/gcc/204-linux_libc_has_function.patch | 25 +++++++ base/musl/pkg/gcc/205-nopie.patch | 75 +++++++++++++++++++ 6 files changed, 260 insertions(+), 3 deletions(-) create mode 100644 base/musl/pkg/gcc/201-cilkrts.patch create mode 100644 base/musl/pkg/gcc/202-posix_memalign.patch create mode 100644 base/musl/pkg/gcc/203-libgcc_s.patch create mode 100644 base/musl/pkg/gcc/204-linux_libc_has_function.patch create mode 100644 base/musl/pkg/gcc/205-nopie.patch diff --git a/base/gcc/gcc.desc b/base/gcc/gcc.desc index 7f4c30ee3..4e1607d8e 100644 --- a/base/gcc/gcc.desc +++ b/base/gcc/gcc.desc @@ -2,7 +2,7 @@ [COPY] This copyright note is auto-generated by ./scripts/Create-CopyPatch. [COPY] [COPY] Filename: package/.../gcc/gcc.desc -[COPY] Copyright (C) 2006 - 2016 The OpenSDE Project +[COPY] Copyright (C) 2006 - 2017 The OpenSDE Project [COPY] Copyright (C) 2004 - 2006 The T2 SDE Project [COPY] Copyright (C) 1998 - 2003 Clifford Wolf [COPY] @@ -35,8 +35,8 @@ [L] GPL [S] Stable -[V] 6.1.0 +[V] 6.3.0 [P] X 012--5---9 102.300 -[D] 2580215197 gcc-6.1.0.tar.bz2 ftp://gcc.gnu.org/pub/gcc/releases/gcc-6.1.0/ +[D] 1225317538 gcc-6.3.0.tar.bz2 ftp://gcc.gnu.org/pub/gcc/releases/gcc-6.3.0/ [D] 271646925 ecj-4.5.jar ftp://sourceware.org/pub/java/ diff --git a/base/musl/pkg/gcc/201-cilkrts.patch b/base/musl/pkg/gcc/201-cilkrts.patch new file mode 100644 index 000000000..4aac10d6d --- /dev/null +++ b/base/musl/pkg/gcc/201-cilkrts.patch @@ -0,0 +1,59 @@ +From 594e3c1ab576daddeb86015efc8b1677020b1878 Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy +Date: Sat, 24 Oct 2015 20:39:30 +0000 +Subject: [PATCH 1/6] cilkrts + +--- + libcilkrts/runtime/os-unix.c | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +diff --git a/libcilkrts/runtime/os-unix.c b/libcilkrts/runtime/os-unix.c +index cb582dd..e43d7d5 100644 +--- a/libcilkrts/runtime/os-unix.c ++++ b/libcilkrts/runtime/os-unix.c +@@ -51,6 +51,7 @@ + #if defined __linux__ + # include + # include ++# include + #elif defined __APPLE__ + # include + // Uses sysconf(_SC_NPROCESSORS_ONLN) in verbose output +@@ -400,28 +401,19 @@ COMMON_SYSDEP void __cilkrts_sleep(void) + + COMMON_SYSDEP void __cilkrts_yield(void) + { +-#if __APPLE__ || __FreeBSD__ || __VXWORKS__ +- // On MacOS, call sched_yield to yield quantum. I'm not sure why we +- // don't do this on Linux also. +- sched_yield(); +-#elif defined(__DragonFly__) +- // On DragonFly BSD, call sched_yield to yield quantum. +- sched_yield(); +-#elif defined(__MIC__) ++#if defined(__MIC__) + // On MIC, pthread_yield() really trashes things. Arch's measurements + // showed that calling _mm_delay_32() (or doing nothing) was a better + // option. Delaying 1024 clock cycles is a reasonable compromise between + // giving up the processor and latency starting up when work becomes + // available + _mm_delay_32(1024); +-#elif defined(__ANDROID__) || (defined(__sun__) && defined(__svr4__)) +- // On Android and Solaris, call sched_yield to yield quantum. I'm not +- // sure why we don't do this on Linux also. +- sched_yield(); +-#else +- // On Linux, call pthread_yield (which in turn will call sched_yield) +- // to yield quantum. ++#elif defined(__sun__) && !defined(__svr4__) ++ // On old SunOS call pthread_yield to yield a quantum. + pthread_yield(); ++#else ++ // On other platforms call sched_yield to yield a quantum. ++ sched_yield(); + #endif + } + +-- +2.8.1 + diff --git a/base/musl/pkg/gcc/202-posix_memalign.patch b/base/musl/pkg/gcc/202-posix_memalign.patch new file mode 100644 index 000000000..201857508 --- /dev/null +++ b/base/musl/pkg/gcc/202-posix_memalign.patch @@ -0,0 +1,42 @@ +From bab47fac06af5d891caaccac99f1dc1e75bdc219 Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy +Date: Sat, 1 Aug 2015 23:24:07 +0000 +Subject: [PATCH 2/6] posix_memalign + +--- + gcc/config/i386/pmm_malloc.h | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h +index a1f98d3..4f6b2dc 100644 +--- a/gcc/config/i386/pmm_malloc.h ++++ b/gcc/config/i386/pmm_malloc.h +@@ -27,12 +27,13 @@ + #include + + /* We can't depend on since the prototype of posix_memalign +- may not be visible. */ ++ may not be visible and we can't pollute the namespace either. */ + #ifndef __cplusplus +-extern int posix_memalign (void **, size_t, size_t); ++extern int _mm_posix_memalign (void **, size_t, size_t) + #else +-extern "C" int posix_memalign (void **, size_t, size_t) throw (); ++extern "C" int _mm_posix_memalign (void **, size_t, size_t) throw () + #endif ++__asm__("posix_memalign"); + + static __inline void * + _mm_malloc (size_t size, size_t alignment) +@@ -42,7 +43,7 @@ _mm_malloc (size_t size, size_t alignment) + return malloc (size); + if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4)) + alignment = sizeof (void *); +- if (posix_memalign (&ptr, alignment, size) == 0) ++ if (_mm_posix_memalign (&ptr, alignment, size) == 0) + return ptr; + else + return NULL; +-- +2.8.1 + diff --git a/base/musl/pkg/gcc/203-libgcc_s.patch b/base/musl/pkg/gcc/203-libgcc_s.patch new file mode 100644 index 000000000..c74351c71 --- /dev/null +++ b/base/musl/pkg/gcc/203-libgcc_s.patch @@ -0,0 +1,56 @@ +From 9e3eab51e518018d9d99b3123598b1e2322a6af3 Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy +Date: Sat, 24 Oct 2015 20:09:53 +0000 +Subject: [PATCH 3/6] libgcc_s + +--- + 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 3d044e8..82523e1 100644 +--- a/gcc/config/i386/i386.c ++++ b/gcc/config/i386/i386.c +@@ -40269,10 +40269,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.8.1 + diff --git a/base/musl/pkg/gcc/204-linux_libc_has_function.patch b/base/musl/pkg/gcc/204-linux_libc_has_function.patch new file mode 100644 index 000000000..2dcedc3a7 --- /dev/null +++ b/base/musl/pkg/gcc/204-linux_libc_has_function.patch @@ -0,0 +1,25 @@ +From edec78452d693fb524daa9a6efd45c850b27b25c Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy +Date: Fri, 6 Nov 2015 23:59:20 +0000 +Subject: [PATCH 4/6] linux_libc_has_function + +--- + gcc/config/linux.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gcc/config/linux.c b/gcc/config/linux.c +index 250296b..16c3768 100644 +--- a/gcc/config/linux.c ++++ b/gcc/config/linux.c +@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3. If not see + bool + linux_libc_has_function (enum function_class fn_class) + { +- if (OPTION_GLIBC) ++ if (OPTION_GLIBC || OPTION_MUSL) + return true; + if (OPTION_BIONIC) + if (fn_class == function_c94 +-- +2.8.1 + diff --git a/base/musl/pkg/gcc/205-nopie.patch b/base/musl/pkg/gcc/205-nopie.patch new file mode 100644 index 000000000..e3da94d10 --- /dev/null +++ b/base/musl/pkg/gcc/205-nopie.patch @@ -0,0 +1,75 @@ +From b6015aca9c9cc83739fd0ed637a835119b2c4e34 Mon Sep 17 00:00:00 2001 +From: Szabolcs Nagy +Date: Sat, 7 Nov 2015 02:08:05 +0000 +Subject: [PATCH 5/6] nopie + +--- + gcc/configure | 27 +++++++++++++++++++++++++++ + gcc/configure.ac | 13 +++++++++++++ + 2 files changed, 40 insertions(+) + +diff --git a/gcc/configure b/gcc/configure +index 1c6e340..7e8b5d6 100755 +--- a/gcc/configure ++++ b/gcc/configure +@@ -29390,6 +29390,33 @@ fi + $as_echo "$gcc_cv_no_pie" >&6; } + if test "$gcc_cv_no_pie" = "yes"; then + NO_PIE_FLAG="-no-pie" ++else ++ # Check if -nopie works. ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -nopie option" >&5 ++$as_echo_n "checking for -nopie option... " >&6; } ++if test "${gcc_cv_nopie+set}" = set; then : ++ $as_echo_n "(cached) " >&6 ++else ++ saved_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -nopie" ++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++int main(void) {return 0;} ++_ACEOF ++if ac_fn_cxx_try_link "$LINENO"; then : ++ gcc_cv_nopie=yes ++else ++ gcc_cv_nopie=no ++fi ++rm -f core conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++ LDFLAGS="$saved_LDFLAGS" ++fi ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_nopie" >&5 ++$as_echo "$gcc_cv_nopie" >&6; } ++ if test "$gcc_cv_nopie" = "yes"; then ++ NO_PIE_FLAG="-nopie" ++ fi + fi + + +diff --git a/gcc/configure.ac b/gcc/configure.ac +index 6c1dcd9..0ca7647 100644 +--- a/gcc/configure.ac ++++ b/gcc/configure.ac +@@ -6098,6 +6098,19 @@ AC_CACHE_CHECK([for -no-pie option], + LDFLAGS="$saved_LDFLAGS"]) + if test "$gcc_cv_no_pie" = "yes"; then + NO_PIE_FLAG="-no-pie" ++else ++ # Check if -nopie works. ++ AC_CACHE_CHECK([for -nopie option], ++ [gcc_cv_nopie], ++ [saved_LDFLAGS="$LDFLAGS" ++ LDFLAGS="$LDFLAGS -nopie" ++ AC_LINK_IFELSE([int main(void) {return 0;}], ++ [gcc_cv_nopie=yes], ++ [gcc_cv_nopie=no]) ++ LDFLAGS="$saved_LDFLAGS"]) ++ if test "$gcc_cv_nopie" = "yes"; then ++ NO_PIE_FLAG="-nopie" ++ fi + fi + AC_SUBST([NO_PIE_FLAG]) + +-- +2.8.1 +