cross/gcc4-{aarch64,armv7}: add generated aports
Make it possible to build old kernels with gcc4 for armv7 and aarch64. The packages have been generated with (as usually): $ pmbootstrap aportgen gcc4-aarch64 gcc4-armv7 [ci:skip-build]: I have tested that this builds locally. Fixes #193.
This commit is contained in:
parent
e48b212fdd
commit
17dae7d98c
96 changed files with 7820 additions and 0 deletions
156
cross/gcc4-aarch64/01_all_gcc49_configure.patch
Normal file
156
cross/gcc4-aarch64/01_all_gcc49_configure.patch
Normal file
|
@ -0,0 +1,156 @@
|
|||
2013-12-30 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/configure.ac Add --enable-esp and define ENABLE_ESP.
|
||||
Check if we support crtbeginP and define ENABLE_CRTBEGINP.
|
||||
* gcc/configure Regenerated
|
||||
|
||||
|
||||
--- a/gcc/configure.ac 2011-11-18 11:52:32.000000000 +0100
|
||||
+++ b/gcc/configure.ac 2012-10-02 17:39:15.649526241 +0200
|
||||
@@ -5130,6 +5237,55 @@ if test x"${LINKER_HASH_STYLE}" != x; th
|
||||
[The linker hash style])
|
||||
fi
|
||||
|
||||
+# --------------
|
||||
+# Esp checks
|
||||
+# --------------
|
||||
+
|
||||
+# Check whether --enable-esp was given and target have the support.
|
||||
+AC_ARG_ENABLE([esp],
|
||||
+[AS_HELP_STRING([--enable-esp],
|
||||
+ [Enable Stack protector and Position independent executable as
|
||||
+ default if we have suppot for it when compiling
|
||||
+ and link with -z now as default.
|
||||
+ Linux targets supported i*86, x86_64, x32,
|
||||
+ powerpc, powerpc64, ia64, arm and mips.])],
|
||||
+ enable_esp=$enableval,
|
||||
+ enable_esp=no)
|
||||
+if test $enable_esp = yes ; then
|
||||
+ AC_MSG_CHECKING(if $target support esp)
|
||||
+ case "$target" in
|
||||
+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*)
|
||||
+ enable_esp=yes
|
||||
+ AC_DEFINE(ENABLE_ESP, 1,
|
||||
+ [Define if your target support esp and you have enable it.])
|
||||
+ ;;
|
||||
+ *)
|
||||
+ enable_esp=no
|
||||
+ ;;
|
||||
+ esac
|
||||
+AC_MSG_RESULT($enable_esp)
|
||||
+fi
|
||||
+AC_SUBST([enable_esp])
|
||||
+if test $enable_esp = yes ; then
|
||||
+ AC_MSG_CHECKING(checking for crtbeginP.o support)
|
||||
+ if test x$enable_esp = xyes ; then
|
||||
+ case "$target" in
|
||||
+ ia64*-*-linux*)
|
||||
+ enable_crtbeginP=no ;;
|
||||
+ *-*-linux*)
|
||||
+ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
|
||||
+ enable_crtbeginP=yes
|
||||
+ AC_DEFINE(ENABLE_CRTBEGINP, 1,
|
||||
+ [Define if your compiler will support crtbeginP.])
|
||||
+ fi
|
||||
+ ;;
|
||||
+ *) enable_crtbeginP=no ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ AC_MSG_RESULT($enable_crtbeginP)
|
||||
+fi
|
||||
+AC_SUBST([enable_crtbeginP])
|
||||
+
|
||||
# Configure the subdirectories
|
||||
# AC_CONFIG_SUBDIRS($subdirs)
|
||||
|
||||
--- a/gcc/configure 2013-02-01 21:26:24.000000000 +0100
|
||||
+++ b/gcc/configure 2013-02-12 01:59:20.000000000 +0100
|
||||
@@ -600,6 +600,8 @@
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
PICFLAG
|
||||
+enable_crtbeginP
|
||||
+enable_esp
|
||||
enable_host_shared
|
||||
enable_plugin
|
||||
pluginlibs
|
||||
@@ -920,6 +922,7 @@
|
||||
enable_plugin
|
||||
enable_libquadmath_support
|
||||
with_linker_hash_style
|
||||
+enable_esp
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
@@ -1633,6 +1636,11 @@
|
||||
--enable-plugin enable plugin support
|
||||
--disable-libquadmath-support
|
||||
disable libquadmath support for Fortran
|
||||
+ --enable-esp Enable Stack protector and Position independent
|
||||
+ executable as default if we have suppot for it when
|
||||
+ compiling and link with -z now as default.
|
||||
+ Linux targets supported i*86, x86_64, x32,
|
||||
+ powerpc, powerpc64, ia64, arm and mips.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
@@ -27419,6 +27427,59 @@
|
||||
|
||||
fi
|
||||
|
||||
+# --------------
|
||||
+# Esp checks
|
||||
+# --------------
|
||||
+
|
||||
+# Check whether --enable-esp was given and target have the support.
|
||||
+# Check whether --enable-esp was given.
|
||||
+if test "${enable_esp+set}" = set; then :
|
||||
+ enableval=$enable_esp; enable_esp=$enableval
|
||||
+else
|
||||
+ enable_esp=no
|
||||
+fi
|
||||
+
|
||||
+if test $enable_esp = yes ; then
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $target support esp" >&5
|
||||
+$as_echo_n "checking if $target support esp... " >&6; }
|
||||
+ case "$target" in
|
||||
+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*)
|
||||
+ enable_esp=yes
|
||||
+
|
||||
+$as_echo "#define ENABLE_ESP 1" >>confdefs.h
|
||||
+
|
||||
+ ;;
|
||||
+ *)
|
||||
+ enable_esp=no
|
||||
+ ;;
|
||||
+ esac
|
||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_esp" >&5
|
||||
+$as_echo "$enable_esp" >&6; }
|
||||
+fi
|
||||
+
|
||||
+if test $enable_esp = yes ; then
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking checking for crtbeginP.o support" >&5
|
||||
+$as_echo_n "checking checking for crtbeginP.o support... " >&6; }
|
||||
+ if test x$enable_esp = xyes ; then
|
||||
+ case "$target" in
|
||||
+ ia64*-*-linux*)
|
||||
+ enable_crtbeginP=no ;;
|
||||
+ *-*-linux*)
|
||||
+ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
|
||||
+ enable_crtbeginP=yes
|
||||
+
|
||||
+$as_echo "#define ENABLE_CRTBEGINP 1" >>confdefs.h
|
||||
+
|
||||
+ fi
|
||||
+ ;;
|
||||
+ *) enable_crtbeginP=no ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_crtbeginP" >&5
|
||||
+$as_echo "$enable_crtbeginP" >&6; }
|
||||
+fi
|
||||
+
|
||||
+
|
||||
# Configure the subdirectories
|
||||
# AC_CONFIG_SUBDIRS($subdirs)
|
||||
|
32
cross/gcc4-aarch64/02_all_gcc48_config.in.patch
Normal file
32
cross/gcc4-aarch64/02_all_gcc48_config.in.patch
Normal file
|
@ -0,0 +1,32 @@
|
|||
2013-02-13 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config.in Add ENABLE_CRTBEGINP, ENABLE_ESP
|
||||
|
||||
--- ./gcc/config.in 2009-04-21 11:08:08.000000000 +0200
|
||||
+++ ./gcc/config.in 2009-05-12 00:10:08.000000000 +0200
|
||||
@@ -46,6 +46,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to 1 to enable crtbeginP.o. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_CRTBEGINP
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define to 1 to specify that we are using the BID decimal floating point
|
||||
format instead of DPD */
|
||||
#ifndef USED_FOR_TARGET
|
||||
@@ -65,6 +65,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to 1 to enable esp. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_ESP
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define to 1 to enable fixed-point arithmetic extension to C. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
#undef ENABLE_FIXED_POINT
|
96
cross/gcc4-aarch64/03_all_gcc49_Makefile.in.patch
Normal file
96
cross/gcc4-aarch64/03_all_gcc49_Makefile.in.patch
Normal file
|
@ -0,0 +1,96 @@
|
|||
2012-01-17 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/Makefile.in Add -fno-PIE. to ALL_CFLAGS and
|
||||
ALL_CXXFLAGS if enable_esp yes.
|
||||
Echo enable_esp and enable_crtbeginP to tmp-libgcc.mvars.
|
||||
* libgcc/Makefile.in Add crtbeginP.o to EXTRA_PARTS if enable_crtbeginP yes
|
||||
We add new file crtbeginP.o if enable_crtbeginP yes
|
||||
Add -fno-PIE. to CRTSTUFF_CFLAGS.
|
||||
|
||||
--- a/gcc/Makefile.in 2011-11-09 02:20:14.000000000 +0100
|
||||
+++ b/gcc/Makefile.in 2011-12-24 22:28:08.864804375 +0100
|
||||
@@ -247,6 +247,14 @@ LINKER_FLAGS = $(CFLAGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
+# We don't want to compile the compiler with -fPIE, it make PCH fail.
|
||||
+enable_esp = @enable_esp@
|
||||
+ifeq ($(enable_esp),yes)
|
||||
+ESP_NOPIE_CFLAGS = -fno-PIE
|
||||
+else
|
||||
+ESP_NOPIE_CFLAGS=
|
||||
+endif
|
||||
+
|
||||
# -------------------------------------------
|
||||
# Programs which operate on the build machine
|
||||
# -------------------------------------------
|
||||
@@ -974,12 +982,13 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@
|
||||
|
||||
# This is the variable actually used when we compile. If you change this,
|
||||
# you probably want to update BUILD_CFLAGS in configure.ac
|
||||
-ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \
|
||||
+ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \
|
||||
$(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@
|
||||
|
||||
# The C++ version.
|
||||
-ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \
|
||||
- $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@
|
||||
+ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \
|
||||
+ $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \
|
||||
+ $(WARN_CXXFLAGS) @DEFS@
|
||||
|
||||
# Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro
|
||||
# puts -I options in CPPFLAGS, our include files in the srcdir will always
|
||||
@@ -1814,6 +1823,8 @@ libgcc.mvars: config.status Makefile spe
|
||||
echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars
|
||||
echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars
|
||||
echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars
|
||||
+ echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars
|
||||
+ echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars
|
||||
|
||||
mv tmp-libgcc.mvars libgcc.mvars
|
||||
|
||||
--- a/libgcc/Makefile.in 2011-11-22 04:01:02.000000000 +0100
|
||||
+++ b/libgcc/Makefile.in 2011-12-25 15:18:22.449610631 +0100
|
||||
@@ -219,6 +219,17 @@ else
|
||||
DECNUMINC =
|
||||
endif
|
||||
|
||||
+ifeq ($(enable_esp),yes)
|
||||
+ESP_NOPIE_CFLAGS = -fno-PIE
|
||||
+else
|
||||
+ESP_NOPIE_CFLAGS=
|
||||
+endif
|
||||
+
|
||||
+# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes
|
||||
+ifeq ($(enable_crtbeginP),yes)
|
||||
+EXTRA_PARTS += crtbeginP.o
|
||||
+endif
|
||||
+
|
||||
# Options to use when compiling libgcc2.a.
|
||||
#
|
||||
LIBGCC2_DEBUG_CFLAGS = -g
|
||||
@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF
|
||||
CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
|
||||
-finhibit-size-directive -fno-inline -fno-exceptions \
|
||||
-fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
|
||||
- -fno-stack-protector \
|
||||
+ -fno-stack-protector $(ESP_NOPIE_CFLAGS) \
|
||||
$(INHIBIT_LIBC_CFLAGS)
|
||||
|
||||
# Extra flags to use when compiling crt{begin,end}.o.
|
||||
@@ -966,6 +977,13 @@ crtendS$(objext): $(srcdir)/crtstuff.c
|
||||
# This is a version of crtbegin for -static links.
|
||||
crtbeginT$(objext): $(srcdir)/crtstuff.c
|
||||
$(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O
|
||||
+
|
||||
+# This is a version of crtbegin for -static -fPIE links.
|
||||
+ifeq ($(enable_crtbeginP),yes)
|
||||
+crtbeginP$(objext): $(srcdir)/crtstuff.c
|
||||
+ $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \
|
||||
+ -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O
|
||||
+endif
|
||||
|
||||
ifeq ($(enable_vtable_verify),yes)
|
||||
# These are used in vtable verification; see comments in source files for
|
||||
|
25
cross/gcc4-aarch64/05_all_gcc48_gcc.c.patch
Normal file
25
cross/gcc4-aarch64/05_all_gcc48_gcc.c.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
2013-03-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/gcc.c include esp.h
|
||||
static const char *cc1_spec We set that in esp.h if ENABLE_ESP.
|
||||
|
||||
--- ./gcc/gcc.c 2010-01-21 10:29:30.000000000 -0500
|
||||
+++ ./gcc/gcc.c 2010-01-29 23:29:16.000000000 -0500
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "opts.h"
|
||||
#include "params.h"
|
||||
#include "vec.h"
|
||||
+#include "config/esp.h" /* for --enable-esp support */
|
||||
#include "filenames.h"
|
||||
|
||||
/* By default there is no special suffix for target executables. */
|
||||
@@ -822,7 +823,9 @@
|
||||
|
||||
static const char *asm_debug;
|
||||
static const char *cpp_spec = CPP_SPEC;
|
||||
+#ifndef ENABLE_ESP
|
||||
static const char *cc1_spec = CC1_SPEC;
|
||||
+#endif
|
||||
static const char *cc1plus_spec = CC1PLUS_SPEC;
|
||||
static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
|
||||
static const char *link_ssp_spec = LINK_SSP_SPEC;
|
31
cross/gcc4-aarch64/10_all_default-fortify-source.patch
Normal file
31
cross/gcc4-aarch64/10_all_default-fortify-source.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
Enable -D_FORTIFY_SOURCE=2 by default.
|
||||
|
||||
Original patch from:
|
||||
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/4.9.2/gentoo/10_all_default-fortify-source.patch
|
||||
|
||||
--- a/gcc/c-family/c-cppbuiltin.c
|
||||
+++ b/gcc/c-family/c-cppbuiltin.c
|
||||
@@ -951,6 +951,9 @@ c_cpp_builtins (cpp_reader *pfile)
|
||||
builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
|
||||
builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
|
||||
|
||||
+ /* Fortify Source enabled by default w/optimization. */
|
||||
+ cpp_define (pfile, "_FORTIFY_SOURCE=((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)");
|
||||
+
|
||||
/* Misc. */
|
||||
if (flag_gnu89_inline)
|
||||
cpp_define (pfile, "__GNUC_GNU_INLINE__");
|
||||
--- a/gcc/doc/gcc.info
|
||||
+++ b/gcc/doc/gcc.info
|
||||
@@ -6255,6 +6255,11 @@ find out the exact set of optimizations that are enabled at each level.
|
||||
Please note the warning under '-fgcse' about invoking '-O2' on
|
||||
programs that use computed gotos.
|
||||
|
||||
+ NOTE: In Alpine Linux, `-D_FORTIFY_SOURCE=2' is set by default, and is
|
||||
+ activated when `-Os' or `-O1' or higher is used. This enables additional
|
||||
+ compile-time and run-time checks for several libc functions. To disable,
|
||||
+ specify either `-U_FORTIFY_SOURCE' or `-D_FORTIFY_SOURCE=0'.
|
||||
+
|
||||
'-O3'
|
||||
Optimize yet more. '-O3' turns on all optimizations specified by
|
||||
'-O2' and also turns on the '-finline-functions',
|
24
cross/gcc4-aarch64/12_all_default-warn-trampolines.patch
Normal file
24
cross/gcc4-aarch64/12_all_default-warn-trampolines.patch
Normal file
|
@ -0,0 +1,24 @@
|
|||
Enable -Wtrampolines by default.
|
||||
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -640,7 +640,7 @@ Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers
|
||||
|
||||
Wtrampolines
|
||||
-Common Var(warn_trampolines) Warning
|
||||
+Common Var(warn_trampolines) Init(1) Warning
|
||||
Warn whenever a trampoline is generated
|
||||
|
||||
Wtype-limits
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -4007,6 +4007,8 @@ headers---for that, @option{-Wunknown-pragmas} must also be used.
|
||||
for most targets, it is made up of code and thus requires the stack
|
||||
to be made executable in order for the program to work properly.
|
||||
|
||||
+ This warning is enabled by default in Gentoo.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
17
cross/gcc4-aarch64/15_all_libgfortran-Werror.patch
Normal file
17
cross/gcc4-aarch64/15_all_libgfortran-Werror.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
libgfortran does not respect --disable-werror
|
||||
|
||||
https://bugs.gentoo.org/433435
|
||||
http://gcc.gnu.org/PR54724
|
||||
|
||||
|
||||
--- a/libgfortran/configure
|
||||
+++ b/libgfortran/configure
|
||||
@@ -5764,7 +5764,7 @@ fi
|
||||
|
||||
# Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
|
||||
if test "x$GCC" = "xyes"; then
|
||||
- AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
|
||||
+ AM_FCFLAGS="-I . -Wall -fimplicit-none -fno-repack-arrays -fno-underscoring"
|
||||
## We like to use C99 routines when available. This makes sure that
|
||||
## __STDC_VERSION__ is set such that libc includes make them available.
|
||||
AM_CFLAGS="-std=gnu99 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings"
|
16
cross/gcc4-aarch64/16_all_gcc47_nopie_option.patch
Normal file
16
cross/gcc4-aarch64/16_all_gcc47_nopie_option.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
2012-01-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/common.opt Add -nopie
|
||||
|
||||
--- a/gcc/common.opt 2011-11-23 19:51:17.000000000 +0100
|
||||
+++ b//gcc/common.opt 2012-01-24 16:56:24.302224357 +0100
|
||||
@@ -2280,6 +2280,9 @@ Driver
|
||||
nodefaultlibs
|
||||
Driver
|
||||
|
||||
+nopie
|
||||
+Driver
|
||||
+
|
||||
nostartfiles
|
||||
Driver
|
||||
|
17
cross/gcc4-aarch64/16_all_libgomp-Werror.patch
Normal file
17
cross/gcc4-aarch64/16_all_libgomp-Werror.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
libgomp does not respect --disable-werror
|
||||
|
||||
https://bugs.gentoo.org/229059
|
||||
http://gcc.gnu.org/PR38436
|
||||
|
||||
|
||||
--- a/libgomp/configure
|
||||
+++ b/libgomp/configure
|
||||
@@ -4282,7 +4282,7 @@ save_CFLAGS="$CFLAGS"
|
||||
|
||||
# Add -Wall -Werror if we are using GCC.
|
||||
if test "x$GCC" = "xyes"; then
|
||||
- XCFLAGS="$XCFLAGS -Wall -Werror"
|
||||
+ XCFLAGS="$XCFLAGS -Wall"
|
||||
fi
|
||||
|
||||
# Find other programs we need.
|
40
cross/gcc4-aarch64/20_all_gcc49_config_crtbeginp.patch
Normal file
40
cross/gcc4-aarch64/20_all_gcc49_config_crtbeginp.patch
Normal file
|
@ -0,0 +1,40 @@
|
|||
2014-04-23 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config/gnu-user.h If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o.
|
||||
* gcc/config/rs6000/sysv4.h If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o.
|
||||
|
||||
--- a/gcc/config/gnu-user.h 2014-01-02 23:23:26.000000000 +0100
|
||||
+++ b/gcc/config/gnu-user.h 2014-04-23 00:55:06.390265454 +0200
|
||||
@@ -40,7 +40,15 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
provides part of the support for getting C++ file-scope static
|
||||
object constructed before entering `main'. */
|
||||
|
||||
-#if defined HAVE_LD_PIE
|
||||
+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
|
||||
+#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
+ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
+ crti.o%s %{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}; \
|
||||
+ shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
|
||||
+ %{fvtable-verify=none:%s; \
|
||||
+ fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
+ fvtable-verify=std:vtv_start.o%s}"
|
||||
+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
|
||||
#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
"%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
|
||||
--- a/gcc/config/rs6000/sysv4.h 2009-04-10 01:23:07.000000000 +0200
|
||||
+++ b/gcc/config/rs6000/sysv4.h 2009-09-08 04:41:50.000000000 +0200
|
||||
@@ -883,7 +883,12 @@
|
||||
%{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \
|
||||
%{!shared: %{profile:-lc_p} %{!profile:-lc}}}"
|
||||
|
||||
-#ifdef HAVE_LD_PIE
|
||||
+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
|
||||
+#define STARTFILE_LINUX_SPEC "\
|
||||
+%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
+%{mnewlib:ecrti.o%s;:crti.o%s} \
|
||||
+%{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}"
|
||||
+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
|
||||
#define STARTFILE_LINUX_SPEC "\
|
||||
%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
%{mnewlib:ecrti.o%s;:crti.o%s} \
|
44
cross/gcc4-aarch64/24_all_gcc49_invoke.texi.patch
Normal file
44
cross/gcc4-aarch64/24_all_gcc49_invoke.texi.patch
Normal file
|
@ -0,0 +1,44 @@
|
|||
2014-04-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/doc/invoke.texi Add NOTES about -fstack-protector-all, -pie and
|
||||
-fPIE/-fpie when --enable-esp is enable, this options is on by default.
|
||||
|
||||
--- a/gcc/doc/invoke.texi 2009-04-01 09:18:47.000000000 +0200
|
||||
+++ b/gcc/doc/invoke.texi 2009-06-18 14:08:38.000000000 +0200
|
||||
@@ -9233,6 +9245,11 @@ If a guard check fails, an error message
|
||||
@opindex fstack-protector-all
|
||||
Like @option{-fstack-protector} except that all functions are protected.
|
||||
|
||||
+NOTE: NOTE: When --enable-esp this option is enabled by default
|
||||
+for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector},
|
||||
+@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector},
|
||||
+@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found.
|
||||
+
|
||||
@item -fstack-protector-strong
|
||||
@opindex fstack-protector-strong
|
||||
Like @option{-fstack-protector} but includes additional functions to
|
||||
@@ -7960,6 +7965,12 @@
|
||||
that were used to generate code (@option{-fpie}, @option{-fPIE},
|
||||
or model suboptions) when you specify this option.
|
||||
|
||||
+NOTE: When --enable-esp this option is enabled by default
|
||||
+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
|
||||
+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
|
||||
+@option{-nostartfiles} or @option{-shared} or @option{-pg} or @option{-p}
|
||||
+are found.
|
||||
+
|
||||
@item -rdynamic
|
||||
@opindex rdynamic
|
||||
Pass the flag @option{-export-dynamic} to the ELF linker, on targets
|
||||
@@ -15889,6 +15910,11 @@
|
||||
@code{__pie__} and @code{__PIE__}. The macros have the value 1
|
||||
for @option{-fpie} and 2 for @option{-fPIE}.
|
||||
|
||||
+NOTE: When --enable-esp this option is enabled by default
|
||||
+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
|
||||
+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
|
||||
+@option{-nostartfiles} or @option{-shared} are found.
|
||||
+
|
||||
@item -fno-jump-tables
|
||||
@opindex fno-jump-tables
|
||||
Do not use jump tables for switch statements even where it would be
|
56
cross/gcc4-aarch64/34_all_gcc48_config_i386.patch
Normal file
56
cross/gcc4-aarch64/34_all_gcc48_config_i386.patch
Normal file
|
@ -0,0 +1,56 @@
|
|||
2013-03-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config/i386/gnu-user-common.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC.
|
||||
* gcc/config/i386/gnu-user.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
|
||||
* gcc/config/i386/i386.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
|
||||
|
||||
--- a/gcc/config/i386/gnu-user-common.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ b/gcc/config/i386/gnu-user-common.h 2013-02-14 00:51:44.689637605 +0100
|
||||
@@ -70,3 +70,7 @@ along with GCC; see the file COPYING3.
|
||||
|
||||
/* Static stack checking is supported by means of probes. */
|
||||
#define STACK_CHECK_STATIC_BUILTIN 1
|
||||
+
|
||||
+#ifdef ENABLE_ESP
|
||||
+#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC
|
||||
+#endif
|
||||
--- a/gcc/config/i386/gnu-user.h 2011-05-05 14:32:50.000000000 +0200
|
||||
+++ b/gcc/config/i386/gnu-user.h 2012-07-09 14:28:38.726289455 +0200
|
||||
@@ -93,9 +93,16 @@ along with GCC; see the file COPYING3.
|
||||
"--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
+#ifdef ENABLE_ESP
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "link_emulation", GNU_USER_LINK_EMULATION },\
|
||||
- { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
|
||||
+ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }, \
|
||||
+ ESP_EXTRA_SPECS
|
||||
+#else
|
||||
+#define SUBTARGET_EXTRA_SPECS \
|
||||
+ { "link_emulation", GNU_USER_LINK_EMULATION },\
|
||||
+ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
|
||||
+#endif
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
|
||||
--- a/gcc/config/i386/i386.h 2011-11-24 23:11:12.000000000 +0100
|
||||
+++ b/gcc/config/i386/i386.h 2012-07-09 14:21:24.575276517 +0200
|
||||
@@ -617,13 +617,16 @@ enum target_cpu_default
|
||||
Do not define this macro if it does not need to do anything. */
|
||||
|
||||
#ifndef SUBTARGET_EXTRA_SPECS
|
||||
+#ifdef ENABLE_ESP
|
||||
+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
|
||||
+#else
|
||||
#define SUBTARGET_EXTRA_SPECS
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#define EXTRA_SPECS \
|
||||
{ "cc1_cpu", CC1_CPU_SPEC }, \
|
||||
SUBTARGET_EXTRA_SPECS
|
||||
-
|
||||
|
||||
/* Set the value of FLT_EVAL_METHOD in float.h. When using only the
|
||||
FPU, assume that the fpcw is set to extended precision; when using
|
35
cross/gcc4-aarch64/35_all_gcc48_config_arm.patch
Normal file
35
cross/gcc4-aarch64/35_all_gcc48_config_arm.patch
Normal file
|
@ -0,0 +1,35 @@
|
|||
2013-06-03 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config/arm/arm.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC.
|
||||
* gcc/config/arm/elf.h (SUBSUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
|
||||
|
||||
--- a/gcc/config/arm/arm.h 2013-01-15 17:17:28.000000000 +0100
|
||||
+++ b/gcc/config/arm/arm.h 2013-02-18 22:45:18.327284928 +0100
|
||||
@@ -2326,6 +2326,11 @@ extern const char *host_detect_local_cpu
|
||||
# define MCPU_MTUNE_NATIVE_SPECS ""
|
||||
#endif
|
||||
|
||||
-#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
|
||||
-
|
||||
+#ifdef ENABLE_ESP
|
||||
+# define DRIVER_SELF_SPECS \
|
||||
+ MCPU_MTUNE_NATIVE_SPECS, \
|
||||
+ ESP_DRIVER_SELF_SPEC
|
||||
+#else
|
||||
+# define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
|
||||
+#endif
|
||||
#endif /* ! GCC_ARM_H */
|
||||
--- a/gcc/config/arm/elf.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ b/gcc/config/arm/elf.h 2013-05-19 02:15:49.595855825 +0200
|
||||
@@ -49,7 +49,11 @@
|
||||
#endif
|
||||
|
||||
#undef SUBSUBTARGET_EXTRA_SPECS
|
||||
+#ifdef ENABLE_ESP
|
||||
+#define SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
|
||||
+#else
|
||||
#define SUBSUBTARGET_EXTRA_SPECS
|
||||
+#endif
|
||||
|
||||
#ifndef ASM_SPEC
|
||||
#define ASM_SPEC "\
|
135
cross/gcc4-aarch64/40_all_gcc49_config_esp.patch
Normal file
135
cross/gcc4-aarch64/40_all_gcc49_config_esp.patch
Normal file
|
@ -0,0 +1,135 @@
|
|||
2014-05-12 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/esp.h New file to support --enable-esp
|
||||
Version 20140512.1
|
||||
|
||||
--- a/gcc/config/esp.h 2010-04-09 16:14:00.000000000 +0200
|
||||
+++ b/gcc/config/esp.h 2012-06-23 01:00:31.248348491 +0200
|
||||
@@ -0,0 +1,127 @@
|
||||
+/* License terms see GNU GENERAL PUBLIC LICENSE Version 3.
|
||||
+ * Version 20140512.1
|
||||
+ * Magnus Granberg (Zorry) <zorry@gentoo.org> */
|
||||
+#ifndef GCC_ESP_H
|
||||
+#define GCC_ESP_H
|
||||
+
|
||||
+/* This file will add -fstack-protector-all, -fstack-check, -fPIE, -pie and -z now
|
||||
+ as default if the defines and the spec allow it.
|
||||
+ Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass
|
||||
+ to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened.
|
||||
+ This will add some unsupported upstream commands options as -nopie and -nonow.
|
||||
+ -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all and -fstack-check when building kernels.
|
||||
+ ESP_CC1_SPEC is added to CC1_SPEC.
|
||||
+ ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check.
|
||||
+ ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static.
|
||||
+ ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie.
|
||||
+*/
|
||||
+#ifdef ENABLE_ESP
|
||||
+
|
||||
+ /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */
|
||||
+ #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)"
|
||||
+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
+ #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: %{!fno-stack-check: }}}"
|
||||
+ #else
|
||||
+ #define ESP_CC1_SSP_SPEC ""
|
||||
+ #endif
|
||||
+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
|
||||
+ #define ESP_CC1_PIE_SPEC "%{!nopie: }"
|
||||
+ #else
|
||||
+ #define ESP_CC1_PIE_SPEC ""
|
||||
+ #endif
|
||||
+ #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}"
|
||||
+
|
||||
+ /* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable
|
||||
+ -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check
|
||||
+ Don't remove the specs in the end */
|
||||
+ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) "
|
||||
+ #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}"
|
||||
+
|
||||
+ /* We use ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options. */
|
||||
+ #define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \
|
||||
+ %(esp_link_pie)} %(esp_options_ssp) }"
|
||||
+
|
||||
+ /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
|
||||
+ -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */
|
||||
+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
+ #define ESP_OPTIONS_SSP_SPEC \
|
||||
+ "%{nostdlib|ffreestanding|fno-stack-protector|fstack-protector| \
|
||||
+ fstack-protector-all|fstack-protector-strong:;:-fstack-protector-all} \
|
||||
+ %{fstack-check|fstack-check=*:;: -fstack-check}"
|
||||
+ #else
|
||||
+ #define ESP_OPTIONS_SSP_SPEC ""
|
||||
+ #endif
|
||||
+
|
||||
+ /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie */
|
||||
+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
|
||||
+
|
||||
+ /* This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static
|
||||
+ -nostdlib -nostartfiles. */
|
||||
+ /* With ENABLE_CRTBEGINP we don't need to check for -static */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define ESP_OPTIONS_PIE_SPEC \
|
||||
+ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
|
||||
+ %{!shared: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }"
|
||||
+ #else
|
||||
+ #define ESP_OPTIONS_PIE_SPEC \
|
||||
+ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
|
||||
+ %{!shared: %{!static: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }}"
|
||||
+ #endif
|
||||
+
|
||||
+ /* This will add -pie if we don't have -pie -A -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -r -nostdlib
|
||||
+ -nostartfiles */
|
||||
+ /* With ENABLE_CRTBEGINP we don't need to check for -static
|
||||
+ and we add -pie only to get the start and endfiles. -pie will not go to the linker. */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define ESP_LINK_PIE_SPEC \
|
||||
+ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!r: \
|
||||
+ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}"
|
||||
+ #else
|
||||
+ #define ESP_LINK_PIE_SPEC \
|
||||
+ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r: \
|
||||
+ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}"
|
||||
+ #endif
|
||||
+
|
||||
+ /* This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out
|
||||
+ "-pie and (static)|pg|p|profile are incompatible when linking" */
|
||||
+ /* With ENABLE_CRTBEGINP we don't need to check for -static */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define ESP_LINK_PIE_CHECK_SPEC \
|
||||
+ "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}"
|
||||
+ #else
|
||||
+ #define ESP_LINK_PIE_CHECK_SPEC \
|
||||
+ "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}"
|
||||
+ #endif
|
||||
+
|
||||
+ /* We don't pass -pie to the linker when -static. */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)"
|
||||
+ #else
|
||||
+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
|
||||
+ #endif
|
||||
+
|
||||
+ #else
|
||||
+ #define ESP_OPTIONS_PIE_SPEC ""
|
||||
+ #define ESP_LINK_PIE_CHECK_SPEC ""
|
||||
+ #define ESP_LINK_PIE_SPEC ""
|
||||
+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
|
||||
+ #endif
|
||||
+
|
||||
+ /* We add extra spec name's to the EXTRA_SPECS list */
|
||||
+ #define ESP_EXTRA_SPECS \
|
||||
+ { "esp_cc1", ESP_CC1_SPEC }, \
|
||||
+ { "esp_cc1_pie", ESP_CC1_PIE_SPEC }, \
|
||||
+ { "esp_cc1_ssp", ESP_CC1_SSP_SPEC }, \
|
||||
+ { "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \
|
||||
+ { "esp_link", ESP_LINK_SPEC }, \
|
||||
+ { "esp_link_now", ESP_LINK_NOW_SPEC }, \
|
||||
+ { "esp_link_pie", ESP_LINK_PIE_SPEC }, \
|
||||
+ { "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \
|
||||
+ { "esp_driver_self", ESP_DRIVER_SELF_SPEC }, \
|
||||
+ { "esp_options_pie", ESP_OPTIONS_PIE_SPEC }, \
|
||||
+ { "esp_options_ssp", ESP_OPTIONS_SSP_SPEC }
|
||||
+
|
||||
+ static const char *cc1_spec = CC1_SPEC ESP_CC1_SPEC;
|
||||
+
|
||||
+#endif
|
||||
+#endif /* End GCC_ESP_H */
|
67
cross/gcc4-aarch64/41_all_gcc49_config_esp_alpine.patch
Normal file
67
cross/gcc4-aarch64/41_all_gcc49_config_esp_alpine.patch
Normal file
|
@ -0,0 +1,67 @@
|
|||
Apply Alpine Linux specific differences to Gentoo ESP configuration:
|
||||
- default PIE and SSP by default without additional CFLAGS (to clean up APKBUILD)
|
||||
- do not enable -fstack-check by default (caused failures in programs that setup
|
||||
small stack in musl)
|
||||
- enable -z relro by default
|
||||
- enable -fstack-protector-strong instead of -fstack-protector-all by default
|
||||
|
||||
--- gcc-4.9.2/gcc/config/esp.h 2014-12-10 15:54:19.925060848 +0000
|
||||
+++ gcc-4.9.2/gcc/config/esp.h 2014-12-10 15:59:16.793850060 +0000
|
||||
@@ -4,7 +4,7 @@
|
||||
#ifndef GCC_ESP_H
|
||||
#define GCC_ESP_H
|
||||
|
||||
-/* This file will add -fstack-protector-all, -fstack-check, -fPIE, -pie and -z now
|
||||
+/* This file will add -fstack-protector-strong, -fPIE, -pie, -z relro and -z now
|
||||
as default if the defines and the spec allow it.
|
||||
Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass
|
||||
to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened.
|
||||
@@ -16,11 +16,14 @@
|
||||
ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie.
|
||||
*/
|
||||
#ifdef ENABLE_ESP
|
||||
+
|
||||
+ /* Enable by default on Alpine */
|
||||
+ #define EFAULT_PIE_SSP
|
||||
|
||||
/* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */
|
||||
#define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)"
|
||||
#if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
- #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: %{!fno-stack-check: }}}"
|
||||
+ #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: }}"
|
||||
#else
|
||||
#define ESP_CC1_SSP_SPEC ""
|
||||
#endif
|
||||
@@ -34,20 +37,20 @@
|
||||
/* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable
|
||||
-z now will be added if we don't have -vanilla spec. We do a -pie incompatible check
|
||||
Don't remove the specs in the end */
|
||||
- #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) "
|
||||
+ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_relro) %(esp_link_pie_check) "
|
||||
#define ESP_LINK_NOW_SPEC "%{!nonow:-z now}"
|
||||
+ #define ESP_LINK_RELRO_SPEC "%{!norelro:-z relro}"
|
||||
|
||||
/* We use ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options. */
|
||||
#define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \
|
||||
%(esp_link_pie)} %(esp_options_ssp) }"
|
||||
|
||||
- /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
|
||||
+ /* This will add -fstack-protector-strong if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
|
||||
-fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */
|
||||
#if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
#define ESP_OPTIONS_SSP_SPEC \
|
||||
"%{nostdlib|ffreestanding|fno-stack-protector|fstack-protector| \
|
||||
- fstack-protector-all|fstack-protector-strong:;:-fstack-protector-all} \
|
||||
- %{fstack-check|fstack-check=*:;: -fstack-check}"
|
||||
+ fstack-protector-all|fstack-protector-strong:;:-fstack-protector-strong}"
|
||||
#else
|
||||
#define ESP_OPTIONS_SSP_SPEC ""
|
||||
#endif
|
||||
@@ -115,6 +118,7 @@
|
||||
{ "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \
|
||||
{ "esp_link", ESP_LINK_SPEC }, \
|
||||
{ "esp_link_now", ESP_LINK_NOW_SPEC }, \
|
||||
+ { "esp_link_relro", ESP_LINK_RELRO_SPEC }, \
|
||||
{ "esp_link_pie", ESP_LINK_PIE_SPEC }, \
|
||||
{ "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \
|
||||
{ "esp_driver_self", ESP_DRIVER_SELF_SPEC }, \
|
28
cross/gcc4-aarch64/48_all_x86_pr53113_libitm-avx.patch
Normal file
28
cross/gcc4-aarch64/48_all_x86_pr53113_libitm-avx.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
libitm checks for AVX support in the assembler and adds -mavx to x86_avx.cc
|
||||
which defines the needed typedefs. User CFLAGS can override -mavx however,
|
||||
so also use the fallback typedef if __AVX__ isn't defined.
|
||||
|
||||
https://bugs.gentoo.org/417271
|
||||
http://gcc.gnu.org/PR53113
|
||||
|
||||
|
||||
--- a/libitm/config/x86/x86_avx.cc
|
||||
+++ b/libitm/config/x86/x86_avx.cc
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
extern "C" {
|
||||
|
||||
-#ifndef HAVE_AS_AVX
|
||||
+#if !defined (HAVE_AS_AVX) || !defined(__AVX__)
|
||||
// If we don't have an AVX capable assembler, we didn't set -mavx on the
|
||||
// command-line either, which means that libitm.h defined neither this type
|
||||
// nor the functions in this file. Define the type and unconditionally
|
||||
@@ -40,7 +40,7 @@ typedef float _ITM_TYPE_M256 __attribute__((vector_size(32), may_alias));
|
||||
// Re-define the memcpy implementations so that we can frob the
|
||||
// interface to deal with possibly missing AVX instruction set support.
|
||||
|
||||
-#ifdef HAVE_AS_AVX
|
||||
+#if defined(HAVE_AS_AVX) && defined(__AVX__)
|
||||
#define RETURN(X) return X
|
||||
#define STORE(X,Y) X = Y
|
||||
#define OUTPUT(T) _ITM_TYPE_##T
|
18
cross/gcc4-aarch64/50_all_libiberty-asprintf.patch
Normal file
18
cross/gcc4-aarch64/50_all_libiberty-asprintf.patch
Normal file
|
@ -0,0 +1,18 @@
|
|||
2008-07-25 Magnus Granberg <zorry@ume.nu>
|
||||
|
||||
* include/libiberty.h (asprintf): Don't declare if defined as a macro
|
||||
|
||||
--- a/include/libiberty.h
|
||||
+++ b/include/libiberty.h
|
||||
@@ -609,8 +609,11 @@ extern int pwait (int, int *, int);
|
||||
/* Like sprintf but provides a pointer to malloc'd storage, which must
|
||||
be freed by the caller. */
|
||||
|
||||
+/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL. */
|
||||
+#ifndef asprintf
|
||||
extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#if !HAVE_DECL_VASPRINTF
|
||||
/* Like vsprintf but provides a pointer to malloc'd storage, which
|
10
cross/gcc4-aarch64/51_all_libiberty-pic.patch
Normal file
10
cross/gcc4-aarch64/51_all_libiberty-pic.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- a/libiberty/Makefile.in
|
||||
+++ b/libiberty/Makefile.in
|
||||
@@ -246,6 +246,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
|
||||
$(AR) $(AR_FLAGS) $(TARGETLIB) \
|
||||
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
|
||||
$(RANLIB) $(TARGETLIB); \
|
||||
+ cp $(TARGETLIB) ../ ; \
|
||||
cd ..; \
|
||||
else true; fi
|
||||
|
190
cross/gcc4-aarch64/67_all_gcc-poison-system-directories.patch
Normal file
190
cross/gcc4-aarch64/67_all_gcc-poison-system-directories.patch
Normal file
|
@ -0,0 +1,190 @@
|
|||
From 160397ef3c3331099af028f1b8d3e085b07d88ad Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 16/35] gcc: poison-system-directories
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [distribution: codesourcery]
|
||||
---
|
||||
gcc/Makefile.in | 2 +-
|
||||
gcc/common.opt | 4 ++++
|
||||
gcc/config.in | 6 ++++++
|
||||
gcc/configure | 20 ++++++++++++++++++--
|
||||
gcc/configure.ac | 10 ++++++++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
gcc/gcc.c | 2 ++
|
||||
gcc/incpath.c | 19 +++++++++++++++++++
|
||||
8 files changed, 69 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: gcc-4.9-20140316/gcc/common.opt
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/common.opt
|
||||
+++ gcc-4.9-20140316/gcc/common.opt
|
||||
@@ -603,6 +603,10 @@ Wpedantic
|
||||
Common Var(pedantic) Warning
|
||||
Issue warnings needed for strict compliance to the standard
|
||||
|
||||
+Wpoison-system-directories
|
||||
+Common Var(flag_poison_system_directories) Init(1) Warning
|
||||
+Warn for -I and -L options using system directories if cross compiling
|
||||
+
|
||||
Wshadow
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one local variable shadows another
|
||||
Index: gcc-4.9-20140316/gcc/config.in
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/config.in
|
||||
+++ gcc-4.9-20140316/gcc/config.in
|
||||
@@ -138,6 +138,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to warn for use of native system header directories */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define if you want all operations on RTL (the basic data structure of the
|
||||
optimizer and back end) to be checked for dynamic type safety at runtime.
|
||||
This is quite expensive. */
|
||||
Index: gcc-4.9-20140316/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/configure
|
||||
+++ gcc-4.9-20140316/gcc/configure
|
||||
@@ -928,6 +928,7 @@ with_system_zlib
|
||||
enable_maintainer_mode
|
||||
enable_link_mutex
|
||||
enable_version_specific_runtime_libs
|
||||
+enable_poison_system_directories
|
||||
enable_plugin
|
||||
enable_host_shared
|
||||
enable_libquadmath_support
|
||||
@@ -1648,6 +1649,8 @@ Optional Features:
|
||||
--enable-version-specific-runtime-libs
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
+ --enable-poison-system-directories
|
||||
+ warn for use of native system header directories
|
||||
--enable-plugin enable plugin support
|
||||
--enable-host-shared build host code as shared libraries
|
||||
--disable-libquadmath-support
|
||||
@@ -27702,6 +27705,19 @@ if test "${enable_version_specific_runti
|
||||
fi
|
||||
|
||||
|
||||
+# Check whether --enable-poison-system-directories was given.
|
||||
+if test "${enable_poison_system_directories+set}" = set; then :
|
||||
+ enableval=$enable_poison_system_directories;
|
||||
+else
|
||||
+ enable_poison_system_directories=no
|
||||
+fi
|
||||
+
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+
|
||||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
||||
+
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
|
||||
|
||||
Index: gcc-4.9-20140316/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/configure.ac
|
||||
+++ gcc-4.9-20140316/gcc/configure.ac
|
||||
@@ -5366,6 +5366,16 @@ AC_ARG_ENABLE(version-specific-runtime-l
|
||||
[specify that runtime libraries should be
|
||||
installed in a compiler-specific directory])])
|
||||
|
||||
+AC_ARG_ENABLE([poison-system-directories],
|
||||
+ AS_HELP_STRING([--enable-poison-system-directories],
|
||||
+ [warn for use of native system header directories]),,
|
||||
+ [enable_poison_system_directories=no])
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
||||
+ [1],
|
||||
+ [Define to warn for use of native system header directories])
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
AC_SUBST(subdirs)
|
||||
AC_SUBST(srcdir)
|
||||
Index: gcc-4.9-20140316/gcc/doc/invoke.texi
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/doc/invoke.texi
|
||||
+++ gcc-4.9-20140316/gcc/doc/invoke.texi
|
||||
@@ -260,6 +260,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol
|
||||
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
|
||||
-Wpointer-arith -Wno-pointer-to-int-cast @gol
|
||||
+-Wno-poison-system-directories @gol
|
||||
-Wredundant-decls -Wno-return-local-addr @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow @gol
|
||||
-Wsign-compare -Wsign-conversion -Wfloat-conversion @gol
|
||||
@@ -4230,6 +4231,14 @@ headers---for that, @option{-Wunknown-pr
|
||||
for most targets, it is made up of code and thus requires the stack
|
||||
to be made executable in order for the program to work properly.
|
||||
|
||||
+@item -Wno-poison-system-directories
|
||||
+@opindex Wno-poison-system-directories
|
||||
+Do not warn for @option{-I} or @option{-L} options using system
|
||||
+directories such as @file{/usr/include} when cross compiling. This
|
||||
+option is intended for use in chroot environments when such
|
||||
+directories contain the correct headers and libraries for the target
|
||||
+system rather than the host.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
||||
Index: gcc-4.9-20140316/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/gcc.c
|
||||
+++ gcc-4.9-20140316/gcc/gcc.c
|
||||
@@ -764,6 +764,8 @@ proper position among the other output f
|
||||
"%{fuse-ld=*:-fuse-ld=%*}\
|
||||
%X %{o*} %{e*} %{N} %{n} %{r}\
|
||||
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " VTABLE_VERIFICATION_SPEC " \
|
||||
+ %{Wno-poison-system-directories:--no-poison-system-directories}\
|
||||
+ %{Werror=poison-system-directories:--error-poison-system-directories}\
|
||||
%{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
|
||||
%{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
|
||||
%{fgnu-tm:%:include(libitm.spec)%(link_itm)}\
|
||||
Index: gcc-4.9-20140316/gcc/incpath.c
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/incpath.c
|
||||
+++ gcc-4.9-20140316/gcc/incpath.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "intl.h"
|
||||
#include "incpath.h"
|
||||
#include "cppdefault.h"
|
||||
+#include "diagnostic-core.h"
|
||||
|
||||
/* Microsoft Windows does not natively support inodes.
|
||||
VMS has non-numeric inodes. */
|
||||
@@ -382,6 +383,24 @@ merge_include_chains (const char *sysroo
|
||||
}
|
||||
fprintf (stderr, _("End of search list.\n"));
|
||||
}
|
||||
+
|
||||
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+ if (flag_poison_system_directories)
|
||||
+ {
|
||||
+ struct cpp_dir *p;
|
||||
+
|
||||
+ for (p = heads[QUOTE]; p; p = p->next)
|
||||
+ {
|
||||
+ if ((!strncmp (p->name, "/usr/include", 12))
|
||||
+ || (!strncmp (p->name, "/usr/local/include", 18))
|
||||
+ || (!strncmp (p->name, "/usr/X11R6/include", 18)))
|
||||
+ warning (OPT_Wpoison_system_directories,
|
||||
+ "include location \"%s\" is unsafe for "
|
||||
+ "cross-compilation",
|
||||
+ p->name);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* Use given -I paths for #include "..." but not #include <...>, and
|
483
cross/gcc4-aarch64/APKBUILD
Normal file
483
cross/gcc4-aarch64/APKBUILD
Normal file
|
@ -0,0 +1,483 @@
|
|||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen gcc4-aarch64
|
||||
# Based on: main/gcc4 (from postmarketOS)
|
||||
|
||||
CTARGET_ARCH=aarch64
|
||||
CTARGET="$(arch_to_hostspec ${CTARGET_ARCH})"
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LANG_ADA=false
|
||||
options="!strip !tracedeps"
|
||||
|
||||
# abuild doesn't try to tries to install "build-base-$CTARGET_ARCH"
|
||||
# when this variable matches "no*"
|
||||
BOOTSTRAP="nobuildbase"
|
||||
|
||||
# abuild will only cross compile when this variable is set, but it
|
||||
# needs to find a valid package database in there for dependency
|
||||
# resolving, so we set it to /.
|
||||
CBUILDROOT="/"
|
||||
|
||||
_cross_configure="--disable-bootstrap --with-sysroot=/usr/$CTARGET"
|
||||
|
||||
pkgname="gcc4-aarch64"
|
||||
pkgver=9999
|
||||
_pkgver=4.9.2
|
||||
pkgrel=0
|
||||
pkgdesc="Stage2 cross-compiler for aarch64"
|
||||
url="http://gcc.gnu.org"
|
||||
arch="x86_64"
|
||||
license="GPL LGPL"
|
||||
_gccrel=$_pkgver-r$pkgrel
|
||||
depends="isl binutils-aarch64"
|
||||
makedepends_build="gcc g++ paxmark bison flex texinfo gawk zip gmp-dev mpfr-dev mpc1-dev zlib-dev"
|
||||
makedepends_host="linux-headers gmp-dev mpfr-dev mpc1-dev isl-dev zlib-dev musl-dev-aarch64 binutils-aarch64"
|
||||
subpackages=""
|
||||
options="!strip !tracedeps"
|
||||
|
||||
# We only care about C, so we can compile old Linux kernels
|
||||
LANG_CXX=false
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LANG_ADA=false
|
||||
|
||||
LIBGOMP="false"
|
||||
LIBGCC="false"
|
||||
LIBATOMIC="false"
|
||||
LIBITM="false"
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
if [ "$BOOTSTRAP" = nolibc ]; then
|
||||
LANG_CXX=false
|
||||
LANG_ADA=false
|
||||
LIBGCC=false
|
||||
_builddir="$srcdir/build-cross-pass2"
|
||||
else
|
||||
_builddir="$srcdir/build-cross-final"
|
||||
fi
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LIBGOMP=false
|
||||
LIBATOMIC=false
|
||||
LIBITM=false
|
||||
|
||||
# reset target flags (should be set in crosscreate abuild)
|
||||
# fixup flags. seems gcc treats CPPFLAGS as global without
|
||||
# _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
|
||||
export CFLAGS="$CPPFLAGS $CFLAGS"
|
||||
export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
|
||||
unset CPPFLAGS
|
||||
export CFLAGS_FOR_TARGET=" "
|
||||
export CXXFLAGS_FOR_TARGET=" "
|
||||
export LDFLAGS_FOR_TARGET=" "
|
||||
|
||||
STRIP_FOR_TARGET="$CTARGET-strip"
|
||||
elif [ "$CBUILD" != "$CHOST" ]; then
|
||||
# fixup flags. seems gcc treats CPPFLAGS as global without
|
||||
# _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
|
||||
export CFLAGS="$CPPFLAGS $CFLAGS"
|
||||
export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
|
||||
unset CPPFLAGS
|
||||
|
||||
# reset flags and cc for build
|
||||
export CC_FOR_BUILD="gcc"
|
||||
export CXX_FOR_BUILD="g++"
|
||||
export CFLAGS_FOR_BUILD=" "
|
||||
export CXXFLAGS_FOR_BUILD=" "
|
||||
export LDFLAGS_FOR_BUILD=" "
|
||||
export CFLAGS_FOR_TARGET=" "
|
||||
export CXXFLAGS_FOR_TARGET=" "
|
||||
export LDFLAGS_FOR_TARGET=" "
|
||||
|
||||
# Languages that do not need bootstrapping
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
|
||||
STRIP_FOR_TARGET=${CROSS_COMPILE}strip
|
||||
_builddir="$srcdir/build-cross-native"
|
||||
else
|
||||
STRIP_FOR_TARGET=${CROSS_COMPILE}strip
|
||||
_builddir="$srcdir/build"
|
||||
fi
|
||||
|
||||
# Go needs {set,make,swap}context, unimplemented in musl
|
||||
[ "$CTARGET_LIBC" = musl ] && LANG_GO=false
|
||||
|
||||
# libitm has TEXTRELs in ARM build, so disable for now
|
||||
case "$CTARGET_ARCH" in
|
||||
arm*) LIBITM=false ;;
|
||||
mips*) LIBITM=false ;;
|
||||
esac
|
||||
|
||||
# Fortran uses libquadmath if toolchain has __float128
|
||||
# currently on x86, x86_64 and ia64
|
||||
LIBQUADMATH=$LANG_FORTRAN
|
||||
case "$CTARGET_ARCH" in
|
||||
x86 | x86_64) LIBQUADMATH=$LANG_FORTRAN ;;
|
||||
*) LIBQUADMATH=false ;;
|
||||
esac
|
||||
|
||||
# libatomic is a dependency for openvswitch
|
||||
$LIBATOMIC && subpackages="$subpackages libatomic::$CTARGET_ARCH"
|
||||
$LIBGCC && subpackages="$subpackages libgcc::$CTARGET_ARCH"
|
||||
$LIBQUADMATH && subpackages="$subpackages libquadmath::$CTARGET_ARCH"
|
||||
if $LIBGOMP; then
|
||||
depends="$depends libgomp=$_gccrel"
|
||||
subpackages="$subpackages libgomp::$CTARGET_ARCH"
|
||||
fi
|
||||
|
||||
_languages=c
|
||||
if $LANG_CXX; then
|
||||
_languages="$_languages,c++"
|
||||
fi
|
||||
if $LANG_OBJC; then
|
||||
subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_target:objc"
|
||||
_languages="$_languages,objc"
|
||||
fi
|
||||
if $LANG_JAVA; then
|
||||
subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_target:java"
|
||||
_languages="$_languages,java"
|
||||
fi
|
||||
if $LANG_GO; then
|
||||
subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_target:go"
|
||||
_languages="$_languages,go"
|
||||
fi
|
||||
if $LANG_FORTRAN; then
|
||||
subpackages="$subpackages libgfortran::$CTARGET_ARCH gfortran$_target:gfortran"
|
||||
_languages="$_languages,fortran"
|
||||
fi
|
||||
if $LANG_ADA; then
|
||||
subpackages="$subpackages libgnat::$CTARGET_ARCH gcc-gnat$_target:gnat"
|
||||
_languages="$_languages,ada"
|
||||
makedepends_build="$makedepends_build gcc-gnat gcc-gnat$_cross"
|
||||
fi
|
||||
makedepends="$makedepends_build $makedepends_host"
|
||||
|
||||
source="http://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$_pkgver}/gcc-${_pkgbase:-$_pkgver}.tar.gz
|
||||
http://sourceware.org/pub/java/ecj-4.9.jar
|
||||
|
||||
01_all_gcc49_configure.patch
|
||||
02_all_gcc48_config.in.patch
|
||||
03_all_gcc49_Makefile.in.patch
|
||||
05_all_gcc48_gcc.c.patch
|
||||
16_all_gcc47_nopie_option.patch
|
||||
20_all_gcc49_config_crtbeginp.patch
|
||||
24_all_gcc49_invoke.texi.patch
|
||||
34_all_gcc48_config_i386.patch
|
||||
35_all_gcc48_config_arm.patch
|
||||
40_all_gcc49_config_esp.patch
|
||||
41_all_gcc49_config_esp_alpine.patch
|
||||
|
||||
10_all_default-fortify-source.patch
|
||||
12_all_default-warn-trampolines.patch
|
||||
15_all_libgfortran-Werror.patch
|
||||
16_all_libgomp-Werror.patch
|
||||
48_all_x86_pr53113_libitm-avx.patch
|
||||
50_all_libiberty-asprintf.patch
|
||||
51_all_libiberty-pic.patch
|
||||
67_all_gcc-poison-system-directories.patch
|
||||
|
||||
gcc49-cloog-dl.patch
|
||||
gcc-ice-hack.patch
|
||||
gcc-spec-env.patch
|
||||
libgcc-always-build-gcceh.a.patch
|
||||
gcc-4.6-pr32219.patch
|
||||
gcc-4.9-musl.patch
|
||||
gcc-4.8-musl-fix-iteratephdr.patch
|
||||
gcc-4.8-musl-libssp.patch
|
||||
gcc-4.9-musl-fortify.patch
|
||||
boehm-gc-uclibc.patch
|
||||
boehm-gc-musl.patch
|
||||
gcc-pure64.patch
|
||||
fix-gcj-musl.patch
|
||||
fix-gcj-iconv-musl.patch
|
||||
musl-posix_memalign-c++.patch
|
||||
pr63740.patch
|
||||
pr64037.patch
|
||||
|
||||
gcc-4.8-build-args.patch
|
||||
fix-cxxflags-passing.patch
|
||||
fix-cxxflags-for-target.patch
|
||||
ada-no-pie.patch
|
||||
ada-fixes.patch
|
||||
ada-shared.patch
|
||||
ada-musl.patch
|
||||
|
||||
vanilla.specs
|
||||
hardenednossp.specs
|
||||
hardenednopie.specs
|
||||
hardenednopiessp.specs
|
||||
"
|
||||
|
||||
# we build out-of-tree
|
||||
_gccdir="$srcdir"/gcc-${_pkgbase:-$_pkgver}
|
||||
_gcclibdir=/usr/lib/gcc/${CTARGET}/$_pkgver
|
||||
_gcclibexec=/usr/libexec/gcc/${CTARGET}/$_pkgver
|
||||
|
||||
prepare() {
|
||||
cd "$_gccdir"
|
||||
|
||||
_err=
|
||||
for i in $source; do
|
||||
case "$i" in
|
||||
*.patch)
|
||||
msg "Applying $i"
|
||||
patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "$_err" ]; then
|
||||
error "The following patches failed:"
|
||||
for i in $_err; do
|
||||
echo " $i"
|
||||
done
|
||||
return 1
|
||||
fi
|
||||
|
||||
# see http://gcc.gnu.org/ml/java/2008-04/msg00027.html
|
||||
mv "$srcdir"/ecj-*.jar ecj.jar
|
||||
|
||||
echo ${_pkgver} > gcc/BASE-VER
|
||||
}
|
||||
|
||||
build() {
|
||||
local _arch_configure=
|
||||
local _libc_configure=
|
||||
local _bootstrap_configure=
|
||||
local _symvers=
|
||||
|
||||
cd "$_gccdir"
|
||||
|
||||
case "$CTARGET" in
|
||||
aarch64-*-*-*) _arch_configure="--with-arch=armv8-a --with-abi=lp64";;
|
||||
armv5-*-*-*eabi) _arch_configure="--with-arch=armv5te --with-tune=arm926ej-s --with-float=soft --with-abi=aapcs-linux";;
|
||||
armv6-*-*-*eabihf) _arch_configure="--with-arch=armv6zk --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=hard --with-abi=aapcs-linux";;
|
||||
armv7-*-*-*eabihf) _arch_configure="--with-arch=armv7-a --with-tune=generic-armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-abi=aapcs-linux --with-mode=thumb";;
|
||||
mips-*-*-*) _arch_configure="--with-arch=mips32 --with-mips-plt --with-float=soft --with-abi=32";;
|
||||
mips64-*-*-*) _arch_configure="--with-arch=mips3 --with-tune=mips64 --with-mips-plt --with-float=soft --with-abi=64";;
|
||||
mips64el-*-*-*) _arch_configure="--with-arch=mips3 --with-tune=mips64 --with-mips-plt --with-float=soft --with-abi=64";;
|
||||
mipsel-*-*-*) _arch_configure="--with-arch=mips32 --with-mips-plt --with-float=soft --with-abi=32";;
|
||||
powerpc-*-*-*) _arch_configure="--enable-secureplt --enable-decimal-float=no";;
|
||||
powerpc64*-*-*-*) _arch_configure="--with-abi=elfv2 --enable-secureplt --enable-decimal-float=no --enable-targets=powerpcle-linux";;
|
||||
i486-*-*-*) _arch_configure="--with-arch=i486 --with-tune=generic --enable-cld";;
|
||||
i586-*-*-*) _arch_configure="--with-arch=i586 --with-tune=generic --enable-cld";;
|
||||
s390x-*-*-*) _arch_configure="--with-arch=z196 --with-tune=zEC12 --with-zarch --with-long-double-128 --enable-decimal-float";;
|
||||
esac
|
||||
|
||||
case "$CTARGET_ARCH" in
|
||||
mips*) _hash_style_configure="--with-linker-hash-style=sysv" ;;
|
||||
*) _hash_style_configure="--with-linker-hash-style=gnu" ;;
|
||||
esac
|
||||
|
||||
case "$CTARGET_LIBC" in
|
||||
musl)
|
||||
# musl does not support mudflap, or libsanitizer
|
||||
# libmpx uses secure_getenv and struct _libc_fpstate not present in musl
|
||||
# alpine musl provides libssp_nonshared.a, so we don't need libssp either
|
||||
_libc_configure="--disable-libssp --disable-libmpx --disable-libmudflap --disable-libsanitizer"
|
||||
_symvers="--disable-symvers"
|
||||
export libat_cv_have_ifunc=no
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
case "$BOOTSTRAP" in
|
||||
nolibc) _bootstrap_configure="--with-newlib --disable-shared --enable-threads=no" ;;
|
||||
*) _bootstrap_configure="--enable-shared --enable-threads --enable-tls" ;;
|
||||
esac
|
||||
|
||||
$LIBGOMP || _bootstrap_configure="$_bootstrap_configure --disable-libgomp"
|
||||
$LIBATOMIC || _bootstrap_configure="$_bootstrap_configure --disable-libatomic"
|
||||
$LIBITM || _bootstrap_configure="$_bootstrap_configure --disable-libitm"
|
||||
$LIBQUADMATH || _arch_configure="$_arch_configure --disable-libquadmath"
|
||||
|
||||
msg "Building the following:"
|
||||
echo ""
|
||||
echo " CBUILD=$CBUILD"
|
||||
echo " CHOST=$CHOST"
|
||||
echo " CTARGET=$CTARGET"
|
||||
echo " CTARGET_ARCH=$CTARGET_ARCH"
|
||||
echo " CTARGET_LIBC=$CTARGET_LIBC"
|
||||
echo " languages=$_languages"
|
||||
echo " arch_configure=$_arch_configure"
|
||||
echo " libc_configure=$_libc_configure"
|
||||
echo " cross_configure=$_cross_configure"
|
||||
echo " bootstrap_configure=$_bootstrap_configure"
|
||||
echo " hash_style_configure=$_hash_style_configure"
|
||||
echo ""
|
||||
|
||||
mkdir -p "$_builddir"
|
||||
cd "$_builddir"
|
||||
"$_gccdir"/configure --prefix=/usr/gcc4 \
|
||||
--mandir=/usr/share/man \
|
||||
--infodir=/usr/share/info \
|
||||
--build=${CBUILD} \
|
||||
--host=${CHOST} \
|
||||
--target=${CTARGET} \
|
||||
--with-pkgversion="postmarketOS ${_pkgver}" \
|
||||
--enable-checking=release \
|
||||
--disable-fixed-point \
|
||||
--disable-libstdcxx-pch \
|
||||
\
|
||||
--disable-bootstrap \
|
||||
--disable-libstdcxx \
|
||||
\
|
||||
--disable-multilib \
|
||||
--disable-nls \
|
||||
--disable-werror \
|
||||
$_symvers \
|
||||
--enable-__cxa_atexit \
|
||||
--enable-default-pie \
|
||||
--enable-cloog-backend \
|
||||
--enable-languages=$_languages \
|
||||
$_arch_configure \
|
||||
$_libc_configure \
|
||||
$_cross_configure \
|
||||
$_bootstrap_configure \
|
||||
--with-system-zlib \
|
||||
$_hash_style_configure
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$_builddir"
|
||||
make -j1 DESTDIR="${pkgdir}" install
|
||||
|
||||
local prefix=/usr/gcc4
|
||||
if [ "$CHOST" = "$CTARGET" ]; then
|
||||
# gcc symlinks
|
||||
ln -s gcc "$pkgdir$prefix"/bin/cc
|
||||
ln -s gcc "$pkgdir$prefix"/bin/gcc4
|
||||
fi
|
||||
|
||||
# remove docs
|
||||
rm -r "$pkgdir/usr/share/"
|
||||
|
||||
# we dont support gcj -static
|
||||
# and saving 35MB is not bad.
|
||||
find "$pkgdir" -name libgcj.a -o -name libgtkpeer.a \
|
||||
-o -name libgjsmalsa.a -o -name libgcj-tools.a \
|
||||
-o -name libjvm.a -o -name libgij.a -o -name libgcj_bc.a \
|
||||
-o -name libjavamath.a \
|
||||
| xargs rm -f
|
||||
|
||||
# strip debug info from some static libs
|
||||
${STRIP_FOR_TARGET} -g `find "$pkgdir" \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
|
||||
-o -name libmudflap.a -o -name libmudflapth.a \
|
||||
-o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
|
||||
-o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
|
||||
-o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
|
||||
-a -type f`
|
||||
|
||||
if $LANG_JAVA; then
|
||||
sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \
|
||||
"$pkgdir"/usr/lib/libgcj.spec
|
||||
fi
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
# cross-gcc: remove any files that would conflict with the
|
||||
# native gcc package
|
||||
rm -rf "$pkgdir$prefix"/bin/cc \
|
||||
"$pkgdir$prefix"/include \
|
||||
"$pkgdir$prefix"/share
|
||||
# libcc1 does not depend on target, don't ship it
|
||||
rm -rf "$pkgdir$prefix"/lib/libcc1.so*
|
||||
|
||||
# fixup gcc library symlinks to be linker scripts so
|
||||
# linker finds the libs from relocated sysroot
|
||||
for so in "$pkgdir$prefix"/$CTARGET/lib/*.so; do
|
||||
if [ -h "$so" ]; then
|
||||
local _real=$(basename $(readlink "$so"))
|
||||
rm -f "$so"
|
||||
echo "GROUP ($_real)" > "$so"
|
||||
fi
|
||||
done
|
||||
|
||||
# Link binutils binaries to /usr/gcc4
|
||||
# This is the path GCC4 will look for them, if we don't create these
|
||||
# symlinks, it will use the native binutils instead (which is of course
|
||||
# failing and causes many headaches). See also: '-B' in 'man gcc'.
|
||||
echo "Link binutils binaries to /usr/gcc4"
|
||||
mkdir -p "$pkgdir$prefix/$CTARGET/bin"
|
||||
for i in "as" "ld"; do
|
||||
ln -sv "/usr/$CTARGET/bin/$i" \
|
||||
"$pkgdir$prefix/$CTARGET/bin/$i"
|
||||
done
|
||||
|
||||
# Link binutils to gcc4-* (so 'CROSS_COMPILE=gcc4-...' works)
|
||||
echo "Link binutils to gcc4-*"
|
||||
mkdir -p "$pkgdir/usr/bin"
|
||||
for i in "elfedit" "gprof" "addr2line" "strings" "as" "ld" "size" "ld.bfd" \
|
||||
"readelf" "nm" "ar" "strip" "dwp" "objdump" "objcopy" "c++filt" "ranlib"; do
|
||||
ln -sv "/usr/bin/$CTARGET-$i" \
|
||||
"$pkgdir/usr/bin/gcc4-$CTARGET-$i"
|
||||
done
|
||||
fi
|
||||
|
||||
# Link all binaries from /usr/gcc4/bin/* to /usr/bin/gcc4-*
|
||||
echo "Link all gcc binaries to /usr/bin/gcc4-*"
|
||||
mkdir -p "$pkgdir"/usr/bin
|
||||
cd "$pkgdir$prefix/bin/"
|
||||
for i in *; do
|
||||
ln -sv "$prefix/bin/$i" "$pkgdir/usr/bin/gcc4-$i"
|
||||
done
|
||||
}
|
||||
|
||||
sha512sums="35a1386ae2b8629cd464383fbb3c61e94a07f3691f48b8029b97cc62a60c792ffb870aad2343b2ad8185bf46f77e1e1dd62309ecdadc42f919874c6e2c58b936 gcc-4.9.2.tar.gz
|
||||
28f8c6fdbcb19e950b1d0bafb3bcc7a8cba87bc673aa6027cece116599cdee80f0cf5e95a1440544890239f5c754e8a93ab46d9daedd937faef445d7ea33b226 ecj-4.9.jar
|
||||
618a8d037ccad15e60182acc9c85ba844cb9b5800a22ece0b814e43541b01b4e390a2847f86debb351f4b05580241747fde87e86a17060744e7bb2b9a3dc5bd4 01_all_gcc49_configure.patch
|
||||
21770259c7916e55568027926e4a543eea468b04436cc61c28f749be5a6635c48e68b7924a8eb19a76733a9d2f00921ba06faddaedbf14b1cdad5ab1810cc6c6 02_all_gcc48_config.in.patch
|
||||
3afe2cc407b5440333d9517daca3257e08a7318695d20645a9186cafac53afa6d0c075af67398ff7abd06250567cc6c751e6dabb65a310eef9a5d981e910aa25 03_all_gcc49_Makefile.in.patch
|
||||
e98cc321d71e5bb62c6116b30ed6f11044bda440e238026a83dec63f04a0587440bdae50ec211b07976fcd9deb329f9dd1dac1317dae5003088a8a8bddbb97c1 05_all_gcc48_gcc.c.patch
|
||||
98a4da3137177c5cad7dd7d35ad39cd416aa36f07867714e09ab8c0d8b759d2659063aa87b16ac1b708a283afd2ac54e20b327a32d1147720996d7bc11dcbd63 16_all_gcc47_nopie_option.patch
|
||||
8fc6f2fd921c560fb1d7ba17b5cef4ea8071ee6909d372e41201667c011f948560fa543b1246cf55c0009622abf0dbc0bd79f718a853f2f0b59290e3df2c2968 20_all_gcc49_config_crtbeginp.patch
|
||||
32bfe9c1f6f566de72c93388622001ff4b95086ea6f476bdfc08403ea474f98212f7396bc75d88a79a053159f78dca922ec6f641f83d9959ad419b0d8901b504 24_all_gcc49_invoke.texi.patch
|
||||
dd5b9b30eb7716cb3c010ca79a83ed6219ff6e6f2557deb4e1d26cecac0f2b14c4ef7bf4dc5c2aec88aae5463763f5f64454b8a627ebd1d0a5c92984017025ad 34_all_gcc48_config_i386.patch
|
||||
8829f85323d8b11e26e3c19ced4a51875fc63f1483cfdc4d0f579a6cb37e1b6e23fcf33a87a574a6e0007250374ea46d117a136e73a40fbe43f0e39d9b2dd1a8 35_all_gcc48_config_arm.patch
|
||||
976994900d20a448b97fa91e1d758b6da6d8ad9121b3dbc2e8f66ff8006d8e496cd3dddc41394db6c4d20366d56fe12375b97f494d6fb9abb8e64ab626acc2ef 40_all_gcc49_config_esp.patch
|
||||
e2d027be2e76a64a607ae44566d163bcc2a03c9e14d5bd20cd8bb15c2e9e395d8964b747a6a9c49541a5d1613d721855b73d60cce7c834427b44788fa92d44dc 41_all_gcc49_config_esp_alpine.patch
|
||||
6cdac0741568b418af1e267a69b487e48a98e319f5ec8ab2bad293f2520ceced40c7df7ddef84963f5b101b94f34e441574c501ef3993ded097beb7c9d3b205f 10_all_default-fortify-source.patch
|
||||
5069e4b741488913a646a9b5d871af8e7f7a606158ea09305d0ddd46257c5b659770627bc2ca3abeaae039da1717b3ba6c9cd90554a441da74eb4ecf24c13074 12_all_default-warn-trampolines.patch
|
||||
c18a99b7303a734fe4dca9d4e90e21d18e5bd71c7d91e1a26c86b1354c73f567590a875941bfe64ce59f0393023b91c606c96b30885c55b98a790c3ab0c84ca7 15_all_libgfortran-Werror.patch
|
||||
433404fd9bfa172d69fff4a5505e8648cbbbf5f052d2b4235608ff7af0c4063d557d25d80c85c5bd0d1e1ed64b568e7bbc0cdbce11cc74db4c0189af3a01634a 16_all_libgomp-Werror.patch
|
||||
ff16f259fff8d78230593eee8641eab5a72c5c517c6ac5f09597edbc624d964b33f185a0dd5772d6029f757a5edb66431b3eab77dac71e76a0ef155bb7443d2c 48_all_x86_pr53113_libitm-avx.patch
|
||||
c6c314a2d24531b4286436dec7189f83e443c4cfa9b88339a4c324c2d40812d766ed44dcfd4a0c3b67695bb76969a4d8a9784ff95876ceba23def305ef8a48f8 50_all_libiberty-asprintf.patch
|
||||
0a0bc72b9366158f5d23fff1928e756fdd212433bac6ab1f00d632f241382820db8db5d475ddf11ea020eaf7e2e71b12fb9b1c3c870cf84adf6c2b16f15aabca 51_all_libiberty-pic.patch
|
||||
9b623a0b00254326596a56fff23dacc97e560823ebdf35698799fc7ab5e98984c71b7ddfceeb1589bbbdd1ba89a742cd7becf8f70f0081dfc26bcef4198b1b5d 67_all_gcc-poison-system-directories.patch
|
||||
9c6aa6d7f096c3aaebbe21d52967872195aea130b51d60a1934255b00bf1b23d24ec598c7763152f987f7999da9e56f512d169958666a3133641de3780a75d3f gcc49-cloog-dl.patch
|
||||
7242876e4bba34235f6f3ea960d72439638bd31547284ca96cb94c97a2d46dd7b38a3709fd159cf86efa1e8a44e3e9125fe82bc3a1cc71153591755827d6c9fd gcc-ice-hack.patch
|
||||
ce9c1f923e2c6d17347ec2d3d8482351a9644194b2753627389294d43bb4f11b9c2ef41eda1b46ad83d09901a0bedebd5b6b8a57a198646030ab61e8d2d8cb48 gcc-spec-env.patch
|
||||
d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b libgcc-always-build-gcceh.a.patch
|
||||
9fc5e32f2573ae67b6cf22119d636d10a47c42718635bceff7d457a93a3f664ae1ed10e154f70964ba2d26b0de04f879a8c05de6411112760d40433373dd0a80 gcc-4.6-pr32219.patch
|
||||
e2be926c0ed4d67587857652678253a2a4e42294009a0c4b9fc420e53b0e6d44d1a2c6c2c62db837bc010470e9e62eb4af1ba7f51ff507c41e40922cd022dd26 gcc-4.9-musl.patch
|
||||
b5b0210dfaccfe0b06f0a9090666b1fae2a3faa4140b7930146b29531f0da9beb1f2c1f7e7bc2bd29179f9fe05dc30e246e96220b8ff75a90f75e8350c9058a1 gcc-4.8-musl-fix-iteratephdr.patch
|
||||
e6d9b103c128e5d4eca515b1496d78b05708de770597c883daddd95ea41e77b5ef1be613b989357cc870a7efd9e43b011022c2d302e7056cff7b69e764906ff2 gcc-4.8-musl-libssp.patch
|
||||
600fe5098dc54edaa9808fd5717af9dec058953f9ad37d49cfba1db4f7e9a7a8f02019342f75157fc575946fa693259422184de27b7ecc8386d9f3ecc0f7cc5d gcc-4.9-musl-fortify.patch
|
||||
e1d6a450dfb40b134ad7f759c4c10174d2490b0093fe47cb33479245f26a3a8c54ebcf6255943c0ccfcb5095600d1c05e530baeed35609c8ffe75caac8e57c49 boehm-gc-uclibc.patch
|
||||
bda845a6aa1854d2c883910b115f79ccfa93dfc2b5eac69a3a236d83eb34cadc140731d616ffc24698c7abc8878dd15f231bcc5119f1860e575a120b311706c7 boehm-gc-musl.patch
|
||||
4a5aeff0399782c752e6e3f2f48d984b2056dfb5d229b23a24eee1562d241339989b2203f139821cfc03c9b25c9bd7da6ccbbdc7a09d242e4de7f0d606c6f63c gcc-pure64.patch
|
||||
f89ddeb21bc8f97e6a850a6b70b4501a8f3e49a4bc8cc82897488decda5d98ad01cb7f6c8b392d452e9579924a523bc75da6e0648c1c976d42e40af48b10343b fix-gcj-musl.patch
|
||||
54d67cc008b735e47771314171930c5d8b8f5f5dc97fcf4214824c105c808f3e75d22d5a4fdf5068ed0457fa0d46c60cfb442e276259a4a5e9b8722a027d18e6 fix-gcj-iconv-musl.patch
|
||||
7de81fc8c7eb36690949eb30082515454978440a8f389b12407ac5e9125ef6824d6059ffb5b063ab1ccc6c4827b1a6a0984b538f056b85e3171800a6f723ec8b musl-posix_memalign-c++.patch
|
||||
095281d940ad7504ed7071cc9800d81db33eb4aa5465696ef7b12bf1213dbdfa701f4392095c5167b331c38219b19d25a0798524b319f1c77aa8522d76d8c92c pr63740.patch
|
||||
efc04b179d41b484eddddc56d0e442634995d56c994e6295ae09b9856ab46649d5f45f51ea84494ab39df41c213772d0e68aee67e66fdf340f0a647b55629ced pr64037.patch
|
||||
abe9aaf9aa956058d0386a4396a511d176a46bb3906b90e952383646cdc158cbeb0a5dc616a1ccb1ca7d49fd0b5e351532aa15a3b13362abbf1ca4266f54a687 gcc-4.8-build-args.patch
|
||||
35d6d59f0b7b968f282f56767c9e0823a7bdc5aa0d450aca50fbd802649a7ca608b47671244a3faa208a9b0d6832cabb5a22724157dc817b2c0ad63d09f93282 fix-cxxflags-passing.patch
|
||||
c731f4aaaa65c8950e1b2bd9331410f92d378fd8c7e718532dccaa27ee11984d51d74216c3611e89a802325b81d7f184116839dce2dab50cae9b643c20a82fe7 fix-cxxflags-for-target.patch
|
||||
e80a08de4b43fb71f7699bcce360cd99bc525dab20b9109e7152bd211def5d8e728f88771ed59f15ed520cbf069364debc4f822c10a1abf7e2c7badd67e1c83c ada-no-pie.patch
|
||||
b37195a126476775e2ef16e0adc9173664c514339fb319f628debd8a4133fa53e022278387c68fc260cf813e58602617e9e629ea8177133bfdf5972398fe1c55 ada-fixes.patch
|
||||
3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19 ada-shared.patch
|
||||
76d7d35066534c332956a88da84a95c8c54c6e0742c3c46e6b256395bf67f7c167b5ecd47fbed697fb1c9d7a41016c99e7dcd06465516a0e963707a0eab8f8b6 ada-musl.patch
|
||||
83a0996a48096032bcc674a6d28524f1cd2d81837621ebe4c15b5aedbd551c77ce5576b6307adb673ef0e4ac0431d935ad6a427edca2af5c21b6be9176bfaddb vanilla.specs
|
||||
e4d38905527c500c61c421d782a8ac6ef2b034b15fd81d868486ac330a70922937d3c47e0684e9f3250744569b56a8df199499a4a5c107a6d544dca84458dc12 hardenednossp.specs
|
||||
b56f7c308c5aefd0cfc647abd75939508a6640c53fce7c19da7c7d8ef4405d29b0d88800117fc7ff8d0022b035d511fb6d478e745bb2ed12a1b63f9f8cf3e168 hardenednopie.specs
|
||||
f5ac7282201006548ed2bd835234af64d6f79f13f0b9a3410f5c794537e0ea91601361ae72180f49870b6b0f9af5f16002c86660feb94df346b9b1d9602e9d3a hardenednopiessp.specs"
|
44
cross/gcc4-aarch64/ada-fixes.patch
Normal file
44
cross/gcc4-aarch64/ada-fixes.patch
Normal file
|
@ -0,0 +1,44 @@
|
|||
--- gcc-4.8.1/gcc/ada/terminals.c.orig
|
||||
+++ gcc-4.8.1/gcc/ada/terminals.c
|
||||
@@ -984,13 +984,6 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
-/* On some system termio is either absent or including it will disable termios
|
||||
- (HP-UX) */
|
||||
-#if ! defined (__hpux__) && ! defined (FREEBSD) && \
|
||||
- ! defined (__APPLE__) && ! defined(__rtems__)
|
||||
-# include <termio.h>
|
||||
-#endif
|
||||
-
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
@@ -1078,7 +1078,7 @@
|
||||
char *slave_name = NULL;
|
||||
|
||||
#ifdef USE_GETPT
|
||||
- master_fd = getpt ();
|
||||
+ master_fd = posix_openpt (O_RDWR);
|
||||
#elif defined (USE_OPENPTY)
|
||||
status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
|
||||
#elif defined (USE_CLONE_DEVICE)
|
||||
@@ -1179,7 +1170,7 @@
|
||||
int status;
|
||||
|
||||
/* ensure that s is filled with 0 */
|
||||
- bzero (&s, sizeof (&s));
|
||||
+ bzero (&s, sizeof (s));
|
||||
|
||||
/* Get the current terminal settings */
|
||||
status = tcgetattr (fd, &s);
|
||||
--- gcc-4.8.1/gcc/ada/cal.c.orig
|
||||
+++ gcc-4.8.1/gcc/ada/cal.c
|
||||
@@ -65,6 +65,7 @@
|
||||
#include <time.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
+#include <time.h>
|
||||
#endif
|
||||
|
||||
#ifdef __MINGW32__
|
136
cross/gcc4-aarch64/ada-musl.patch
Normal file
136
cross/gcc4-aarch64/ada-musl.patch
Normal file
|
@ -0,0 +1,136 @@
|
|||
diff -ru gcc-4.9.2/gcc/ada/adaint.c gcc-4.9.2/gcc/ada/adaint.c
|
||||
--- gcc-4.9.2/gcc/ada/adaint.c 2014-02-24 18:51:58.000000000 -0200
|
||||
+++ gcc-4.9.2/gcc/ada/adaint.c 2014-12-10 12:05:44.621173474 -0200
|
||||
@@ -67,6 +67,11 @@
|
||||
#include <sys/pstat.h>
|
||||
#endif
|
||||
|
||||
+#if defined (linux)
|
||||
+#define _GNU_SOURCE 1
|
||||
+#include <sched.h>
|
||||
+#endif
|
||||
+
|
||||
#ifdef VMS
|
||||
#define _POSIX_EXIT 1
|
||||
#define HOST_EXECUTABLE_SUFFIX ".exe"
|
||||
@@ -3891,8 +3896,6 @@
|
||||
return (void *) syscall (__NR_gettid);
|
||||
}
|
||||
|
||||
-#include <sched.h>
|
||||
-
|
||||
/* glibc versions earlier than 2.7 do not define the routines to handle
|
||||
dynamically allocated CPU sets. For these targets, we use the static
|
||||
versions. */
|
||||
@@ -3901,7 +3904,7 @@
|
||||
|
||||
/* Dynamic cpu sets */
|
||||
|
||||
-cpu_set_t *
|
||||
+void *
|
||||
__gnat_cpu_alloc (size_t count)
|
||||
{
|
||||
return CPU_ALLOC (count);
|
||||
@@ -3914,33 +3917,33 @@
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_free (cpu_set_t *set)
|
||||
+__gnat_cpu_free (void *set)
|
||||
{
|
||||
- CPU_FREE (set);
|
||||
+ CPU_FREE ((cpu_set_t *) set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_zero (size_t count, cpu_set_t *set)
|
||||
+__gnat_cpu_zero (size_t count, void *set)
|
||||
{
|
||||
- CPU_ZERO_S (count, set);
|
||||
+ CPU_ZERO_S (count, (cpu_set_t *) set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_set (int cpu, size_t count, cpu_set_t *set)
|
||||
+__gnat_cpu_set (int cpu, size_t count, void *set)
|
||||
{
|
||||
/* Ada handles CPU numbers starting from 1, while C identifies the first
|
||||
CPU by a 0, so we need to adjust. */
|
||||
- CPU_SET_S (cpu - 1, count, set);
|
||||
+ CPU_SET_S (cpu - 1, count, (cpu_set_t *) set);
|
||||
}
|
||||
|
||||
#else /* !CPU_ALLOC */
|
||||
|
||||
/* Static cpu sets */
|
||||
|
||||
-cpu_set_t *
|
||||
+void *
|
||||
__gnat_cpu_alloc (size_t count ATTRIBUTE_UNUSED)
|
||||
{
|
||||
- return (cpu_set_t *) xmalloc (sizeof (cpu_set_t));
|
||||
+ return xmalloc (sizeof (cpu_set_t));
|
||||
}
|
||||
|
||||
size_t
|
||||
@@ -3950,23 +3953,23 @@
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_free (cpu_set_t *set)
|
||||
+__gnat_cpu_free (void *set)
|
||||
{
|
||||
free (set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
|
||||
+__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, void *set)
|
||||
{
|
||||
- CPU_ZERO (set);
|
||||
+ CPU_ZERO ((cpu_set_t *) set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
|
||||
+__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, void *set)
|
||||
{
|
||||
/* Ada handles CPU numbers starting from 1, while C identifies the first
|
||||
CPU by a 0, so we need to adjust. */
|
||||
- CPU_SET (cpu - 1, set);
|
||||
+ CPU_SET (cpu - 1, (cpu_set_t *) set);
|
||||
}
|
||||
#endif /* !CPU_ALLOC */
|
||||
#endif /* linux */
|
||||
diff -ru gcc-4.9.2/gcc/ada/adaint.h gcc-4.9.2/gcc/ada/adaint.h
|
||||
--- gcc-4.9.2/gcc/ada/adaint.h 2014-02-24 18:51:58.000000000 -0200
|
||||
+++ gcc-4.9.2/gcc/ada/adaint.h 2014-12-10 12:03:48.377834174 -0200
|
||||
@@ -266,13 +266,11 @@
|
||||
|
||||
/* Routines for interface to required CPU set primitives */
|
||||
|
||||
-#include <sched.h>
|
||||
-
|
||||
-extern cpu_set_t *__gnat_cpu_alloc (size_t);
|
||||
+extern void * __gnat_cpu_alloc (size_t);
|
||||
extern size_t __gnat_cpu_alloc_size (size_t);
|
||||
-extern void __gnat_cpu_free (cpu_set_t *);
|
||||
-extern void __gnat_cpu_zero (size_t, cpu_set_t *);
|
||||
-extern void __gnat_cpu_set (int, size_t, cpu_set_t *);
|
||||
+extern void __gnat_cpu_free (void *);
|
||||
+extern void __gnat_cpu_zero (size_t, void *);
|
||||
+extern void __gnat_cpu_set (int, size_t, void *);
|
||||
#endif
|
||||
|
||||
#if defined (_WIN32)
|
||||
--- gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in.orig 2014-12-11 08:16:33.364902456 -0200
|
||||
+++ gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in 2014-12-11 08:16:51.998236755 -0200
|
||||
@@ -1948,7 +1948,7 @@
|
||||
endif
|
||||
|
||||
# ARM linux, GNU eabi
|
||||
-ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
|
||||
+ifeq ($(strip $(filter-out arm% linux-gnueabi% linux-muslgnueabi%,$(target_cpu) $(target_os))),)
|
||||
LIBGNAT_TARGET_PAIRS = \
|
||||
a-intnam.ads<a-intnam-linux.ads \
|
||||
s-inmaop.adb<s-inmaop-posix.adb \
|
66
cross/gcc4-aarch64/ada-no-pie.patch
Normal file
66
cross/gcc4-aarch64/ada-no-pie.patch
Normal file
|
@ -0,0 +1,66 @@
|
|||
--- gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in.orig 2014-05-17 13:13:12.000000000 -0300
|
||||
+++ gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in 2014-12-10 12:01:32.304493855 -0200
|
||||
@@ -2570,23 +2570,23 @@
|
||||
gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
|
||||
gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
|
||||
$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
|
||||
../../gnatsym$(exeext): ../stamp-tools
|
||||
$(GNATMAKE) -c $(ADA_INCLUDES) gnatsym --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
@@ -2608,7 +2608,7 @@
|
||||
$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
|
||||
$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
|
||||
# Note the use of the "mv" command in order to allow gnatlink to be linked with
|
||||
# with the former version of gnatlink itself which cannot override itself.
|
||||
@@ -2618,7 +2618,7 @@
|
||||
$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
|
||||
$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext)
|
||||
|
||||
# Needs to be built with CC=gcc
|
||||
@@ -2627,10 +2627,10 @@
|
||||
|
||||
# Likewise for the tools
|
||||
../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS)
|
||||
- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
|
||||
+ +$(GCC_LINK) $(ALL_CFLAGS) -fno-PIE -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
|
||||
|
||||
../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS)
|
||||
- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
|
||||
+ +$(GCC_LINK) $(ALL_CFLAGS) -fno-PIE -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
|
||||
|
||||
../stamp-gnatlib-$(RTSDIR):
|
||||
@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
|
30
cross/gcc4-aarch64/ada-shared.patch
Normal file
30
cross/gcc4-aarch64/ada-shared.patch
Normal file
|
@ -0,0 +1,30 @@
|
|||
Index: b/gcc/ada/link.c
|
||||
===================================================================
|
||||
--- a/gcc/ada/link.c
|
||||
+++ b/gcc/ada/link.c
|
||||
@@ -105,9 +105,9 @@
|
||||
|
||||
#elif defined (__FreeBSD__)
|
||||
const char *__gnat_object_file_option = "-Wl,@";
|
||||
-const char *__gnat_run_path_option = "-Wl,-rpath,";
|
||||
-char __gnat_shared_libgnat_default = STATIC;
|
||||
-char __gnat_shared_libgcc_default = STATIC;
|
||||
+const char *__gnat_run_path_option = "";
|
||||
+char __gnat_shared_libgnat_default = SHARED;
|
||||
+char __gnat_shared_libgcc_default = SHARED;
|
||||
int __gnat_link_max = 8192;
|
||||
unsigned char __gnat_objlist_file_supported = 1;
|
||||
const char *__gnat_object_library_extension = ".a";
|
||||
@@ -127,9 +127,9 @@
|
||||
|
||||
#elif defined (linux) || defined(__GLIBC__)
|
||||
const char *__gnat_object_file_option = "-Wl,@";
|
||||
-const char *__gnat_run_path_option = "-Wl,-rpath,";
|
||||
-char __gnat_shared_libgnat_default = STATIC;
|
||||
-char __gnat_shared_libgcc_default = STATIC;
|
||||
+const char *__gnat_run_path_option = "";
|
||||
+char __gnat_shared_libgnat_default = SHARED;
|
||||
+char __gnat_shared_libgcc_default = SHARED;
|
||||
int __gnat_link_max = 8192;
|
||||
unsigned char __gnat_objlist_file_supported = 1;
|
||||
const char *__gnat_object_library_extension = ".a";
|
62
cross/gcc4-aarch64/boehm-gc-musl.patch
Normal file
62
cross/gcc4-aarch64/boehm-gc-musl.patch
Normal file
|
@ -0,0 +1,62 @@
|
|||
--- gcc-4.8.1/boehm-gc/os_dep.c.orig 2013-09-17 07:46:00.969884340 +0000
|
||||
+++ gcc-4.8.1/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 */
|
||||
--- gcc-4.8.2/boehm-gc/dyn_load.c.orig 2014-02-17 14:13:09.519850231 +0200
|
||||
+++ gcc-4.8.2/boehm-gc/dyn_load.c 2014-02-17 14:14:27.906093514 +0200
|
||||
@@ -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. */
|
||||
--- gcc-4.8.2/boehm-gc/include/private/gcconfig.h.orig 2014-02-17 14:14:36.026049422 +0200
|
||||
+++ gcc-4.8.2/boehm-gc/include/private/gcconfig.h 2014-02-17 14:17:11.345207887 +0200
|
||||
@@ -684,7 +684,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;
|
||||
@@ -1147,7 +1147,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;
|
||||
@@ -1367,7 +1367,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
|
||||
@@ -1858,7 +1858,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;
|
11
cross/gcc4-aarch64/boehm-gc-uclibc.patch
Normal file
11
cross/gcc4-aarch64/boehm-gc-uclibc.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- ./boehm-gc/include/gc.h.orig
|
||||
+++ ./boehm-gc/include/gc.h
|
||||
@@ -503,7 +503,7 @@
|
||||
#if defined(__linux__) || defined(__GLIBC__)
|
||||
# include <features.h>
|
||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
|
||||
- && !defined(__ia64__)
|
||||
+ && !defined(__ia64__) && !defined(__UCLIBC__)
|
||||
# ifndef GC_HAVE_BUILTIN_BACKTRACE
|
||||
# define GC_HAVE_BUILTIN_BACKTRACE
|
||||
# endif
|
5
cross/gcc4-aarch64/fix-cxxflags-for-target.patch
Normal file
5
cross/gcc4-aarch64/fix-cxxflags-for-target.patch
Normal file
|
@ -0,0 +1,5 @@
|
|||
--- gcc-4.8.1/config/mt-gnu.orig
|
||||
+++ gcc-4.8.1/config/mt-gnu
|
||||
@@ -1 +1 @@
|
||||
-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
|
||||
+CXXFLAGS_FOR_TARGET := $(CXXFLAGS_FOR_TARGET) -D_GNU_SOURCE
|
10
cross/gcc4-aarch64/fix-cxxflags-passing.patch
Normal file
10
cross/gcc4-aarch64/fix-cxxflags-passing.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- gcc-4.8.1/Makefile.in.orig
|
||||
+++ gcc-4.8.1/Makefile.in
|
||||
@@ -169,6 +169,7 @@
|
||||
# built for the build system to override those in BASE_FLAGS_TO_PASSS.
|
||||
EXTRA_BUILD_FLAGS = \
|
||||
CFLAGS="$(CFLAGS_FOR_BUILD)" \
|
||||
+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
|
||||
LDFLAGS="$(LDFLAGS_FOR_BUILD)"
|
||||
|
||||
# This is the list of directories to built for the host system.
|
120
cross/gcc4-aarch64/fix-gcj-iconv-musl.patch
Normal file
120
cross/gcc4-aarch64/fix-gcj-iconv-musl.patch
Normal file
|
@ -0,0 +1,120 @@
|
|||
--- gcc-4.8.2/libjava/gnu/gcj/convert/natIconv.cc.orig 2014-02-18 18:46:14.897880526 +0200
|
||||
+++ gcc-4.8.2/libjava/gnu/gcj/convert/natIconv.cc 2014-02-18 18:50:08.766613550 +0200
|
||||
@@ -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
|
49
cross/gcc4-aarch64/fix-gcj-musl.patch
Normal file
49
cross/gcc4-aarch64/fix-gcj-musl.patch
Normal file
|
@ -0,0 +1,49 @@
|
|||
--- gcc-4.8.2/libjava/gnu/classpath/natSystemProperties.cc.orig 2014-02-18 10:55:08.617678779 +0200
|
||||
+++ gcc-4.8.2/libjava/gnu/classpath/natSystemProperties.cc 2014-02-18 10:56:31.927227453 +0200
|
||||
@@ -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';
|
||||
--- gcc-4.8.2/libjava/posix-threads.cc.orig 2014-02-18 13:22:01.789933726 +0200
|
||||
+++ gcc-4.8.2/libjava/posix-threads.cc 2014-02-18 13:29:50.924058875 +0200
|
||||
@@ -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));
|
25
cross/gcc4-aarch64/gcc-4.6-pr32219.patch
Normal file
25
cross/gcc4-aarch64/gcc-4.6-pr32219.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
--- ./gcc/varasm.c.orig
|
||||
+++ ./gcc/varasm.c
|
||||
@@ -6758,6 +6758,10 @@
|
||||
/* Static variables are always local. */
|
||||
else if (! TREE_PUBLIC (exp))
|
||||
local_p = true;
|
||||
+ /* Weak data can be overridden by a strong symbol
|
||||
+ in another module and so are not local. */
|
||||
+ else if (DECL_WEAK (exp))
|
||||
+ local_p = false;
|
||||
/* A variable is local if the user has said explicitly that it will
|
||||
be. */
|
||||
else if ((DECL_VISIBILITY_SPECIFIED (exp)
|
||||
@@ -6771,11 +6775,6 @@
|
||||
local. */
|
||||
else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
|
||||
local_p = true;
|
||||
- /* Default visibility weak data can be overridden by a strong symbol
|
||||
- in another module and so are not local. */
|
||||
- else if (DECL_WEAK (exp)
|
||||
- && !resolved_locally)
|
||||
- local_p = false;
|
||||
/* If PIC, then assume that any global name can be overridden by
|
||||
symbols resolved from other modules. */
|
||||
else if (shlib)
|
41
cross/gcc4-aarch64/gcc-4.8-build-args.patch
Normal file
41
cross/gcc4-aarch64/gcc-4.8-build-args.patch
Normal file
|
@ -0,0 +1,41 @@
|
|||
When cross compiling a target gcc, target flags may be used on the host
|
||||
|
||||
Configure identifies a number of warning flags (WARN_CFLAGS and
|
||||
WARN_CXXFLAGS) from the $CC value. The cross compiler may be different
|
||||
from the host compiler and may not support the same set of flags. This
|
||||
leads to problems such as:
|
||||
|
||||
cc1plus: error: unrecognized command line option "-Wno-narrowing"
|
||||
cc1plus: error: unrecognized command line option "-Wno-overlength-strings"
|
||||
|
||||
Work around this problem by removing the warning flags from the
|
||||
BUILD_CXXFLAGS value, in a way similar to the BUILD_CFLAGS.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
|
||||
Index: gcc-4.8.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.8.0.orig/gcc/configure
|
||||
+++ gcc-4.8.0/gcc/configure
|
||||
@@ -11720,6 +10581,7 @@ STMP_FIXINC=stmp-fixinc
|
||||
if test x$build != x$host || test "x$coverage_flags" != x
|
||||
then
|
||||
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
|
||||
fi
|
||||
|
||||
Index: gcc-4.8.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.8.0.orig/gcc/configure.ac
|
||||
+++ gcc-4.8.0/gcc/configure.ac
|
||||
@@ -1901,6 +1901,7 @@ STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_F
|
||||
if test x$build != x$host || test "x$coverage_flags" != x
|
||||
then
|
||||
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
|
||||
fi
|
||||
|
22
cross/gcc4-aarch64/gcc-4.8-musl-fix-iteratephdr.patch
Normal file
22
cross/gcc4-aarch64/gcc-4.8-musl-fix-iteratephdr.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
--- gcc-4.8.1/gcc/configure.ac.orig 2013-09-25 04:08:25.046595893 +0000
|
||||
+++ gcc-4.8.1/gcc/configure.ac 2013-09-25 04:09:06.023263205 +0000
|
||||
@@ -4822,7 +4822,7 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
- *-linux-musl*)
|
||||
+ *-linux-musl* | *-linux-uclibc* | *-linux-gnu*)
|
||||
gcc_cv_target_dl_iterate_phdr=yes
|
||||
;;
|
||||
esac
|
||||
--- gcc-4.8.1/gcc/configure.orig 2013-09-25 04:08:17.826596392 +0000
|
||||
+++ gcc-4.8.1/gcc/configure 2013-09-25 04:09:24.393263387 +0000
|
||||
@@ -26923,7 +26923,7 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
- *-linux-musl*)
|
||||
+ *-linux-musl* | *-linux-uclibc* | *-linux-gnu*)
|
||||
gcc_cv_target_dl_iterate_phdr=yes
|
||||
;;
|
||||
esac
|
21
cross/gcc4-aarch64/gcc-4.8-musl-libssp.patch
Normal file
21
cross/gcc4-aarch64/gcc-4.8-musl-libssp.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
Author: Timo Teräs <timo.teras@iki.fi>
|
||||
|
||||
Alpine musl package provides libssp_nonshared.a. We link to it unconditionally,
|
||||
as otherwise we get link failures if some objects are -fstack-protector built
|
||||
and final link happens with -fno-stack-protector. This seems to be the common
|
||||
case when bootstrapping gcc, the piepatches do not seem to fully fix the
|
||||
crosstoolchain and bootstrap sequence wrt. stack-protector flag usage.
|
||||
|
||||
--- gcc-4.8.1/gcc/gcc.c.orig 2013-09-24 06:27:32.133894539 +0000
|
||||
+++ gcc-4.8.1/gcc/gcc.c 2013-09-24 06:29:35.790562854 +0000
|
||||
@@ -656,7 +656,9 @@
|
||||
#endif
|
||||
|
||||
#ifndef LINK_SSP_SPEC
|
||||
-#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define LINK_SSP_SPEC "-lssp_nonshared"
|
||||
+#elif defined(TARGET_LIBC_PROVIDES_SSP)
|
||||
#define LINK_SSP_SPEC "%{fstack-protector:}"
|
||||
#else
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"
|
11
cross/gcc4-aarch64/gcc-4.9-musl-fortify.patch
Normal file
11
cross/gcc4-aarch64/gcc-4.9-musl-fortify.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- gcc-4.9.2/gcc/config/linux.h.orig 2015-03-09 13:27:13.289736710 +0000
|
||||
+++ gcc-4.9.2/gcc/config/linux.h 2015-03-09 13:29:32.295625046 +0000
|
||||
@@ -146,6 +146,8 @@
|
||||
|
||||
#ifdef NATIVE_SYSTEM_HEADER_DIR
|
||||
#define INCLUDE_DEFAULTS_MUSL_NATIVE \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR "/fortify", 0, 0, 0, 1, 2 }, \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR "/fortify", 0, 0, 0, 1, 0 }, \
|
||||
{ NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
|
||||
{ NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
|
||||
#else
|
703
cross/gcc4-aarch64/gcc-4.9-musl.patch
Normal file
703
cross/gcc4-aarch64/gcc-4.9-musl.patch
Normal file
|
@ -0,0 +1,703 @@
|
|||
# HG changeset patch
|
||||
# Parent 2f9df662aaaba956600bbdb123b6a227c8e64c59
|
||||
Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one.
|
||||
|
||||
diff -r 2f9df662aaab libstdc++-v3/configure.host
|
||||
--- a/libstdc++-v3/configure.host Tue May 20 11:00:21 2014 -0400
|
||||
+++ b/libstdc++-v3/configure.host Tue May 20 11:05:42 2014 -0400
|
||||
@@ -264,6 +264,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
|
||||
@@ -272,6 +279,9 @@
|
||||
os_include_dir="os/gnu-linux"
|
||||
fi
|
||||
;;
|
||||
+
|
||||
+ esac
|
||||
+ ;;
|
||||
hpux*)
|
||||
os_include_dir="os/hpux"
|
||||
;;
|
||||
# HG changeset patch
|
||||
# Parent b6f4ce05a3155dbcbc06d72aebdb67e2f8abc094
|
||||
Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker.
|
||||
|
||||
diff -r b6f4ce05a315 gcc/config.gcc
|
||||
--- a/gcc/config.gcc Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/config.gcc Tue May 20 11:05:45 2014 -0400
|
||||
@@ -594,7 +594,7 @@
|
||||
esac
|
||||
|
||||
# Common C libraries.
|
||||
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
|
||||
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
|
||||
|
||||
# 32-bit x86 processors supported by --with-arch=. Each processor
|
||||
# MUST be separated by exactly one space.
|
||||
@@ -719,6 +719,9 @@
|
||||
*-*-*uclibc*)
|
||||
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
||||
;;
|
||||
+ *-*-*musl*)
|
||||
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
|
||||
+ ;;
|
||||
*)
|
||||
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
||||
;;
|
||||
diff -r b6f4ce05a315 gcc/config/linux.h
|
||||
--- a/gcc/config/linux.h Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/config/linux.h Tue May 20 11:05:45 2014 -0400
|
||||
@@ -32,10 +32,12 @@
|
||||
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
|
||||
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
|
||||
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
|
||||
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
|
||||
#else
|
||||
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
|
||||
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
|
||||
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
|
||||
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
|
||||
#endif
|
||||
|
||||
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
|
||||
@@ -53,18 +55,21 @@
|
||||
uClibc or Bionic is the default C library and whether
|
||||
-muclibc or -mglibc or -mbionic has been passed to change the default. */
|
||||
|
||||
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
|
||||
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
|
||||
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
|
||||
|
||||
#if DEFAULT_LIBC == LIBC_GLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
||||
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
|
||||
#elif DEFAULT_LIBC == LIBC_UCLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
||||
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
|
||||
#elif DEFAULT_LIBC == LIBC_BIONIC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
||||
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
|
||||
+#elif DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
|
||||
#else
|
||||
#error "Unsupported DEFAULT_LIBC"
|
||||
#endif /* DEFAULT_LIBC */
|
||||
@@ -84,21 +89,92 @@
|
||||
|
||||
#define GNU_USER_DYNAMIC_LINKER \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
|
||||
- BIONIC_DYNAMIC_LINKER)
|
||||
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
|
||||
#define GNU_USER_DYNAMIC_LINKER32 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
|
||||
- BIONIC_DYNAMIC_LINKER32)
|
||||
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
|
||||
#define GNU_USER_DYNAMIC_LINKER64 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
|
||||
- BIONIC_DYNAMIC_LINKER64)
|
||||
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
|
||||
#define GNU_USER_DYNAMIC_LINKERX32 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
|
||||
- BIONIC_DYNAMIC_LINKERX32)
|
||||
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
|
||||
|
||||
/* Whether we have Bionic libc runtime */
|
||||
#undef TARGET_HAS_BIONIC
|
||||
#define TARGET_HAS_BIONIC (OPTION_BIONIC)
|
||||
|
||||
+/* musl avoids problematic includes by rearranging the include directories.
|
||||
+ * Unfortunately, this is mostly duplicated from cppdefault.c */
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define INCLUDE_DEFAULTS_MUSL_GPP \
|
||||
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
|
||||
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
|
||||
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
|
||||
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
|
||||
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
|
||||
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
|
||||
+
|
||||
+#ifdef LOCAL_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_LOCAL \
|
||||
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
|
||||
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_LOCAL
|
||||
+#endif
|
||||
+
|
||||
+#ifdef PREFIX_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_PREFIX \
|
||||
+ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_PREFIX
|
||||
+#endif
|
||||
+
|
||||
+#ifdef CROSS_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_CROSS \
|
||||
+ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_CROSS
|
||||
+#endif
|
||||
+
|
||||
+#ifdef TOOL_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_TOOL \
|
||||
+ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_TOOL
|
||||
+#endif
|
||||
+
|
||||
+#ifdef NATIVE_SYSTEM_HEADER_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_NATIVE \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_NATIVE
|
||||
+#endif
|
||||
+
|
||||
+#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
|
||||
+# undef INCLUDE_DEFAULTS_MUSL_LOCAL
|
||||
+# define INCLUDE_DEFAULTS_MUSL_LOCAL
|
||||
+# undef INCLUDE_DEFAULTS_MUSL_NATIVE
|
||||
+# define INCLUDE_DEFAULTS_MUSL_NATIVE
|
||||
+#else
|
||||
+# undef INCLUDE_DEFAULTS_MUSL_CROSS
|
||||
+# define INCLUDE_DEFAULTS_MUSL_CROSS
|
||||
+#endif
|
||||
+
|
||||
+#undef INCLUDE_DEFAULTS
|
||||
+#define INCLUDE_DEFAULTS \
|
||||
+ { \
|
||||
+ INCLUDE_DEFAULTS_MUSL_GPP \
|
||||
+ INCLUDE_DEFAULTS_MUSL_PREFIX \
|
||||
+ INCLUDE_DEFAULTS_MUSL_CROSS \
|
||||
+ INCLUDE_DEFAULTS_MUSL_TOOL \
|
||||
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
|
||||
+ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
|
||||
+ { 0, 0, 0, 0, 0, 0 } \
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
#if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
|
||||
/* This is a *uclinux* target. We don't define below macros to normal linux
|
||||
versions, because doing so would require *uclinux* targets to include
|
||||
diff -r b6f4ce05a315 gcc/config/linux.opt
|
||||
--- a/gcc/config/linux.opt Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/config/linux.opt Tue May 20 11:05:45 2014 -0400
|
||||
@@ -30,3 +30,7 @@
|
||||
muclibc
|
||||
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
|
||||
Use uClibc C library
|
||||
+
|
||||
+mmusl
|
||||
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
|
||||
+Use musl C library
|
||||
diff -r b6f4ce05a315 gcc/ginclude/stddef.h
|
||||
--- a/gcc/ginclude/stddef.h Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/ginclude/stddef.h Tue May 20 11:05:45 2014 -0400
|
||||
@@ -181,6 +181,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
|
||||
@@ -197,6 +198,7 @@
|
||||
#define ___int_size_t_h
|
||||
#define _GCC_SIZE_T
|
||||
#define _SIZET_
|
||||
+#define __DEFINED_size_t /* musl */
|
||||
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|
||||
|| defined(__FreeBSD_kernel__)
|
||||
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
|
||||
@@ -214,6 +216,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 65d595ef9fc3cdbbde4894d927593f1b0f5bbcb7
|
||||
A fix for libgomp to correctly request a POSIX version for time support.
|
||||
|
||||
diff -r 65d595ef9fc3 libgomp/config/posix/time.c
|
||||
--- a/libgomp/config/posix/time.c Tue May 20 11:05:45 2014 -0400
|
||||
+++ b/libgomp/config/posix/time.c Tue May 20 11:05:48 2014 -0400
|
||||
@@ -28,6 +28,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 95f4f1d7668b libgcc/unwind-dw2-fde-dip.c
|
||||
--- a/libgcc/unwind-dw2-fde-dip.c Tue May 20 11:05:48 2014 -0400
|
||||
+++ b/libgcc/unwind-dw2-fde-dip.c Tue May 20 11:05:52 2014 -0400
|
||||
@@ -46,33 +46,13 @@
|
||||
#include "unwind-compat.h"
|
||||
#include "gthr.h"
|
||||
|
||||
-#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)))
|
||||
+#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) \
|
||||
- && defined(__BIONIC__)
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
-#endif
|
||||
-
|
||||
-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && defined(__FreeBSD__) && __FreeBSD__ >= 7
|
||||
-# define ElfW __ElfN
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
-#endif
|
||||
-
|
||||
-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && defined(__OpenBSD__)
|
||||
-# define ElfW(type) Elf_##type
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
-#endif
|
||||
-
|
||||
-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && defined(TARGET_DL_ITERATE_PHDR) \
|
||||
- && defined(__sun__) && defined(__svr4__)
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
+# ifdef __OpenBSD__
|
||||
+# define ElfW(type) Elf_##type
|
||||
+# elif defined(__FreeBSD__) && __FreeBSD__ >= 7
|
||||
+# define ElfW __ElfN
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
#if defined(USE_PT_GNU_EH_FRAME)
|
||||
diff -r ff03fa61c6b3 gcc/configure
|
||||
--- a/gcc/configure Tue May 20 11:05:51 2014 -0400
|
||||
+++ b/gcc/configure Tue May 20 11:05:55 2014 -0400
|
||||
@@ -27300,6 +27300,9 @@
|
||||
else
|
||||
gcc_cv_libc_provides_ssp=no
|
||||
case "$target" in
|
||||
+ *-*-musl*)
|
||||
+ # All versions of musl provide stack protector
|
||||
+ gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
|
||||
# glibc 2.4 and later provides __stack_chk_fail and
|
||||
# either __stack_chk_guard, or TLS access to stack guard canary.
|
||||
@@ -27332,6 +27335,7 @@
|
||||
# <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
|
||||
# simply assert that glibc does provide this, which is true for all
|
||||
# realistically usable GNU/Hurd configurations.
|
||||
+ # All supported versions of musl provide it as well
|
||||
gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-darwin* | *-*-freebsd*)
|
||||
ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
|
||||
@@ -27421,6 +27425,9 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
+ *-linux-musl*)
|
||||
+ gcc_cv_target_dl_iterate_phdr=yes
|
||||
+ ;;
|
||||
esac
|
||||
|
||||
if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
|
||||
diff -r ff03fa61c6b3 gcc/configure.ac
|
||||
--- a/gcc/configure.ac Tue May 20 11:05:51 2014 -0400
|
||||
+++ b/gcc/configure.ac Tue May 20 11:05:55 2014 -0400
|
||||
@@ -5001,6 +5001,9 @@
|
||||
gcc_cv_libc_provides_ssp,
|
||||
[gcc_cv_libc_provides_ssp=no
|
||||
case "$target" in
|
||||
+ *-*-musl*)
|
||||
+ # All versions of musl provide stack protector
|
||||
+ gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
|
||||
# glibc 2.4 and later provides __stack_chk_fail and
|
||||
# either __stack_chk_guard, or TLS access to stack guard canary.
|
||||
@@ -5027,6 +5030,7 @@
|
||||
# <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
|
||||
# simply assert that glibc does provide this, which is true for all
|
||||
# realistically usable GNU/Hurd configurations.
|
||||
+ # All supported versions of musl provide it as well
|
||||
gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-darwin* | *-*-freebsd*)
|
||||
AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
|
||||
@@ -5093,6 +5097,9 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
+ *-linux-musl*)
|
||||
+ gcc_cv_target_dl_iterate_phdr=yes
|
||||
+ ;;
|
||||
esac
|
||||
GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
|
||||
if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
|
||||
# HG changeset patch
|
||||
# Parent 26f591b9e77e3df3d0f772b840bd9c13ec24bd4c
|
||||
Get rid of ever-broken fixincludes on musl.
|
||||
|
||||
diff -r 26f591b9e77e fixincludes/mkfixinc.sh
|
||||
--- a/fixincludes/mkfixinc.sh Tue May 20 11:05:55 2014 -0400
|
||||
+++ b/fixincludes/mkfixinc.sh Tue May 20 11:05:58 2014 -0400
|
||||
@@ -19,7 +19,8 @@
|
||||
powerpc-*-eabi* | \
|
||||
powerpc-*-rtems* | \
|
||||
powerpcle-*-eabisim* | \
|
||||
- powerpcle-*-eabi* )
|
||||
+ powerpcle-*-eabi* | \
|
||||
+ *-musl* )
|
||||
# IF there is no include fixing,
|
||||
# THEN create a no-op fixer and exit
|
||||
(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
|
||||
# HG changeset patch
|
||||
# Parent bc117c35705fcc39396c19af046101411f251161
|
||||
Support for i386-linux-musl and x86_64-linux-musl.
|
||||
|
||||
diff -r bc117c35705f gcc/config/i386/linux.h
|
||||
--- a/gcc/config/i386/linux.h Tue May 20 11:05:58 2014 -0400
|
||||
+++ b/gcc/config/i386/linux.h Tue May 20 11:06:01 2014 -0400
|
||||
@@ -21,3 +21,4 @@
|
||||
|
||||
#define GNU_USER_LINK_EMULATION "elf_i386"
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
|
||||
diff -r bc117c35705f gcc/config/i386/linux64.h
|
||||
--- a/gcc/config/i386/linux64.h Tue May 20 11:05:58 2014 -0400
|
||||
+++ b/gcc/config/i386/linux64.h Tue May 20 11:06:01 2014 -0400
|
||||
@@ -30,3 +30,7 @@
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
|
||||
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
|
||||
+
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
|
||||
diff -r bc117c35705f libitm/config/linux/x86/tls.h
|
||||
--- a/libitm/config/linux/x86/tls.h Tue May 20 11:05:58 2014 -0400
|
||||
+++ b/libitm/config/linux/x86/tls.h Tue May 20 11:06:01 2014 -0400
|
||||
@@ -25,16 +25,19 @@
|
||||
#ifndef LIBITM_X86_TLS_H
|
||||
#define LIBITM_X86_TLS_H 1
|
||||
|
||||
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
|
||||
+#if defined(__GLIBC_PREREQ)
|
||||
+#if __GLIBC_PREREQ(2, 10)
|
||||
/* Use slots in the TCB head rather than __thread lookups.
|
||||
GLIBC has reserved words 10 through 13 for TM. */
|
||||
#define HAVE_ARCH_GTM_THREAD 1
|
||||
#define HAVE_ARCH_GTM_THREAD_DISP 1
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#include "config/generic/tls.h"
|
||||
|
||||
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
|
||||
+#if defined(__GLIBC_PREREQ)
|
||||
+#if __GLIBC_PREREQ(2, 10)
|
||||
namespace GTM HIDDEN {
|
||||
|
||||
#ifdef __x86_64__
|
||||
@@ -101,5 +104,6 @@
|
||||
|
||||
} // namespace GTM
|
||||
#endif /* >= GLIBC 2.10 */
|
||||
+#endif
|
||||
|
||||
#endif // LIBITM_X86_TLS_H
|
||||
# HG changeset patch
|
||||
# Parent 933c4f064622eb96a0b2ab213abd0cddbd977d1a
|
||||
Support for arm-linux-musl.
|
||||
|
||||
diff -r 933c4f064622 gcc/config/arm/linux-eabi.h
|
||||
--- a/gcc/config/arm/linux-eabi.h Tue May 20 11:06:01 2014 -0400
|
||||
+++ b/gcc/config/arm/linux-eabi.h Tue May 20 11:06:04 2014 -0400
|
||||
@@ -77,6 +77,23 @@
|
||||
%{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
|
||||
%{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
|
||||
|
||||
+/* For ARM musl currently supports four dynamic linkers:
|
||||
+ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
|
||||
+ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
|
||||
+ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
|
||||
+ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
|
||||
+ musl does not support the legacy OABI mode.
|
||||
+ All the dynamic linkers live in /lib.
|
||||
+ We default to soft-float, EL. */
|
||||
+#undef MUSL_DYNAMIC_LINKER
|
||||
+#if TARGET_BIG_ENDIAN_DEFAULT
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
|
||||
+#else
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
|
||||
+#endif
|
||||
+#define MUSL_DYNAMIC_LINKER \
|
||||
+ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
|
||||
+
|
||||
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
|
||||
use the GNU/Linux version, not the generic BPABI version. */
|
||||
#undef LINK_SPEC
|
||||
diff -r 933c4f064622 libitm/config/arm/hwcap.cc
|
||||
--- a/libitm/config/arm/hwcap.cc Tue May 20 11:06:01 2014 -0400
|
||||
+++ b/libitm/config/arm/hwcap.cc Tue May 20 11:06:04 2014 -0400
|
||||
@@ -40,7 +40,11 @@
|
||||
|
||||
#ifdef __linux__
|
||||
#include <unistd.h>
|
||||
+#ifdef __GLIBC__
|
||||
#include <sys/fcntl.h>
|
||||
+#else
|
||||
+#include <fcntl.h>
|
||||
+#endif
|
||||
#include <elf.h>
|
||||
|
||||
static void __attribute__((constructor))
|
||||
# HG changeset patch
|
||||
# Parent 03fe896f3acaa911e935a8e999d15c7542ee73d1
|
||||
Support for mips-linux-musl.
|
||||
|
||||
diff -r 03fe896f3aca gcc/config/mips/linux.h
|
||||
--- a/gcc/config/mips/linux.h Tue May 20 11:06:04 2014 -0400
|
||||
+++ b/gcc/config/mips/linux.h Tue May 20 11:06:08 2014 -0400
|
||||
@@ -23,3 +23,10 @@
|
||||
#undef UCLIBC_DYNAMIC_LINKER
|
||||
#define UCLIBC_DYNAMIC_LINKER \
|
||||
"%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
|
||||
+
|
||||
+#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
|
||||
+#else
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
|
||||
+#endif
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1"
|
||||
# HG changeset patch
|
||||
# Parent 6097333f2ab47a4ce37ccfb18b0f07a0cdcfec49
|
||||
Support for powerpc-linux-musl.
|
||||
|
||||
diff -r 6097333f2ab4 gcc/config.gcc
|
||||
--- a/gcc/config.gcc Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config.gcc Tue May 20 11:06:11 2014 -0400
|
||||
@@ -2326,6 +2326,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 6097333f2ab4 gcc/config/rs6000/linux64.h
|
||||
--- a/gcc/config/rs6000/linux64.h Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config/rs6000/linux64.h Tue May 20 11:06:11 2014 -0400
|
||||
@@ -375,17 +375,21 @@
|
||||
#endif
|
||||
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
|
||||
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
|
||||
#elif DEFAULT_LIBC == LIBC_GLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
|
||||
+#elif DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
|
||||
#else
|
||||
#error "Unsupported DEFAULT_LIBC"
|
||||
#endif
|
||||
#define GNU_USER_DYNAMIC_LINKER32 \
|
||||
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
|
||||
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
|
||||
#define GNU_USER_DYNAMIC_LINKER64 \
|
||||
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
|
||||
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
|
||||
|
||||
#undef DEFAULT_ASM_ENDIAN
|
||||
#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
|
||||
diff -r 6097333f2ab4 gcc/config/rs6000/secureplt.h
|
||||
--- a/gcc/config/rs6000/secureplt.h Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config/rs6000/secureplt.h Tue May 20 11:06:11 2014 -0400
|
||||
@@ -18,3 +18,4 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
|
||||
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
|
||||
diff -r 6097333f2ab4 gcc/config/rs6000/sysv4.h
|
||||
--- a/gcc/config/rs6000/sysv4.h Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config/rs6000/sysv4.h Tue May 20 11:06:11 2014 -0400
|
||||
@@ -537,6 +537,9 @@
|
||||
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
|
||||
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
|
||||
#endif
|
||||
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
|
||||
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
|
||||
+#endif
|
||||
|
||||
/* Pass -G xxx to the compiler. */
|
||||
#define CC1_SPEC "%{G*} %(cc1_cpu)" \
|
||||
@@ -585,7 +588,8 @@
|
||||
|
||||
/* Override the default target of the linker. */
|
||||
#define LINK_TARGET_SPEC \
|
||||
- ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
|
||||
+ ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
|
||||
+ "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
|
||||
|
||||
/* Any specific OS flags. */
|
||||
#define LINK_OS_SPEC "\
|
||||
@@ -763,15 +767,18 @@
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
|
||||
+#elif DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
|
||||
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
|
||||
#else
|
||||
#error "Unsupported DEFAULT_LIBC"
|
||||
#endif
|
||||
#define GNU_USER_DYNAMIC_LINKER \
|
||||
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
|
||||
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
|
||||
|
||||
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
@@ -894,6 +901,7 @@
|
||||
{ "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
|
||||
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \
|
||||
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
|
||||
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
|
||||
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
|
||||
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
|
||||
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
|
||||
diff -r 813971b9f083 gcc/config/aarch64/aarch64-linux.h
|
||||
--- a/gcc/config/aarch64/aarch64-linux.h Tue May 20 11:06:11 2014 -0400
|
||||
+++ b/gcc/config/aarch64/aarch64-linux.h Tue May 20 11:06:14 2014 -0400
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
|
||||
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
|
||||
+
|
||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
||||
|
||||
#define LINUX_TARGET_LINK_SPEC "%{h*} \
|
||||
# HG changeset patch
|
||||
# Parent 4a62a6813db995fe195d47ff73234d455975ac30
|
||||
Microblaze support (again).
|
||||
|
||||
diff -r 4a62a6813db9 gcc/config/microblaze/linux.h
|
||||
--- a/gcc/config/microblaze/linux.h Tue May 20 11:06:14 2014 -0400
|
||||
+++ b/gcc/config/microblaze/linux.h Tue May 20 11:06:17 2014 -0400
|
||||
@@ -25,7 +25,22 @@
|
||||
#undef TLS_NEEDS_GOT
|
||||
#define TLS_NEEDS_GOT 1
|
||||
|
||||
-#define DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
+#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
|
||||
+#else
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
|
||||
+#endif
|
||||
+
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
|
||||
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
+
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
|
||||
+#else
|
||||
+#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "dynamic_linker", DYNAMIC_LINKER }
|
||||
From 478ee0c03a08e2ef9371fd88d516738936943e78 Mon Sep 17 00:00:00 2001
|
||||
From: David Holsgrove <david.holsgrove@xilinx.com>
|
||||
Date: Fri, 28 Sep 2012 16:32:03 +1000
|
||||
Subject: [PATCH 06/11] [Patch, microblaze]: Add SIZE_TYPE and PTRDIFF_TYPE to
|
||||
microblaze.h
|
||||
|
||||
Fixes warnings like;
|
||||
|
||||
warning: format '%zX' expects argument of type 'size_t',
|
||||
but argument 3 has type 'unsigned int' [-Wformat]
|
||||
|
||||
Changelog
|
||||
|
||||
2013-03-18 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* gcc/config/microblaze/microblaze.h: Define SIZE_TYPE
|
||||
and PTRDIFF_TYPE.
|
||||
|
||||
Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
|
||||
---
|
||||
gcc/config/microblaze/microblaze.h | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff -r 20d1c995f5de gcc/config/microblaze/microblaze.h
|
||||
--- a/gcc/config/microblaze/microblaze.h Tue May 20 11:06:17 2014 -0400
|
||||
+++ b/gcc/config/microblaze/microblaze.h Tue May 20 11:06:20 2014 -0400
|
||||
@@ -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 2f999fc929da 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 Tue May 20 11:06:23 2014 -0400
|
||||
@@ -43,7 +43,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"
|
304
cross/gcc4-aarch64/gcc-ice-hack.patch
Normal file
304
cross/gcc4-aarch64/gcc-ice-hack.patch
Normal file
|
@ -0,0 +1,304 @@
|
|||
# DP: Retry the build on an ice, save the calling options and preprocessed
|
||||
# DP: source when the ice is reproducible.
|
||||
|
||||
2004-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.c (execute): Don't free first string early, but at the end
|
||||
of the function. Call retry_ice if compiler exited with
|
||||
ICE_EXIT_CODE.
|
||||
(retry_ice): New function.
|
||||
* diagnostic.c (diagnostic_count_diagnostic,
|
||||
diagnostic_action_after_output, error_recursion): Exit with
|
||||
ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
|
||||
|
||||
Index: b/gcc/gcc.c
|
||||
===================================================================
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -249,6 +249,9 @@
|
||||
#if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
|
||||
static const char *convert_filename (const char *, int, int);
|
||||
#endif
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+static void retry_ice (const char *prog, const char **argv);
|
||||
+#endif
|
||||
|
||||
static const char *getenv_spec_function (int, const char **);
|
||||
static const char *if_exists_spec_function (int, const char **);
|
||||
@@ -2771,7 +2774,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (string != commands[i].prog)
|
||||
+ if (i && string != commands[i].prog)
|
||||
free (CONST_CAST (char *, string));
|
||||
}
|
||||
|
||||
@@ -2824,6 +2827,16 @@
|
||||
else if (WIFEXITED (status)
|
||||
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS)
|
||||
{
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+ /* For ICEs in cc1, cc1obj, cc1plus see if it is
|
||||
+ reproducible or not. */
|
||||
+ const char *p;
|
||||
+ if (WEXITSTATUS (status) == ICE_EXIT_CODE
|
||||
+ && i == 0
|
||||
+ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
|
||||
+ && ! strncmp (p + 1, "cc1", 3))
|
||||
+ retry_ice (commands[0].prog, commands[0].argv);
|
||||
+#endif
|
||||
if (WEXITSTATUS (status) > greatest_status)
|
||||
greatest_status = WEXITSTATUS (status);
|
||||
ret_code = -1;
|
||||
@@ -2881,6 +2894,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (commands[0].argv[0] != commands[0].prog)
|
||||
+ free (CONST_CAST (char *, commands[0].argv[0]));
|
||||
+
|
||||
return ret_code;
|
||||
}
|
||||
}
|
||||
@@ -6034,6 +6050,227 @@
|
||||
switches[switchnum].validated = true;
|
||||
}
|
||||
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+#define RETRY_ICE_ATTEMPTS 2
|
||||
+
|
||||
+static void
|
||||
+retry_ice (const char *prog, const char **argv)
|
||||
+{
|
||||
+ int nargs, out_arg = -1, quiet = 0, attempt;
|
||||
+ int pid, retries, sleep_interval;
|
||||
+ const char **new_argv;
|
||||
+ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
|
||||
+
|
||||
+ if (gcc_input_filename == NULL || ! strcmp (gcc_input_filename, "-"))
|
||||
+ return;
|
||||
+
|
||||
+ for (nargs = 0; argv[nargs] != NULL; ++nargs)
|
||||
+ /* Only retry compiler ICEs, not preprocessor ones. */
|
||||
+ if (! strcmp (argv[nargs], "-E"))
|
||||
+ return;
|
||||
+ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
|
||||
+ {
|
||||
+ if (out_arg == -1)
|
||||
+ out_arg = nargs;
|
||||
+ else
|
||||
+ return;
|
||||
+ }
|
||||
+ /* If the compiler is going to output any time information,
|
||||
+ it might varry between invocations. */
|
||||
+ else if (! strcmp (argv[nargs], "-quiet"))
|
||||
+ quiet = 1;
|
||||
+ else if (! strcmp (argv[nargs], "-ftime-report"))
|
||||
+ return;
|
||||
+
|
||||
+ if (out_arg == -1 || !quiet)
|
||||
+ return;
|
||||
+
|
||||
+ memset (temp_filenames, '\0', sizeof (temp_filenames));
|
||||
+ new_argv = XALLOCAVEC (const char *, nargs + 3);
|
||||
+ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
|
||||
+ new_argv[nargs++] = "-frandom-seed=0";
|
||||
+ new_argv[nargs] = NULL;
|
||||
+ if (new_argv[out_arg][2] == '\0')
|
||||
+ new_argv[out_arg + 1] = "-";
|
||||
+ else
|
||||
+ new_argv[out_arg] = "-o-";
|
||||
+
|
||||
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
|
||||
+ {
|
||||
+ int fd = -1;
|
||||
+ int status;
|
||||
+
|
||||
+ temp_filenames[attempt * 2] = make_temp_file (".out");
|
||||
+ temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
|
||||
+
|
||||
+ if (attempt == RETRY_ICE_ATTEMPTS)
|
||||
+ {
|
||||
+ int i;
|
||||
+ int fd1, fd2;
|
||||
+ struct stat st1, st2;
|
||||
+ size_t n, len;
|
||||
+ char *buf;
|
||||
+
|
||||
+ buf = XNEWVEC (char, 8192);
|
||||
+
|
||||
+ for (i = 0; i < 2; ++i)
|
||||
+ {
|
||||
+ fd1 = open (temp_filenames[i], O_RDONLY);
|
||||
+ fd2 = open (temp_filenames[2 + i], O_RDONLY);
|
||||
+
|
||||
+ if (fd1 < 0 || fd2 < 0)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (st1.st_size != st2.st_size)
|
||||
+ {
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ len = 0;
|
||||
+ for (n = st1.st_size; n; n -= len)
|
||||
+ {
|
||||
+ len = n;
|
||||
+ if (len > 4096)
|
||||
+ len = 4096;
|
||||
+
|
||||
+ if (read (fd1, buf, len) != (int) len
|
||||
+ || read (fd2, buf + 4096, len) != (int) len)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (memcmp (buf, buf + 4096, len) != 0)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+
|
||||
+ if (n)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ free (buf);
|
||||
+ if (i == -1)
|
||||
+ break;
|
||||
+
|
||||
+ if (i != 2)
|
||||
+ {
|
||||
+ fnotice (stderr, "The bug is not reproducible, so it is"
|
||||
+ " likely a hardware or OS problem.\n");
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ break;
|
||||
+ write (fd, "//", 2);
|
||||
+ for (i = 0; i < nargs; i++)
|
||||
+ {
|
||||
+ write (fd, " ", 1);
|
||||
+ write (fd, new_argv[i], strlen (new_argv[i]));
|
||||
+ }
|
||||
+ write (fd, "\n", 1);
|
||||
+ new_argv[nargs] = "-E";
|
||||
+ new_argv[nargs + 1] = NULL;
|
||||
+ }
|
||||
+
|
||||
+ /* Fork a subprocess; wait and retry if it fails. */
|
||||
+ sleep_interval = 1;
|
||||
+ pid = -1;
|
||||
+ for (retries = 0; retries < 4; retries++)
|
||||
+ {
|
||||
+ pid = fork ();
|
||||
+ if (pid >= 0)
|
||||
+ break;
|
||||
+ sleep (sleep_interval);
|
||||
+ sleep_interval *= 2;
|
||||
+ }
|
||||
+
|
||||
+ if (pid < 0)
|
||||
+ break;
|
||||
+ else if (pid == 0)
|
||||
+ {
|
||||
+ if (attempt != RETRY_ICE_ATTEMPTS)
|
||||
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ exit (-1);
|
||||
+ if (fd != 1)
|
||||
+ {
|
||||
+ close (1);
|
||||
+ dup (fd);
|
||||
+ close (fd);
|
||||
+ }
|
||||
+
|
||||
+ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ exit (-1);
|
||||
+ if (fd != 2)
|
||||
+ {
|
||||
+ close (2);
|
||||
+ dup (fd);
|
||||
+ close (fd);
|
||||
+ }
|
||||
+
|
||||
+ if (prog == new_argv[0])
|
||||
+ execvp (prog, CONST_CAST2 (char *const *, const char **, new_argv));
|
||||
+ else
|
||||
+ execv (new_argv[0], CONST_CAST2 (char *const *, const char **, new_argv));
|
||||
+ exit (-1);
|
||||
+ }
|
||||
+
|
||||
+ if (waitpid (pid, &status, 0) < 0)
|
||||
+ break;
|
||||
+
|
||||
+ if (attempt < RETRY_ICE_ATTEMPTS
|
||||
+ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
|
||||
+ {
|
||||
+ fnotice (stderr, "The bug is not reproducible, so it is"
|
||||
+ " likely a hardware or OS problem.\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (attempt == RETRY_ICE_ATTEMPTS)
|
||||
+ {
|
||||
+ close (fd);
|
||||
+ if (WIFEXITED (status)
|
||||
+ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
|
||||
+ {
|
||||
+ fnotice (stderr, "Preprocessed source stored into %s file,"
|
||||
+ " please attach this to your bugreport.\n",
|
||||
+ temp_filenames[attempt * 2]);
|
||||
+ /* Make sure it is not deleted. */
|
||||
+ free (temp_filenames[attempt * 2]);
|
||||
+ temp_filenames[attempt * 2] = NULL;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
|
||||
+ if (temp_filenames[attempt])
|
||||
+ {
|
||||
+ unlink (temp_filenames[attempt]);
|
||||
+ free (temp_filenames[attempt]);
|
||||
+ }
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/* Search for a file named NAME trying various prefixes including the
|
||||
user's -B prefix and some standard ones.
|
||||
Return the absolute file name found. If nothing is found, return NAME. */
|
||||
Index: b/gcc/diagnostic.c
|
||||
===================================================================
|
||||
--- a/gcc/diagnostic.c
|
||||
+++ b/gcc/diagnostic.c
|
||||
@@ -455,7 +455,7 @@
|
||||
real_abort ();
|
||||
diagnostic_finish (context);
|
||||
fnotice (stderr, "compilation terminated.\n");
|
||||
- exit (FATAL_EXIT_CODE);
|
||||
+ exit (ICE_EXIT_CODE);
|
||||
|
||||
default:
|
||||
gcc_unreachable ();
|
11
cross/gcc4-aarch64/gcc-pure64.patch
Normal file
11
cross/gcc4-aarch64/gcc-pure64.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- ./gcc/config/i386/t-linux64.orig 2013-01-14 16:32:37.000000000 +0000
|
||||
+++ ./gcc/config/i386/t-linux64 2013-04-22 06:12:32.984439677 +0000
|
||||
@@ -34,6 +34,6 @@
|
||||
comma=,
|
||||
MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
|
||||
MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
|
||||
-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
|
||||
-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
|
||||
+MULTILIB_OSDIRNAMES = m64=../lib
|
||||
+MULTILIB_OSDIRNAMES+= m32=../lib32
|
||||
MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
|
42
cross/gcc4-aarch64/gcc-spec-env.patch
Normal file
42
cross/gcc4-aarch64/gcc-spec-env.patch
Normal file
|
@ -0,0 +1,42 @@
|
|||
Add support for external spec file via the GCC_SPECS env var. This
|
||||
allows us to easily control pie/ssp defaults with gcc-config profiles.
|
||||
|
||||
Original patch by Rob Holland
|
||||
Extended to support multiple entries separated by ':' by Kevin F. Quinn
|
||||
Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
|
||||
|
||||
--- gcc-4/gcc/gcc.c
|
||||
+++ gcc-4/gcc/gcc.c
|
||||
@@ -6482,6 +6482,32 @@
|
||||
|
||||
/* Process any user specified specs in the order given on the command
|
||||
line. */
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
|
||||
+ /* Add specs listed in GCC_SPECS. Note; in the process of separating
|
||||
+ * each spec listed, the string is overwritten at token boundaries
|
||||
+ * (':') with '\0', an effect of strtok_r().
|
||||
+ */
|
||||
+ specs_file = getenv ("GCC_SPECS");
|
||||
+ if (specs_file && (strlen(specs_file) > 0))
|
||||
+ {
|
||||
+ char *spec, *saveptr;
|
||||
+ for (spec=strtok_r(specs_file,":",&saveptr);
|
||||
+ spec!=NULL;
|
||||
+ spec=strtok_r(NULL,":",&saveptr))
|
||||
+ {
|
||||
+ struct user_specs *user = (struct user_specs *)
|
||||
+ xmalloc (sizeof (struct user_specs));
|
||||
+
|
||||
+ user->next = (struct user_specs *) 0;
|
||||
+ user->filename = spec;
|
||||
+ if (user_specs_tail)
|
||||
+ user_specs_tail->next = user;
|
||||
+ else
|
||||
+ user_specs_head = user;
|
||||
+ user_specs_tail = user;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
for (uptr = user_specs_head; uptr; uptr = uptr->next)
|
||||
{
|
||||
char *filename = find_a_file (&startfile_prefixes, uptr->filename,
|
478
cross/gcc4-aarch64/gcc49-cloog-dl.patch
Normal file
478
cross/gcc4-aarch64/gcc49-cloog-dl.patch
Normal file
|
@ -0,0 +1,478 @@
|
|||
http://pkgs.fedoraproject.org/cgit/gcc.git/plain/gcc49-cloog-dl.patch
|
||||
|
||||
--- a/gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100
|
||||
+++ b/gcc/Makefile.in 2012-12-14 11:45:22.585670055 +0100
|
||||
@@ -1006,7 +1006,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
||||
# and the system's installed libraries.
|
||||
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
|
||||
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
||||
-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||
+BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||
$(ZLIB)
|
||||
# Any system libraries needed just for GNAT.
|
||||
SYSLIBS = @GNAT_LIBEXC@
|
||||
@@ -2011,6 +2011,15 @@ $(out_object_file): $(out_file)
|
||||
$(common_out_object_file): $(common_out_file)
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
+
|
||||
+graphite%.o : \
|
||||
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||
+graphite.o : \
|
||||
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||
+graphite%.o : \
|
||||
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
|
||||
+graphite.o : \
|
||||
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
|
||||
#
|
||||
# Generate header and source files from the machine description,
|
||||
# and compile them.
|
||||
--- a/gcc/graphite-poly.h.jj 2012-12-13 11:31:27.000000000 +0100
|
||||
+++ b/gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100
|
||||
@@ -22,6 +22,371 @@ along with GCC; see the file COPYING3.
|
||||
#ifndef GCC_GRAPHITE_POLY_H
|
||||
#define GCC_GRAPHITE_POLY_H
|
||||
|
||||
+#include <isl/aff.h>
|
||||
+#include <isl/schedule.h>
|
||||
+#include <isl/ilp.h>
|
||||
+#include <isl/flow.h>
|
||||
+#include <isl/options.h>
|
||||
+#include <cloog/isl/cloog.h>
|
||||
+#include <dlfcn.h>
|
||||
+#define DYNSYMS \
|
||||
+ DYNSYM (clast_pprint); \
|
||||
+ DYNSYM (cloog_clast_create_from_input); \
|
||||
+ DYNSYM (cloog_clast_free); \
|
||||
+ DYNSYM (cloog_domain_from_isl_set); \
|
||||
+ DYNSYM (cloog_input_alloc); \
|
||||
+ DYNSYM (cloog_isl_state_malloc); \
|
||||
+ DYNSYM (cloog_options_free); \
|
||||
+ DYNSYM (cloog_options_malloc); \
|
||||
+ DYNSYM (cloog_scattering_from_isl_map); \
|
||||
+ DYNSYM (cloog_state_free); \
|
||||
+ DYNSYM (cloog_union_domain_add_domain); \
|
||||
+ DYNSYM (cloog_union_domain_alloc); \
|
||||
+ DYNSYM (cloog_union_domain_set_name); \
|
||||
+ DYNSYM (isl_aff_add_coefficient_si); \
|
||||
+ DYNSYM (isl_aff_add_constant); \
|
||||
+ DYNSYM (isl_aff_free); \
|
||||
+ DYNSYM (isl_aff_get_coefficient); \
|
||||
+ DYNSYM (isl_aff_get_space); \
|
||||
+ DYNSYM (isl_aff_mod); \
|
||||
+ DYNSYM (isl_aff_set_coefficient_si); \
|
||||
+ DYNSYM (isl_aff_set_constant_si); \
|
||||
+ DYNSYM (isl_aff_zero_on_domain); \
|
||||
+ DYNSYM (isl_band_free); \
|
||||
+ DYNSYM (isl_band_get_children); \
|
||||
+ DYNSYM (isl_band_get_partial_schedule); \
|
||||
+ DYNSYM (isl_band_has_children); \
|
||||
+ DYNSYM (isl_band_list_free); \
|
||||
+ DYNSYM (isl_band_list_get_band); \
|
||||
+ DYNSYM (isl_band_list_get_ctx); \
|
||||
+ DYNSYM (isl_band_list_n_band); \
|
||||
+ DYNSYM (isl_band_member_is_zero_distance); \
|
||||
+ DYNSYM (isl_band_n_member); \
|
||||
+ DYNSYM (isl_basic_map_add_constraint); \
|
||||
+ DYNSYM (isl_basic_map_project_out); \
|
||||
+ DYNSYM (isl_basic_map_universe); \
|
||||
+ DYNSYM (isl_constraint_set_coefficient); \
|
||||
+ DYNSYM (isl_constraint_set_coefficient_si); \
|
||||
+ DYNSYM (isl_constraint_set_constant); \
|
||||
+ DYNSYM (isl_constraint_set_constant_si); \
|
||||
+ DYNSYM (isl_ctx_alloc); \
|
||||
+ DYNSYM (isl_ctx_free); \
|
||||
+ DYNSYM (isl_equality_alloc); \
|
||||
+ DYNSYM (isl_id_alloc); \
|
||||
+ DYNSYM (isl_id_copy); \
|
||||
+ DYNSYM (isl_id_free); \
|
||||
+ DYNSYM (isl_inequality_alloc); \
|
||||
+ DYNSYM (isl_local_space_copy); \
|
||||
+ DYNSYM (isl_local_space_free); \
|
||||
+ DYNSYM (isl_local_space_from_space); \
|
||||
+ DYNSYM (isl_local_space_range); \
|
||||
+ DYNSYM (isl_map_add_constraint); \
|
||||
+ DYNSYM (isl_map_add_dims); \
|
||||
+ DYNSYM (isl_map_align_params); \
|
||||
+ DYNSYM (isl_map_apply_range); \
|
||||
+ DYNSYM (isl_map_copy); \
|
||||
+ DYNSYM (isl_map_dim); \
|
||||
+ DYNSYM (isl_map_dump); \
|
||||
+ DYNSYM (isl_map_equate); \
|
||||
+ DYNSYM (isl_map_fix_si); \
|
||||
+ DYNSYM (isl_map_flat_product); \
|
||||
+ DYNSYM (isl_map_flat_range_product); \
|
||||
+ DYNSYM (isl_map_free); \
|
||||
+ DYNSYM (isl_map_from_basic_map); \
|
||||
+ DYNSYM (isl_map_from_pw_aff); \
|
||||
+ DYNSYM (isl_map_from_union_map); \
|
||||
+ DYNSYM (isl_map_get_ctx); \
|
||||
+ DYNSYM (isl_map_get_space); \
|
||||
+ DYNSYM (isl_map_get_tuple_id); \
|
||||
+ DYNSYM (isl_map_insert_dims); \
|
||||
+ DYNSYM (isl_map_intersect); \
|
||||
+ DYNSYM (isl_map_intersect_domain); \
|
||||
+ DYNSYM (isl_map_intersect_range); \
|
||||
+ DYNSYM (isl_map_is_empty); \
|
||||
+ DYNSYM (isl_map_lex_ge); \
|
||||
+ DYNSYM (isl_map_lex_le); \
|
||||
+ DYNSYM (isl_map_n_out); \
|
||||
+ DYNSYM (isl_map_range); \
|
||||
+ DYNSYM (isl_map_set_tuple_id); \
|
||||
+ DYNSYM (isl_map_universe); \
|
||||
+ DYNSYM (isl_options_set_on_error); \
|
||||
+ DYNSYM (isl_options_set_schedule_fuse); \
|
||||
+ DYNSYM (isl_options_set_schedule_max_constant_term); \
|
||||
+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
|
||||
+ DYNSYM (isl_printer_free); \
|
||||
+ DYNSYM (isl_printer_print_aff); \
|
||||
+ DYNSYM (isl_printer_print_constraint); \
|
||||
+ DYNSYM (isl_printer_print_map); \
|
||||
+ DYNSYM (isl_printer_print_set); \
|
||||
+ DYNSYM (isl_printer_to_file); \
|
||||
+ DYNSYM (isl_pw_aff_add); \
|
||||
+ DYNSYM (isl_pw_aff_alloc); \
|
||||
+ DYNSYM (isl_pw_aff_copy); \
|
||||
+ DYNSYM (isl_pw_aff_eq_set); \
|
||||
+ DYNSYM (isl_pw_aff_free); \
|
||||
+ DYNSYM (isl_pw_aff_from_aff); \
|
||||
+ DYNSYM (isl_pw_aff_ge_set); \
|
||||
+ DYNSYM (isl_pw_aff_gt_set); \
|
||||
+ DYNSYM (isl_pw_aff_is_cst); \
|
||||
+ DYNSYM (isl_pw_aff_le_set); \
|
||||
+ DYNSYM (isl_pw_aff_lt_set); \
|
||||
+ DYNSYM (isl_pw_aff_mod); \
|
||||
+ DYNSYM (isl_pw_aff_mul); \
|
||||
+ DYNSYM (isl_pw_aff_ne_set); \
|
||||
+ DYNSYM (isl_pw_aff_nonneg_set); \
|
||||
+ DYNSYM (isl_pw_aff_set_tuple_id); \
|
||||
+ DYNSYM (isl_pw_aff_sub); \
|
||||
+ DYNSYM (isl_pw_aff_zero_set); \
|
||||
+ DYNSYM (isl_schedule_free); \
|
||||
+ DYNSYM (isl_schedule_get_band_forest); \
|
||||
+ DYNSYM (isl_set_add_constraint); \
|
||||
+ DYNSYM (isl_set_add_dims); \
|
||||
+ DYNSYM (isl_set_apply); \
|
||||
+ DYNSYM (isl_set_coalesce); \
|
||||
+ DYNSYM (isl_set_copy); \
|
||||
+ DYNSYM (isl_set_dim); \
|
||||
+ DYNSYM (isl_set_fix_si); \
|
||||
+ DYNSYM (isl_set_free); \
|
||||
+ DYNSYM (isl_set_from_cloog_domain); \
|
||||
+ DYNSYM (isl_set_get_space); \
|
||||
+ DYNSYM (isl_set_get_tuple_id); \
|
||||
+ DYNSYM (isl_set_intersect); \
|
||||
+ DYNSYM (isl_set_is_empty); \
|
||||
+ DYNSYM (isl_set_max); \
|
||||
+ DYNSYM (isl_set_min); \
|
||||
+ DYNSYM (isl_set_n_dim); \
|
||||
+ DYNSYM (isl_set_nat_universe); \
|
||||
+ DYNSYM (isl_set_project_out); \
|
||||
+ DYNSYM (isl_set_set_tuple_id); \
|
||||
+ DYNSYM (isl_set_universe); \
|
||||
+ DYNSYM (isl_space_add_dims); \
|
||||
+ DYNSYM (isl_space_alloc); \
|
||||
+ DYNSYM (isl_space_copy); \
|
||||
+ DYNSYM (isl_space_dim); \
|
||||
+ DYNSYM (isl_space_domain); \
|
||||
+ DYNSYM (isl_space_find_dim_by_id); \
|
||||
+ DYNSYM (isl_space_free); \
|
||||
+ DYNSYM (isl_space_from_domain); \
|
||||
+ DYNSYM (isl_space_get_tuple_id); \
|
||||
+ DYNSYM (isl_space_params_alloc); \
|
||||
+ DYNSYM (isl_space_range); \
|
||||
+ DYNSYM (isl_space_set_alloc); \
|
||||
+ DYNSYM (isl_space_set_dim_id); \
|
||||
+ DYNSYM (isl_space_set_tuple_id); \
|
||||
+ DYNSYM (isl_union_map_add_map); \
|
||||
+ DYNSYM (isl_union_map_align_params); \
|
||||
+ DYNSYM (isl_union_map_apply_domain); \
|
||||
+ DYNSYM (isl_union_map_apply_range); \
|
||||
+ DYNSYM (isl_union_map_compute_flow); \
|
||||
+ DYNSYM (isl_union_map_copy); \
|
||||
+ DYNSYM (isl_union_map_empty); \
|
||||
+ DYNSYM (isl_union_map_flat_range_product); \
|
||||
+ DYNSYM (isl_union_map_foreach_map); \
|
||||
+ DYNSYM (isl_union_map_free); \
|
||||
+ DYNSYM (isl_union_map_from_map); \
|
||||
+ DYNSYM (isl_union_map_get_ctx); \
|
||||
+ DYNSYM (isl_union_map_get_space); \
|
||||
+ DYNSYM (isl_union_map_gist_domain); \
|
||||
+ DYNSYM (isl_union_map_gist_range); \
|
||||
+ DYNSYM (isl_union_map_intersect_domain); \
|
||||
+ DYNSYM (isl_union_map_is_empty); \
|
||||
+ DYNSYM (isl_union_map_subtract); \
|
||||
+ DYNSYM (isl_union_map_union); \
|
||||
+ DYNSYM (isl_union_set_add_set); \
|
||||
+ DYNSYM (isl_union_set_compute_schedule); \
|
||||
+ DYNSYM (isl_union_set_copy); \
|
||||
+ DYNSYM (isl_union_set_empty); \
|
||||
+ DYNSYM (isl_union_set_from_set); \
|
||||
+ DYNSYM (stmt_ass); \
|
||||
+ DYNSYM (stmt_block); \
|
||||
+ DYNSYM (stmt_for); \
|
||||
+ DYNSYM (stmt_guard); \
|
||||
+ DYNSYM (stmt_root); \
|
||||
+ DYNSYM (stmt_user);
|
||||
+extern struct cloog_pointers_s__
|
||||
+{
|
||||
+ bool inited;
|
||||
+ void *h;
|
||||
+#define DYNSYM(x) __typeof (x) *p_##x
|
||||
+ DYNSYMS
|
||||
+#undef DYNSYM
|
||||
+} cloog_pointers__;
|
||||
+
|
||||
+#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
|
||||
+#define clast_pprint (*cloog_pointers__.p_clast_pprint)
|
||||
+#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input)
|
||||
+#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
|
||||
+#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set)
|
||||
+#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc)
|
||||
+#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc)
|
||||
+#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
|
||||
+#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
|
||||
+#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map)
|
||||
+#define cloog_state_free (*cloog_pointers__.p_cloog_state_free)
|
||||
+#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain)
|
||||
+#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc)
|
||||
+#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name)
|
||||
+#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si)
|
||||
+#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant)
|
||||
+#define isl_aff_free (*cloog_pointers__.p_isl_aff_free)
|
||||
+#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient)
|
||||
+#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space)
|
||||
+#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod)
|
||||
+#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si)
|
||||
+#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si)
|
||||
+#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain)
|
||||
+#define isl_band_free (*cloog_pointers__.p_isl_band_free)
|
||||
+#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children)
|
||||
+#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule)
|
||||
+#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children)
|
||||
+#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free)
|
||||
+#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band)
|
||||
+#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx)
|
||||
+#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band)
|
||||
+#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance)
|
||||
+#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member)
|
||||
+#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint)
|
||||
+#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out)
|
||||
+#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe)
|
||||
+#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient)
|
||||
+#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si)
|
||||
+#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant)
|
||||
+#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si)
|
||||
+#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc)
|
||||
+#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free)
|
||||
+#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc)
|
||||
+#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc)
|
||||
+#define isl_id_copy (*cloog_pointers__.p_isl_id_copy)
|
||||
+#define isl_id_free (*cloog_pointers__.p_isl_id_free)
|
||||
+#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc)
|
||||
+#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy)
|
||||
+#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free)
|
||||
+#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space)
|
||||
+#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range)
|
||||
+#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint)
|
||||
+#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims)
|
||||
+#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params)
|
||||
+#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range)
|
||||
+#define isl_map_copy (*cloog_pointers__.p_isl_map_copy)
|
||||
+#define isl_map_dim (*cloog_pointers__.p_isl_map_dim)
|
||||
+#define isl_map_dump (*cloog_pointers__.p_isl_map_dump)
|
||||
+#define isl_map_equate (*cloog_pointers__.p_isl_map_equate)
|
||||
+#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si)
|
||||
+#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product)
|
||||
+#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product)
|
||||
+#define isl_map_free (*cloog_pointers__.p_isl_map_free)
|
||||
+#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map)
|
||||
+#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff)
|
||||
+#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map)
|
||||
+#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx)
|
||||
+#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space)
|
||||
+#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id)
|
||||
+#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims)
|
||||
+#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect)
|
||||
+#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain)
|
||||
+#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range)
|
||||
+#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty)
|
||||
+#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge)
|
||||
+#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le)
|
||||
+#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out)
|
||||
+#define isl_map_range (*cloog_pointers__.p_isl_map_range)
|
||||
+#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id)
|
||||
+#define isl_map_universe (*cloog_pointers__.p_isl_map_universe)
|
||||
+#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error)
|
||||
+#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse)
|
||||
+#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term)
|
||||
+#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth)
|
||||
+#define isl_printer_free (*cloog_pointers__.p_isl_printer_free)
|
||||
+#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff)
|
||||
+#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint)
|
||||
+#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map)
|
||||
+#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set)
|
||||
+#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file)
|
||||
+#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add)
|
||||
+#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc)
|
||||
+#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy)
|
||||
+#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set)
|
||||
+#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free)
|
||||
+#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff)
|
||||
+#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set)
|
||||
+#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set)
|
||||
+#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst)
|
||||
+#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set)
|
||||
+#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set)
|
||||
+#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod)
|
||||
+#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul)
|
||||
+#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set)
|
||||
+#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set)
|
||||
+#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id)
|
||||
+#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub)
|
||||
+#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set)
|
||||
+#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free)
|
||||
+#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest)
|
||||
+#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint)
|
||||
+#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims)
|
||||
+#define isl_set_apply (*cloog_pointers__.p_isl_set_apply)
|
||||
+#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce)
|
||||
+#define isl_set_copy (*cloog_pointers__.p_isl_set_copy)
|
||||
+#define isl_set_dim (*cloog_pointers__.p_isl_set_dim)
|
||||
+#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si)
|
||||
+#define isl_set_free (*cloog_pointers__.p_isl_set_free)
|
||||
+#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain)
|
||||
+#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space)
|
||||
+#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id)
|
||||
+#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect)
|
||||
+#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty)
|
||||
+#define isl_set_max (*cloog_pointers__.p_isl_set_max)
|
||||
+#define isl_set_min (*cloog_pointers__.p_isl_set_min)
|
||||
+#define isl_set_n_dim (*cloog_pointers__.p_isl_set_n_dim)
|
||||
+#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe)
|
||||
+#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out)
|
||||
+#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id)
|
||||
+#define isl_set_universe (*cloog_pointers__.p_isl_set_universe)
|
||||
+#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims)
|
||||
+#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc)
|
||||
+#define isl_space_copy (*cloog_pointers__.p_isl_space_copy)
|
||||
+#define isl_space_dim (*cloog_pointers__.p_isl_space_dim)
|
||||
+#define isl_space_domain (*cloog_pointers__.p_isl_space_domain)
|
||||
+#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id)
|
||||
+#define isl_space_free (*cloog_pointers__.p_isl_space_free)
|
||||
+#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain)
|
||||
+#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id)
|
||||
+#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc)
|
||||
+#define isl_space_range (*cloog_pointers__.p_isl_space_range)
|
||||
+#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc)
|
||||
+#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id)
|
||||
+#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id)
|
||||
+#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map)
|
||||
+#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params)
|
||||
+#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain)
|
||||
+#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range)
|
||||
+#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow)
|
||||
+#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy)
|
||||
+#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty)
|
||||
+#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product)
|
||||
+#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map)
|
||||
+#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free)
|
||||
+#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map)
|
||||
+#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx)
|
||||
+#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space)
|
||||
+#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain)
|
||||
+#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range)
|
||||
+#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain)
|
||||
+#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty)
|
||||
+#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract)
|
||||
+#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union)
|
||||
+#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set)
|
||||
+#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule)
|
||||
+#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy)
|
||||
+#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty)
|
||||
+#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set)
|
||||
+#define stmt_ass (*cloog_pointers__.p_stmt_ass)
|
||||
+#define stmt_block (*cloog_pointers__.p_stmt_block)
|
||||
+#define stmt_for (*cloog_pointers__.p_stmt_for)
|
||||
+#define stmt_guard (*cloog_pointers__.p_stmt_guard)
|
||||
+#define stmt_root (*cloog_pointers__.p_stmt_root)
|
||||
+#define stmt_user (*cloog_pointers__.p_stmt_user)
|
||||
+
|
||||
typedef struct poly_dr *poly_dr_p;
|
||||
|
||||
typedef struct poly_bb *poly_bb_p;
|
||||
--- a/gcc/graphite.c.jj 2012-12-13 11:31:00.000000000 +0100
|
||||
+++ b/gcc/graphite.c 2012-12-14 13:40:44.155136961 +0100
|
||||
@@ -78,6 +78,34 @@ along with GCC; see the file COPYING3.
|
||||
|
||||
CloogState *cloog_state;
|
||||
|
||||
+__typeof (cloog_pointers__) cloog_pointers__;
|
||||
+
|
||||
+static bool
|
||||
+init_cloog_pointers (void)
|
||||
+{
|
||||
+ void *h;
|
||||
+
|
||||
+ if (cloog_pointers__.inited)
|
||||
+ return cloog_pointers__.h != NULL;
|
||||
+ h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
|
||||
+ cloog_pointers__.h = h;
|
||||
+ if (h == NULL)
|
||||
+ return false;
|
||||
+#define DYNSYM(x) \
|
||||
+ do \
|
||||
+ { \
|
||||
+ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
|
||||
+ u.q = dlsym (h, #x); \
|
||||
+ if (u.q == NULL) \
|
||||
+ return false; \
|
||||
+ cloog_pointers__.p_##x = u.p; \
|
||||
+ } \
|
||||
+ while (0)
|
||||
+ DYNSYMS
|
||||
+#undef DYNSYM
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
/* Print global statistics to FILE. */
|
||||
|
||||
static void
|
||||
@@ -277,6 +305,15 @@ graphite_transform_loops (void)
|
||||
if (parallelized_function_p (cfun->decl))
|
||||
return;
|
||||
|
||||
+ if (number_of_loops (cfun) <= 1)
|
||||
+ return;
|
||||
+
|
||||
+ if (!init_cloog_pointers ())
|
||||
+ {
|
||||
+ sorry ("Graphite loop optimizations cannot be used");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
ctx = isl_ctx_alloc ();
|
||||
isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
|
||||
if (!graphite_initialize (ctx))
|
||||
--- a/gcc/graphite-clast-to-gimple.c.jj 2012-12-13 11:31:27.000000000 +0100
|
||||
+++ b/gcc/graphite-clast-to-gimple.c 2012-12-14 13:27:47.196519858 +0100
|
||||
@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo
|
||||
from STMT_FOR. */
|
||||
|
||||
static tree
|
||||
-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
|
||||
+type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
|
||||
{
|
||||
mpz_t bound_one, bound_two;
|
||||
tree lb_type, ub_type;
|
||||
@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st
|
||||
mpz_init (bound_one);
|
||||
mpz_init (bound_two);
|
||||
|
||||
- lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
|
||||
- ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
|
||||
+ lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
|
||||
+ ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
|
||||
|
||||
mpz_clear (bound_one);
|
||||
mpz_clear (bound_two);
|
12
cross/gcc4-aarch64/hardenednopie.specs
Normal file
12
cross/gcc4-aarch64/hardenednopie.specs
Normal file
|
@ -0,0 +1,12 @@
|
|||
*esp_cc1_pie:
|
||||
|
||||
|
||||
*esp_options_pie:
|
||||
|
||||
|
||||
*esp_link_pie_check:
|
||||
|
||||
|
||||
*esp_link_pie:
|
||||
|
||||
|
4
cross/gcc4-aarch64/hardenednopiessp.specs
Normal file
4
cross/gcc4-aarch64/hardenednopiessp.specs
Normal file
|
@ -0,0 +1,4 @@
|
|||
%include <hardenednossp.specs>
|
||||
%include <hardenednopie.specs>
|
||||
|
||||
|
6
cross/gcc4-aarch64/hardenednossp.specs
Normal file
6
cross/gcc4-aarch64/hardenednossp.specs
Normal file
|
@ -0,0 +1,6 @@
|
|||
*esp_cc1_ssp:
|
||||
|
||||
|
||||
*esp_options_ssp:
|
||||
|
||||
|
39
cross/gcc4-aarch64/libgcc-always-build-gcceh.a.patch
Normal file
39
cross/gcc4-aarch64/libgcc-always-build-gcceh.a.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
Highly inspired by:
|
||||
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch
|
||||
|
||||
diff -durN gcc-4.6.0.orig/libgcc/Makefile.in gcc-4.6.0/libgcc/Makefile.in
|
||||
--- gcc-4.6.0.orig/libgcc/Makefile.in 2011-01-26 05:19:58.000000000 +0100
|
||||
+++ gcc-4.6.0/libgcc/Makefile.in 2011-09-12 18:17:12.743718974 +0200
|
||||
@@ -772,8 +772,9 @@
|
||||
libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
|
||||
endif
|
||||
|
||||
+all: libgcc_eh.a
|
||||
ifeq ($(enable_shared),yes)
|
||||
-all: libgcc_eh.a libgcc_s$(SHLIB_EXT)
|
||||
+all: libgcc_s$(SHLIB_EXT)
|
||||
ifneq ($(LIBUNWIND),)
|
||||
all: libunwind$(SHLIB_EXT)
|
||||
endif
|
||||
@@ -950,10 +951,6 @@
|
||||
install-shared:
|
||||
$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
|
||||
|
||||
- $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
|
||||
- chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
- $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
-
|
||||
$(subst @multilib_dir@,$(MULTIDIR),$(subst \
|
||||
@shlib_base_name@,libgcc_s,$(subst \
|
||||
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))
|
||||
@@ -968,6 +965,10 @@
|
||||
chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a
|
||||
$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a
|
||||
|
||||
+ $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
|
||||
+ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
+ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
+
|
||||
parts="$(INSTALL_PARTS)"; \
|
||||
for file in $$parts; do \
|
||||
rm -f $(DESTDIR)$(inst_libdir)/$$file; \
|
27
cross/gcc4-aarch64/musl-posix_memalign-c++.patch
Normal file
27
cross/gcc4-aarch64/musl-posix_memalign-c++.patch
Normal file
|
@ -0,0 +1,27 @@
|
|||
Fix conflicting prototype of posix_memalign for c++
|
||||
http://www.openwall.com/lists/musl/2013/11/10/1
|
||||
|
||||
--- ./gcc/config/i386/pmm_malloc.h.orig
|
||||
+++ ./gcc/config/i386/pmm_malloc.h
|
||||
@@ -28,11 +28,7 @@
|
||||
|
||||
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
|
||||
may not be visible. */
|
||||
-#ifndef __cplusplus
|
||||
-extern int posix_memalign (void **, size_t, size_t);
|
||||
-#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
-#endif
|
||||
+extern int __gcc_posix_memalign (void **, size_t, size_t) __asm__("posix_memalign");
|
||||
|
||||
static __inline void *
|
||||
_mm_malloc (size_t size, size_t alignment)
|
||||
@@ -42,7 +38,7 @@
|
||||
return malloc (size);
|
||||
if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
|
||||
alignment = sizeof (void *);
|
||||
- if (posix_memalign (&ptr, alignment, size) == 0)
|
||||
+ if (__gcc_posix_memalign (&ptr, alignment, size) == 0)
|
||||
return ptr;
|
||||
else
|
||||
return NULL;
|
17
cross/gcc4-aarch64/pr63740.patch
Normal file
17
cross/gcc4-aarch64/pr63740.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63740
|
||||
|
||||
--- trunk/gcc/lra-lives.c 2014/06/16 09:25:26 211700
|
||||
+++ trunk/gcc/lra-lives.c 2014/06/16 09:58:34 211701
|
||||
@@ -558,7 +558,11 @@
|
||||
/* It might be 'inheritance pseudo <- reload pseudo'. */
|
||||
|| (src_regno >= lra_constraint_new_regno_start
|
||||
&& ((int) REGNO (SET_DEST (set))
|
||||
- >= lra_constraint_new_regno_start))))
|
||||
+ >= lra_constraint_new_regno_start)
|
||||
+ /* Remember to skip special cases where src/dest regnos are
|
||||
+ the same, e.g. insn SET pattern has matching constraints
|
||||
+ like =r,0. */
|
||||
+ && src_regno != (int) REGNO (SET_DEST (set)))))
|
||||
{
|
||||
int hard_regno = -1, regno = -1;
|
||||
|
83
cross/gcc4-aarch64/pr64037.patch
Normal file
83
cross/gcc4-aarch64/pr64037.patch
Normal file
|
@ -0,0 +1,83 @@
|
|||
https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=0817dc6f0e6b973e0e3671eb72d3758a8f042324
|
||||
(changelog changes removed)
|
||||
|
||||
From 0817dc6f0e6b973e0e3671eb72d3758a8f042324 Mon Sep 17 00:00:00 2001
|
||||
From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sun, 14 Dec 2014 16:07:03 +0000
|
||||
Subject: [PATCH] Pass unpromoted argument to promote_function_mode
|
||||
|
||||
This patch updates setup_incoming_promotions in combine.c to match what
|
||||
is actually passed in assign_parm_setup_reg in function.c.
|
||||
|
||||
Backported from mainline:
|
||||
|
||||
gcc/
|
||||
|
||||
PR rtl-optimization/64037
|
||||
* combine.c (setup_incoming_promotions): Pass the argument
|
||||
before any promotions happen to promote_function_mode.
|
||||
|
||||
gcc/testsuite/
|
||||
|
||||
PR rtl-optimization/64037
|
||||
* g++.dg/pr64037.C: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@218721 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
---
|
||||
gcc/combine.c | 4 ++--
|
||||
gcc/testsuite/g++.dg/pr64037.C | 27 +++++++++++++++++++++++++++
|
||||
4 files changed, 46 insertions(+), 2 deletions(-)
|
||||
create mode 100644 gcc/testsuite/g++.dg/pr64037.C
|
||||
|
||||
diff --git a/gcc/combine.c b/gcc/combine.c
|
||||
index 7c00452..adea2c1 100644
|
||||
--- a/gcc/combine.c
|
||||
+++ b/gcc/combine.c
|
||||
@@ -1529,8 +1529,8 @@ setup_incoming_promotions (rtx first)
|
||||
uns3 = TYPE_UNSIGNED (DECL_ARG_TYPE (arg));
|
||||
|
||||
/* The mode and signedness of the argument as it is actually passed,
|
||||
- after any TARGET_PROMOTE_FUNCTION_ARGS-driven ABI promotions. */
|
||||
- mode3 = promote_function_mode (DECL_ARG_TYPE (arg), mode2, &uns3,
|
||||
+ see assign_parm_setup_reg in function.c. */
|
||||
+ mode3 = promote_function_mode (TREE_TYPE (arg), mode1, &uns3,
|
||||
TREE_TYPE (cfun->decl), 0);
|
||||
|
||||
/* The mode of the register in which the argument is being passed. */
|
||||
diff --git a/gcc/testsuite/g++.dg/pr64037.C b/gcc/testsuite/g++.dg/pr64037.C
|
||||
new file mode 100644
|
||||
index 0000000..e5cd0e2
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/pr64037.C
|
||||
@@ -0,0 +1,27 @@
|
||||
+// { dg-do run { target i?86-*-* x86_64-*-* } }
|
||||
+// { dg-options "-std=c++11 -Os" }
|
||||
+
|
||||
+enum class X : unsigned char {
|
||||
+ V = 2,
|
||||
+};
|
||||
+
|
||||
+static void
|
||||
+__attribute__((noinline,noclone))
|
||||
+foo(unsigned &out, unsigned a, X b)
|
||||
+{
|
||||
+ out = static_cast<unsigned>(b);
|
||||
+}
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ unsigned deadbeef = 0xDEADBEEF;
|
||||
+ asm volatile ("" : "+d" (deadbeef), "+c" (deadbeef));
|
||||
+
|
||||
+ unsigned out;
|
||||
+ foo(out, 2, X::V);
|
||||
+
|
||||
+ if (out != 2)
|
||||
+ __builtin_abort ();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.1
|
||||
|
11
cross/gcc4-aarch64/vanilla.specs
Normal file
11
cross/gcc4-aarch64/vanilla.specs
Normal file
|
@ -0,0 +1,11 @@
|
|||
%include <hardenednossp.specs>
|
||||
%include <hardenednopie.specs>
|
||||
*esp_link_now:
|
||||
|
||||
|
||||
*esp_link_relro:
|
||||
|
||||
|
||||
*esp_cc1_strict_overflow:
|
||||
|
||||
|
156
cross/gcc4-armv7/01_all_gcc49_configure.patch
Normal file
156
cross/gcc4-armv7/01_all_gcc49_configure.patch
Normal file
|
@ -0,0 +1,156 @@
|
|||
2013-12-30 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/configure.ac Add --enable-esp and define ENABLE_ESP.
|
||||
Check if we support crtbeginP and define ENABLE_CRTBEGINP.
|
||||
* gcc/configure Regenerated
|
||||
|
||||
|
||||
--- a/gcc/configure.ac 2011-11-18 11:52:32.000000000 +0100
|
||||
+++ b/gcc/configure.ac 2012-10-02 17:39:15.649526241 +0200
|
||||
@@ -5130,6 +5237,55 @@ if test x"${LINKER_HASH_STYLE}" != x; th
|
||||
[The linker hash style])
|
||||
fi
|
||||
|
||||
+# --------------
|
||||
+# Esp checks
|
||||
+# --------------
|
||||
+
|
||||
+# Check whether --enable-esp was given and target have the support.
|
||||
+AC_ARG_ENABLE([esp],
|
||||
+[AS_HELP_STRING([--enable-esp],
|
||||
+ [Enable Stack protector and Position independent executable as
|
||||
+ default if we have suppot for it when compiling
|
||||
+ and link with -z now as default.
|
||||
+ Linux targets supported i*86, x86_64, x32,
|
||||
+ powerpc, powerpc64, ia64, arm and mips.])],
|
||||
+ enable_esp=$enableval,
|
||||
+ enable_esp=no)
|
||||
+if test $enable_esp = yes ; then
|
||||
+ AC_MSG_CHECKING(if $target support esp)
|
||||
+ case "$target" in
|
||||
+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips-*-linux* | arm*-*-linux* | ia64-*-linux*)
|
||||
+ enable_esp=yes
|
||||
+ AC_DEFINE(ENABLE_ESP, 1,
|
||||
+ [Define if your target support esp and you have enable it.])
|
||||
+ ;;
|
||||
+ *)
|
||||
+ enable_esp=no
|
||||
+ ;;
|
||||
+ esac
|
||||
+AC_MSG_RESULT($enable_esp)
|
||||
+fi
|
||||
+AC_SUBST([enable_esp])
|
||||
+if test $enable_esp = yes ; then
|
||||
+ AC_MSG_CHECKING(checking for crtbeginP.o support)
|
||||
+ if test x$enable_esp = xyes ; then
|
||||
+ case "$target" in
|
||||
+ ia64*-*-linux*)
|
||||
+ enable_crtbeginP=no ;;
|
||||
+ *-*-linux*)
|
||||
+ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
|
||||
+ enable_crtbeginP=yes
|
||||
+ AC_DEFINE(ENABLE_CRTBEGINP, 1,
|
||||
+ [Define if your compiler will support crtbeginP.])
|
||||
+ fi
|
||||
+ ;;
|
||||
+ *) enable_crtbeginP=no ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ AC_MSG_RESULT($enable_crtbeginP)
|
||||
+fi
|
||||
+AC_SUBST([enable_crtbeginP])
|
||||
+
|
||||
# Configure the subdirectories
|
||||
# AC_CONFIG_SUBDIRS($subdirs)
|
||||
|
||||
--- a/gcc/configure 2013-02-01 21:26:24.000000000 +0100
|
||||
+++ b/gcc/configure 2013-02-12 01:59:20.000000000 +0100
|
||||
@@ -600,6 +600,8 @@
|
||||
ac_subst_vars='LTLIBOBJS
|
||||
LIBOBJS
|
||||
PICFLAG
|
||||
+enable_crtbeginP
|
||||
+enable_esp
|
||||
enable_host_shared
|
||||
enable_plugin
|
||||
pluginlibs
|
||||
@@ -920,6 +922,7 @@
|
||||
enable_plugin
|
||||
enable_libquadmath_support
|
||||
with_linker_hash_style
|
||||
+enable_esp
|
||||
'
|
||||
ac_precious_vars='build_alias
|
||||
host_alias
|
||||
@@ -1633,6 +1636,11 @@
|
||||
--enable-plugin enable plugin support
|
||||
--disable-libquadmath-support
|
||||
disable libquadmath support for Fortran
|
||||
+ --enable-esp Enable Stack protector and Position independent
|
||||
+ executable as default if we have suppot for it when
|
||||
+ compiling and link with -z now as default.
|
||||
+ Linux targets supported i*86, x86_64, x32,
|
||||
+ powerpc, powerpc64, ia64, arm and mips.
|
||||
|
||||
Optional Packages:
|
||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||
@@ -27419,6 +27427,59 @@
|
||||
|
||||
fi
|
||||
|
||||
+# --------------
|
||||
+# Esp checks
|
||||
+# --------------
|
||||
+
|
||||
+# Check whether --enable-esp was given and target have the support.
|
||||
+# Check whether --enable-esp was given.
|
||||
+if test "${enable_esp+set}" = set; then :
|
||||
+ enableval=$enable_esp; enable_esp=$enableval
|
||||
+else
|
||||
+ enable_esp=no
|
||||
+fi
|
||||
+
|
||||
+if test $enable_esp = yes ; then
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $target support esp" >&5
|
||||
+$as_echo_n "checking if $target support esp... " >&6; }
|
||||
+ case "$target" in
|
||||
+ i?86*-*-linux* | x86_64-*-linux* | powerpc*-*-linux* | mips*-*-linux* | arm*-*-linux* | ia64-*-linux*)
|
||||
+ enable_esp=yes
|
||||
+
|
||||
+$as_echo "#define ENABLE_ESP 1" >>confdefs.h
|
||||
+
|
||||
+ ;;
|
||||
+ *)
|
||||
+ enable_esp=no
|
||||
+ ;;
|
||||
+ esac
|
||||
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_esp" >&5
|
||||
+$as_echo "$enable_esp" >&6; }
|
||||
+fi
|
||||
+
|
||||
+if test $enable_esp = yes ; then
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking checking for crtbeginP.o support" >&5
|
||||
+$as_echo_n "checking checking for crtbeginP.o support... " >&6; }
|
||||
+ if test x$enable_esp = xyes ; then
|
||||
+ case "$target" in
|
||||
+ ia64*-*-linux*)
|
||||
+ enable_crtbeginP=no ;;
|
||||
+ *-*-linux*)
|
||||
+ if test x$gcc_cv_ld_pie = xyes && test x$lt_cv_prog_compiler_static_works = xyes; then
|
||||
+ enable_crtbeginP=yes
|
||||
+
|
||||
+$as_echo "#define ENABLE_CRTBEGINP 1" >>confdefs.h
|
||||
+
|
||||
+ fi
|
||||
+ ;;
|
||||
+ *) enable_crtbeginP=no ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_crtbeginP" >&5
|
||||
+$as_echo "$enable_crtbeginP" >&6; }
|
||||
+fi
|
||||
+
|
||||
+
|
||||
# Configure the subdirectories
|
||||
# AC_CONFIG_SUBDIRS($subdirs)
|
||||
|
32
cross/gcc4-armv7/02_all_gcc48_config.in.patch
Normal file
32
cross/gcc4-armv7/02_all_gcc48_config.in.patch
Normal file
|
@ -0,0 +1,32 @@
|
|||
2013-02-13 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config.in Add ENABLE_CRTBEGINP, ENABLE_ESP
|
||||
|
||||
--- ./gcc/config.in 2009-04-21 11:08:08.000000000 +0200
|
||||
+++ ./gcc/config.in 2009-05-12 00:10:08.000000000 +0200
|
||||
@@ -46,6 +46,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to 1 to enable crtbeginP.o. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_CRTBEGINP
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define to 1 to specify that we are using the BID decimal floating point
|
||||
format instead of DPD */
|
||||
#ifndef USED_FOR_TARGET
|
||||
@@ -65,6 +65,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to 1 to enable esp. */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_ESP
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define to 1 to enable fixed-point arithmetic extension to C. */
|
||||
#ifndef USED_FOR_TARGET
|
||||
#undef ENABLE_FIXED_POINT
|
96
cross/gcc4-armv7/03_all_gcc49_Makefile.in.patch
Normal file
96
cross/gcc4-armv7/03_all_gcc49_Makefile.in.patch
Normal file
|
@ -0,0 +1,96 @@
|
|||
2012-01-17 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/Makefile.in Add -fno-PIE. to ALL_CFLAGS and
|
||||
ALL_CXXFLAGS if enable_esp yes.
|
||||
Echo enable_esp and enable_crtbeginP to tmp-libgcc.mvars.
|
||||
* libgcc/Makefile.in Add crtbeginP.o to EXTRA_PARTS if enable_crtbeginP yes
|
||||
We add new file crtbeginP.o if enable_crtbeginP yes
|
||||
Add -fno-PIE. to CRTSTUFF_CFLAGS.
|
||||
|
||||
--- a/gcc/Makefile.in 2011-11-09 02:20:14.000000000 +0100
|
||||
+++ b/gcc/Makefile.in 2011-12-24 22:28:08.864804375 +0100
|
||||
@@ -247,6 +247,14 @@ LINKER_FLAGS = $(CFLAGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
+# We don't want to compile the compiler with -fPIE, it make PCH fail.
|
||||
+enable_esp = @enable_esp@
|
||||
+ifeq ($(enable_esp),yes)
|
||||
+ESP_NOPIE_CFLAGS = -fno-PIE
|
||||
+else
|
||||
+ESP_NOPIE_CFLAGS=
|
||||
+endif
|
||||
+
|
||||
# -------------------------------------------
|
||||
# Programs which operate on the build machine
|
||||
# -------------------------------------------
|
||||
@@ -974,12 +982,13 @@ INTERNAL_CFLAGS = -DIN_GCC @CROSS@
|
||||
|
||||
# This is the variable actually used when we compile. If you change this,
|
||||
# you probably want to update BUILD_CFLAGS in configure.ac
|
||||
-ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS-$@) \
|
||||
+ALL_CFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) \
|
||||
$(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(WARN_CFLAGS) @DEFS@
|
||||
|
||||
# The C++ version.
|
||||
-ALL_CXXFLAGS = $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) $(INTERNAL_CFLAGS) \
|
||||
- $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) $(WARN_CXXFLAGS) @DEFS@
|
||||
+ALL_CXXFLAGS = $(ESP_NOPIE_CFLAGS) $(T_CFLAGS) $(CFLAGS-$@) $(CXXFLAGS) \
|
||||
+ $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) $(NOEXCEPTION_FLAGS) \
|
||||
+ $(WARN_CXXFLAGS) @DEFS@
|
||||
|
||||
# Likewise. Put INCLUDES at the beginning: this way, if some autoconf macro
|
||||
# puts -I options in CPPFLAGS, our include files in the srcdir will always
|
||||
@@ -1814,6 +1823,8 @@ libgcc.mvars: config.status Makefile spe
|
||||
echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars
|
||||
echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars
|
||||
echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars
|
||||
+ echo enable_esp = '$(enable_esp)' >> tmp-libgcc.mvars
|
||||
+ echo enable_crtbeginP = '@enable_crtbeginP@' >> tmp-libgcc.mvars
|
||||
|
||||
mv tmp-libgcc.mvars libgcc.mvars
|
||||
|
||||
--- a/libgcc/Makefile.in 2011-11-22 04:01:02.000000000 +0100
|
||||
+++ b/libgcc/Makefile.in 2011-12-25 15:18:22.449610631 +0100
|
||||
@@ -219,6 +219,17 @@ else
|
||||
DECNUMINC =
|
||||
endif
|
||||
|
||||
+ifeq ($(enable_esp),yes)
|
||||
+ESP_NOPIE_CFLAGS = -fno-PIE
|
||||
+else
|
||||
+ESP_NOPIE_CFLAGS=
|
||||
+endif
|
||||
+
|
||||
+# We add crtbeginP.o to the EXTRA_PARTS list if enable_crtbeginP = yes
|
||||
+ifeq ($(enable_crtbeginP),yes)
|
||||
+EXTRA_PARTS += crtbeginP.o
|
||||
+endif
|
||||
+
|
||||
# Options to use when compiling libgcc2.a.
|
||||
#
|
||||
LIBGCC2_DEBUG_CFLAGS = -g
|
||||
@@ -279,7 +290,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF
|
||||
CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
|
||||
-finhibit-size-directive -fno-inline -fno-exceptions \
|
||||
-fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
|
||||
- -fno-stack-protector \
|
||||
+ -fno-stack-protector $(ESP_NOPIE_CFLAGS) \
|
||||
$(INHIBIT_LIBC_CFLAGS)
|
||||
|
||||
# Extra flags to use when compiling crt{begin,end}.o.
|
||||
@@ -966,6 +977,13 @@ crtendS$(objext): $(srcdir)/crtstuff.c
|
||||
# This is a version of crtbegin for -static links.
|
||||
crtbeginT$(objext): $(srcdir)/crtstuff.c
|
||||
$(crt_compile) $(CRTSTUFF_T_CFLAGS) -c $< -DCRT_BEGIN -DCRTSTUFFT_O
|
||||
+
|
||||
+# This is a version of crtbegin for -static -fPIE links.
|
||||
+ifeq ($(enable_crtbeginP),yes)
|
||||
+crtbeginP$(objext): $(srcdir)/crtstuff.c
|
||||
+ $(crt_compile) $(CRTSTUFF_T_CFLAGS_S) \
|
||||
+ -c $< -DCRT_BEGIN -DCRTSTUFFT_O -DCRTSTUFFS_O
|
||||
+endif
|
||||
|
||||
ifeq ($(enable_vtable_verify),yes)
|
||||
# These are used in vtable verification; see comments in source files for
|
||||
|
25
cross/gcc4-armv7/05_all_gcc48_gcc.c.patch
Normal file
25
cross/gcc4-armv7/05_all_gcc48_gcc.c.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
2013-03-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/gcc.c include esp.h
|
||||
static const char *cc1_spec We set that in esp.h if ENABLE_ESP.
|
||||
|
||||
--- ./gcc/gcc.c 2010-01-21 10:29:30.000000000 -0500
|
||||
+++ ./gcc/gcc.c 2010-01-29 23:29:16.000000000 -0500
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "opts.h"
|
||||
#include "params.h"
|
||||
#include "vec.h"
|
||||
+#include "config/esp.h" /* for --enable-esp support */
|
||||
#include "filenames.h"
|
||||
|
||||
/* By default there is no special suffix for target executables. */
|
||||
@@ -822,7 +823,9 @@
|
||||
|
||||
static const char *asm_debug;
|
||||
static const char *cpp_spec = CPP_SPEC;
|
||||
+#ifndef ENABLE_ESP
|
||||
static const char *cc1_spec = CC1_SPEC;
|
||||
+#endif
|
||||
static const char *cc1plus_spec = CC1PLUS_SPEC;
|
||||
static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
|
||||
static const char *link_ssp_spec = LINK_SSP_SPEC;
|
31
cross/gcc4-armv7/10_all_default-fortify-source.patch
Normal file
31
cross/gcc4-armv7/10_all_default-fortify-source.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
Enable -D_FORTIFY_SOURCE=2 by default.
|
||||
|
||||
Original patch from:
|
||||
http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/4.9.2/gentoo/10_all_default-fortify-source.patch
|
||||
|
||||
--- a/gcc/c-family/c-cppbuiltin.c
|
||||
+++ b/gcc/c-family/c-cppbuiltin.c
|
||||
@@ -951,6 +951,9 @@ c_cpp_builtins (cpp_reader *pfile)
|
||||
builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
|
||||
builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
|
||||
|
||||
+ /* Fortify Source enabled by default w/optimization. */
|
||||
+ cpp_define (pfile, "_FORTIFY_SOURCE=((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)");
|
||||
+
|
||||
/* Misc. */
|
||||
if (flag_gnu89_inline)
|
||||
cpp_define (pfile, "__GNUC_GNU_INLINE__");
|
||||
--- a/gcc/doc/gcc.info
|
||||
+++ b/gcc/doc/gcc.info
|
||||
@@ -6255,6 +6255,11 @@ find out the exact set of optimizations that are enabled at each level.
|
||||
Please note the warning under '-fgcse' about invoking '-O2' on
|
||||
programs that use computed gotos.
|
||||
|
||||
+ NOTE: In Alpine Linux, `-D_FORTIFY_SOURCE=2' is set by default, and is
|
||||
+ activated when `-Os' or `-O1' or higher is used. This enables additional
|
||||
+ compile-time and run-time checks for several libc functions. To disable,
|
||||
+ specify either `-U_FORTIFY_SOURCE' or `-D_FORTIFY_SOURCE=0'.
|
||||
+
|
||||
'-O3'
|
||||
Optimize yet more. '-O3' turns on all optimizations specified by
|
||||
'-O2' and also turns on the '-finline-functions',
|
24
cross/gcc4-armv7/12_all_default-warn-trampolines.patch
Normal file
24
cross/gcc4-armv7/12_all_default-warn-trampolines.patch
Normal file
|
@ -0,0 +1,24 @@
|
|||
Enable -Wtrampolines by default.
|
||||
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -640,7 +640,7 @@ Common Var(warn_system_headers) Warning
|
||||
Do not suppress warnings from system headers
|
||||
|
||||
Wtrampolines
|
||||
-Common Var(warn_trampolines) Warning
|
||||
+Common Var(warn_trampolines) Init(1) Warning
|
||||
Warn whenever a trampoline is generated
|
||||
|
||||
Wtype-limits
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -4007,6 +4007,8 @@ headers---for that, @option{-Wunknown-pragmas} must also be used.
|
||||
for most targets, it is made up of code and thus requires the stack
|
||||
to be made executable in order for the program to work properly.
|
||||
|
||||
+ This warning is enabled by default in Gentoo.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
17
cross/gcc4-armv7/15_all_libgfortran-Werror.patch
Normal file
17
cross/gcc4-armv7/15_all_libgfortran-Werror.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
libgfortran does not respect --disable-werror
|
||||
|
||||
https://bugs.gentoo.org/433435
|
||||
http://gcc.gnu.org/PR54724
|
||||
|
||||
|
||||
--- a/libgfortran/configure
|
||||
+++ b/libgfortran/configure
|
||||
@@ -5764,7 +5764,7 @@ fi
|
||||
|
||||
# Add -Wall -fno-repack-arrays -fno-underscoring if we are using GCC.
|
||||
if test "x$GCC" = "xyes"; then
|
||||
- AM_FCFLAGS="-I . -Wall -Werror -fimplicit-none -fno-repack-arrays -fno-underscoring"
|
||||
+ AM_FCFLAGS="-I . -Wall -fimplicit-none -fno-repack-arrays -fno-underscoring"
|
||||
## We like to use C99 routines when available. This makes sure that
|
||||
## __STDC_VERSION__ is set such that libc includes make them available.
|
||||
AM_CFLAGS="-std=gnu99 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings"
|
16
cross/gcc4-armv7/16_all_gcc47_nopie_option.patch
Normal file
16
cross/gcc4-armv7/16_all_gcc47_nopie_option.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
2012-01-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/common.opt Add -nopie
|
||||
|
||||
--- a/gcc/common.opt 2011-11-23 19:51:17.000000000 +0100
|
||||
+++ b//gcc/common.opt 2012-01-24 16:56:24.302224357 +0100
|
||||
@@ -2280,6 +2280,9 @@ Driver
|
||||
nodefaultlibs
|
||||
Driver
|
||||
|
||||
+nopie
|
||||
+Driver
|
||||
+
|
||||
nostartfiles
|
||||
Driver
|
||||
|
17
cross/gcc4-armv7/16_all_libgomp-Werror.patch
Normal file
17
cross/gcc4-armv7/16_all_libgomp-Werror.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
libgomp does not respect --disable-werror
|
||||
|
||||
https://bugs.gentoo.org/229059
|
||||
http://gcc.gnu.org/PR38436
|
||||
|
||||
|
||||
--- a/libgomp/configure
|
||||
+++ b/libgomp/configure
|
||||
@@ -4282,7 +4282,7 @@ save_CFLAGS="$CFLAGS"
|
||||
|
||||
# Add -Wall -Werror if we are using GCC.
|
||||
if test "x$GCC" = "xyes"; then
|
||||
- XCFLAGS="$XCFLAGS -Wall -Werror"
|
||||
+ XCFLAGS="$XCFLAGS -Wall"
|
||||
fi
|
||||
|
||||
# Find other programs we need.
|
40
cross/gcc4-armv7/20_all_gcc49_config_crtbeginp.patch
Normal file
40
cross/gcc4-armv7/20_all_gcc49_config_crtbeginp.patch
Normal file
|
@ -0,0 +1,40 @@
|
|||
2014-04-23 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config/gnu-user.h If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o.
|
||||
* gcc/config/rs6000/sysv4.h If ENABLE_CRTBEGINP, -static and -pie use crtbegineP.o.
|
||||
|
||||
--- a/gcc/config/gnu-user.h 2014-01-02 23:23:26.000000000 +0100
|
||||
+++ b/gcc/config/gnu-user.h 2014-04-23 00:55:06.390265454 +0200
|
||||
@@ -40,7 +40,15 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
provides part of the support for getting C++ file-scope static
|
||||
object constructed before entering `main'. */
|
||||
|
||||
-#if defined HAVE_LD_PIE
|
||||
+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
|
||||
+#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
+ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
+ crti.o%s %{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}; \
|
||||
+ shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
|
||||
+ %{fvtable-verify=none:%s; \
|
||||
+ fvtable-verify=preinit:vtv_start_preinit.o%s; \
|
||||
+ fvtable-verify=std:vtv_start.o%s}"
|
||||
+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
|
||||
#define GNU_USER_TARGET_STARTFILE_SPEC \
|
||||
"%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
|
||||
--- a/gcc/config/rs6000/sysv4.h 2009-04-10 01:23:07.000000000 +0200
|
||||
+++ b/gcc/config/rs6000/sysv4.h 2009-09-08 04:41:50.000000000 +0200
|
||||
@@ -883,7 +883,12 @@
|
||||
%{!mnewlib: %{pthread:-lpthread} %{shared:-lc} \
|
||||
%{!shared: %{profile:-lc_p} %{!profile:-lc}}}"
|
||||
|
||||
-#ifdef HAVE_LD_PIE
|
||||
+#if defined (HAVE_LD_PIE) && defined (ENABLE_CRTBEGINP)
|
||||
+#define STARTFILE_LINUX_SPEC "\
|
||||
+%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
+%{mnewlib:ecrti.o%s;:crti.o%s} \
|
||||
+%{static:%{pie:crtbeginP.o%s;:crtbeginT.o%s}} %{!static:%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}}"
|
||||
+#elif defined (HAVE_LD_PIE) && ! defined (ENABLE_CRTBEGINP)
|
||||
#define STARTFILE_LINUX_SPEC "\
|
||||
%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
|
||||
%{mnewlib:ecrti.o%s;:crti.o%s} \
|
44
cross/gcc4-armv7/24_all_gcc49_invoke.texi.patch
Normal file
44
cross/gcc4-armv7/24_all_gcc49_invoke.texi.patch
Normal file
|
@ -0,0 +1,44 @@
|
|||
2014-04-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/doc/invoke.texi Add NOTES about -fstack-protector-all, -pie and
|
||||
-fPIE/-fpie when --enable-esp is enable, this options is on by default.
|
||||
|
||||
--- a/gcc/doc/invoke.texi 2009-04-01 09:18:47.000000000 +0200
|
||||
+++ b/gcc/doc/invoke.texi 2009-06-18 14:08:38.000000000 +0200
|
||||
@@ -9233,6 +9245,11 @@ If a guard check fails, an error message
|
||||
@opindex fstack-protector-all
|
||||
Like @option{-fstack-protector} except that all functions are protected.
|
||||
|
||||
+NOTE: NOTE: When --enable-esp this option is enabled by default
|
||||
+for C, C++, ObjC, ObjC++, if neither @option{-fno-stack-protector},
|
||||
+@option{-nostdlib}, @option{-ffreestanding}, @option{-fstack-protector},
|
||||
+@option{-fstack-protector-strong}or @option{-fstack-protector-all}are found.
|
||||
+
|
||||
@item -fstack-protector-strong
|
||||
@opindex fstack-protector-strong
|
||||
Like @option{-fstack-protector} but includes additional functions to
|
||||
@@ -7960,6 +7965,12 @@
|
||||
that were used to generate code (@option{-fpie}, @option{-fPIE},
|
||||
or model suboptions) when you specify this option.
|
||||
|
||||
+NOTE: When --enable-esp this option is enabled by default
|
||||
+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
|
||||
+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
|
||||
+@option{-nostartfiles} or @option{-shared} or @option{-pg} or @option{-p}
|
||||
+are found.
|
||||
+
|
||||
@item -rdynamic
|
||||
@opindex rdynamic
|
||||
Pass the flag @option{-export-dynamic} to the ELF linker, on targets
|
||||
@@ -15889,6 +15910,11 @@
|
||||
@code{__pie__} and @code{__PIE__}. The macros have the value 1
|
||||
for @option{-fpie} and 2 for @option{-fPIE}.
|
||||
|
||||
+NOTE: When --enable-esp this option is enabled by default
|
||||
+for C, C++, ObjC, ObjC++, if neither @option{-fno-pie} or @option{-fno-PIE}
|
||||
+or @option{-fno-pic} or @option{-fno-PIC} or @option{-nostdlib} or
|
||||
+@option{-nostartfiles} or @option{-shared} are found.
|
||||
+
|
||||
@item -fno-jump-tables
|
||||
@opindex fno-jump-tables
|
||||
Do not use jump tables for switch statements even where it would be
|
56
cross/gcc4-armv7/34_all_gcc48_config_i386.patch
Normal file
56
cross/gcc4-armv7/34_all_gcc48_config_i386.patch
Normal file
|
@ -0,0 +1,56 @@
|
|||
2013-03-24 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config/i386/gnu-user-common.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC.
|
||||
* gcc/config/i386/gnu-user.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
|
||||
* gcc/config/i386/i386.h (SUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
|
||||
|
||||
--- a/gcc/config/i386/gnu-user-common.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ b/gcc/config/i386/gnu-user-common.h 2013-02-14 00:51:44.689637605 +0100
|
||||
@@ -70,3 +70,7 @@ along with GCC; see the file COPYING3.
|
||||
|
||||
/* Static stack checking is supported by means of probes. */
|
||||
#define STACK_CHECK_STATIC_BUILTIN 1
|
||||
+
|
||||
+#ifdef ENABLE_ESP
|
||||
+#define DRIVER_SELF_SPECS ESP_DRIVER_SELF_SPEC
|
||||
+#endif
|
||||
--- a/gcc/config/i386/gnu-user.h 2011-05-05 14:32:50.000000000 +0200
|
||||
+++ b/gcc/config/i386/gnu-user.h 2012-07-09 14:28:38.726289455 +0200
|
||||
@@ -93,9 +93,16 @@ along with GCC; see the file COPYING3.
|
||||
"--32 %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
+#ifdef ENABLE_ESP
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "link_emulation", GNU_USER_LINK_EMULATION },\
|
||||
- { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
|
||||
+ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }, \
|
||||
+ ESP_EXTRA_SPECS
|
||||
+#else
|
||||
+#define SUBTARGET_EXTRA_SPECS \
|
||||
+ { "link_emulation", GNU_USER_LINK_EMULATION },\
|
||||
+ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
|
||||
+#endif
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
|
||||
--- a/gcc/config/i386/i386.h 2011-11-24 23:11:12.000000000 +0100
|
||||
+++ b/gcc/config/i386/i386.h 2012-07-09 14:21:24.575276517 +0200
|
||||
@@ -617,13 +617,16 @@ enum target_cpu_default
|
||||
Do not define this macro if it does not need to do anything. */
|
||||
|
||||
#ifndef SUBTARGET_EXTRA_SPECS
|
||||
+#ifdef ENABLE_ESP
|
||||
+#define SUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
|
||||
+#else
|
||||
#define SUBTARGET_EXTRA_SPECS
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#define EXTRA_SPECS \
|
||||
{ "cc1_cpu", CC1_CPU_SPEC }, \
|
||||
SUBTARGET_EXTRA_SPECS
|
||||
-
|
||||
|
||||
/* Set the value of FLT_EVAL_METHOD in float.h. When using only the
|
||||
FPU, assume that the fpcw is set to extended precision; when using
|
35
cross/gcc4-armv7/35_all_gcc48_config_arm.patch
Normal file
35
cross/gcc4-armv7/35_all_gcc48_config_arm.patch
Normal file
|
@ -0,0 +1,35 @@
|
|||
2013-06-03 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/config/arm/arm.h (DRIVER_SELF_SPECS): Add ESP_DRIVER_SELF_SPEC.
|
||||
* gcc/config/arm/elf.h (SUBSUBTARGET_EXTRA_SPECS): Add ESP_EXTRA_SPECS.
|
||||
|
||||
--- a/gcc/config/arm/arm.h 2013-01-15 17:17:28.000000000 +0100
|
||||
+++ b/gcc/config/arm/arm.h 2013-02-18 22:45:18.327284928 +0100
|
||||
@@ -2326,6 +2326,11 @@ extern const char *host_detect_local_cpu
|
||||
# define MCPU_MTUNE_NATIVE_SPECS ""
|
||||
#endif
|
||||
|
||||
-#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
|
||||
-
|
||||
+#ifdef ENABLE_ESP
|
||||
+# define DRIVER_SELF_SPECS \
|
||||
+ MCPU_MTUNE_NATIVE_SPECS, \
|
||||
+ ESP_DRIVER_SELF_SPEC
|
||||
+#else
|
||||
+# define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
|
||||
+#endif
|
||||
#endif /* ! GCC_ARM_H */
|
||||
--- a/gcc/config/arm/elf.h 2013-01-10 21:38:27.000000000 +0100
|
||||
+++ b/gcc/config/arm/elf.h 2013-05-19 02:15:49.595855825 +0200
|
||||
@@ -49,7 +49,11 @@
|
||||
#endif
|
||||
|
||||
#undef SUBSUBTARGET_EXTRA_SPECS
|
||||
+#ifdef ENABLE_ESP
|
||||
+#define SUBSUBTARGET_EXTRA_SPECS ESP_EXTRA_SPECS
|
||||
+#else
|
||||
#define SUBSUBTARGET_EXTRA_SPECS
|
||||
+#endif
|
||||
|
||||
#ifndef ASM_SPEC
|
||||
#define ASM_SPEC "\
|
135
cross/gcc4-armv7/40_all_gcc49_config_esp.patch
Normal file
135
cross/gcc4-armv7/40_all_gcc49_config_esp.patch
Normal file
|
@ -0,0 +1,135 @@
|
|||
2014-05-12 Magnus Granberg <zorry@gentoo.org>
|
||||
|
||||
* gcc/esp.h New file to support --enable-esp
|
||||
Version 20140512.1
|
||||
|
||||
--- a/gcc/config/esp.h 2010-04-09 16:14:00.000000000 +0200
|
||||
+++ b/gcc/config/esp.h 2012-06-23 01:00:31.248348491 +0200
|
||||
@@ -0,0 +1,127 @@
|
||||
+/* License terms see GNU GENERAL PUBLIC LICENSE Version 3.
|
||||
+ * Version 20140512.1
|
||||
+ * Magnus Granberg (Zorry) <zorry@gentoo.org> */
|
||||
+#ifndef GCC_ESP_H
|
||||
+#define GCC_ESP_H
|
||||
+
|
||||
+/* This file will add -fstack-protector-all, -fstack-check, -fPIE, -pie and -z now
|
||||
+ as default if the defines and the spec allow it.
|
||||
+ Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass
|
||||
+ to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened.
|
||||
+ This will add some unsupported upstream commands options as -nopie and -nonow.
|
||||
+ -D__KERNEL__ is added so we don't have -fPIE, -pie and -fstack-protector-all and -fstack-check when building kernels.
|
||||
+ ESP_CC1_SPEC is added to CC1_SPEC.
|
||||
+ ESP_CC1_STRICT_OVERFLOW_SPEC is added so we don't disable the strict-overflow check.
|
||||
+ ESP_LINK_PIE_CHECK_SPEC check for -pie, -p, -pg, -profile and -static.
|
||||
+ ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie.
|
||||
+*/
|
||||
+#ifdef ENABLE_ESP
|
||||
+
|
||||
+ /* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */
|
||||
+ #define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)"
|
||||
+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
+ #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: %{!fno-stack-check: }}}"
|
||||
+ #else
|
||||
+ #define ESP_CC1_SSP_SPEC ""
|
||||
+ #endif
|
||||
+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
|
||||
+ #define ESP_CC1_PIE_SPEC "%{!nopie: }"
|
||||
+ #else
|
||||
+ #define ESP_CC1_PIE_SPEC ""
|
||||
+ #endif
|
||||
+ #define ESP_CC1_STRICT_OVERFLOW_SPEC "%{!fstrict-overflow:%{!fno-strict-overflow: -fno-strict-overflow}}"
|
||||
+
|
||||
+ /* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable
|
||||
+ -z now will be added if we don't have -vanilla spec. We do a -pie incompatible check
|
||||
+ Don't remove the specs in the end */
|
||||
+ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) "
|
||||
+ #define ESP_LINK_NOW_SPEC "%{!nonow:-z now}"
|
||||
+
|
||||
+ /* We use ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options. */
|
||||
+ #define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \
|
||||
+ %(esp_link_pie)} %(esp_options_ssp) }"
|
||||
+
|
||||
+ /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
|
||||
+ -fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */
|
||||
+ #if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
+ #define ESP_OPTIONS_SSP_SPEC \
|
||||
+ "%{nostdlib|ffreestanding|fno-stack-protector|fstack-protector| \
|
||||
+ fstack-protector-all|fstack-protector-strong:;:-fstack-protector-all} \
|
||||
+ %{fstack-check|fstack-check=*:;: -fstack-check}"
|
||||
+ #else
|
||||
+ #define ESP_OPTIONS_SSP_SPEC ""
|
||||
+ #endif
|
||||
+
|
||||
+ /* If EFAULT_PIE or EFAULT_PIE_SSP is defined we will add -fPIE -pie */
|
||||
+ #if defined ( EFAULT_PIE ) || defined ( EFAULT_PIE_SSP )
|
||||
+
|
||||
+ /* This will add -fPIE if we don't have -pie -fpic -fPIC -fpie -fPIE -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static
|
||||
+ -nostdlib -nostartfiles. */
|
||||
+ /* With ENABLE_CRTBEGINP we don't need to check for -static */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define ESP_OPTIONS_PIE_SPEC \
|
||||
+ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
|
||||
+ %{!shared: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }"
|
||||
+ #else
|
||||
+ #define ESP_OPTIONS_PIE_SPEC \
|
||||
+ "%{!pie: %{!fpic:%{!fPIC:%{!fpie:%{!fPIE: %{!fno-pic:%{!fno-PIC:%{!fno-pie:%{!fno-PIE: \
|
||||
+ %{!shared: %{!static: %{!nostdlib: %{!nostartfiles:-fPIE}} } }}}} }}}} }}"
|
||||
+ #endif
|
||||
+
|
||||
+ /* This will add -pie if we don't have -pie -A -fno-pic -fno-PIC -fno-pie -fno-PIE -shared -static -r -nostdlib
|
||||
+ -nostartfiles */
|
||||
+ /* With ENABLE_CRTBEGINP we don't need to check for -static
|
||||
+ and we add -pie only to get the start and endfiles. -pie will not go to the linker. */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define ESP_LINK_PIE_SPEC \
|
||||
+ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!r: \
|
||||
+ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}"
|
||||
+ #else
|
||||
+ #define ESP_LINK_PIE_SPEC \
|
||||
+ "%{!pie:%{!A:%{!fno-pie:%{!fno-PIE:%{!fno-pic:%{!fno-PIC:%{!shared:%{!static:%{!r: \
|
||||
+ %{!nostdlib:%{!nostartfiles:-pie}}}}}}}}}}}"
|
||||
+ #endif
|
||||
+
|
||||
+ /* This will check if -pie is set when (-static) -pg -p -profile. If set it will make gcc print out
|
||||
+ "-pie and (static)|pg|p|profile are incompatible when linking" */
|
||||
+ /* With ENABLE_CRTBEGINP we don't need to check for -static */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define ESP_LINK_PIE_CHECK_SPEC \
|
||||
+ "%{pie:%{pg|p|profile:%e-pie and -pg|p|profile are incompatible when linking}}"
|
||||
+ #else
|
||||
+ #define ESP_LINK_PIE_CHECK_SPEC \
|
||||
+ "%{pie:%{static|pg|p|profile:%e-pie and -static|pg|p|profile are incompatible when linking}}"
|
||||
+ #endif
|
||||
+
|
||||
+ /* We don't pass -pie to the linker when -static. */
|
||||
+ #ifdef ENABLE_CRTBEGINP
|
||||
+ #define LINK_PIE_SPEC "%{!static:%{pie:-pie}} %(esp_link)"
|
||||
+ #else
|
||||
+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
|
||||
+ #endif
|
||||
+
|
||||
+ #else
|
||||
+ #define ESP_OPTIONS_PIE_SPEC ""
|
||||
+ #define ESP_LINK_PIE_CHECK_SPEC ""
|
||||
+ #define ESP_LINK_PIE_SPEC ""
|
||||
+ #define LINK_PIE_SPEC "%{pie:-pie} %(esp_link)"
|
||||
+ #endif
|
||||
+
|
||||
+ /* We add extra spec name's to the EXTRA_SPECS list */
|
||||
+ #define ESP_EXTRA_SPECS \
|
||||
+ { "esp_cc1", ESP_CC1_SPEC }, \
|
||||
+ { "esp_cc1_pie", ESP_CC1_PIE_SPEC }, \
|
||||
+ { "esp_cc1_ssp", ESP_CC1_SSP_SPEC }, \
|
||||
+ { "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \
|
||||
+ { "esp_link", ESP_LINK_SPEC }, \
|
||||
+ { "esp_link_now", ESP_LINK_NOW_SPEC }, \
|
||||
+ { "esp_link_pie", ESP_LINK_PIE_SPEC }, \
|
||||
+ { "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \
|
||||
+ { "esp_driver_self", ESP_DRIVER_SELF_SPEC }, \
|
||||
+ { "esp_options_pie", ESP_OPTIONS_PIE_SPEC }, \
|
||||
+ { "esp_options_ssp", ESP_OPTIONS_SSP_SPEC }
|
||||
+
|
||||
+ static const char *cc1_spec = CC1_SPEC ESP_CC1_SPEC;
|
||||
+
|
||||
+#endif
|
||||
+#endif /* End GCC_ESP_H */
|
67
cross/gcc4-armv7/41_all_gcc49_config_esp_alpine.patch
Normal file
67
cross/gcc4-armv7/41_all_gcc49_config_esp_alpine.patch
Normal file
|
@ -0,0 +1,67 @@
|
|||
Apply Alpine Linux specific differences to Gentoo ESP configuration:
|
||||
- default PIE and SSP by default without additional CFLAGS (to clean up APKBUILD)
|
||||
- do not enable -fstack-check by default (caused failures in programs that setup
|
||||
small stack in musl)
|
||||
- enable -z relro by default
|
||||
- enable -fstack-protector-strong instead of -fstack-protector-all by default
|
||||
|
||||
--- gcc-4.9.2/gcc/config/esp.h 2014-12-10 15:54:19.925060848 +0000
|
||||
+++ gcc-4.9.2/gcc/config/esp.h 2014-12-10 15:59:16.793850060 +0000
|
||||
@@ -4,7 +4,7 @@
|
||||
#ifndef GCC_ESP_H
|
||||
#define GCC_ESP_H
|
||||
|
||||
-/* This file will add -fstack-protector-all, -fstack-check, -fPIE, -pie and -z now
|
||||
+/* This file will add -fstack-protector-strong, -fPIE, -pie, -z relro and -z now
|
||||
as default if the defines and the spec allow it.
|
||||
Added a hack for gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass
|
||||
to support older hardened GCC patches and we don't need to change the code on gcc-specs-* and _filter-hardened.
|
||||
@@ -16,11 +16,14 @@
|
||||
ENABLE_CRTBEGINP add support for crtbeginP.o, build -static with -fPIE or -fpie.
|
||||
*/
|
||||
#ifdef ENABLE_ESP
|
||||
+
|
||||
+ /* Enable by default on Alpine */
|
||||
+ #define EFAULT_PIE_SSP
|
||||
|
||||
/* Hack to support gcc-specs-* in toolchain-funcs.eclass and _filter-hardened in flag-o-matic.eclass */
|
||||
#define ESP_CC1_SPEC " %(esp_cc1_ssp) %(esp_cc1_pie) %(esp_cc1_strict_overflow)"
|
||||
#if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
- #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: %{!fno-stack-check: }}}"
|
||||
+ #define ESP_CC1_SSP_SPEC "%{!fno-stack-protector: %{!fno-stack-protector-all: }}"
|
||||
#else
|
||||
#define ESP_CC1_SSP_SPEC ""
|
||||
#endif
|
||||
@@ -34,20 +37,20 @@
|
||||
/* ESP_LINK_SPEC is added to LINK_PIE_SPEC if esp is enable
|
||||
-z now will be added if we don't have -vanilla spec. We do a -pie incompatible check
|
||||
Don't remove the specs in the end */
|
||||
- #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_pie_check) "
|
||||
+ #define ESP_LINK_SPEC "%(esp_link_now) %(esp_link_relro) %(esp_link_pie_check) "
|
||||
#define ESP_LINK_NOW_SPEC "%{!nonow:-z now}"
|
||||
+ #define ESP_LINK_RELRO_SPEC "%{!norelro:-z relro}"
|
||||
|
||||
/* We use ESP_DRIVER_SELF_SPEC to add pie and ssp command-line options. */
|
||||
#define ESP_DRIVER_SELF_SPEC "%{D__KERNEL__:;:%{!nopie:%(esp_options_pie) \
|
||||
%(esp_link_pie)} %(esp_options_ssp) }"
|
||||
|
||||
- /* This will add -fstack-protector-all if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
|
||||
+ /* This will add -fstack-protector-strong if we don't have -nostdlib -nodefaultlibs -fno-stack-protector -fstack-protector
|
||||
-fstack-protector-all and we have EFAULT_SSP or EFAULT_PIE_SSP defined. */
|
||||
#if defined ( EFAULT_SSP ) || defined ( EFAULT_PIE_SSP )
|
||||
#define ESP_OPTIONS_SSP_SPEC \
|
||||
"%{nostdlib|ffreestanding|fno-stack-protector|fstack-protector| \
|
||||
- fstack-protector-all|fstack-protector-strong:;:-fstack-protector-all} \
|
||||
- %{fstack-check|fstack-check=*:;: -fstack-check}"
|
||||
+ fstack-protector-all|fstack-protector-strong:;:-fstack-protector-strong}"
|
||||
#else
|
||||
#define ESP_OPTIONS_SSP_SPEC ""
|
||||
#endif
|
||||
@@ -115,6 +118,7 @@
|
||||
{ "esp_cc1_strict_overflow", ESP_CC1_STRICT_OVERFLOW_SPEC }, \
|
||||
{ "esp_link", ESP_LINK_SPEC }, \
|
||||
{ "esp_link_now", ESP_LINK_NOW_SPEC }, \
|
||||
+ { "esp_link_relro", ESP_LINK_RELRO_SPEC }, \
|
||||
{ "esp_link_pie", ESP_LINK_PIE_SPEC }, \
|
||||
{ "esp_link_pie_check", ESP_LINK_PIE_CHECK_SPEC }, \
|
||||
{ "esp_driver_self", ESP_DRIVER_SELF_SPEC }, \
|
28
cross/gcc4-armv7/48_all_x86_pr53113_libitm-avx.patch
Normal file
28
cross/gcc4-armv7/48_all_x86_pr53113_libitm-avx.patch
Normal file
|
@ -0,0 +1,28 @@
|
|||
libitm checks for AVX support in the assembler and adds -mavx to x86_avx.cc
|
||||
which defines the needed typedefs. User CFLAGS can override -mavx however,
|
||||
so also use the fallback typedef if __AVX__ isn't defined.
|
||||
|
||||
https://bugs.gentoo.org/417271
|
||||
http://gcc.gnu.org/PR53113
|
||||
|
||||
|
||||
--- a/libitm/config/x86/x86_avx.cc
|
||||
+++ b/libitm/config/x86/x86_avx.cc
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
extern "C" {
|
||||
|
||||
-#ifndef HAVE_AS_AVX
|
||||
+#if !defined (HAVE_AS_AVX) || !defined(__AVX__)
|
||||
// If we don't have an AVX capable assembler, we didn't set -mavx on the
|
||||
// command-line either, which means that libitm.h defined neither this type
|
||||
// nor the functions in this file. Define the type and unconditionally
|
||||
@@ -40,7 +40,7 @@ typedef float _ITM_TYPE_M256 __attribute__((vector_size(32), may_alias));
|
||||
// Re-define the memcpy implementations so that we can frob the
|
||||
// interface to deal with possibly missing AVX instruction set support.
|
||||
|
||||
-#ifdef HAVE_AS_AVX
|
||||
+#if defined(HAVE_AS_AVX) && defined(__AVX__)
|
||||
#define RETURN(X) return X
|
||||
#define STORE(X,Y) X = Y
|
||||
#define OUTPUT(T) _ITM_TYPE_##T
|
18
cross/gcc4-armv7/50_all_libiberty-asprintf.patch
Normal file
18
cross/gcc4-armv7/50_all_libiberty-asprintf.patch
Normal file
|
@ -0,0 +1,18 @@
|
|||
2008-07-25 Magnus Granberg <zorry@ume.nu>
|
||||
|
||||
* include/libiberty.h (asprintf): Don't declare if defined as a macro
|
||||
|
||||
--- a/include/libiberty.h
|
||||
+++ b/include/libiberty.h
|
||||
@@ -609,8 +609,11 @@ extern int pwait (int, int *, int);
|
||||
/* Like sprintf but provides a pointer to malloc'd storage, which must
|
||||
be freed by the caller. */
|
||||
|
||||
+/* asprintf may be declared as a macro by glibc with __USE_FORTIFY_LEVEL. */
|
||||
+#ifndef asprintf
|
||||
extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#if !HAVE_DECL_VASPRINTF
|
||||
/* Like vsprintf but provides a pointer to malloc'd storage, which
|
10
cross/gcc4-armv7/51_all_libiberty-pic.patch
Normal file
10
cross/gcc4-armv7/51_all_libiberty-pic.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- a/libiberty/Makefile.in
|
||||
+++ b/libiberty/Makefile.in
|
||||
@@ -246,6 +246,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS)
|
||||
$(AR) $(AR_FLAGS) $(TARGETLIB) \
|
||||
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
|
||||
$(RANLIB) $(TARGETLIB); \
|
||||
+ cp $(TARGETLIB) ../ ; \
|
||||
cd ..; \
|
||||
else true; fi
|
||||
|
190
cross/gcc4-armv7/67_all_gcc-poison-system-directories.patch
Normal file
190
cross/gcc4-armv7/67_all_gcc-poison-system-directories.patch
Normal file
|
@ -0,0 +1,190 @@
|
|||
From 160397ef3c3331099af028f1b8d3e085b07d88ad Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 16/35] gcc: poison-system-directories
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [distribution: codesourcery]
|
||||
---
|
||||
gcc/Makefile.in | 2 +-
|
||||
gcc/common.opt | 4 ++++
|
||||
gcc/config.in | 6 ++++++
|
||||
gcc/configure | 20 ++++++++++++++++++--
|
||||
gcc/configure.ac | 10 ++++++++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
gcc/gcc.c | 2 ++
|
||||
gcc/incpath.c | 19 +++++++++++++++++++
|
||||
8 files changed, 69 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: gcc-4.9-20140316/gcc/common.opt
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/common.opt
|
||||
+++ gcc-4.9-20140316/gcc/common.opt
|
||||
@@ -603,6 +603,10 @@ Wpedantic
|
||||
Common Var(pedantic) Warning
|
||||
Issue warnings needed for strict compliance to the standard
|
||||
|
||||
+Wpoison-system-directories
|
||||
+Common Var(flag_poison_system_directories) Init(1) Warning
|
||||
+Warn for -I and -L options using system directories if cross compiling
|
||||
+
|
||||
Wshadow
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one local variable shadows another
|
||||
Index: gcc-4.9-20140316/gcc/config.in
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/config.in
|
||||
+++ gcc-4.9-20140316/gcc/config.in
|
||||
@@ -138,6 +138,12 @@
|
||||
#endif
|
||||
|
||||
|
||||
+/* Define to warn for use of native system header directories */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
/* Define if you want all operations on RTL (the basic data structure of the
|
||||
optimizer and back end) to be checked for dynamic type safety at runtime.
|
||||
This is quite expensive. */
|
||||
Index: gcc-4.9-20140316/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/configure
|
||||
+++ gcc-4.9-20140316/gcc/configure
|
||||
@@ -928,6 +928,7 @@ with_system_zlib
|
||||
enable_maintainer_mode
|
||||
enable_link_mutex
|
||||
enable_version_specific_runtime_libs
|
||||
+enable_poison_system_directories
|
||||
enable_plugin
|
||||
enable_host_shared
|
||||
enable_libquadmath_support
|
||||
@@ -1648,6 +1649,8 @@ Optional Features:
|
||||
--enable-version-specific-runtime-libs
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
+ --enable-poison-system-directories
|
||||
+ warn for use of native system header directories
|
||||
--enable-plugin enable plugin support
|
||||
--enable-host-shared build host code as shared libraries
|
||||
--disable-libquadmath-support
|
||||
@@ -27702,6 +27705,19 @@ if test "${enable_version_specific_runti
|
||||
fi
|
||||
|
||||
|
||||
+# Check whether --enable-poison-system-directories was given.
|
||||
+if test "${enable_poison_system_directories+set}" = set; then :
|
||||
+ enableval=$enable_poison_system_directories;
|
||||
+else
|
||||
+ enable_poison_system_directories=no
|
||||
+fi
|
||||
+
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+
|
||||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
||||
+
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
|
||||
|
||||
Index: gcc-4.9-20140316/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/configure.ac
|
||||
+++ gcc-4.9-20140316/gcc/configure.ac
|
||||
@@ -5366,6 +5366,16 @@ AC_ARG_ENABLE(version-specific-runtime-l
|
||||
[specify that runtime libraries should be
|
||||
installed in a compiler-specific directory])])
|
||||
|
||||
+AC_ARG_ENABLE([poison-system-directories],
|
||||
+ AS_HELP_STRING([--enable-poison-system-directories],
|
||||
+ [warn for use of native system header directories]),,
|
||||
+ [enable_poison_system_directories=no])
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
||||
+ [1],
|
||||
+ [Define to warn for use of native system header directories])
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
AC_SUBST(subdirs)
|
||||
AC_SUBST(srcdir)
|
||||
Index: gcc-4.9-20140316/gcc/doc/invoke.texi
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/doc/invoke.texi
|
||||
+++ gcc-4.9-20140316/gcc/doc/invoke.texi
|
||||
@@ -260,6 +260,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded @gol
|
||||
-Wparentheses -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
|
||||
-Wpointer-arith -Wno-pointer-to-int-cast @gol
|
||||
+-Wno-poison-system-directories @gol
|
||||
-Wredundant-decls -Wno-return-local-addr @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow @gol
|
||||
-Wsign-compare -Wsign-conversion -Wfloat-conversion @gol
|
||||
@@ -4230,6 +4231,14 @@ headers---for that, @option{-Wunknown-pr
|
||||
for most targets, it is made up of code and thus requires the stack
|
||||
to be made executable in order for the program to work properly.
|
||||
|
||||
+@item -Wno-poison-system-directories
|
||||
+@opindex Wno-poison-system-directories
|
||||
+Do not warn for @option{-I} or @option{-L} options using system
|
||||
+directories such as @file{/usr/include} when cross compiling. This
|
||||
+option is intended for use in chroot environments when such
|
||||
+directories contain the correct headers and libraries for the target
|
||||
+system rather than the host.
|
||||
+
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
||||
Index: gcc-4.9-20140316/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/gcc.c
|
||||
+++ gcc-4.9-20140316/gcc/gcc.c
|
||||
@@ -764,6 +764,8 @@ proper position among the other output f
|
||||
"%{fuse-ld=*:-fuse-ld=%*}\
|
||||
%X %{o*} %{e*} %{N} %{n} %{r}\
|
||||
%{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " VTABLE_VERIFICATION_SPEC " \
|
||||
+ %{Wno-poison-system-directories:--no-poison-system-directories}\
|
||||
+ %{Werror=poison-system-directories:--error-poison-system-directories}\
|
||||
%{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
|
||||
%{fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\
|
||||
%{fgnu-tm:%:include(libitm.spec)%(link_itm)}\
|
||||
Index: gcc-4.9-20140316/gcc/incpath.c
|
||||
===================================================================
|
||||
--- gcc-4.9-20140316.orig/gcc/incpath.c
|
||||
+++ gcc-4.9-20140316/gcc/incpath.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "intl.h"
|
||||
#include "incpath.h"
|
||||
#include "cppdefault.h"
|
||||
+#include "diagnostic-core.h"
|
||||
|
||||
/* Microsoft Windows does not natively support inodes.
|
||||
VMS has non-numeric inodes. */
|
||||
@@ -382,6 +383,24 @@ merge_include_chains (const char *sysroo
|
||||
}
|
||||
fprintf (stderr, _("End of search list.\n"));
|
||||
}
|
||||
+
|
||||
+#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+ if (flag_poison_system_directories)
|
||||
+ {
|
||||
+ struct cpp_dir *p;
|
||||
+
|
||||
+ for (p = heads[QUOTE]; p; p = p->next)
|
||||
+ {
|
||||
+ if ((!strncmp (p->name, "/usr/include", 12))
|
||||
+ || (!strncmp (p->name, "/usr/local/include", 18))
|
||||
+ || (!strncmp (p->name, "/usr/X11R6/include", 18)))
|
||||
+ warning (OPT_Wpoison_system_directories,
|
||||
+ "include location \"%s\" is unsafe for "
|
||||
+ "cross-compilation",
|
||||
+ p->name);
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
|
||||
/* Use given -I paths for #include "..." but not #include <...>, and
|
483
cross/gcc4-armv7/APKBUILD
Normal file
483
cross/gcc4-armv7/APKBUILD
Normal file
|
@ -0,0 +1,483 @@
|
|||
# Automatically generated aport, do not edit!
|
||||
# Generator: pmbootstrap aportgen gcc4-armv7
|
||||
# Based on: main/gcc4 (from postmarketOS)
|
||||
|
||||
CTARGET_ARCH=armv7
|
||||
CTARGET="$(arch_to_hostspec ${CTARGET_ARCH})"
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LANG_ADA=false
|
||||
options="!strip !tracedeps"
|
||||
|
||||
# abuild doesn't try to tries to install "build-base-$CTARGET_ARCH"
|
||||
# when this variable matches "no*"
|
||||
BOOTSTRAP="nobuildbase"
|
||||
|
||||
# abuild will only cross compile when this variable is set, but it
|
||||
# needs to find a valid package database in there for dependency
|
||||
# resolving, so we set it to /.
|
||||
CBUILDROOT="/"
|
||||
|
||||
_cross_configure="--disable-bootstrap --with-sysroot=/usr/$CTARGET"
|
||||
|
||||
pkgname="gcc4-armv7"
|
||||
pkgver=9999
|
||||
_pkgver=4.9.2
|
||||
pkgrel=0
|
||||
pkgdesc="Stage2 cross-compiler for armv7"
|
||||
url="http://gcc.gnu.org"
|
||||
arch="x86_64"
|
||||
license="GPL LGPL"
|
||||
_gccrel=$_pkgver-r$pkgrel
|
||||
depends="isl binutils-armv7"
|
||||
makedepends_build="gcc g++ paxmark bison flex texinfo gawk zip gmp-dev mpfr-dev mpc1-dev zlib-dev"
|
||||
makedepends_host="linux-headers gmp-dev mpfr-dev mpc1-dev isl-dev zlib-dev musl-dev-armv7 binutils-armv7"
|
||||
subpackages=""
|
||||
options="!strip !tracedeps"
|
||||
|
||||
# We only care about C, so we can compile old Linux kernels
|
||||
LANG_CXX=false
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LANG_ADA=false
|
||||
|
||||
LIBGOMP="false"
|
||||
LIBGCC="false"
|
||||
LIBATOMIC="false"
|
||||
LIBITM="false"
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
if [ "$BOOTSTRAP" = nolibc ]; then
|
||||
LANG_CXX=false
|
||||
LANG_ADA=false
|
||||
LIBGCC=false
|
||||
_builddir="$srcdir/build-cross-pass2"
|
||||
else
|
||||
_builddir="$srcdir/build-cross-final"
|
||||
fi
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
LIBGOMP=false
|
||||
LIBATOMIC=false
|
||||
LIBITM=false
|
||||
|
||||
# reset target flags (should be set in crosscreate abuild)
|
||||
# fixup flags. seems gcc treats CPPFLAGS as global without
|
||||
# _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
|
||||
export CFLAGS="$CPPFLAGS $CFLAGS"
|
||||
export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
|
||||
unset CPPFLAGS
|
||||
export CFLAGS_FOR_TARGET=" "
|
||||
export CXXFLAGS_FOR_TARGET=" "
|
||||
export LDFLAGS_FOR_TARGET=" "
|
||||
|
||||
STRIP_FOR_TARGET="$CTARGET-strip"
|
||||
elif [ "$CBUILD" != "$CHOST" ]; then
|
||||
# fixup flags. seems gcc treats CPPFLAGS as global without
|
||||
# _FOR_xxx variants. wrap it in CFLAGS and CXXFLAGS.
|
||||
export CFLAGS="$CPPFLAGS $CFLAGS"
|
||||
export CXXFLAGS="$CPPFLAGS $CXXFLAGS"
|
||||
unset CPPFLAGS
|
||||
|
||||
# reset flags and cc for build
|
||||
export CC_FOR_BUILD="gcc"
|
||||
export CXX_FOR_BUILD="g++"
|
||||
export CFLAGS_FOR_BUILD=" "
|
||||
export CXXFLAGS_FOR_BUILD=" "
|
||||
export LDFLAGS_FOR_BUILD=" "
|
||||
export CFLAGS_FOR_TARGET=" "
|
||||
export CXXFLAGS_FOR_TARGET=" "
|
||||
export LDFLAGS_FOR_TARGET=" "
|
||||
|
||||
# Languages that do not need bootstrapping
|
||||
LANG_OBJC=false
|
||||
LANG_JAVA=false
|
||||
LANG_GO=false
|
||||
LANG_FORTRAN=false
|
||||
|
||||
STRIP_FOR_TARGET=${CROSS_COMPILE}strip
|
||||
_builddir="$srcdir/build-cross-native"
|
||||
else
|
||||
STRIP_FOR_TARGET=${CROSS_COMPILE}strip
|
||||
_builddir="$srcdir/build"
|
||||
fi
|
||||
|
||||
# Go needs {set,make,swap}context, unimplemented in musl
|
||||
[ "$CTARGET_LIBC" = musl ] && LANG_GO=false
|
||||
|
||||
# libitm has TEXTRELs in ARM build, so disable for now
|
||||
case "$CTARGET_ARCH" in
|
||||
arm*) LIBITM=false ;;
|
||||
mips*) LIBITM=false ;;
|
||||
esac
|
||||
|
||||
# Fortran uses libquadmath if toolchain has __float128
|
||||
# currently on x86, x86_64 and ia64
|
||||
LIBQUADMATH=$LANG_FORTRAN
|
||||
case "$CTARGET_ARCH" in
|
||||
x86 | x86_64) LIBQUADMATH=$LANG_FORTRAN ;;
|
||||
*) LIBQUADMATH=false ;;
|
||||
esac
|
||||
|
||||
# libatomic is a dependency for openvswitch
|
||||
$LIBATOMIC && subpackages="$subpackages libatomic::$CTARGET_ARCH"
|
||||
$LIBGCC && subpackages="$subpackages libgcc::$CTARGET_ARCH"
|
||||
$LIBQUADMATH && subpackages="$subpackages libquadmath::$CTARGET_ARCH"
|
||||
if $LIBGOMP; then
|
||||
depends="$depends libgomp=$_gccrel"
|
||||
subpackages="$subpackages libgomp::$CTARGET_ARCH"
|
||||
fi
|
||||
|
||||
_languages=c
|
||||
if $LANG_CXX; then
|
||||
_languages="$_languages,c++"
|
||||
fi
|
||||
if $LANG_OBJC; then
|
||||
subpackages="$subpackages libobjc::$CTARGET_ARCH gcc-objc$_target:objc"
|
||||
_languages="$_languages,objc"
|
||||
fi
|
||||
if $LANG_JAVA; then
|
||||
subpackages="$subpackages libgcj::$CTARGET_ARCH gcc-java$_target:java"
|
||||
_languages="$_languages,java"
|
||||
fi
|
||||
if $LANG_GO; then
|
||||
subpackages="$subpackages libgo::$CTARGET_ARCH gcc-go$_target:go"
|
||||
_languages="$_languages,go"
|
||||
fi
|
||||
if $LANG_FORTRAN; then
|
||||
subpackages="$subpackages libgfortran::$CTARGET_ARCH gfortran$_target:gfortran"
|
||||
_languages="$_languages,fortran"
|
||||
fi
|
||||
if $LANG_ADA; then
|
||||
subpackages="$subpackages libgnat::$CTARGET_ARCH gcc-gnat$_target:gnat"
|
||||
_languages="$_languages,ada"
|
||||
makedepends_build="$makedepends_build gcc-gnat gcc-gnat$_cross"
|
||||
fi
|
||||
makedepends="$makedepends_build $makedepends_host"
|
||||
|
||||
source="http://gcc.gnu.org/pub/gcc/releases/gcc-${_pkgbase:-$_pkgver}/gcc-${_pkgbase:-$_pkgver}.tar.gz
|
||||
http://sourceware.org/pub/java/ecj-4.9.jar
|
||||
|
||||
01_all_gcc49_configure.patch
|
||||
02_all_gcc48_config.in.patch
|
||||
03_all_gcc49_Makefile.in.patch
|
||||
05_all_gcc48_gcc.c.patch
|
||||
16_all_gcc47_nopie_option.patch
|
||||
20_all_gcc49_config_crtbeginp.patch
|
||||
24_all_gcc49_invoke.texi.patch
|
||||
34_all_gcc48_config_i386.patch
|
||||
35_all_gcc48_config_arm.patch
|
||||
40_all_gcc49_config_esp.patch
|
||||
41_all_gcc49_config_esp_alpine.patch
|
||||
|
||||
10_all_default-fortify-source.patch
|
||||
12_all_default-warn-trampolines.patch
|
||||
15_all_libgfortran-Werror.patch
|
||||
16_all_libgomp-Werror.patch
|
||||
48_all_x86_pr53113_libitm-avx.patch
|
||||
50_all_libiberty-asprintf.patch
|
||||
51_all_libiberty-pic.patch
|
||||
67_all_gcc-poison-system-directories.patch
|
||||
|
||||
gcc49-cloog-dl.patch
|
||||
gcc-ice-hack.patch
|
||||
gcc-spec-env.patch
|
||||
libgcc-always-build-gcceh.a.patch
|
||||
gcc-4.6-pr32219.patch
|
||||
gcc-4.9-musl.patch
|
||||
gcc-4.8-musl-fix-iteratephdr.patch
|
||||
gcc-4.8-musl-libssp.patch
|
||||
gcc-4.9-musl-fortify.patch
|
||||
boehm-gc-uclibc.patch
|
||||
boehm-gc-musl.patch
|
||||
gcc-pure64.patch
|
||||
fix-gcj-musl.patch
|
||||
fix-gcj-iconv-musl.patch
|
||||
musl-posix_memalign-c++.patch
|
||||
pr63740.patch
|
||||
pr64037.patch
|
||||
|
||||
gcc-4.8-build-args.patch
|
||||
fix-cxxflags-passing.patch
|
||||
fix-cxxflags-for-target.patch
|
||||
ada-no-pie.patch
|
||||
ada-fixes.patch
|
||||
ada-shared.patch
|
||||
ada-musl.patch
|
||||
|
||||
vanilla.specs
|
||||
hardenednossp.specs
|
||||
hardenednopie.specs
|
||||
hardenednopiessp.specs
|
||||
"
|
||||
|
||||
# we build out-of-tree
|
||||
_gccdir="$srcdir"/gcc-${_pkgbase:-$_pkgver}
|
||||
_gcclibdir=/usr/lib/gcc/${CTARGET}/$_pkgver
|
||||
_gcclibexec=/usr/libexec/gcc/${CTARGET}/$_pkgver
|
||||
|
||||
prepare() {
|
||||
cd "$_gccdir"
|
||||
|
||||
_err=
|
||||
for i in $source; do
|
||||
case "$i" in
|
||||
*.patch)
|
||||
msg "Applying $i"
|
||||
patch -p1 -F3 -i "$srcdir"/$i || _err="$_err $i"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "$_err" ]; then
|
||||
error "The following patches failed:"
|
||||
for i in $_err; do
|
||||
echo " $i"
|
||||
done
|
||||
return 1
|
||||
fi
|
||||
|
||||
# see http://gcc.gnu.org/ml/java/2008-04/msg00027.html
|
||||
mv "$srcdir"/ecj-*.jar ecj.jar
|
||||
|
||||
echo ${_pkgver} > gcc/BASE-VER
|
||||
}
|
||||
|
||||
build() {
|
||||
local _arch_configure=
|
||||
local _libc_configure=
|
||||
local _bootstrap_configure=
|
||||
local _symvers=
|
||||
|
||||
cd "$_gccdir"
|
||||
|
||||
case "$CTARGET" in
|
||||
aarch64-*-*-*) _arch_configure="--with-arch=armv8-a --with-abi=lp64";;
|
||||
armv5-*-*-*eabi) _arch_configure="--with-arch=armv5te --with-tune=arm926ej-s --with-float=soft --with-abi=aapcs-linux";;
|
||||
armv6-*-*-*eabihf) _arch_configure="--with-arch=armv6zk --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=hard --with-abi=aapcs-linux";;
|
||||
armv7-*-*-*eabihf) _arch_configure="--with-arch=armv7-a --with-tune=generic-armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-abi=aapcs-linux --with-mode=thumb";;
|
||||
mips-*-*-*) _arch_configure="--with-arch=mips32 --with-mips-plt --with-float=soft --with-abi=32";;
|
||||
mips64-*-*-*) _arch_configure="--with-arch=mips3 --with-tune=mips64 --with-mips-plt --with-float=soft --with-abi=64";;
|
||||
mips64el-*-*-*) _arch_configure="--with-arch=mips3 --with-tune=mips64 --with-mips-plt --with-float=soft --with-abi=64";;
|
||||
mipsel-*-*-*) _arch_configure="--with-arch=mips32 --with-mips-plt --with-float=soft --with-abi=32";;
|
||||
powerpc-*-*-*) _arch_configure="--enable-secureplt --enable-decimal-float=no";;
|
||||
powerpc64*-*-*-*) _arch_configure="--with-abi=elfv2 --enable-secureplt --enable-decimal-float=no --enable-targets=powerpcle-linux";;
|
||||
i486-*-*-*) _arch_configure="--with-arch=i486 --with-tune=generic --enable-cld";;
|
||||
i586-*-*-*) _arch_configure="--with-arch=i586 --with-tune=generic --enable-cld";;
|
||||
s390x-*-*-*) _arch_configure="--with-arch=z196 --with-tune=zEC12 --with-zarch --with-long-double-128 --enable-decimal-float";;
|
||||
esac
|
||||
|
||||
case "$CTARGET_ARCH" in
|
||||
mips*) _hash_style_configure="--with-linker-hash-style=sysv" ;;
|
||||
*) _hash_style_configure="--with-linker-hash-style=gnu" ;;
|
||||
esac
|
||||
|
||||
case "$CTARGET_LIBC" in
|
||||
musl)
|
||||
# musl does not support mudflap, or libsanitizer
|
||||
# libmpx uses secure_getenv and struct _libc_fpstate not present in musl
|
||||
# alpine musl provides libssp_nonshared.a, so we don't need libssp either
|
||||
_libc_configure="--disable-libssp --disable-libmpx --disable-libmudflap --disable-libsanitizer"
|
||||
_symvers="--disable-symvers"
|
||||
export libat_cv_have_ifunc=no
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
case "$BOOTSTRAP" in
|
||||
nolibc) _bootstrap_configure="--with-newlib --disable-shared --enable-threads=no" ;;
|
||||
*) _bootstrap_configure="--enable-shared --enable-threads --enable-tls" ;;
|
||||
esac
|
||||
|
||||
$LIBGOMP || _bootstrap_configure="$_bootstrap_configure --disable-libgomp"
|
||||
$LIBATOMIC || _bootstrap_configure="$_bootstrap_configure --disable-libatomic"
|
||||
$LIBITM || _bootstrap_configure="$_bootstrap_configure --disable-libitm"
|
||||
$LIBQUADMATH || _arch_configure="$_arch_configure --disable-libquadmath"
|
||||
|
||||
msg "Building the following:"
|
||||
echo ""
|
||||
echo " CBUILD=$CBUILD"
|
||||
echo " CHOST=$CHOST"
|
||||
echo " CTARGET=$CTARGET"
|
||||
echo " CTARGET_ARCH=$CTARGET_ARCH"
|
||||
echo " CTARGET_LIBC=$CTARGET_LIBC"
|
||||
echo " languages=$_languages"
|
||||
echo " arch_configure=$_arch_configure"
|
||||
echo " libc_configure=$_libc_configure"
|
||||
echo " cross_configure=$_cross_configure"
|
||||
echo " bootstrap_configure=$_bootstrap_configure"
|
||||
echo " hash_style_configure=$_hash_style_configure"
|
||||
echo ""
|
||||
|
||||
mkdir -p "$_builddir"
|
||||
cd "$_builddir"
|
||||
"$_gccdir"/configure --prefix=/usr/gcc4 \
|
||||
--mandir=/usr/share/man \
|
||||
--infodir=/usr/share/info \
|
||||
--build=${CBUILD} \
|
||||
--host=${CHOST} \
|
||||
--target=${CTARGET} \
|
||||
--with-pkgversion="postmarketOS ${_pkgver}" \
|
||||
--enable-checking=release \
|
||||
--disable-fixed-point \
|
||||
--disable-libstdcxx-pch \
|
||||
\
|
||||
--disable-bootstrap \
|
||||
--disable-libstdcxx \
|
||||
\
|
||||
--disable-multilib \
|
||||
--disable-nls \
|
||||
--disable-werror \
|
||||
$_symvers \
|
||||
--enable-__cxa_atexit \
|
||||
--enable-default-pie \
|
||||
--enable-cloog-backend \
|
||||
--enable-languages=$_languages \
|
||||
$_arch_configure \
|
||||
$_libc_configure \
|
||||
$_cross_configure \
|
||||
$_bootstrap_configure \
|
||||
--with-system-zlib \
|
||||
$_hash_style_configure
|
||||
make
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "$_builddir"
|
||||
make -j1 DESTDIR="${pkgdir}" install
|
||||
|
||||
local prefix=/usr/gcc4
|
||||
if [ "$CHOST" = "$CTARGET" ]; then
|
||||
# gcc symlinks
|
||||
ln -s gcc "$pkgdir$prefix"/bin/cc
|
||||
ln -s gcc "$pkgdir$prefix"/bin/gcc4
|
||||
fi
|
||||
|
||||
# remove docs
|
||||
rm -r "$pkgdir/usr/share/"
|
||||
|
||||
# we dont support gcj -static
|
||||
# and saving 35MB is not bad.
|
||||
find "$pkgdir" -name libgcj.a -o -name libgtkpeer.a \
|
||||
-o -name libgjsmalsa.a -o -name libgcj-tools.a \
|
||||
-o -name libjvm.a -o -name libgij.a -o -name libgcj_bc.a \
|
||||
-o -name libjavamath.a \
|
||||
| xargs rm -f
|
||||
|
||||
# strip debug info from some static libs
|
||||
${STRIP_FOR_TARGET} -g `find "$pkgdir" \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
|
||||
-o -name libmudflap.a -o -name libmudflapth.a \
|
||||
-o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
|
||||
-o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
|
||||
-o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
|
||||
-a -type f`
|
||||
|
||||
if $LANG_JAVA; then
|
||||
sed -i -e 's/lib: /&%{static:%eJava programs cannot be linked statically}/' \
|
||||
"$pkgdir"/usr/lib/libgcj.spec
|
||||
fi
|
||||
|
||||
if [ "$CHOST" != "$CTARGET" ]; then
|
||||
# cross-gcc: remove any files that would conflict with the
|
||||
# native gcc package
|
||||
rm -rf "$pkgdir$prefix"/bin/cc \
|
||||
"$pkgdir$prefix"/include \
|
||||
"$pkgdir$prefix"/share
|
||||
# libcc1 does not depend on target, don't ship it
|
||||
rm -rf "$pkgdir$prefix"/lib/libcc1.so*
|
||||
|
||||
# fixup gcc library symlinks to be linker scripts so
|
||||
# linker finds the libs from relocated sysroot
|
||||
for so in "$pkgdir$prefix"/$CTARGET/lib/*.so; do
|
||||
if [ -h "$so" ]; then
|
||||
local _real=$(basename $(readlink "$so"))
|
||||
rm -f "$so"
|
||||
echo "GROUP ($_real)" > "$so"
|
||||
fi
|
||||
done
|
||||
|
||||
# Link binutils binaries to /usr/gcc4
|
||||
# This is the path GCC4 will look for them, if we don't create these
|
||||
# symlinks, it will use the native binutils instead (which is of course
|
||||
# failing and causes many headaches). See also: '-B' in 'man gcc'.
|
||||
echo "Link binutils binaries to /usr/gcc4"
|
||||
mkdir -p "$pkgdir$prefix/$CTARGET/bin"
|
||||
for i in "as" "ld"; do
|
||||
ln -sv "/usr/$CTARGET/bin/$i" \
|
||||
"$pkgdir$prefix/$CTARGET/bin/$i"
|
||||
done
|
||||
|
||||
# Link binutils to gcc4-* (so 'CROSS_COMPILE=gcc4-...' works)
|
||||
echo "Link binutils to gcc4-*"
|
||||
mkdir -p "$pkgdir/usr/bin"
|
||||
for i in "elfedit" "gprof" "addr2line" "strings" "as" "ld" "size" "ld.bfd" \
|
||||
"readelf" "nm" "ar" "strip" "dwp" "objdump" "objcopy" "c++filt" "ranlib"; do
|
||||
ln -sv "/usr/bin/$CTARGET-$i" \
|
||||
"$pkgdir/usr/bin/gcc4-$CTARGET-$i"
|
||||
done
|
||||
fi
|
||||
|
||||
# Link all binaries from /usr/gcc4/bin/* to /usr/bin/gcc4-*
|
||||
echo "Link all gcc binaries to /usr/bin/gcc4-*"
|
||||
mkdir -p "$pkgdir"/usr/bin
|
||||
cd "$pkgdir$prefix/bin/"
|
||||
for i in *; do
|
||||
ln -sv "$prefix/bin/$i" "$pkgdir/usr/bin/gcc4-$i"
|
||||
done
|
||||
}
|
||||
|
||||
sha512sums="35a1386ae2b8629cd464383fbb3c61e94a07f3691f48b8029b97cc62a60c792ffb870aad2343b2ad8185bf46f77e1e1dd62309ecdadc42f919874c6e2c58b936 gcc-4.9.2.tar.gz
|
||||
28f8c6fdbcb19e950b1d0bafb3bcc7a8cba87bc673aa6027cece116599cdee80f0cf5e95a1440544890239f5c754e8a93ab46d9daedd937faef445d7ea33b226 ecj-4.9.jar
|
||||
618a8d037ccad15e60182acc9c85ba844cb9b5800a22ece0b814e43541b01b4e390a2847f86debb351f4b05580241747fde87e86a17060744e7bb2b9a3dc5bd4 01_all_gcc49_configure.patch
|
||||
21770259c7916e55568027926e4a543eea468b04436cc61c28f749be5a6635c48e68b7924a8eb19a76733a9d2f00921ba06faddaedbf14b1cdad5ab1810cc6c6 02_all_gcc48_config.in.patch
|
||||
3afe2cc407b5440333d9517daca3257e08a7318695d20645a9186cafac53afa6d0c075af67398ff7abd06250567cc6c751e6dabb65a310eef9a5d981e910aa25 03_all_gcc49_Makefile.in.patch
|
||||
e98cc321d71e5bb62c6116b30ed6f11044bda440e238026a83dec63f04a0587440bdae50ec211b07976fcd9deb329f9dd1dac1317dae5003088a8a8bddbb97c1 05_all_gcc48_gcc.c.patch
|
||||
98a4da3137177c5cad7dd7d35ad39cd416aa36f07867714e09ab8c0d8b759d2659063aa87b16ac1b708a283afd2ac54e20b327a32d1147720996d7bc11dcbd63 16_all_gcc47_nopie_option.patch
|
||||
8fc6f2fd921c560fb1d7ba17b5cef4ea8071ee6909d372e41201667c011f948560fa543b1246cf55c0009622abf0dbc0bd79f718a853f2f0b59290e3df2c2968 20_all_gcc49_config_crtbeginp.patch
|
||||
32bfe9c1f6f566de72c93388622001ff4b95086ea6f476bdfc08403ea474f98212f7396bc75d88a79a053159f78dca922ec6f641f83d9959ad419b0d8901b504 24_all_gcc49_invoke.texi.patch
|
||||
dd5b9b30eb7716cb3c010ca79a83ed6219ff6e6f2557deb4e1d26cecac0f2b14c4ef7bf4dc5c2aec88aae5463763f5f64454b8a627ebd1d0a5c92984017025ad 34_all_gcc48_config_i386.patch
|
||||
8829f85323d8b11e26e3c19ced4a51875fc63f1483cfdc4d0f579a6cb37e1b6e23fcf33a87a574a6e0007250374ea46d117a136e73a40fbe43f0e39d9b2dd1a8 35_all_gcc48_config_arm.patch
|
||||
976994900d20a448b97fa91e1d758b6da6d8ad9121b3dbc2e8f66ff8006d8e496cd3dddc41394db6c4d20366d56fe12375b97f494d6fb9abb8e64ab626acc2ef 40_all_gcc49_config_esp.patch
|
||||
e2d027be2e76a64a607ae44566d163bcc2a03c9e14d5bd20cd8bb15c2e9e395d8964b747a6a9c49541a5d1613d721855b73d60cce7c834427b44788fa92d44dc 41_all_gcc49_config_esp_alpine.patch
|
||||
6cdac0741568b418af1e267a69b487e48a98e319f5ec8ab2bad293f2520ceced40c7df7ddef84963f5b101b94f34e441574c501ef3993ded097beb7c9d3b205f 10_all_default-fortify-source.patch
|
||||
5069e4b741488913a646a9b5d871af8e7f7a606158ea09305d0ddd46257c5b659770627bc2ca3abeaae039da1717b3ba6c9cd90554a441da74eb4ecf24c13074 12_all_default-warn-trampolines.patch
|
||||
c18a99b7303a734fe4dca9d4e90e21d18e5bd71c7d91e1a26c86b1354c73f567590a875941bfe64ce59f0393023b91c606c96b30885c55b98a790c3ab0c84ca7 15_all_libgfortran-Werror.patch
|
||||
433404fd9bfa172d69fff4a5505e8648cbbbf5f052d2b4235608ff7af0c4063d557d25d80c85c5bd0d1e1ed64b568e7bbc0cdbce11cc74db4c0189af3a01634a 16_all_libgomp-Werror.patch
|
||||
ff16f259fff8d78230593eee8641eab5a72c5c517c6ac5f09597edbc624d964b33f185a0dd5772d6029f757a5edb66431b3eab77dac71e76a0ef155bb7443d2c 48_all_x86_pr53113_libitm-avx.patch
|
||||
c6c314a2d24531b4286436dec7189f83e443c4cfa9b88339a4c324c2d40812d766ed44dcfd4a0c3b67695bb76969a4d8a9784ff95876ceba23def305ef8a48f8 50_all_libiberty-asprintf.patch
|
||||
0a0bc72b9366158f5d23fff1928e756fdd212433bac6ab1f00d632f241382820db8db5d475ddf11ea020eaf7e2e71b12fb9b1c3c870cf84adf6c2b16f15aabca 51_all_libiberty-pic.patch
|
||||
9b623a0b00254326596a56fff23dacc97e560823ebdf35698799fc7ab5e98984c71b7ddfceeb1589bbbdd1ba89a742cd7becf8f70f0081dfc26bcef4198b1b5d 67_all_gcc-poison-system-directories.patch
|
||||
9c6aa6d7f096c3aaebbe21d52967872195aea130b51d60a1934255b00bf1b23d24ec598c7763152f987f7999da9e56f512d169958666a3133641de3780a75d3f gcc49-cloog-dl.patch
|
||||
7242876e4bba34235f6f3ea960d72439638bd31547284ca96cb94c97a2d46dd7b38a3709fd159cf86efa1e8a44e3e9125fe82bc3a1cc71153591755827d6c9fd gcc-ice-hack.patch
|
||||
ce9c1f923e2c6d17347ec2d3d8482351a9644194b2753627389294d43bb4f11b9c2ef41eda1b46ad83d09901a0bedebd5b6b8a57a198646030ab61e8d2d8cb48 gcc-spec-env.patch
|
||||
d08d7ead2de0429e5c9055d5b029ec2be9a8c821d22cecaf9b51f633652c493333f98963d9267fa2fa63850c50ae5eefd5f59e5910ec10d20044dac082182a8b libgcc-always-build-gcceh.a.patch
|
||||
9fc5e32f2573ae67b6cf22119d636d10a47c42718635bceff7d457a93a3f664ae1ed10e154f70964ba2d26b0de04f879a8c05de6411112760d40433373dd0a80 gcc-4.6-pr32219.patch
|
||||
e2be926c0ed4d67587857652678253a2a4e42294009a0c4b9fc420e53b0e6d44d1a2c6c2c62db837bc010470e9e62eb4af1ba7f51ff507c41e40922cd022dd26 gcc-4.9-musl.patch
|
||||
b5b0210dfaccfe0b06f0a9090666b1fae2a3faa4140b7930146b29531f0da9beb1f2c1f7e7bc2bd29179f9fe05dc30e246e96220b8ff75a90f75e8350c9058a1 gcc-4.8-musl-fix-iteratephdr.patch
|
||||
e6d9b103c128e5d4eca515b1496d78b05708de770597c883daddd95ea41e77b5ef1be613b989357cc870a7efd9e43b011022c2d302e7056cff7b69e764906ff2 gcc-4.8-musl-libssp.patch
|
||||
600fe5098dc54edaa9808fd5717af9dec058953f9ad37d49cfba1db4f7e9a7a8f02019342f75157fc575946fa693259422184de27b7ecc8386d9f3ecc0f7cc5d gcc-4.9-musl-fortify.patch
|
||||
e1d6a450dfb40b134ad7f759c4c10174d2490b0093fe47cb33479245f26a3a8c54ebcf6255943c0ccfcb5095600d1c05e530baeed35609c8ffe75caac8e57c49 boehm-gc-uclibc.patch
|
||||
bda845a6aa1854d2c883910b115f79ccfa93dfc2b5eac69a3a236d83eb34cadc140731d616ffc24698c7abc8878dd15f231bcc5119f1860e575a120b311706c7 boehm-gc-musl.patch
|
||||
4a5aeff0399782c752e6e3f2f48d984b2056dfb5d229b23a24eee1562d241339989b2203f139821cfc03c9b25c9bd7da6ccbbdc7a09d242e4de7f0d606c6f63c gcc-pure64.patch
|
||||
f89ddeb21bc8f97e6a850a6b70b4501a8f3e49a4bc8cc82897488decda5d98ad01cb7f6c8b392d452e9579924a523bc75da6e0648c1c976d42e40af48b10343b fix-gcj-musl.patch
|
||||
54d67cc008b735e47771314171930c5d8b8f5f5dc97fcf4214824c105c808f3e75d22d5a4fdf5068ed0457fa0d46c60cfb442e276259a4a5e9b8722a027d18e6 fix-gcj-iconv-musl.patch
|
||||
7de81fc8c7eb36690949eb30082515454978440a8f389b12407ac5e9125ef6824d6059ffb5b063ab1ccc6c4827b1a6a0984b538f056b85e3171800a6f723ec8b musl-posix_memalign-c++.patch
|
||||
095281d940ad7504ed7071cc9800d81db33eb4aa5465696ef7b12bf1213dbdfa701f4392095c5167b331c38219b19d25a0798524b319f1c77aa8522d76d8c92c pr63740.patch
|
||||
efc04b179d41b484eddddc56d0e442634995d56c994e6295ae09b9856ab46649d5f45f51ea84494ab39df41c213772d0e68aee67e66fdf340f0a647b55629ced pr64037.patch
|
||||
abe9aaf9aa956058d0386a4396a511d176a46bb3906b90e952383646cdc158cbeb0a5dc616a1ccb1ca7d49fd0b5e351532aa15a3b13362abbf1ca4266f54a687 gcc-4.8-build-args.patch
|
||||
35d6d59f0b7b968f282f56767c9e0823a7bdc5aa0d450aca50fbd802649a7ca608b47671244a3faa208a9b0d6832cabb5a22724157dc817b2c0ad63d09f93282 fix-cxxflags-passing.patch
|
||||
c731f4aaaa65c8950e1b2bd9331410f92d378fd8c7e718532dccaa27ee11984d51d74216c3611e89a802325b81d7f184116839dce2dab50cae9b643c20a82fe7 fix-cxxflags-for-target.patch
|
||||
e80a08de4b43fb71f7699bcce360cd99bc525dab20b9109e7152bd211def5d8e728f88771ed59f15ed520cbf069364debc4f822c10a1abf7e2c7badd67e1c83c ada-no-pie.patch
|
||||
b37195a126476775e2ef16e0adc9173664c514339fb319f628debd8a4133fa53e022278387c68fc260cf813e58602617e9e629ea8177133bfdf5972398fe1c55 ada-fixes.patch
|
||||
3f5bc334d9f73d06f5f7c876738d02356acdd08958bea0e4d2095ebf15c2c2ec4e411abdae0297505ae9a1699ca01b17338e853184e84663203b192b0d35fc19 ada-shared.patch
|
||||
76d7d35066534c332956a88da84a95c8c54c6e0742c3c46e6b256395bf67f7c167b5ecd47fbed697fb1c9d7a41016c99e7dcd06465516a0e963707a0eab8f8b6 ada-musl.patch
|
||||
83a0996a48096032bcc674a6d28524f1cd2d81837621ebe4c15b5aedbd551c77ce5576b6307adb673ef0e4ac0431d935ad6a427edca2af5c21b6be9176bfaddb vanilla.specs
|
||||
e4d38905527c500c61c421d782a8ac6ef2b034b15fd81d868486ac330a70922937d3c47e0684e9f3250744569b56a8df199499a4a5c107a6d544dca84458dc12 hardenednossp.specs
|
||||
b56f7c308c5aefd0cfc647abd75939508a6640c53fce7c19da7c7d8ef4405d29b0d88800117fc7ff8d0022b035d511fb6d478e745bb2ed12a1b63f9f8cf3e168 hardenednopie.specs
|
||||
f5ac7282201006548ed2bd835234af64d6f79f13f0b9a3410f5c794537e0ea91601361ae72180f49870b6b0f9af5f16002c86660feb94df346b9b1d9602e9d3a hardenednopiessp.specs"
|
44
cross/gcc4-armv7/ada-fixes.patch
Normal file
44
cross/gcc4-armv7/ada-fixes.patch
Normal file
|
@ -0,0 +1,44 @@
|
|||
--- gcc-4.8.1/gcc/ada/terminals.c.orig
|
||||
+++ gcc-4.8.1/gcc/ada/terminals.c
|
||||
@@ -984,13 +984,6 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
-/* On some system termio is either absent or including it will disable termios
|
||||
- (HP-UX) */
|
||||
-#if ! defined (__hpux__) && ! defined (FREEBSD) && \
|
||||
- ! defined (__APPLE__) && ! defined(__rtems__)
|
||||
-# include <termio.h>
|
||||
-#endif
|
||||
-
|
||||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
@@ -1078,7 +1078,7 @@
|
||||
char *slave_name = NULL;
|
||||
|
||||
#ifdef USE_GETPT
|
||||
- master_fd = getpt ();
|
||||
+ master_fd = posix_openpt (O_RDWR);
|
||||
#elif defined (USE_OPENPTY)
|
||||
status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
|
||||
#elif defined (USE_CLONE_DEVICE)
|
||||
@@ -1179,7 +1170,7 @@
|
||||
int status;
|
||||
|
||||
/* ensure that s is filled with 0 */
|
||||
- bzero (&s, sizeof (&s));
|
||||
+ bzero (&s, sizeof (s));
|
||||
|
||||
/* Get the current terminal settings */
|
||||
status = tcgetattr (fd, &s);
|
||||
--- gcc-4.8.1/gcc/ada/cal.c.orig
|
||||
+++ gcc-4.8.1/gcc/ada/cal.c
|
||||
@@ -65,6 +65,7 @@
|
||||
#include <time.h>
|
||||
#else
|
||||
#include <sys/time.h>
|
||||
+#include <time.h>
|
||||
#endif
|
||||
|
||||
#ifdef __MINGW32__
|
136
cross/gcc4-armv7/ada-musl.patch
Normal file
136
cross/gcc4-armv7/ada-musl.patch
Normal file
|
@ -0,0 +1,136 @@
|
|||
diff -ru gcc-4.9.2/gcc/ada/adaint.c gcc-4.9.2/gcc/ada/adaint.c
|
||||
--- gcc-4.9.2/gcc/ada/adaint.c 2014-02-24 18:51:58.000000000 -0200
|
||||
+++ gcc-4.9.2/gcc/ada/adaint.c 2014-12-10 12:05:44.621173474 -0200
|
||||
@@ -67,6 +67,11 @@
|
||||
#include <sys/pstat.h>
|
||||
#endif
|
||||
|
||||
+#if defined (linux)
|
||||
+#define _GNU_SOURCE 1
|
||||
+#include <sched.h>
|
||||
+#endif
|
||||
+
|
||||
#ifdef VMS
|
||||
#define _POSIX_EXIT 1
|
||||
#define HOST_EXECUTABLE_SUFFIX ".exe"
|
||||
@@ -3891,8 +3896,6 @@
|
||||
return (void *) syscall (__NR_gettid);
|
||||
}
|
||||
|
||||
-#include <sched.h>
|
||||
-
|
||||
/* glibc versions earlier than 2.7 do not define the routines to handle
|
||||
dynamically allocated CPU sets. For these targets, we use the static
|
||||
versions. */
|
||||
@@ -3901,7 +3904,7 @@
|
||||
|
||||
/* Dynamic cpu sets */
|
||||
|
||||
-cpu_set_t *
|
||||
+void *
|
||||
__gnat_cpu_alloc (size_t count)
|
||||
{
|
||||
return CPU_ALLOC (count);
|
||||
@@ -3914,33 +3917,33 @@
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_free (cpu_set_t *set)
|
||||
+__gnat_cpu_free (void *set)
|
||||
{
|
||||
- CPU_FREE (set);
|
||||
+ CPU_FREE ((cpu_set_t *) set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_zero (size_t count, cpu_set_t *set)
|
||||
+__gnat_cpu_zero (size_t count, void *set)
|
||||
{
|
||||
- CPU_ZERO_S (count, set);
|
||||
+ CPU_ZERO_S (count, (cpu_set_t *) set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_set (int cpu, size_t count, cpu_set_t *set)
|
||||
+__gnat_cpu_set (int cpu, size_t count, void *set)
|
||||
{
|
||||
/* Ada handles CPU numbers starting from 1, while C identifies the first
|
||||
CPU by a 0, so we need to adjust. */
|
||||
- CPU_SET_S (cpu - 1, count, set);
|
||||
+ CPU_SET_S (cpu - 1, count, (cpu_set_t *) set);
|
||||
}
|
||||
|
||||
#else /* !CPU_ALLOC */
|
||||
|
||||
/* Static cpu sets */
|
||||
|
||||
-cpu_set_t *
|
||||
+void *
|
||||
__gnat_cpu_alloc (size_t count ATTRIBUTE_UNUSED)
|
||||
{
|
||||
- return (cpu_set_t *) xmalloc (sizeof (cpu_set_t));
|
||||
+ return xmalloc (sizeof (cpu_set_t));
|
||||
}
|
||||
|
||||
size_t
|
||||
@@ -3950,23 +3953,23 @@
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_free (cpu_set_t *set)
|
||||
+__gnat_cpu_free (void *set)
|
||||
{
|
||||
free (set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
|
||||
+__gnat_cpu_zero (size_t count ATTRIBUTE_UNUSED, void *set)
|
||||
{
|
||||
- CPU_ZERO (set);
|
||||
+ CPU_ZERO ((cpu_set_t *) set);
|
||||
}
|
||||
|
||||
void
|
||||
-__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, cpu_set_t *set)
|
||||
+__gnat_cpu_set (int cpu, size_t count ATTRIBUTE_UNUSED, void *set)
|
||||
{
|
||||
/* Ada handles CPU numbers starting from 1, while C identifies the first
|
||||
CPU by a 0, so we need to adjust. */
|
||||
- CPU_SET (cpu - 1, set);
|
||||
+ CPU_SET (cpu - 1, (cpu_set_t *) set);
|
||||
}
|
||||
#endif /* !CPU_ALLOC */
|
||||
#endif /* linux */
|
||||
diff -ru gcc-4.9.2/gcc/ada/adaint.h gcc-4.9.2/gcc/ada/adaint.h
|
||||
--- gcc-4.9.2/gcc/ada/adaint.h 2014-02-24 18:51:58.000000000 -0200
|
||||
+++ gcc-4.9.2/gcc/ada/adaint.h 2014-12-10 12:03:48.377834174 -0200
|
||||
@@ -266,13 +266,11 @@
|
||||
|
||||
/* Routines for interface to required CPU set primitives */
|
||||
|
||||
-#include <sched.h>
|
||||
-
|
||||
-extern cpu_set_t *__gnat_cpu_alloc (size_t);
|
||||
+extern void * __gnat_cpu_alloc (size_t);
|
||||
extern size_t __gnat_cpu_alloc_size (size_t);
|
||||
-extern void __gnat_cpu_free (cpu_set_t *);
|
||||
-extern void __gnat_cpu_zero (size_t, cpu_set_t *);
|
||||
-extern void __gnat_cpu_set (int, size_t, cpu_set_t *);
|
||||
+extern void __gnat_cpu_free (void *);
|
||||
+extern void __gnat_cpu_zero (size_t, void *);
|
||||
+extern void __gnat_cpu_set (int, size_t, void *);
|
||||
#endif
|
||||
|
||||
#if defined (_WIN32)
|
||||
--- gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in.orig 2014-12-11 08:16:33.364902456 -0200
|
||||
+++ gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in 2014-12-11 08:16:51.998236755 -0200
|
||||
@@ -1948,7 +1948,7 @@
|
||||
endif
|
||||
|
||||
# ARM linux, GNU eabi
|
||||
-ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
|
||||
+ifeq ($(strip $(filter-out arm% linux-gnueabi% linux-muslgnueabi%,$(target_cpu) $(target_os))),)
|
||||
LIBGNAT_TARGET_PAIRS = \
|
||||
a-intnam.ads<a-intnam-linux.ads \
|
||||
s-inmaop.adb<s-inmaop-posix.adb \
|
66
cross/gcc4-armv7/ada-no-pie.patch
Normal file
66
cross/gcc4-armv7/ada-no-pie.patch
Normal file
|
@ -0,0 +1,66 @@
|
|||
--- gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in.orig 2014-05-17 13:13:12.000000000 -0300
|
||||
+++ gcc-4.9.2/gcc/ada/gcc-interface/Makefile.in 2014-12-10 12:01:32.304493855 -0200
|
||||
@@ -2570,23 +2570,23 @@
|
||||
gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
|
||||
gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
|
||||
$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
|
||||
../../gnatsym$(exeext): ../stamp-tools
|
||||
$(GNATMAKE) -c $(ADA_INCLUDES) gnatsym --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
@@ -2608,7 +2608,7 @@
|
||||
$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
|
||||
$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
|
||||
# Note the use of the "mv" command in order to allow gnatlink to be linked with
|
||||
# with the former version of gnatlink itself which cannot override itself.
|
||||
@@ -2618,7 +2618,7 @@
|
||||
$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
|
||||
$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
|
||||
$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
|
||||
- --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
|
||||
+ --GCC="$(GCC_LINK)" -fno-PIE $(TOOLS_LIBS)
|
||||
$(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext)
|
||||
|
||||
# Needs to be built with CC=gcc
|
||||
@@ -2627,10 +2627,10 @@
|
||||
|
||||
# Likewise for the tools
|
||||
../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS)
|
||||
- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
|
||||
+ +$(GCC_LINK) $(ALL_CFLAGS) -fno-PIE -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
|
||||
|
||||
../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS)
|
||||
- +$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
|
||||
+ +$(GCC_LINK) $(ALL_CFLAGS) -fno-PIE -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
|
||||
|
||||
../stamp-gnatlib-$(RTSDIR):
|
||||
@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
|
30
cross/gcc4-armv7/ada-shared.patch
Normal file
30
cross/gcc4-armv7/ada-shared.patch
Normal file
|
@ -0,0 +1,30 @@
|
|||
Index: b/gcc/ada/link.c
|
||||
===================================================================
|
||||
--- a/gcc/ada/link.c
|
||||
+++ b/gcc/ada/link.c
|
||||
@@ -105,9 +105,9 @@
|
||||
|
||||
#elif defined (__FreeBSD__)
|
||||
const char *__gnat_object_file_option = "-Wl,@";
|
||||
-const char *__gnat_run_path_option = "-Wl,-rpath,";
|
||||
-char __gnat_shared_libgnat_default = STATIC;
|
||||
-char __gnat_shared_libgcc_default = STATIC;
|
||||
+const char *__gnat_run_path_option = "";
|
||||
+char __gnat_shared_libgnat_default = SHARED;
|
||||
+char __gnat_shared_libgcc_default = SHARED;
|
||||
int __gnat_link_max = 8192;
|
||||
unsigned char __gnat_objlist_file_supported = 1;
|
||||
const char *__gnat_object_library_extension = ".a";
|
||||
@@ -127,9 +127,9 @@
|
||||
|
||||
#elif defined (linux) || defined(__GLIBC__)
|
||||
const char *__gnat_object_file_option = "-Wl,@";
|
||||
-const char *__gnat_run_path_option = "-Wl,-rpath,";
|
||||
-char __gnat_shared_libgnat_default = STATIC;
|
||||
-char __gnat_shared_libgcc_default = STATIC;
|
||||
+const char *__gnat_run_path_option = "";
|
||||
+char __gnat_shared_libgnat_default = SHARED;
|
||||
+char __gnat_shared_libgcc_default = SHARED;
|
||||
int __gnat_link_max = 8192;
|
||||
unsigned char __gnat_objlist_file_supported = 1;
|
||||
const char *__gnat_object_library_extension = ".a";
|
62
cross/gcc4-armv7/boehm-gc-musl.patch
Normal file
62
cross/gcc4-armv7/boehm-gc-musl.patch
Normal file
|
@ -0,0 +1,62 @@
|
|||
--- gcc-4.8.1/boehm-gc/os_dep.c.orig 2013-09-17 07:46:00.969884340 +0000
|
||||
+++ gcc-4.8.1/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 */
|
||||
--- gcc-4.8.2/boehm-gc/dyn_load.c.orig 2014-02-17 14:13:09.519850231 +0200
|
||||
+++ gcc-4.8.2/boehm-gc/dyn_load.c 2014-02-17 14:14:27.906093514 +0200
|
||||
@@ -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. */
|
||||
--- gcc-4.8.2/boehm-gc/include/private/gcconfig.h.orig 2014-02-17 14:14:36.026049422 +0200
|
||||
+++ gcc-4.8.2/boehm-gc/include/private/gcconfig.h 2014-02-17 14:17:11.345207887 +0200
|
||||
@@ -684,7 +684,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;
|
||||
@@ -1147,7 +1147,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;
|
||||
@@ -1367,7 +1367,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
|
||||
@@ -1858,7 +1858,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;
|
11
cross/gcc4-armv7/boehm-gc-uclibc.patch
Normal file
11
cross/gcc4-armv7/boehm-gc-uclibc.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- ./boehm-gc/include/gc.h.orig
|
||||
+++ ./boehm-gc/include/gc.h
|
||||
@@ -503,7 +503,7 @@
|
||||
#if defined(__linux__) || defined(__GLIBC__)
|
||||
# include <features.h>
|
||||
# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
|
||||
- && !defined(__ia64__)
|
||||
+ && !defined(__ia64__) && !defined(__UCLIBC__)
|
||||
# ifndef GC_HAVE_BUILTIN_BACKTRACE
|
||||
# define GC_HAVE_BUILTIN_BACKTRACE
|
||||
# endif
|
5
cross/gcc4-armv7/fix-cxxflags-for-target.patch
Normal file
5
cross/gcc4-armv7/fix-cxxflags-for-target.patch
Normal file
|
@ -0,0 +1,5 @@
|
|||
--- gcc-4.8.1/config/mt-gnu.orig
|
||||
+++ gcc-4.8.1/config/mt-gnu
|
||||
@@ -1 +1 @@
|
||||
-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
|
||||
+CXXFLAGS_FOR_TARGET := $(CXXFLAGS_FOR_TARGET) -D_GNU_SOURCE
|
10
cross/gcc4-armv7/fix-cxxflags-passing.patch
Normal file
10
cross/gcc4-armv7/fix-cxxflags-passing.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- gcc-4.8.1/Makefile.in.orig
|
||||
+++ gcc-4.8.1/Makefile.in
|
||||
@@ -169,6 +169,7 @@
|
||||
# built for the build system to override those in BASE_FLAGS_TO_PASSS.
|
||||
EXTRA_BUILD_FLAGS = \
|
||||
CFLAGS="$(CFLAGS_FOR_BUILD)" \
|
||||
+ CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
|
||||
LDFLAGS="$(LDFLAGS_FOR_BUILD)"
|
||||
|
||||
# This is the list of directories to built for the host system.
|
120
cross/gcc4-armv7/fix-gcj-iconv-musl.patch
Normal file
120
cross/gcc4-armv7/fix-gcj-iconv-musl.patch
Normal file
|
@ -0,0 +1,120 @@
|
|||
--- gcc-4.8.2/libjava/gnu/gcj/convert/natIconv.cc.orig 2014-02-18 18:46:14.897880526 +0200
|
||||
+++ gcc-4.8.2/libjava/gnu/gcj/convert/natIconv.cc 2014-02-18 18:50:08.766613550 +0200
|
||||
@@ -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
|
49
cross/gcc4-armv7/fix-gcj-musl.patch
Normal file
49
cross/gcc4-armv7/fix-gcj-musl.patch
Normal file
|
@ -0,0 +1,49 @@
|
|||
--- gcc-4.8.2/libjava/gnu/classpath/natSystemProperties.cc.orig 2014-02-18 10:55:08.617678779 +0200
|
||||
+++ gcc-4.8.2/libjava/gnu/classpath/natSystemProperties.cc 2014-02-18 10:56:31.927227453 +0200
|
||||
@@ -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';
|
||||
--- gcc-4.8.2/libjava/posix-threads.cc.orig 2014-02-18 13:22:01.789933726 +0200
|
||||
+++ gcc-4.8.2/libjava/posix-threads.cc 2014-02-18 13:29:50.924058875 +0200
|
||||
@@ -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));
|
25
cross/gcc4-armv7/gcc-4.6-pr32219.patch
Normal file
25
cross/gcc4-armv7/gcc-4.6-pr32219.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
--- ./gcc/varasm.c.orig
|
||||
+++ ./gcc/varasm.c
|
||||
@@ -6758,6 +6758,10 @@
|
||||
/* Static variables are always local. */
|
||||
else if (! TREE_PUBLIC (exp))
|
||||
local_p = true;
|
||||
+ /* Weak data can be overridden by a strong symbol
|
||||
+ in another module and so are not local. */
|
||||
+ else if (DECL_WEAK (exp))
|
||||
+ local_p = false;
|
||||
/* A variable is local if the user has said explicitly that it will
|
||||
be. */
|
||||
else if ((DECL_VISIBILITY_SPECIFIED (exp)
|
||||
@@ -6771,11 +6775,6 @@
|
||||
local. */
|
||||
else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
|
||||
local_p = true;
|
||||
- /* Default visibility weak data can be overridden by a strong symbol
|
||||
- in another module and so are not local. */
|
||||
- else if (DECL_WEAK (exp)
|
||||
- && !resolved_locally)
|
||||
- local_p = false;
|
||||
/* If PIC, then assume that any global name can be overridden by
|
||||
symbols resolved from other modules. */
|
||||
else if (shlib)
|
41
cross/gcc4-armv7/gcc-4.8-build-args.patch
Normal file
41
cross/gcc4-armv7/gcc-4.8-build-args.patch
Normal file
|
@ -0,0 +1,41 @@
|
|||
When cross compiling a target gcc, target flags may be used on the host
|
||||
|
||||
Configure identifies a number of warning flags (WARN_CFLAGS and
|
||||
WARN_CXXFLAGS) from the $CC value. The cross compiler may be different
|
||||
from the host compiler and may not support the same set of flags. This
|
||||
leads to problems such as:
|
||||
|
||||
cc1plus: error: unrecognized command line option "-Wno-narrowing"
|
||||
cc1plus: error: unrecognized command line option "-Wno-overlength-strings"
|
||||
|
||||
Work around this problem by removing the warning flags from the
|
||||
BUILD_CXXFLAGS value, in a way similar to the BUILD_CFLAGS.
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
|
||||
Index: gcc-4.8.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-4.8.0.orig/gcc/configure
|
||||
+++ gcc-4.8.0/gcc/configure
|
||||
@@ -11720,6 +10581,7 @@ STMP_FIXINC=stmp-fixinc
|
||||
if test x$build != x$host || test "x$coverage_flags" != x
|
||||
then
|
||||
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
|
||||
fi
|
||||
|
||||
Index: gcc-4.8.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-4.8.0.orig/gcc/configure.ac
|
||||
+++ gcc-4.8.0/gcc/configure.ac
|
||||
@@ -1901,6 +1901,7 @@ STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_F
|
||||
if test x$build != x$host || test "x$coverage_flags" != x
|
||||
then
|
||||
BUILD_CFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
+ BUILD_CXXFLAGS='$(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS_FOR_BUILD)'
|
||||
BUILD_LDFLAGS='$(LDFLAGS_FOR_BUILD)'
|
||||
fi
|
||||
|
22
cross/gcc4-armv7/gcc-4.8-musl-fix-iteratephdr.patch
Normal file
22
cross/gcc4-armv7/gcc-4.8-musl-fix-iteratephdr.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
--- gcc-4.8.1/gcc/configure.ac.orig 2013-09-25 04:08:25.046595893 +0000
|
||||
+++ gcc-4.8.1/gcc/configure.ac 2013-09-25 04:09:06.023263205 +0000
|
||||
@@ -4822,7 +4822,7 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
- *-linux-musl*)
|
||||
+ *-linux-musl* | *-linux-uclibc* | *-linux-gnu*)
|
||||
gcc_cv_target_dl_iterate_phdr=yes
|
||||
;;
|
||||
esac
|
||||
--- gcc-4.8.1/gcc/configure.orig 2013-09-25 04:08:17.826596392 +0000
|
||||
+++ gcc-4.8.1/gcc/configure 2013-09-25 04:09:24.393263387 +0000
|
||||
@@ -26923,7 +26923,7 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
- *-linux-musl*)
|
||||
+ *-linux-musl* | *-linux-uclibc* | *-linux-gnu*)
|
||||
gcc_cv_target_dl_iterate_phdr=yes
|
||||
;;
|
||||
esac
|
21
cross/gcc4-armv7/gcc-4.8-musl-libssp.patch
Normal file
21
cross/gcc4-armv7/gcc-4.8-musl-libssp.patch
Normal file
|
@ -0,0 +1,21 @@
|
|||
Author: Timo Teräs <timo.teras@iki.fi>
|
||||
|
||||
Alpine musl package provides libssp_nonshared.a. We link to it unconditionally,
|
||||
as otherwise we get link failures if some objects are -fstack-protector built
|
||||
and final link happens with -fno-stack-protector. This seems to be the common
|
||||
case when bootstrapping gcc, the piepatches do not seem to fully fix the
|
||||
crosstoolchain and bootstrap sequence wrt. stack-protector flag usage.
|
||||
|
||||
--- gcc-4.8.1/gcc/gcc.c.orig 2013-09-24 06:27:32.133894539 +0000
|
||||
+++ gcc-4.8.1/gcc/gcc.c 2013-09-24 06:29:35.790562854 +0000
|
||||
@@ -656,7 +656,9 @@
|
||||
#endif
|
||||
|
||||
#ifndef LINK_SSP_SPEC
|
||||
-#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define LINK_SSP_SPEC "-lssp_nonshared"
|
||||
+#elif defined(TARGET_LIBC_PROVIDES_SSP)
|
||||
#define LINK_SSP_SPEC "%{fstack-protector:}"
|
||||
#else
|
||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all:-lssp_nonshared -lssp}"
|
11
cross/gcc4-armv7/gcc-4.9-musl-fortify.patch
Normal file
11
cross/gcc4-armv7/gcc-4.9-musl-fortify.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- gcc-4.9.2/gcc/config/linux.h.orig 2015-03-09 13:27:13.289736710 +0000
|
||||
+++ gcc-4.9.2/gcc/config/linux.h 2015-03-09 13:29:32.295625046 +0000
|
||||
@@ -146,6 +146,8 @@
|
||||
|
||||
#ifdef NATIVE_SYSTEM_HEADER_DIR
|
||||
#define INCLUDE_DEFAULTS_MUSL_NATIVE \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR "/fortify", 0, 0, 0, 1, 2 }, \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR "/fortify", 0, 0, 0, 1, 0 }, \
|
||||
{ NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
|
||||
{ NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
|
||||
#else
|
703
cross/gcc4-armv7/gcc-4.9-musl.patch
Normal file
703
cross/gcc4-armv7/gcc-4.9-musl.patch
Normal file
|
@ -0,0 +1,703 @@
|
|||
# HG changeset patch
|
||||
# Parent 2f9df662aaaba956600bbdb123b6a227c8e64c59
|
||||
Use the generic implementation of libstdc++ primitives when we're on musl, not the glibc one.
|
||||
|
||||
diff -r 2f9df662aaab libstdc++-v3/configure.host
|
||||
--- a/libstdc++-v3/configure.host Tue May 20 11:00:21 2014 -0400
|
||||
+++ b/libstdc++-v3/configure.host Tue May 20 11:05:42 2014 -0400
|
||||
@@ -264,6 +264,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
|
||||
@@ -272,6 +279,9 @@
|
||||
os_include_dir="os/gnu-linux"
|
||||
fi
|
||||
;;
|
||||
+
|
||||
+ esac
|
||||
+ ;;
|
||||
hpux*)
|
||||
os_include_dir="os/hpux"
|
||||
;;
|
||||
# HG changeset patch
|
||||
# Parent b6f4ce05a3155dbcbc06d72aebdb67e2f8abc094
|
||||
Adding -mmusl as a musl libc specifier, and the necessary hacks for it to know how to find musl's dynamic linker.
|
||||
|
||||
diff -r b6f4ce05a315 gcc/config.gcc
|
||||
--- a/gcc/config.gcc Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/config.gcc Tue May 20 11:05:45 2014 -0400
|
||||
@@ -594,7 +594,7 @@
|
||||
esac
|
||||
|
||||
# Common C libraries.
|
||||
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
|
||||
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
|
||||
|
||||
# 32-bit x86 processors supported by --with-arch=. Each processor
|
||||
# MUST be separated by exactly one space.
|
||||
@@ -719,6 +719,9 @@
|
||||
*-*-*uclibc*)
|
||||
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
||||
;;
|
||||
+ *-*-*musl*)
|
||||
+ tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
|
||||
+ ;;
|
||||
*)
|
||||
tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
||||
;;
|
||||
diff -r b6f4ce05a315 gcc/config/linux.h
|
||||
--- a/gcc/config/linux.h Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/config/linux.h Tue May 20 11:05:45 2014 -0400
|
||||
@@ -32,10 +32,12 @@
|
||||
#define OPTION_GLIBC (DEFAULT_LIBC == LIBC_GLIBC)
|
||||
#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
|
||||
#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
|
||||
+#define OPTION_MUSL (DEFAULT_LIBC == LIBC_MUSL)
|
||||
#else
|
||||
#define OPTION_GLIBC (linux_libc == LIBC_GLIBC)
|
||||
#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
|
||||
#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
|
||||
+#define OPTION_MUSL (linux_libc == LIBC_MUSL)
|
||||
#endif
|
||||
|
||||
#define GNU_USER_TARGET_OS_CPP_BUILTINS() \
|
||||
@@ -53,18 +55,21 @@
|
||||
uClibc or Bionic is the default C library and whether
|
||||
-muclibc or -mglibc or -mbionic has been passed to change the default. */
|
||||
|
||||
-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3) \
|
||||
- "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4) \
|
||||
+ "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
|
||||
|
||||
#if DEFAULT_LIBC == LIBC_GLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
||||
- CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
|
||||
#elif DEFAULT_LIBC == LIBC_UCLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
||||
- CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
|
||||
#elif DEFAULT_LIBC == LIBC_BIONIC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
|
||||
- CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
|
||||
+#elif DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
|
||||
+ CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
|
||||
#else
|
||||
#error "Unsupported DEFAULT_LIBC"
|
||||
#endif /* DEFAULT_LIBC */
|
||||
@@ -84,21 +89,92 @@
|
||||
|
||||
#define GNU_USER_DYNAMIC_LINKER \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
|
||||
- BIONIC_DYNAMIC_LINKER)
|
||||
+ BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
|
||||
#define GNU_USER_DYNAMIC_LINKER32 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
|
||||
- BIONIC_DYNAMIC_LINKER32)
|
||||
+ BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
|
||||
#define GNU_USER_DYNAMIC_LINKER64 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
|
||||
- BIONIC_DYNAMIC_LINKER64)
|
||||
+ BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
|
||||
#define GNU_USER_DYNAMIC_LINKERX32 \
|
||||
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
|
||||
- BIONIC_DYNAMIC_LINKERX32)
|
||||
+ BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
|
||||
|
||||
/* Whether we have Bionic libc runtime */
|
||||
#undef TARGET_HAS_BIONIC
|
||||
#define TARGET_HAS_BIONIC (OPTION_BIONIC)
|
||||
|
||||
+/* musl avoids problematic includes by rearranging the include directories.
|
||||
+ * Unfortunately, this is mostly duplicated from cppdefault.c */
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define INCLUDE_DEFAULTS_MUSL_GPP \
|
||||
+ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, \
|
||||
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 }, \
|
||||
+ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, \
|
||||
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, \
|
||||
+ { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1, \
|
||||
+ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
|
||||
+
|
||||
+#ifdef LOCAL_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_LOCAL \
|
||||
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, \
|
||||
+ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_LOCAL
|
||||
+#endif
|
||||
+
|
||||
+#ifdef PREFIX_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_PREFIX \
|
||||
+ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_PREFIX
|
||||
+#endif
|
||||
+
|
||||
+#ifdef CROSS_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_CROSS \
|
||||
+ { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_CROSS
|
||||
+#endif
|
||||
+
|
||||
+#ifdef TOOL_INCLUDE_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_TOOL \
|
||||
+ { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_TOOL
|
||||
+#endif
|
||||
+
|
||||
+#ifdef NATIVE_SYSTEM_HEADER_DIR
|
||||
+#define INCLUDE_DEFAULTS_MUSL_NATIVE \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 }, \
|
||||
+ { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
|
||||
+#else
|
||||
+#define INCLUDE_DEFAULTS_MUSL_NATIVE
|
||||
+#endif
|
||||
+
|
||||
+#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
|
||||
+# undef INCLUDE_DEFAULTS_MUSL_LOCAL
|
||||
+# define INCLUDE_DEFAULTS_MUSL_LOCAL
|
||||
+# undef INCLUDE_DEFAULTS_MUSL_NATIVE
|
||||
+# define INCLUDE_DEFAULTS_MUSL_NATIVE
|
||||
+#else
|
||||
+# undef INCLUDE_DEFAULTS_MUSL_CROSS
|
||||
+# define INCLUDE_DEFAULTS_MUSL_CROSS
|
||||
+#endif
|
||||
+
|
||||
+#undef INCLUDE_DEFAULTS
|
||||
+#define INCLUDE_DEFAULTS \
|
||||
+ { \
|
||||
+ INCLUDE_DEFAULTS_MUSL_GPP \
|
||||
+ INCLUDE_DEFAULTS_MUSL_PREFIX \
|
||||
+ INCLUDE_DEFAULTS_MUSL_CROSS \
|
||||
+ INCLUDE_DEFAULTS_MUSL_TOOL \
|
||||
+ INCLUDE_DEFAULTS_MUSL_NATIVE \
|
||||
+ { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
|
||||
+ { 0, 0, 0, 0, 0, 0 } \
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
#if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
|
||||
/* This is a *uclinux* target. We don't define below macros to normal linux
|
||||
versions, because doing so would require *uclinux* targets to include
|
||||
diff -r b6f4ce05a315 gcc/config/linux.opt
|
||||
--- a/gcc/config/linux.opt Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/config/linux.opt Tue May 20 11:05:45 2014 -0400
|
||||
@@ -30,3 +30,7 @@
|
||||
muclibc
|
||||
Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
|
||||
Use uClibc C library
|
||||
+
|
||||
+mmusl
|
||||
+Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
|
||||
+Use musl C library
|
||||
diff -r b6f4ce05a315 gcc/ginclude/stddef.h
|
||||
--- a/gcc/ginclude/stddef.h Tue May 20 11:05:42 2014 -0400
|
||||
+++ b/gcc/ginclude/stddef.h Tue May 20 11:05:45 2014 -0400
|
||||
@@ -181,6 +181,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
|
||||
@@ -197,6 +198,7 @@
|
||||
#define ___int_size_t_h
|
||||
#define _GCC_SIZE_T
|
||||
#define _SIZET_
|
||||
+#define __DEFINED_size_t /* musl */
|
||||
#if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
|
||||
|| defined(__FreeBSD_kernel__)
|
||||
/* __size_t is a typedef on FreeBSD 5, must not trash it. */
|
||||
@@ -214,6 +216,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 65d595ef9fc3cdbbde4894d927593f1b0f5bbcb7
|
||||
A fix for libgomp to correctly request a POSIX version for time support.
|
||||
|
||||
diff -r 65d595ef9fc3 libgomp/config/posix/time.c
|
||||
--- a/libgomp/config/posix/time.c Tue May 20 11:05:45 2014 -0400
|
||||
+++ b/libgomp/config/posix/time.c Tue May 20 11:05:48 2014 -0400
|
||||
@@ -28,6 +28,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 95f4f1d7668b libgcc/unwind-dw2-fde-dip.c
|
||||
--- a/libgcc/unwind-dw2-fde-dip.c Tue May 20 11:05:48 2014 -0400
|
||||
+++ b/libgcc/unwind-dw2-fde-dip.c Tue May 20 11:05:52 2014 -0400
|
||||
@@ -46,33 +46,13 @@
|
||||
#include "unwind-compat.h"
|
||||
#include "gthr.h"
|
||||
|
||||
-#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)))
|
||||
+#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) \
|
||||
- && defined(__BIONIC__)
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
-#endif
|
||||
-
|
||||
-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && defined(__FreeBSD__) && __FreeBSD__ >= 7
|
||||
-# define ElfW __ElfN
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
-#endif
|
||||
-
|
||||
-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && defined(__OpenBSD__)
|
||||
-# define ElfW(type) Elf_##type
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
-#endif
|
||||
-
|
||||
-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
|
||||
- && defined(TARGET_DL_ITERATE_PHDR) \
|
||||
- && defined(__sun__) && defined(__svr4__)
|
||||
-# define USE_PT_GNU_EH_FRAME
|
||||
+# ifdef __OpenBSD__
|
||||
+# define ElfW(type) Elf_##type
|
||||
+# elif defined(__FreeBSD__) && __FreeBSD__ >= 7
|
||||
+# define ElfW __ElfN
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
#if defined(USE_PT_GNU_EH_FRAME)
|
||||
diff -r ff03fa61c6b3 gcc/configure
|
||||
--- a/gcc/configure Tue May 20 11:05:51 2014 -0400
|
||||
+++ b/gcc/configure Tue May 20 11:05:55 2014 -0400
|
||||
@@ -27300,6 +27300,9 @@
|
||||
else
|
||||
gcc_cv_libc_provides_ssp=no
|
||||
case "$target" in
|
||||
+ *-*-musl*)
|
||||
+ # All versions of musl provide stack protector
|
||||
+ gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
|
||||
# glibc 2.4 and later provides __stack_chk_fail and
|
||||
# either __stack_chk_guard, or TLS access to stack guard canary.
|
||||
@@ -27332,6 +27335,7 @@
|
||||
# <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
|
||||
# simply assert that glibc does provide this, which is true for all
|
||||
# realistically usable GNU/Hurd configurations.
|
||||
+ # All supported versions of musl provide it as well
|
||||
gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-darwin* | *-*-freebsd*)
|
||||
ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
|
||||
@@ -27421,6 +27425,9 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
+ *-linux-musl*)
|
||||
+ gcc_cv_target_dl_iterate_phdr=yes
|
||||
+ ;;
|
||||
esac
|
||||
|
||||
if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
|
||||
diff -r ff03fa61c6b3 gcc/configure.ac
|
||||
--- a/gcc/configure.ac Tue May 20 11:05:51 2014 -0400
|
||||
+++ b/gcc/configure.ac Tue May 20 11:05:55 2014 -0400
|
||||
@@ -5001,6 +5001,9 @@
|
||||
gcc_cv_libc_provides_ssp,
|
||||
[gcc_cv_libc_provides_ssp=no
|
||||
case "$target" in
|
||||
+ *-*-musl*)
|
||||
+ # All versions of musl provide stack protector
|
||||
+ gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
|
||||
# glibc 2.4 and later provides __stack_chk_fail and
|
||||
# either __stack_chk_guard, or TLS access to stack guard canary.
|
||||
@@ -5027,6 +5030,7 @@
|
||||
# <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
|
||||
# simply assert that glibc does provide this, which is true for all
|
||||
# realistically usable GNU/Hurd configurations.
|
||||
+ # All supported versions of musl provide it as well
|
||||
gcc_cv_libc_provides_ssp=yes;;
|
||||
*-*-darwin* | *-*-freebsd*)
|
||||
AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
|
||||
@@ -5093,6 +5097,9 @@
|
||||
gcc_cv_target_dl_iterate_phdr=no
|
||||
fi
|
||||
;;
|
||||
+ *-linux-musl*)
|
||||
+ gcc_cv_target_dl_iterate_phdr=yes
|
||||
+ ;;
|
||||
esac
|
||||
GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
|
||||
if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
|
||||
# HG changeset patch
|
||||
# Parent 26f591b9e77e3df3d0f772b840bd9c13ec24bd4c
|
||||
Get rid of ever-broken fixincludes on musl.
|
||||
|
||||
diff -r 26f591b9e77e fixincludes/mkfixinc.sh
|
||||
--- a/fixincludes/mkfixinc.sh Tue May 20 11:05:55 2014 -0400
|
||||
+++ b/fixincludes/mkfixinc.sh Tue May 20 11:05:58 2014 -0400
|
||||
@@ -19,7 +19,8 @@
|
||||
powerpc-*-eabi* | \
|
||||
powerpc-*-rtems* | \
|
||||
powerpcle-*-eabisim* | \
|
||||
- powerpcle-*-eabi* )
|
||||
+ powerpcle-*-eabi* | \
|
||||
+ *-musl* )
|
||||
# IF there is no include fixing,
|
||||
# THEN create a no-op fixer and exit
|
||||
(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
|
||||
# HG changeset patch
|
||||
# Parent bc117c35705fcc39396c19af046101411f251161
|
||||
Support for i386-linux-musl and x86_64-linux-musl.
|
||||
|
||||
diff -r bc117c35705f gcc/config/i386/linux.h
|
||||
--- a/gcc/config/i386/linux.h Tue May 20 11:05:58 2014 -0400
|
||||
+++ b/gcc/config/i386/linux.h Tue May 20 11:06:01 2014 -0400
|
||||
@@ -21,3 +21,4 @@
|
||||
|
||||
#define GNU_USER_LINK_EMULATION "elf_i386"
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
|
||||
diff -r bc117c35705f gcc/config/i386/linux64.h
|
||||
--- a/gcc/config/i386/linux64.h Tue May 20 11:05:58 2014 -0400
|
||||
+++ b/gcc/config/i386/linux64.h Tue May 20 11:06:01 2014 -0400
|
||||
@@ -30,3 +30,7 @@
|
||||
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
|
||||
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
|
||||
#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
|
||||
+
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
|
||||
diff -r bc117c35705f libitm/config/linux/x86/tls.h
|
||||
--- a/libitm/config/linux/x86/tls.h Tue May 20 11:05:58 2014 -0400
|
||||
+++ b/libitm/config/linux/x86/tls.h Tue May 20 11:06:01 2014 -0400
|
||||
@@ -25,16 +25,19 @@
|
||||
#ifndef LIBITM_X86_TLS_H
|
||||
#define LIBITM_X86_TLS_H 1
|
||||
|
||||
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
|
||||
+#if defined(__GLIBC_PREREQ)
|
||||
+#if __GLIBC_PREREQ(2, 10)
|
||||
/* Use slots in the TCB head rather than __thread lookups.
|
||||
GLIBC has reserved words 10 through 13 for TM. */
|
||||
#define HAVE_ARCH_GTM_THREAD 1
|
||||
#define HAVE_ARCH_GTM_THREAD_DISP 1
|
||||
#endif
|
||||
+#endif
|
||||
|
||||
#include "config/generic/tls.h"
|
||||
|
||||
-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
|
||||
+#if defined(__GLIBC_PREREQ)
|
||||
+#if __GLIBC_PREREQ(2, 10)
|
||||
namespace GTM HIDDEN {
|
||||
|
||||
#ifdef __x86_64__
|
||||
@@ -101,5 +104,6 @@
|
||||
|
||||
} // namespace GTM
|
||||
#endif /* >= GLIBC 2.10 */
|
||||
+#endif
|
||||
|
||||
#endif // LIBITM_X86_TLS_H
|
||||
# HG changeset patch
|
||||
# Parent 933c4f064622eb96a0b2ab213abd0cddbd977d1a
|
||||
Support for arm-linux-musl.
|
||||
|
||||
diff -r 933c4f064622 gcc/config/arm/linux-eabi.h
|
||||
--- a/gcc/config/arm/linux-eabi.h Tue May 20 11:06:01 2014 -0400
|
||||
+++ b/gcc/config/arm/linux-eabi.h Tue May 20 11:06:04 2014 -0400
|
||||
@@ -77,6 +77,23 @@
|
||||
%{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
|
||||
%{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
|
||||
|
||||
+/* For ARM musl currently supports four dynamic linkers:
|
||||
+ - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
|
||||
+ - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
|
||||
+ - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
|
||||
+ - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
|
||||
+ musl does not support the legacy OABI mode.
|
||||
+ All the dynamic linkers live in /lib.
|
||||
+ We default to soft-float, EL. */
|
||||
+#undef MUSL_DYNAMIC_LINKER
|
||||
+#if TARGET_BIG_ENDIAN_DEFAULT
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
|
||||
+#else
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
|
||||
+#endif
|
||||
+#define MUSL_DYNAMIC_LINKER \
|
||||
+ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
|
||||
+
|
||||
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
|
||||
use the GNU/Linux version, not the generic BPABI version. */
|
||||
#undef LINK_SPEC
|
||||
diff -r 933c4f064622 libitm/config/arm/hwcap.cc
|
||||
--- a/libitm/config/arm/hwcap.cc Tue May 20 11:06:01 2014 -0400
|
||||
+++ b/libitm/config/arm/hwcap.cc Tue May 20 11:06:04 2014 -0400
|
||||
@@ -40,7 +40,11 @@
|
||||
|
||||
#ifdef __linux__
|
||||
#include <unistd.h>
|
||||
+#ifdef __GLIBC__
|
||||
#include <sys/fcntl.h>
|
||||
+#else
|
||||
+#include <fcntl.h>
|
||||
+#endif
|
||||
#include <elf.h>
|
||||
|
||||
static void __attribute__((constructor))
|
||||
# HG changeset patch
|
||||
# Parent 03fe896f3acaa911e935a8e999d15c7542ee73d1
|
||||
Support for mips-linux-musl.
|
||||
|
||||
diff -r 03fe896f3aca gcc/config/mips/linux.h
|
||||
--- a/gcc/config/mips/linux.h Tue May 20 11:06:04 2014 -0400
|
||||
+++ b/gcc/config/mips/linux.h Tue May 20 11:06:08 2014 -0400
|
||||
@@ -23,3 +23,10 @@
|
||||
#undef UCLIBC_DYNAMIC_LINKER
|
||||
#define UCLIBC_DYNAMIC_LINKER \
|
||||
"%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
|
||||
+
|
||||
+#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
|
||||
+#else
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
|
||||
+#endif
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1"
|
||||
# HG changeset patch
|
||||
# Parent 6097333f2ab47a4ce37ccfb18b0f07a0cdcfec49
|
||||
Support for powerpc-linux-musl.
|
||||
|
||||
diff -r 6097333f2ab4 gcc/config.gcc
|
||||
--- a/gcc/config.gcc Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config.gcc Tue May 20 11:06:11 2014 -0400
|
||||
@@ -2326,6 +2326,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 6097333f2ab4 gcc/config/rs6000/linux64.h
|
||||
--- a/gcc/config/rs6000/linux64.h Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config/rs6000/linux64.h Tue May 20 11:06:11 2014 -0400
|
||||
@@ -375,17 +375,21 @@
|
||||
#endif
|
||||
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
|
||||
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
|
||||
+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
|
||||
+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
|
||||
#elif DEFAULT_LIBC == LIBC_GLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
|
||||
+#elif DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
|
||||
#else
|
||||
#error "Unsupported DEFAULT_LIBC"
|
||||
#endif
|
||||
#define GNU_USER_DYNAMIC_LINKER32 \
|
||||
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
|
||||
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
|
||||
#define GNU_USER_DYNAMIC_LINKER64 \
|
||||
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
|
||||
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
|
||||
|
||||
#undef DEFAULT_ASM_ENDIAN
|
||||
#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
|
||||
diff -r 6097333f2ab4 gcc/config/rs6000/secureplt.h
|
||||
--- a/gcc/config/rs6000/secureplt.h Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config/rs6000/secureplt.h Tue May 20 11:06:11 2014 -0400
|
||||
@@ -18,3 +18,4 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
|
||||
+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
|
||||
diff -r 6097333f2ab4 gcc/config/rs6000/sysv4.h
|
||||
--- a/gcc/config/rs6000/sysv4.h Tue May 20 11:06:08 2014 -0400
|
||||
+++ b/gcc/config/rs6000/sysv4.h Tue May 20 11:06:11 2014 -0400
|
||||
@@ -537,6 +537,9 @@
|
||||
#ifndef CC1_SECURE_PLT_DEFAULT_SPEC
|
||||
#define CC1_SECURE_PLT_DEFAULT_SPEC ""
|
||||
#endif
|
||||
+#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
|
||||
+#define LINK_SECURE_PLT_DEFAULT_SPEC ""
|
||||
+#endif
|
||||
|
||||
/* Pass -G xxx to the compiler. */
|
||||
#define CC1_SPEC "%{G*} %(cc1_cpu)" \
|
||||
@@ -585,7 +588,8 @@
|
||||
|
||||
/* Override the default target of the linker. */
|
||||
#define LINK_TARGET_SPEC \
|
||||
- ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
|
||||
+ ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
|
||||
+ "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
|
||||
|
||||
/* Any specific OS flags. */
|
||||
#define LINK_OS_SPEC "\
|
||||
@@ -763,15 +767,18 @@
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
|
||||
+#elif DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
|
||||
#elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
|
||||
-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
|
||||
+#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
|
||||
#else
|
||||
#error "Unsupported DEFAULT_LIBC"
|
||||
#endif
|
||||
#define GNU_USER_DYNAMIC_LINKER \
|
||||
- CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
|
||||
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
|
||||
|
||||
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
@@ -894,6 +901,7 @@
|
||||
{ "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
|
||||
{ "link_os_default", LINK_OS_DEFAULT_SPEC }, \
|
||||
{ "cc1_secure_plt_default", CC1_SECURE_PLT_DEFAULT_SPEC }, \
|
||||
+ { "link_secure_plt_default", LINK_SECURE_PLT_DEFAULT_SPEC }, \
|
||||
{ "cpp_os_ads", CPP_OS_ADS_SPEC }, \
|
||||
{ "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \
|
||||
{ "cpp_os_mvme", CPP_OS_MVME_SPEC }, \
|
||||
diff -r 813971b9f083 gcc/config/aarch64/aarch64-linux.h
|
||||
--- a/gcc/config/aarch64/aarch64-linux.h Tue May 20 11:06:11 2014 -0400
|
||||
+++ b/gcc/config/aarch64/aarch64-linux.h Tue May 20 11:06:14 2014 -0400
|
||||
@@ -23,6 +23,8 @@
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
|
||||
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
|
||||
+
|
||||
#define CPP_SPEC "%{pthread:-D_REENTRANT}"
|
||||
|
||||
#define LINUX_TARGET_LINK_SPEC "%{h*} \
|
||||
# HG changeset patch
|
||||
# Parent 4a62a6813db995fe195d47ff73234d455975ac30
|
||||
Microblaze support (again).
|
||||
|
||||
diff -r 4a62a6813db9 gcc/config/microblaze/linux.h
|
||||
--- a/gcc/config/microblaze/linux.h Tue May 20 11:06:14 2014 -0400
|
||||
+++ b/gcc/config/microblaze/linux.h Tue May 20 11:06:17 2014 -0400
|
||||
@@ -25,7 +25,22 @@
|
||||
#undef TLS_NEEDS_GOT
|
||||
#define TLS_NEEDS_GOT 1
|
||||
|
||||
-#define DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
+#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
|
||||
+#else
|
||||
+#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
|
||||
+#endif
|
||||
+
|
||||
+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
|
||||
+#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
|
||||
+
|
||||
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||
+#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
|
||||
+#else
|
||||
+#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
|
||||
+#endif
|
||||
+
|
||||
+
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "dynamic_linker", DYNAMIC_LINKER }
|
||||
From 478ee0c03a08e2ef9371fd88d516738936943e78 Mon Sep 17 00:00:00 2001
|
||||
From: David Holsgrove <david.holsgrove@xilinx.com>
|
||||
Date: Fri, 28 Sep 2012 16:32:03 +1000
|
||||
Subject: [PATCH 06/11] [Patch, microblaze]: Add SIZE_TYPE and PTRDIFF_TYPE to
|
||||
microblaze.h
|
||||
|
||||
Fixes warnings like;
|
||||
|
||||
warning: format '%zX' expects argument of type 'size_t',
|
||||
but argument 3 has type 'unsigned int' [-Wformat]
|
||||
|
||||
Changelog
|
||||
|
||||
2013-03-18 David Holsgrove <david.holsgrove@xilinx.com>
|
||||
|
||||
* gcc/config/microblaze/microblaze.h: Define SIZE_TYPE
|
||||
and PTRDIFF_TYPE.
|
||||
|
||||
Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
|
||||
---
|
||||
gcc/config/microblaze/microblaze.h | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff -r 20d1c995f5de gcc/config/microblaze/microblaze.h
|
||||
--- a/gcc/config/microblaze/microblaze.h Tue May 20 11:06:17 2014 -0400
|
||||
+++ b/gcc/config/microblaze/microblaze.h Tue May 20 11:06:20 2014 -0400
|
||||
@@ -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 2f999fc929da 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 Tue May 20 11:06:23 2014 -0400
|
||||
@@ -43,7 +43,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"
|
304
cross/gcc4-armv7/gcc-ice-hack.patch
Normal file
304
cross/gcc4-armv7/gcc-ice-hack.patch
Normal file
|
@ -0,0 +1,304 @@
|
|||
# DP: Retry the build on an ice, save the calling options and preprocessed
|
||||
# DP: source when the ice is reproducible.
|
||||
|
||||
2004-01-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.c (execute): Don't free first string early, but at the end
|
||||
of the function. Call retry_ice if compiler exited with
|
||||
ICE_EXIT_CODE.
|
||||
(retry_ice): New function.
|
||||
* diagnostic.c (diagnostic_count_diagnostic,
|
||||
diagnostic_action_after_output, error_recursion): Exit with
|
||||
ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
|
||||
|
||||
Index: b/gcc/gcc.c
|
||||
===================================================================
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -249,6 +249,9 @@
|
||||
#if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
|
||||
static const char *convert_filename (const char *, int, int);
|
||||
#endif
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+static void retry_ice (const char *prog, const char **argv);
|
||||
+#endif
|
||||
|
||||
static const char *getenv_spec_function (int, const char **);
|
||||
static const char *if_exists_spec_function (int, const char **);
|
||||
@@ -2771,7 +2774,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (string != commands[i].prog)
|
||||
+ if (i && string != commands[i].prog)
|
||||
free (CONST_CAST (char *, string));
|
||||
}
|
||||
|
||||
@@ -2824,6 +2827,16 @@
|
||||
else if (WIFEXITED (status)
|
||||
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS)
|
||||
{
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+ /* For ICEs in cc1, cc1obj, cc1plus see if it is
|
||||
+ reproducible or not. */
|
||||
+ const char *p;
|
||||
+ if (WEXITSTATUS (status) == ICE_EXIT_CODE
|
||||
+ && i == 0
|
||||
+ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
|
||||
+ && ! strncmp (p + 1, "cc1", 3))
|
||||
+ retry_ice (commands[0].prog, commands[0].argv);
|
||||
+#endif
|
||||
if (WEXITSTATUS (status) > greatest_status)
|
||||
greatest_status = WEXITSTATUS (status);
|
||||
ret_code = -1;
|
||||
@@ -2881,6 +2894,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ if (commands[0].argv[0] != commands[0].prog)
|
||||
+ free (CONST_CAST (char *, commands[0].argv[0]));
|
||||
+
|
||||
return ret_code;
|
||||
}
|
||||
}
|
||||
@@ -6034,6 +6050,227 @@
|
||||
switches[switchnum].validated = true;
|
||||
}
|
||||
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
|
||||
+#define RETRY_ICE_ATTEMPTS 2
|
||||
+
|
||||
+static void
|
||||
+retry_ice (const char *prog, const char **argv)
|
||||
+{
|
||||
+ int nargs, out_arg = -1, quiet = 0, attempt;
|
||||
+ int pid, retries, sleep_interval;
|
||||
+ const char **new_argv;
|
||||
+ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
|
||||
+
|
||||
+ if (gcc_input_filename == NULL || ! strcmp (gcc_input_filename, "-"))
|
||||
+ return;
|
||||
+
|
||||
+ for (nargs = 0; argv[nargs] != NULL; ++nargs)
|
||||
+ /* Only retry compiler ICEs, not preprocessor ones. */
|
||||
+ if (! strcmp (argv[nargs], "-E"))
|
||||
+ return;
|
||||
+ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
|
||||
+ {
|
||||
+ if (out_arg == -1)
|
||||
+ out_arg = nargs;
|
||||
+ else
|
||||
+ return;
|
||||
+ }
|
||||
+ /* If the compiler is going to output any time information,
|
||||
+ it might varry between invocations. */
|
||||
+ else if (! strcmp (argv[nargs], "-quiet"))
|
||||
+ quiet = 1;
|
||||
+ else if (! strcmp (argv[nargs], "-ftime-report"))
|
||||
+ return;
|
||||
+
|
||||
+ if (out_arg == -1 || !quiet)
|
||||
+ return;
|
||||
+
|
||||
+ memset (temp_filenames, '\0', sizeof (temp_filenames));
|
||||
+ new_argv = XALLOCAVEC (const char *, nargs + 3);
|
||||
+ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
|
||||
+ new_argv[nargs++] = "-frandom-seed=0";
|
||||
+ new_argv[nargs] = NULL;
|
||||
+ if (new_argv[out_arg][2] == '\0')
|
||||
+ new_argv[out_arg + 1] = "-";
|
||||
+ else
|
||||
+ new_argv[out_arg] = "-o-";
|
||||
+
|
||||
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
|
||||
+ {
|
||||
+ int fd = -1;
|
||||
+ int status;
|
||||
+
|
||||
+ temp_filenames[attempt * 2] = make_temp_file (".out");
|
||||
+ temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
|
||||
+
|
||||
+ if (attempt == RETRY_ICE_ATTEMPTS)
|
||||
+ {
|
||||
+ int i;
|
||||
+ int fd1, fd2;
|
||||
+ struct stat st1, st2;
|
||||
+ size_t n, len;
|
||||
+ char *buf;
|
||||
+
|
||||
+ buf = XNEWVEC (char, 8192);
|
||||
+
|
||||
+ for (i = 0; i < 2; ++i)
|
||||
+ {
|
||||
+ fd1 = open (temp_filenames[i], O_RDONLY);
|
||||
+ fd2 = open (temp_filenames[2 + i], O_RDONLY);
|
||||
+
|
||||
+ if (fd1 < 0 || fd2 < 0)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (st1.st_size != st2.st_size)
|
||||
+ {
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ len = 0;
|
||||
+ for (n = st1.st_size; n; n -= len)
|
||||
+ {
|
||||
+ len = n;
|
||||
+ if (len > 4096)
|
||||
+ len = 4096;
|
||||
+
|
||||
+ if (read (fd1, buf, len) != (int) len
|
||||
+ || read (fd2, buf + 4096, len) != (int) len)
|
||||
+ {
|
||||
+ i = -1;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (memcmp (buf, buf + 4096, len) != 0)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ close (fd1);
|
||||
+ close (fd2);
|
||||
+
|
||||
+ if (n)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ free (buf);
|
||||
+ if (i == -1)
|
||||
+ break;
|
||||
+
|
||||
+ if (i != 2)
|
||||
+ {
|
||||
+ fnotice (stderr, "The bug is not reproducible, so it is"
|
||||
+ " likely a hardware or OS problem.\n");
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ break;
|
||||
+ write (fd, "//", 2);
|
||||
+ for (i = 0; i < nargs; i++)
|
||||
+ {
|
||||
+ write (fd, " ", 1);
|
||||
+ write (fd, new_argv[i], strlen (new_argv[i]));
|
||||
+ }
|
||||
+ write (fd, "\n", 1);
|
||||
+ new_argv[nargs] = "-E";
|
||||
+ new_argv[nargs + 1] = NULL;
|
||||
+ }
|
||||
+
|
||||
+ /* Fork a subprocess; wait and retry if it fails. */
|
||||
+ sleep_interval = 1;
|
||||
+ pid = -1;
|
||||
+ for (retries = 0; retries < 4; retries++)
|
||||
+ {
|
||||
+ pid = fork ();
|
||||
+ if (pid >= 0)
|
||||
+ break;
|
||||
+ sleep (sleep_interval);
|
||||
+ sleep_interval *= 2;
|
||||
+ }
|
||||
+
|
||||
+ if (pid < 0)
|
||||
+ break;
|
||||
+ else if (pid == 0)
|
||||
+ {
|
||||
+ if (attempt != RETRY_ICE_ATTEMPTS)
|
||||
+ fd = open (temp_filenames[attempt * 2], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ exit (-1);
|
||||
+ if (fd != 1)
|
||||
+ {
|
||||
+ close (1);
|
||||
+ dup (fd);
|
||||
+ close (fd);
|
||||
+ }
|
||||
+
|
||||
+ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
|
||||
+ if (fd < 0)
|
||||
+ exit (-1);
|
||||
+ if (fd != 2)
|
||||
+ {
|
||||
+ close (2);
|
||||
+ dup (fd);
|
||||
+ close (fd);
|
||||
+ }
|
||||
+
|
||||
+ if (prog == new_argv[0])
|
||||
+ execvp (prog, CONST_CAST2 (char *const *, const char **, new_argv));
|
||||
+ else
|
||||
+ execv (new_argv[0], CONST_CAST2 (char *const *, const char **, new_argv));
|
||||
+ exit (-1);
|
||||
+ }
|
||||
+
|
||||
+ if (waitpid (pid, &status, 0) < 0)
|
||||
+ break;
|
||||
+
|
||||
+ if (attempt < RETRY_ICE_ATTEMPTS
|
||||
+ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
|
||||
+ {
|
||||
+ fnotice (stderr, "The bug is not reproducible, so it is"
|
||||
+ " likely a hardware or OS problem.\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ else if (attempt == RETRY_ICE_ATTEMPTS)
|
||||
+ {
|
||||
+ close (fd);
|
||||
+ if (WIFEXITED (status)
|
||||
+ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
|
||||
+ {
|
||||
+ fnotice (stderr, "Preprocessed source stored into %s file,"
|
||||
+ " please attach this to your bugreport.\n",
|
||||
+ temp_filenames[attempt * 2]);
|
||||
+ /* Make sure it is not deleted. */
|
||||
+ free (temp_filenames[attempt * 2]);
|
||||
+ temp_filenames[attempt * 2] = NULL;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
|
||||
+ if (temp_filenames[attempt])
|
||||
+ {
|
||||
+ unlink (temp_filenames[attempt]);
|
||||
+ free (temp_filenames[attempt]);
|
||||
+ }
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
/* Search for a file named NAME trying various prefixes including the
|
||||
user's -B prefix and some standard ones.
|
||||
Return the absolute file name found. If nothing is found, return NAME. */
|
||||
Index: b/gcc/diagnostic.c
|
||||
===================================================================
|
||||
--- a/gcc/diagnostic.c
|
||||
+++ b/gcc/diagnostic.c
|
||||
@@ -455,7 +455,7 @@
|
||||
real_abort ();
|
||||
diagnostic_finish (context);
|
||||
fnotice (stderr, "compilation terminated.\n");
|
||||
- exit (FATAL_EXIT_CODE);
|
||||
+ exit (ICE_EXIT_CODE);
|
||||
|
||||
default:
|
||||
gcc_unreachable ();
|
11
cross/gcc4-armv7/gcc-pure64.patch
Normal file
11
cross/gcc4-armv7/gcc-pure64.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- ./gcc/config/i386/t-linux64.orig 2013-01-14 16:32:37.000000000 +0000
|
||||
+++ ./gcc/config/i386/t-linux64 2013-04-22 06:12:32.984439677 +0000
|
||||
@@ -34,6 +34,6 @@
|
||||
comma=,
|
||||
MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
|
||||
MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
|
||||
-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
|
||||
-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
|
||||
+MULTILIB_OSDIRNAMES = m64=../lib
|
||||
+MULTILIB_OSDIRNAMES+= m32=../lib32
|
||||
MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
|
42
cross/gcc4-armv7/gcc-spec-env.patch
Normal file
42
cross/gcc4-armv7/gcc-spec-env.patch
Normal file
|
@ -0,0 +1,42 @@
|
|||
Add support for external spec file via the GCC_SPECS env var. This
|
||||
allows us to easily control pie/ssp defaults with gcc-config profiles.
|
||||
|
||||
Original patch by Rob Holland
|
||||
Extended to support multiple entries separated by ':' by Kevin F. Quinn
|
||||
Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
|
||||
|
||||
--- gcc-4/gcc/gcc.c
|
||||
+++ gcc-4/gcc/gcc.c
|
||||
@@ -6482,6 +6482,32 @@
|
||||
|
||||
/* Process any user specified specs in the order given on the command
|
||||
line. */
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
|
||||
+ /* Add specs listed in GCC_SPECS. Note; in the process of separating
|
||||
+ * each spec listed, the string is overwritten at token boundaries
|
||||
+ * (':') with '\0', an effect of strtok_r().
|
||||
+ */
|
||||
+ specs_file = getenv ("GCC_SPECS");
|
||||
+ if (specs_file && (strlen(specs_file) > 0))
|
||||
+ {
|
||||
+ char *spec, *saveptr;
|
||||
+ for (spec=strtok_r(specs_file,":",&saveptr);
|
||||
+ spec!=NULL;
|
||||
+ spec=strtok_r(NULL,":",&saveptr))
|
||||
+ {
|
||||
+ struct user_specs *user = (struct user_specs *)
|
||||
+ xmalloc (sizeof (struct user_specs));
|
||||
+
|
||||
+ user->next = (struct user_specs *) 0;
|
||||
+ user->filename = spec;
|
||||
+ if (user_specs_tail)
|
||||
+ user_specs_tail->next = user;
|
||||
+ else
|
||||
+ user_specs_head = user;
|
||||
+ user_specs_tail = user;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
for (uptr = user_specs_head; uptr; uptr = uptr->next)
|
||||
{
|
||||
char *filename = find_a_file (&startfile_prefixes, uptr->filename,
|
478
cross/gcc4-armv7/gcc49-cloog-dl.patch
Normal file
478
cross/gcc4-armv7/gcc49-cloog-dl.patch
Normal file
|
@ -0,0 +1,478 @@
|
|||
http://pkgs.fedoraproject.org/cgit/gcc.git/plain/gcc49-cloog-dl.patch
|
||||
|
||||
--- a/gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100
|
||||
+++ b/gcc/Makefile.in 2012-12-14 11:45:22.585670055 +0100
|
||||
@@ -1006,7 +1006,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
|
||||
# and the system's installed libraries.
|
||||
LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
|
||||
$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
|
||||
-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||
+BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
|
||||
$(ZLIB)
|
||||
# Any system libraries needed just for GNAT.
|
||||
SYSLIBS = @GNAT_LIBEXC@
|
||||
@@ -2011,6 +2011,15 @@ $(out_object_file): $(out_file)
|
||||
$(common_out_object_file): $(common_out_file)
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
+
|
||||
+graphite%.o : \
|
||||
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||
+graphite.o : \
|
||||
+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
|
||||
+graphite%.o : \
|
||||
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
|
||||
+graphite.o : \
|
||||
+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
|
||||
#
|
||||
# Generate header and source files from the machine description,
|
||||
# and compile them.
|
||||
--- a/gcc/graphite-poly.h.jj 2012-12-13 11:31:27.000000000 +0100
|
||||
+++ b/gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100
|
||||
@@ -22,6 +22,371 @@ along with GCC; see the file COPYING3.
|
||||
#ifndef GCC_GRAPHITE_POLY_H
|
||||
#define GCC_GRAPHITE_POLY_H
|
||||
|
||||
+#include <isl/aff.h>
|
||||
+#include <isl/schedule.h>
|
||||
+#include <isl/ilp.h>
|
||||
+#include <isl/flow.h>
|
||||
+#include <isl/options.h>
|
||||
+#include <cloog/isl/cloog.h>
|
||||
+#include <dlfcn.h>
|
||||
+#define DYNSYMS \
|
||||
+ DYNSYM (clast_pprint); \
|
||||
+ DYNSYM (cloog_clast_create_from_input); \
|
||||
+ DYNSYM (cloog_clast_free); \
|
||||
+ DYNSYM (cloog_domain_from_isl_set); \
|
||||
+ DYNSYM (cloog_input_alloc); \
|
||||
+ DYNSYM (cloog_isl_state_malloc); \
|
||||
+ DYNSYM (cloog_options_free); \
|
||||
+ DYNSYM (cloog_options_malloc); \
|
||||
+ DYNSYM (cloog_scattering_from_isl_map); \
|
||||
+ DYNSYM (cloog_state_free); \
|
||||
+ DYNSYM (cloog_union_domain_add_domain); \
|
||||
+ DYNSYM (cloog_union_domain_alloc); \
|
||||
+ DYNSYM (cloog_union_domain_set_name); \
|
||||
+ DYNSYM (isl_aff_add_coefficient_si); \
|
||||
+ DYNSYM (isl_aff_add_constant); \
|
||||
+ DYNSYM (isl_aff_free); \
|
||||
+ DYNSYM (isl_aff_get_coefficient); \
|
||||
+ DYNSYM (isl_aff_get_space); \
|
||||
+ DYNSYM (isl_aff_mod); \
|
||||
+ DYNSYM (isl_aff_set_coefficient_si); \
|
||||
+ DYNSYM (isl_aff_set_constant_si); \
|
||||
+ DYNSYM (isl_aff_zero_on_domain); \
|
||||
+ DYNSYM (isl_band_free); \
|
||||
+ DYNSYM (isl_band_get_children); \
|
||||
+ DYNSYM (isl_band_get_partial_schedule); \
|
||||
+ DYNSYM (isl_band_has_children); \
|
||||
+ DYNSYM (isl_band_list_free); \
|
||||
+ DYNSYM (isl_band_list_get_band); \
|
||||
+ DYNSYM (isl_band_list_get_ctx); \
|
||||
+ DYNSYM (isl_band_list_n_band); \
|
||||
+ DYNSYM (isl_band_member_is_zero_distance); \
|
||||
+ DYNSYM (isl_band_n_member); \
|
||||
+ DYNSYM (isl_basic_map_add_constraint); \
|
||||
+ DYNSYM (isl_basic_map_project_out); \
|
||||
+ DYNSYM (isl_basic_map_universe); \
|
||||
+ DYNSYM (isl_constraint_set_coefficient); \
|
||||
+ DYNSYM (isl_constraint_set_coefficient_si); \
|
||||
+ DYNSYM (isl_constraint_set_constant); \
|
||||
+ DYNSYM (isl_constraint_set_constant_si); \
|
||||
+ DYNSYM (isl_ctx_alloc); \
|
||||
+ DYNSYM (isl_ctx_free); \
|
||||
+ DYNSYM (isl_equality_alloc); \
|
||||
+ DYNSYM (isl_id_alloc); \
|
||||
+ DYNSYM (isl_id_copy); \
|
||||
+ DYNSYM (isl_id_free); \
|
||||
+ DYNSYM (isl_inequality_alloc); \
|
||||
+ DYNSYM (isl_local_space_copy); \
|
||||
+ DYNSYM (isl_local_space_free); \
|
||||
+ DYNSYM (isl_local_space_from_space); \
|
||||
+ DYNSYM (isl_local_space_range); \
|
||||
+ DYNSYM (isl_map_add_constraint); \
|
||||
+ DYNSYM (isl_map_add_dims); \
|
||||
+ DYNSYM (isl_map_align_params); \
|
||||
+ DYNSYM (isl_map_apply_range); \
|
||||
+ DYNSYM (isl_map_copy); \
|
||||
+ DYNSYM (isl_map_dim); \
|
||||
+ DYNSYM (isl_map_dump); \
|
||||
+ DYNSYM (isl_map_equate); \
|
||||
+ DYNSYM (isl_map_fix_si); \
|
||||
+ DYNSYM (isl_map_flat_product); \
|
||||
+ DYNSYM (isl_map_flat_range_product); \
|
||||
+ DYNSYM (isl_map_free); \
|
||||
+ DYNSYM (isl_map_from_basic_map); \
|
||||
+ DYNSYM (isl_map_from_pw_aff); \
|
||||
+ DYNSYM (isl_map_from_union_map); \
|
||||
+ DYNSYM (isl_map_get_ctx); \
|
||||
+ DYNSYM (isl_map_get_space); \
|
||||
+ DYNSYM (isl_map_get_tuple_id); \
|
||||
+ DYNSYM (isl_map_insert_dims); \
|
||||
+ DYNSYM (isl_map_intersect); \
|
||||
+ DYNSYM (isl_map_intersect_domain); \
|
||||
+ DYNSYM (isl_map_intersect_range); \
|
||||
+ DYNSYM (isl_map_is_empty); \
|
||||
+ DYNSYM (isl_map_lex_ge); \
|
||||
+ DYNSYM (isl_map_lex_le); \
|
||||
+ DYNSYM (isl_map_n_out); \
|
||||
+ DYNSYM (isl_map_range); \
|
||||
+ DYNSYM (isl_map_set_tuple_id); \
|
||||
+ DYNSYM (isl_map_universe); \
|
||||
+ DYNSYM (isl_options_set_on_error); \
|
||||
+ DYNSYM (isl_options_set_schedule_fuse); \
|
||||
+ DYNSYM (isl_options_set_schedule_max_constant_term); \
|
||||
+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
|
||||
+ DYNSYM (isl_printer_free); \
|
||||
+ DYNSYM (isl_printer_print_aff); \
|
||||
+ DYNSYM (isl_printer_print_constraint); \
|
||||
+ DYNSYM (isl_printer_print_map); \
|
||||
+ DYNSYM (isl_printer_print_set); \
|
||||
+ DYNSYM (isl_printer_to_file); \
|
||||
+ DYNSYM (isl_pw_aff_add); \
|
||||
+ DYNSYM (isl_pw_aff_alloc); \
|
||||
+ DYNSYM (isl_pw_aff_copy); \
|
||||
+ DYNSYM (isl_pw_aff_eq_set); \
|
||||
+ DYNSYM (isl_pw_aff_free); \
|
||||
+ DYNSYM (isl_pw_aff_from_aff); \
|
||||
+ DYNSYM (isl_pw_aff_ge_set); \
|
||||
+ DYNSYM (isl_pw_aff_gt_set); \
|
||||
+ DYNSYM (isl_pw_aff_is_cst); \
|
||||
+ DYNSYM (isl_pw_aff_le_set); \
|
||||
+ DYNSYM (isl_pw_aff_lt_set); \
|
||||
+ DYNSYM (isl_pw_aff_mod); \
|
||||
+ DYNSYM (isl_pw_aff_mul); \
|
||||
+ DYNSYM (isl_pw_aff_ne_set); \
|
||||
+ DYNSYM (isl_pw_aff_nonneg_set); \
|
||||
+ DYNSYM (isl_pw_aff_set_tuple_id); \
|
||||
+ DYNSYM (isl_pw_aff_sub); \
|
||||
+ DYNSYM (isl_pw_aff_zero_set); \
|
||||
+ DYNSYM (isl_schedule_free); \
|
||||
+ DYNSYM (isl_schedule_get_band_forest); \
|
||||
+ DYNSYM (isl_set_add_constraint); \
|
||||
+ DYNSYM (isl_set_add_dims); \
|
||||
+ DYNSYM (isl_set_apply); \
|
||||
+ DYNSYM (isl_set_coalesce); \
|
||||
+ DYNSYM (isl_set_copy); \
|
||||
+ DYNSYM (isl_set_dim); \
|
||||
+ DYNSYM (isl_set_fix_si); \
|
||||
+ DYNSYM (isl_set_free); \
|
||||
+ DYNSYM (isl_set_from_cloog_domain); \
|
||||
+ DYNSYM (isl_set_get_space); \
|
||||
+ DYNSYM (isl_set_get_tuple_id); \
|
||||
+ DYNSYM (isl_set_intersect); \
|
||||
+ DYNSYM (isl_set_is_empty); \
|
||||
+ DYNSYM (isl_set_max); \
|
||||
+ DYNSYM (isl_set_min); \
|
||||
+ DYNSYM (isl_set_n_dim); \
|
||||
+ DYNSYM (isl_set_nat_universe); \
|
||||
+ DYNSYM (isl_set_project_out); \
|
||||
+ DYNSYM (isl_set_set_tuple_id); \
|
||||
+ DYNSYM (isl_set_universe); \
|
||||
+ DYNSYM (isl_space_add_dims); \
|
||||
+ DYNSYM (isl_space_alloc); \
|
||||
+ DYNSYM (isl_space_copy); \
|
||||
+ DYNSYM (isl_space_dim); \
|
||||
+ DYNSYM (isl_space_domain); \
|
||||
+ DYNSYM (isl_space_find_dim_by_id); \
|
||||
+ DYNSYM (isl_space_free); \
|
||||
+ DYNSYM (isl_space_from_domain); \
|
||||
+ DYNSYM (isl_space_get_tuple_id); \
|
||||
+ DYNSYM (isl_space_params_alloc); \
|
||||
+ DYNSYM (isl_space_range); \
|
||||
+ DYNSYM (isl_space_set_alloc); \
|
||||
+ DYNSYM (isl_space_set_dim_id); \
|
||||
+ DYNSYM (isl_space_set_tuple_id); \
|
||||
+ DYNSYM (isl_union_map_add_map); \
|
||||
+ DYNSYM (isl_union_map_align_params); \
|
||||
+ DYNSYM (isl_union_map_apply_domain); \
|
||||
+ DYNSYM (isl_union_map_apply_range); \
|
||||
+ DYNSYM (isl_union_map_compute_flow); \
|
||||
+ DYNSYM (isl_union_map_copy); \
|
||||
+ DYNSYM (isl_union_map_empty); \
|
||||
+ DYNSYM (isl_union_map_flat_range_product); \
|
||||
+ DYNSYM (isl_union_map_foreach_map); \
|
||||
+ DYNSYM (isl_union_map_free); \
|
||||
+ DYNSYM (isl_union_map_from_map); \
|
||||
+ DYNSYM (isl_union_map_get_ctx); \
|
||||
+ DYNSYM (isl_union_map_get_space); \
|
||||
+ DYNSYM (isl_union_map_gist_domain); \
|
||||
+ DYNSYM (isl_union_map_gist_range); \
|
||||
+ DYNSYM (isl_union_map_intersect_domain); \
|
||||
+ DYNSYM (isl_union_map_is_empty); \
|
||||
+ DYNSYM (isl_union_map_subtract); \
|
||||
+ DYNSYM (isl_union_map_union); \
|
||||
+ DYNSYM (isl_union_set_add_set); \
|
||||
+ DYNSYM (isl_union_set_compute_schedule); \
|
||||
+ DYNSYM (isl_union_set_copy); \
|
||||
+ DYNSYM (isl_union_set_empty); \
|
||||
+ DYNSYM (isl_union_set_from_set); \
|
||||
+ DYNSYM (stmt_ass); \
|
||||
+ DYNSYM (stmt_block); \
|
||||
+ DYNSYM (stmt_for); \
|
||||
+ DYNSYM (stmt_guard); \
|
||||
+ DYNSYM (stmt_root); \
|
||||
+ DYNSYM (stmt_user);
|
||||
+extern struct cloog_pointers_s__
|
||||
+{
|
||||
+ bool inited;
|
||||
+ void *h;
|
||||
+#define DYNSYM(x) __typeof (x) *p_##x
|
||||
+ DYNSYMS
|
||||
+#undef DYNSYM
|
||||
+} cloog_pointers__;
|
||||
+
|
||||
+#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
|
||||
+#define clast_pprint (*cloog_pointers__.p_clast_pprint)
|
||||
+#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input)
|
||||
+#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
|
||||
+#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set)
|
||||
+#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc)
|
||||
+#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc)
|
||||
+#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
|
||||
+#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
|
||||
+#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map)
|
||||
+#define cloog_state_free (*cloog_pointers__.p_cloog_state_free)
|
||||
+#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain)
|
||||
+#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc)
|
||||
+#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name)
|
||||
+#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si)
|
||||
+#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant)
|
||||
+#define isl_aff_free (*cloog_pointers__.p_isl_aff_free)
|
||||
+#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient)
|
||||
+#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space)
|
||||
+#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod)
|
||||
+#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si)
|
||||
+#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si)
|
||||
+#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain)
|
||||
+#define isl_band_free (*cloog_pointers__.p_isl_band_free)
|
||||
+#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children)
|
||||
+#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule)
|
||||
+#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children)
|
||||
+#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free)
|
||||
+#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band)
|
||||
+#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx)
|
||||
+#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band)
|
||||
+#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance)
|
||||
+#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member)
|
||||
+#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint)
|
||||
+#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out)
|
||||
+#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe)
|
||||
+#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient)
|
||||
+#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si)
|
||||
+#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant)
|
||||
+#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si)
|
||||
+#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc)
|
||||
+#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free)
|
||||
+#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc)
|
||||
+#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc)
|
||||
+#define isl_id_copy (*cloog_pointers__.p_isl_id_copy)
|
||||
+#define isl_id_free (*cloog_pointers__.p_isl_id_free)
|
||||
+#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc)
|
||||
+#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy)
|
||||
+#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free)
|
||||
+#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space)
|
||||
+#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range)
|
||||
+#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint)
|
||||
+#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims)
|
||||
+#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params)
|
||||
+#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range)
|
||||
+#define isl_map_copy (*cloog_pointers__.p_isl_map_copy)
|
||||
+#define isl_map_dim (*cloog_pointers__.p_isl_map_dim)
|
||||
+#define isl_map_dump (*cloog_pointers__.p_isl_map_dump)
|
||||
+#define isl_map_equate (*cloog_pointers__.p_isl_map_equate)
|
||||
+#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si)
|
||||
+#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product)
|
||||
+#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product)
|
||||
+#define isl_map_free (*cloog_pointers__.p_isl_map_free)
|
||||
+#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map)
|
||||
+#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff)
|
||||
+#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map)
|
||||
+#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx)
|
||||
+#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space)
|
||||
+#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id)
|
||||
+#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims)
|
||||
+#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect)
|
||||
+#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain)
|
||||
+#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range)
|
||||
+#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty)
|
||||
+#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge)
|
||||
+#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le)
|
||||
+#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out)
|
||||
+#define isl_map_range (*cloog_pointers__.p_isl_map_range)
|
||||
+#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id)
|
||||
+#define isl_map_universe (*cloog_pointers__.p_isl_map_universe)
|
||||
+#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error)
|
||||
+#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse)
|
||||
+#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term)
|
||||
+#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth)
|
||||
+#define isl_printer_free (*cloog_pointers__.p_isl_printer_free)
|
||||
+#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff)
|
||||
+#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint)
|
||||
+#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map)
|
||||
+#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set)
|
||||
+#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file)
|
||||
+#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add)
|
||||
+#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc)
|
||||
+#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy)
|
||||
+#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set)
|
||||
+#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free)
|
||||
+#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff)
|
||||
+#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set)
|
||||
+#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set)
|
||||
+#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst)
|
||||
+#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set)
|
||||
+#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set)
|
||||
+#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod)
|
||||
+#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul)
|
||||
+#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set)
|
||||
+#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set)
|
||||
+#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id)
|
||||
+#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub)
|
||||
+#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set)
|
||||
+#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free)
|
||||
+#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest)
|
||||
+#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint)
|
||||
+#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims)
|
||||
+#define isl_set_apply (*cloog_pointers__.p_isl_set_apply)
|
||||
+#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce)
|
||||
+#define isl_set_copy (*cloog_pointers__.p_isl_set_copy)
|
||||
+#define isl_set_dim (*cloog_pointers__.p_isl_set_dim)
|
||||
+#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si)
|
||||
+#define isl_set_free (*cloog_pointers__.p_isl_set_free)
|
||||
+#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain)
|
||||
+#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space)
|
||||
+#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id)
|
||||
+#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect)
|
||||
+#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty)
|
||||
+#define isl_set_max (*cloog_pointers__.p_isl_set_max)
|
||||
+#define isl_set_min (*cloog_pointers__.p_isl_set_min)
|
||||
+#define isl_set_n_dim (*cloog_pointers__.p_isl_set_n_dim)
|
||||
+#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe)
|
||||
+#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out)
|
||||
+#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id)
|
||||
+#define isl_set_universe (*cloog_pointers__.p_isl_set_universe)
|
||||
+#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims)
|
||||
+#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc)
|
||||
+#define isl_space_copy (*cloog_pointers__.p_isl_space_copy)
|
||||
+#define isl_space_dim (*cloog_pointers__.p_isl_space_dim)
|
||||
+#define isl_space_domain (*cloog_pointers__.p_isl_space_domain)
|
||||
+#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id)
|
||||
+#define isl_space_free (*cloog_pointers__.p_isl_space_free)
|
||||
+#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain)
|
||||
+#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id)
|
||||
+#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc)
|
||||
+#define isl_space_range (*cloog_pointers__.p_isl_space_range)
|
||||
+#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc)
|
||||
+#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id)
|
||||
+#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id)
|
||||
+#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map)
|
||||
+#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params)
|
||||
+#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain)
|
||||
+#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range)
|
||||
+#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow)
|
||||
+#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy)
|
||||
+#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty)
|
||||
+#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product)
|
||||
+#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map)
|
||||
+#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free)
|
||||
+#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map)
|
||||
+#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx)
|
||||
+#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space)
|
||||
+#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain)
|
||||
+#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range)
|
||||
+#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain)
|
||||
+#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty)
|
||||
+#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract)
|
||||
+#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union)
|
||||
+#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set)
|
||||
+#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule)
|
||||
+#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy)
|
||||
+#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty)
|
||||
+#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set)
|
||||
+#define stmt_ass (*cloog_pointers__.p_stmt_ass)
|
||||
+#define stmt_block (*cloog_pointers__.p_stmt_block)
|
||||
+#define stmt_for (*cloog_pointers__.p_stmt_for)
|
||||
+#define stmt_guard (*cloog_pointers__.p_stmt_guard)
|
||||
+#define stmt_root (*cloog_pointers__.p_stmt_root)
|
||||
+#define stmt_user (*cloog_pointers__.p_stmt_user)
|
||||
+
|
||||
typedef struct poly_dr *poly_dr_p;
|
||||
|
||||
typedef struct poly_bb *poly_bb_p;
|
||||
--- a/gcc/graphite.c.jj 2012-12-13 11:31:00.000000000 +0100
|
||||
+++ b/gcc/graphite.c 2012-12-14 13:40:44.155136961 +0100
|
||||
@@ -78,6 +78,34 @@ along with GCC; see the file COPYING3.
|
||||
|
||||
CloogState *cloog_state;
|
||||
|
||||
+__typeof (cloog_pointers__) cloog_pointers__;
|
||||
+
|
||||
+static bool
|
||||
+init_cloog_pointers (void)
|
||||
+{
|
||||
+ void *h;
|
||||
+
|
||||
+ if (cloog_pointers__.inited)
|
||||
+ return cloog_pointers__.h != NULL;
|
||||
+ h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
|
||||
+ cloog_pointers__.h = h;
|
||||
+ if (h == NULL)
|
||||
+ return false;
|
||||
+#define DYNSYM(x) \
|
||||
+ do \
|
||||
+ { \
|
||||
+ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
|
||||
+ u.q = dlsym (h, #x); \
|
||||
+ if (u.q == NULL) \
|
||||
+ return false; \
|
||||
+ cloog_pointers__.p_##x = u.p; \
|
||||
+ } \
|
||||
+ while (0)
|
||||
+ DYNSYMS
|
||||
+#undef DYNSYM
|
||||
+ return true;
|
||||
+}
|
||||
+
|
||||
/* Print global statistics to FILE. */
|
||||
|
||||
static void
|
||||
@@ -277,6 +305,15 @@ graphite_transform_loops (void)
|
||||
if (parallelized_function_p (cfun->decl))
|
||||
return;
|
||||
|
||||
+ if (number_of_loops (cfun) <= 1)
|
||||
+ return;
|
||||
+
|
||||
+ if (!init_cloog_pointers ())
|
||||
+ {
|
||||
+ sorry ("Graphite loop optimizations cannot be used");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
ctx = isl_ctx_alloc ();
|
||||
isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
|
||||
if (!graphite_initialize (ctx))
|
||||
--- a/gcc/graphite-clast-to-gimple.c.jj 2012-12-13 11:31:27.000000000 +0100
|
||||
+++ b/gcc/graphite-clast-to-gimple.c 2012-12-14 13:27:47.196519858 +0100
|
||||
@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo
|
||||
from STMT_FOR. */
|
||||
|
||||
static tree
|
||||
-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
|
||||
+type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
|
||||
{
|
||||
mpz_t bound_one, bound_two;
|
||||
tree lb_type, ub_type;
|
||||
@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st
|
||||
mpz_init (bound_one);
|
||||
mpz_init (bound_two);
|
||||
|
||||
- lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
|
||||
- ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
|
||||
+ lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
|
||||
+ ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
|
||||
|
||||
mpz_clear (bound_one);
|
||||
mpz_clear (bound_two);
|
12
cross/gcc4-armv7/hardenednopie.specs
Normal file
12
cross/gcc4-armv7/hardenednopie.specs
Normal file
|
@ -0,0 +1,12 @@
|
|||
*esp_cc1_pie:
|
||||
|
||||
|
||||
*esp_options_pie:
|
||||
|
||||
|
||||
*esp_link_pie_check:
|
||||
|
||||
|
||||
*esp_link_pie:
|
||||
|
||||
|
4
cross/gcc4-armv7/hardenednopiessp.specs
Normal file
4
cross/gcc4-armv7/hardenednopiessp.specs
Normal file
|
@ -0,0 +1,4 @@
|
|||
%include <hardenednossp.specs>
|
||||
%include <hardenednopie.specs>
|
||||
|
||||
|
6
cross/gcc4-armv7/hardenednossp.specs
Normal file
6
cross/gcc4-armv7/hardenednossp.specs
Normal file
|
@ -0,0 +1,6 @@
|
|||
*esp_cc1_ssp:
|
||||
|
||||
|
||||
*esp_options_ssp:
|
||||
|
||||
|
39
cross/gcc4-armv7/libgcc-always-build-gcceh.a.patch
Normal file
39
cross/gcc4-armv7/libgcc-always-build-gcceh.a.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
Highly inspired by:
|
||||
http://landley.net/hg/aboriginal/file/7e0747a665ab/sources/patches/gcc-core-libgcceh.patch
|
||||
|
||||
diff -durN gcc-4.6.0.orig/libgcc/Makefile.in gcc-4.6.0/libgcc/Makefile.in
|
||||
--- gcc-4.6.0.orig/libgcc/Makefile.in 2011-01-26 05:19:58.000000000 +0100
|
||||
+++ gcc-4.6.0/libgcc/Makefile.in 2011-09-12 18:17:12.743718974 +0200
|
||||
@@ -772,8 +772,9 @@
|
||||
libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_EXT)
|
||||
endif
|
||||
|
||||
+all: libgcc_eh.a
|
||||
ifeq ($(enable_shared),yes)
|
||||
-all: libgcc_eh.a libgcc_s$(SHLIB_EXT)
|
||||
+all: libgcc_s$(SHLIB_EXT)
|
||||
ifneq ($(LIBUNWIND),)
|
||||
all: libunwind$(SHLIB_EXT)
|
||||
endif
|
||||
@@ -950,10 +951,6 @@
|
||||
install-shared:
|
||||
$(mkinstalldirs) $(DESTDIR)$(inst_libdir)
|
||||
|
||||
- $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
|
||||
- chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
- $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
-
|
||||
$(subst @multilib_dir@,$(MULTIDIR),$(subst \
|
||||
@shlib_base_name@,libgcc_s,$(subst \
|
||||
@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL))))
|
||||
@@ -968,6 +965,10 @@
|
||||
chmod 644 $(DESTDIR)$(inst_libdir)/libgcov.a
|
||||
$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcov.a
|
||||
|
||||
+ $(INSTALL_DATA) libgcc_eh.a $(DESTDIR)$(inst_libdir)/
|
||||
+ chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
+ $(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a
|
||||
+
|
||||
parts="$(INSTALL_PARTS)"; \
|
||||
for file in $$parts; do \
|
||||
rm -f $(DESTDIR)$(inst_libdir)/$$file; \
|
27
cross/gcc4-armv7/musl-posix_memalign-c++.patch
Normal file
27
cross/gcc4-armv7/musl-posix_memalign-c++.patch
Normal file
|
@ -0,0 +1,27 @@
|
|||
Fix conflicting prototype of posix_memalign for c++
|
||||
http://www.openwall.com/lists/musl/2013/11/10/1
|
||||
|
||||
--- ./gcc/config/i386/pmm_malloc.h.orig
|
||||
+++ ./gcc/config/i386/pmm_malloc.h
|
||||
@@ -28,11 +28,7 @@
|
||||
|
||||
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
|
||||
may not be visible. */
|
||||
-#ifndef __cplusplus
|
||||
-extern int posix_memalign (void **, size_t, size_t);
|
||||
-#else
|
||||
-extern "C" int posix_memalign (void **, size_t, size_t) throw ();
|
||||
-#endif
|
||||
+extern int __gcc_posix_memalign (void **, size_t, size_t) __asm__("posix_memalign");
|
||||
|
||||
static __inline void *
|
||||
_mm_malloc (size_t size, size_t alignment)
|
||||
@@ -42,7 +38,7 @@
|
||||
return malloc (size);
|
||||
if (alignment == 2 || (sizeof (void *) == 8 && alignment == 4))
|
||||
alignment = sizeof (void *);
|
||||
- if (posix_memalign (&ptr, alignment, size) == 0)
|
||||
+ if (__gcc_posix_memalign (&ptr, alignment, size) == 0)
|
||||
return ptr;
|
||||
else
|
||||
return NULL;
|
17
cross/gcc4-armv7/pr63740.patch
Normal file
17
cross/gcc4-armv7/pr63740.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63740
|
||||
|
||||
--- trunk/gcc/lra-lives.c 2014/06/16 09:25:26 211700
|
||||
+++ trunk/gcc/lra-lives.c 2014/06/16 09:58:34 211701
|
||||
@@ -558,7 +558,11 @@
|
||||
/* It might be 'inheritance pseudo <- reload pseudo'. */
|
||||
|| (src_regno >= lra_constraint_new_regno_start
|
||||
&& ((int) REGNO (SET_DEST (set))
|
||||
- >= lra_constraint_new_regno_start))))
|
||||
+ >= lra_constraint_new_regno_start)
|
||||
+ /* Remember to skip special cases where src/dest regnos are
|
||||
+ the same, e.g. insn SET pattern has matching constraints
|
||||
+ like =r,0. */
|
||||
+ && src_regno != (int) REGNO (SET_DEST (set)))))
|
||||
{
|
||||
int hard_regno = -1, regno = -1;
|
||||
|
83
cross/gcc4-armv7/pr64037.patch
Normal file
83
cross/gcc4-armv7/pr64037.patch
Normal file
|
@ -0,0 +1,83 @@
|
|||
https://gcc.gnu.org/git/?p=gcc.git;a=patch;h=0817dc6f0e6b973e0e3671eb72d3758a8f042324
|
||||
(changelog changes removed)
|
||||
|
||||
From 0817dc6f0e6b973e0e3671eb72d3758a8f042324 Mon Sep 17 00:00:00 2001
|
||||
From: hjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Sun, 14 Dec 2014 16:07:03 +0000
|
||||
Subject: [PATCH] Pass unpromoted argument to promote_function_mode
|
||||
|
||||
This patch updates setup_incoming_promotions in combine.c to match what
|
||||
is actually passed in assign_parm_setup_reg in function.c.
|
||||
|
||||
Backported from mainline:
|
||||
|
||||
gcc/
|
||||
|
||||
PR rtl-optimization/64037
|
||||
* combine.c (setup_incoming_promotions): Pass the argument
|
||||
before any promotions happen to promote_function_mode.
|
||||
|
||||
gcc/testsuite/
|
||||
|
||||
PR rtl-optimization/64037
|
||||
* g++.dg/pr64037.C: New test.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@218721 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
---
|
||||
gcc/combine.c | 4 ++--
|
||||
gcc/testsuite/g++.dg/pr64037.C | 27 +++++++++++++++++++++++++++
|
||||
4 files changed, 46 insertions(+), 2 deletions(-)
|
||||
create mode 100644 gcc/testsuite/g++.dg/pr64037.C
|
||||
|
||||
diff --git a/gcc/combine.c b/gcc/combine.c
|
||||
index 7c00452..adea2c1 100644
|
||||
--- a/gcc/combine.c
|
||||
+++ b/gcc/combine.c
|
||||
@@ -1529,8 +1529,8 @@ setup_incoming_promotions (rtx first)
|
||||
uns3 = TYPE_UNSIGNED (DECL_ARG_TYPE (arg));
|
||||
|
||||
/* The mode and signedness of the argument as it is actually passed,
|
||||
- after any TARGET_PROMOTE_FUNCTION_ARGS-driven ABI promotions. */
|
||||
- mode3 = promote_function_mode (DECL_ARG_TYPE (arg), mode2, &uns3,
|
||||
+ see assign_parm_setup_reg in function.c. */
|
||||
+ mode3 = promote_function_mode (TREE_TYPE (arg), mode1, &uns3,
|
||||
TREE_TYPE (cfun->decl), 0);
|
||||
|
||||
/* The mode of the register in which the argument is being passed. */
|
||||
diff --git a/gcc/testsuite/g++.dg/pr64037.C b/gcc/testsuite/g++.dg/pr64037.C
|
||||
new file mode 100644
|
||||
index 0000000..e5cd0e2
|
||||
--- /dev/null
|
||||
+++ b/gcc/testsuite/g++.dg/pr64037.C
|
||||
@@ -0,0 +1,27 @@
|
||||
+// { dg-do run { target i?86-*-* x86_64-*-* } }
|
||||
+// { dg-options "-std=c++11 -Os" }
|
||||
+
|
||||
+enum class X : unsigned char {
|
||||
+ V = 2,
|
||||
+};
|
||||
+
|
||||
+static void
|
||||
+__attribute__((noinline,noclone))
|
||||
+foo(unsigned &out, unsigned a, X b)
|
||||
+{
|
||||
+ out = static_cast<unsigned>(b);
|
||||
+}
|
||||
+
|
||||
+int main()
|
||||
+{
|
||||
+ unsigned deadbeef = 0xDEADBEEF;
|
||||
+ asm volatile ("" : "+d" (deadbeef), "+c" (deadbeef));
|
||||
+
|
||||
+ unsigned out;
|
||||
+ foo(out, 2, X::V);
|
||||
+
|
||||
+ if (out != 2)
|
||||
+ __builtin_abort ();
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
--
|
||||
1.7.1
|
||||
|
11
cross/gcc4-armv7/vanilla.specs
Normal file
11
cross/gcc4-armv7/vanilla.specs
Normal file
|
@ -0,0 +1,11 @@
|
|||
%include <hardenednossp.specs>
|
||||
%include <hardenednopie.specs>
|
||||
*esp_link_now:
|
||||
|
||||
|
||||
*esp_link_relro:
|
||||
|
||||
|
||||
*esp_cc1_strict_overflow:
|
||||
|
||||
|
Loading…
Reference in a new issue