From 5d4e179980925af1b5f66fe955c29f8e6536492a Mon Sep 17 00:00:00 2001 From: Alexey Neyman Date: Thu, 17 Nov 2016 17:23:53 -0800 Subject: Remove 4.9.3 patch directory. Signed-off-by: Alexey Neyman diff --git a/patches/gcc/4.9.3/001_gcc_bug_62231.patch b/patches/gcc/4.9.3/001_gcc_bug_62231.patch deleted file mode 100644 index e7c9cf9..0000000 --- a/patches/gcc/4.9.3/001_gcc_bug_62231.patch +++ /dev/null @@ -1,129 +0,0 @@ -As-applied. From: - -https://gcc.gnu.org/ml/gcc-patches/2014-09/msg02625.html - -Linked from bug62231 comment 4 there - -diff -durN a/gcc/defaults.h b/gcc/defaults.h ---- a/gcc/defaults.h 2013-01-10 12:38:27.000000000 -0800 -+++ b/gcc/defaults.h 2014-12-15 13:26:13.498904465 -0800 -@@ -438,6 +438,11 @@ - #define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG) - #endif - -+/* The mapping from dwarf CFA reg number to internal dwarf reg numbers. */ -+#ifndef DWARF_REG_TO_UNWIND_COLUMN -+#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) -+#endif -+ - /* Map register numbers held in the call frame info that gcc has - collected using DWARF_FRAME_REGNUM to those that should be output in - .debug_frame and .eh_frame. */ -diff -durN a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c ---- a/gcc/dwarf2cfi.c 2013-01-10 12:38:27.000000000 -0800 -+++ b/gcc/dwarf2cfi.c 2014-12-15 13:50:24.554883694 -0800 -@@ -225,7 +225,44 @@ - emit_move_insn (adjust_address (mem, mode, offset), GEN_INT (size)); - } - --/* Generate code to initialize the register size table. */ -+/* Helper for expand_builtin_init_dwarf_reg_sizes. Generate code to -+ initialize the dwarf register size table entry corresponding to register -+ REGNO in REGMODE. TABLE is the table base address, SLOTMODE is the mode -+ to use for the size entry to initialize, and WROTE_RETURN_COLUMN needs to -+ be set to true if the dwarf register number for REGNO is the dwarf return -+ column number. */ -+ -+static -+void init_one_dwarf_reg_size (int regno, enum machine_mode regmode, -+ rtx table, enum machine_mode slotmode, -+ bool *wrote_return_column) -+{ -+ const unsigned int dnum = DWARF_FRAME_REGNUM (regno); -+ const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1); -+ const unsigned int dcol = DWARF_REG_TO_UNWIND_COLUMN (rnum); -+ -+ const HOST_WIDE_INT slotoffset = dcol * GET_MODE_SIZE (slotmode); -+ const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode); -+ -+ if (rnum >= DWARF_FRAME_REGISTERS) -+ return; -+ -+ if (dnum == DWARF_FRAME_RETURN_COLUMN) -+ { -+ if (regmode == VOIDmode) -+ return; -+ *wrote_return_column = true; -+ } -+ -+ if (slotoffset < 0) -+ return; -+ -+ emit_move_insn (adjust_address (table, slotmode, slotoffset), -+ gen_int_mode (regsize, slotmode)); -+} -+ -+/* Generate code to initialize the dwarf register size table located -+ at the provided ADDRESS. */ - - void - expand_builtin_init_dwarf_reg_sizes (tree address) -@@ -238,30 +275,21 @@ - - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) - { -- unsigned int dnum = DWARF_FRAME_REGNUM (i); -- unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1); -- -- if (rnum < DWARF_FRAME_REGISTERS) -- { -- HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode); -- enum machine_mode save_mode = reg_raw_mode[i]; -- HOST_WIDE_INT size; -- -- if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode)) -- save_mode = choose_hard_reg_mode (i, 1, true); -- if (dnum == DWARF_FRAME_RETURN_COLUMN) -- { -- if (save_mode == VOIDmode) -- continue; -- wrote_return_column = true; -- } -- size = GET_MODE_SIZE (save_mode); -- if (offset < 0) -- continue; -+ enum machine_mode save_mode = reg_raw_mode[i]; -+ rtx span; - -- emit_move_insn (adjust_address (mem, mode, offset), -- gen_int_mode (size, mode)); -- } -+ span = targetm.dwarf_register_span (gen_rtx_REG (save_mode, i)); -+ if (!span) -+ init_one_dwarf_reg_size (i, save_mode, mem, mode, &wrote_return_column); -+ else -+ { -+ for (int si = 0; si < XVECLEN (span, 0); si++) -+ { -+ rtx reg = XVECEXP (span, 0, si); -+ init_one_dwarf_reg_size -+ (REGNO (reg), GET_MODE (reg), mem, mode, &wrote_return_column); -+ } -+ } - } - - if (!wrote_return_column) -diff -durN a/libgcc/unwind-dw2.c b/libgcc/unwind-dw2.c ---- a/libgcc/unwind-dw2.c 2013-05-31 16:21:46.000000000 -0700 -+++ b/libgcc/unwind-dw2.c 2014-12-15 13:26:13.570904866 -0800 -@@ -55,10 +55,6 @@ - #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS - #endif - --#ifndef DWARF_REG_TO_UNWIND_COLUMN --#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO) --#endif -- - /* ??? For the public function interfaces, we tend to gcc_assert that the - column numbers are in range. For the dwarf2 unwind info this does happen, - although so far in a case that doesn't actually matter. diff --git a/patches/gcc/4.9.3/002_gcc_bug_62231.patch b/patches/gcc/4.9.3/002_gcc_bug_62231.patch deleted file mode 100644 index b970ebc..0000000 --- a/patches/gcc/4.9.3/002_gcc_bug_62231.patch +++ /dev/null @@ -1,18 +0,0 @@ -As-applied. From: - -https://gcc.gnu.org/ml/gcc-patches/2014-10/msg02605.html - -Linked from bug62231 comment 4 there - -diff -durN a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c ---- a/gcc/config/rs6000/rs6000.c 2014-12-08 17:29:04.000000000 -0800 -+++ b/gcc/config/rs6000/rs6000.c 2014-12-15 14:44:46.568801843 -0800 -@@ -1673,7 +1673,7 @@ - SCmode so as to pass the value correctly in a pair of - registers. */ - else if (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode) && mode != SCmode -- && !DECIMAL_FLOAT_MODE_P (mode)) -+ && !DECIMAL_FLOAT_MODE_P (mode) && SPE_SIMD_REGNO_P (regno)) - reg_size = UNITS_PER_FP_WORD; - - else diff --git a/patches/gcc/4.9.3/100-uclibc-conf.patch b/patches/gcc/4.9.3/100-uclibc-conf.patch deleted file mode 100644 index d56bf0a..0000000 --- a/patches/gcc/4.9.3/100-uclibc-conf.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: gcc-4.8.0/contrib/regression/objs-gcc.sh -=================================================================== ---- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh 2009-04-09 17:00:19.000000000 +0200 -+++ gcc-4.8.0/contrib/regression/objs-gcc.sh 2013-03-23 17:39:04.000000000 +0100 -@@ -106,6 +106,10 @@ - then - make all-gdb all-dejagnu all-ld || exit 1 - make install-gdb install-dejagnu install-ld || exit 1 -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] -+ then -+ make all-gdb all-dejagnu all-ld || exit 1 -+ make install-gdb install-dejagnu install-ld || exit 1 - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then - make bootstrap || exit 1 - make install || exit 1 diff --git a/patches/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional b/patches/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional deleted file mode 100644 index b7094fe..0000000 --- a/patches/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional +++ /dev/null @@ -1,122 +0,0 @@ -http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html - -On glibc the libc.so carries a copy of the math function copysignl() but -on uClibc math functions like copysignl() live in libm. Since libgcc_s -contains unresolved symbols, any attempt to link against libgcc_s -without explicitely specifying -lm fails, resulting in a broken -bootstrap of the compiler. - -Forward port to gcc 4.5.1 by Gustavo Zacarias - ---- - libgcc/Makefile.in | 4 +++- - libgcc/configure | 32 ++++++++++++++++++++++++++++++++ - libgcc/configure.ac | 21 +++++++++++++++++++++ - 3 files changed, 56 insertions(+), 1 deletion(-) - -Index: gcc-4.8.0/libgcc/Makefile.in -=================================================================== ---- gcc-4.8.0.orig/libgcc/Makefile.in 2013-02-04 20:06:20.000000000 +0100 -+++ gcc-4.8.0/libgcc/Makefile.in 2013-03-24 09:12:43.000000000 +0100 -@@ -41,6 +41,7 @@ - decimal_float = @decimal_float@ - enable_decimal_float = @enable_decimal_float@ - fixed_point = @fixed_point@ -+LIBGCC_LIBM = @LIBGCC_LIBM@ - - host_noncanonical = @host_noncanonical@ - target_noncanonical = @target_noncanonical@ -@@ -927,9 +928,10 @@ - @multilib_dir@,$(MULTIDIR),$(subst \ - @shlib_objs@,$(objects) libgcc.a,$(subst \ - @shlib_base_name@,libgcc_s,$(subst \ -+ @libgcc_libm@,$(LIBGCC_LIBM),$(subst \ - @shlib_map_file@,$(mapfile),$(subst \ - @shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \ -- @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))) -+ @shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))) - - libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts) - # @multilib_flags@ is still needed because this may use -Index: gcc-4.8.0/libgcc/configure -=================================================================== ---- gcc-4.8.0.orig/libgcc/configure 2012-11-05 00:08:42.000000000 +0100 -+++ gcc-4.8.0/libgcc/configure 2013-03-24 09:12:43.000000000 +0100 -@@ -564,6 +564,7 @@ - tmake_file - sfp_machine_header - set_use_emutls -+LIBGCC_LIBM - set_have_cc_tls - vis_hide - fixed_point -@@ -4481,6 +4482,37 @@ - fi - fi - -+# On powerpc libgcc_s references copysignl which is a libm function but -+# glibc apparently also provides it via libc as opposed to uClibc where -+# it lives in libm. -+echo "$as_me:$LINENO: checking for library containing copysignl" >&5 -+echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6 -+if test "${libgcc_cv_copysignl_lib+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+ echo '#include ' > conftest.c -+ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c -+ libgcc_cv_copysignl_lib="-lc" -+ if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } -+ then -+ libgcc_cv_copysignl_lib="-lm" -+ fi -+ rm -f conftest.* -+ -+fi -+echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5 -+echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6 -+ -+case /${libgcc_cv_copysignl_lib}/ in -+ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;; -+ *) LIBGCC_LIBM= ;; -+esac - - # Conditionalize the makefile for this target machine. - tmake_file_= -Index: gcc-4.8.0/libgcc/configure.ac -=================================================================== ---- gcc-4.8.0.orig/libgcc/configure.ac 2012-10-15 15:10:30.000000000 +0200 -+++ gcc-4.8.0/libgcc/configure.ac 2013-03-24 09:12:43.000000000 +0100 -@@ -326,6 +326,27 @@ - fi - AC_SUBST(set_have_cc_tls) - -+# On powerpc libgcc_s references copysignl which is a libm function but -+# glibc apparently also provides it via libc as opposed to uClibc where -+# it lives in libm. -+AC_CACHE_CHECK -+ libgcc_cv_copysignl_lib, -+ echo '#include ' > conftest.c -+ echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c -+ libgcc_cv_copysignl_lib="-lc" -+ if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD) -+ then -+ libgcc_cv_copysignl_lib="-lm" -+ fi -+ rm -f conftest.* -+ ]) -+ -+case /${libgcc_cv_copysignl_lib}/ in -+ /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;; -+ *) LIBGCC_LIBM= ;; -+esac -+AC_SUBST(LIBGCC_LIBM) -+ - # See if we have emulated thread-local storage. - GCC_CHECK_EMUTLS - set_use_emutls= diff --git a/patches/gcc/4.9.3/111-pr65730.patch b/patches/gcc/4.9.3/111-pr65730.patch deleted file mode 100644 index f195e30..0000000 --- a/patches/gcc/4.9.3/111-pr65730.patch +++ /dev/null @@ -1,37 +0,0 @@ -From b9a7775674d91c7af8043a83211ffeaa576327d7 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Fri, 10 Apr 2015 17:46:30 +0300 -Subject: [PATCH] Fix PR target/65730 - -2015-05-20 Max Filippov -gcc/ - * config/xtensa/xtensa.c (init_alignment_context): Replace MULT - by BITS_PER_UNIT with ASHIFT by exact_log2 (BITS_PER_UNIT). - -Signed-off-by: Max Filippov ---- -Backported from: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223452 -Changes to ChangeLog are dropped. - - gcc/config/xtensa/xtensa.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c -index eb039ba..7296e36 100644 ---- a/gcc/config/xtensa/xtensa.c -+++ b/gcc/config/xtensa/xtensa.c -@@ -1461,8 +1461,9 @@ init_alignment_context (struct alignment_context *ac, rtx mem) - if (ac->shift != NULL_RTX) - { - /* Shift is the byte count, but we need the bitcount. */ -- ac->shift = expand_simple_binop (SImode, MULT, ac->shift, -- GEN_INT (BITS_PER_UNIT), -+ gcc_assert (exact_log2 (BITS_PER_UNIT) >= 0); -+ ac->shift = expand_simple_binop (SImode, ASHIFT, ac->shift, -+ GEN_INT (exact_log2 (BITS_PER_UNIT)), - NULL_RTX, 1, OPTAB_DIRECT); - ac->modemask = expand_simple_binop (SImode, ASHIFT, - GEN_INT (GET_MODE_MASK (mode)), --- -1.8.1.4 - diff --git a/patches/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch b/patches/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch deleted file mode 100644 index 7d9c9e3..0000000 --- a/patches/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 9bf6066d588632dab9f78932df15b5b4140f31f3 Mon Sep 17 00:00:00 2001 -From: "Arnout Vandecappelle (Essensium/Mind)" -Date: Fri, 6 Nov 2015 14:27:23 +0100 -Subject: [PATCH] gcc/config.gcc: fix typo for powerpc e6500 cpu_is_64bit - -Otherwise it is not recognized as a 64-bit powerpc and gcc will not generate -64-bit binaries by default. - -Signed-off-by: Arnout Vandecappelle (Essensium/Mind) ---- - gcc/config.gcc | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/gcc/config.gcc b/gcc/config.gcc -index 4a7cbd2..9cc765e 100644 ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -439,7 +439,7 @@ powerpc*-*-*) - extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h" - need_64bit_hwint=yes - case x$with_cpu in -- xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500) -+ xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500) - cpu_is_64bit=yes - ;; - esac --- -2.6.2 - diff --git a/patches/gcc/4.9.3/130-pr43538.patch b/patches/gcc/4.9.3/130-pr43538.patch deleted file mode 100644 index 19e57bb..0000000 --- a/patches/gcc/4.9.3/130-pr43538.patch +++ /dev/null @@ -1,25 +0,0 @@ -From c037df1be41f8daf4d581d7ffa4ec8cfa640bccf Mon Sep 17 00:00:00 2001 -From: glisse -Date: Fri, 25 Apr 2014 08:03:08 +0000 -Subject: [PATCH] 2014-04-25 Marc Glisse - - PR target/43538 - * mt-gnu: Don't reset CXXFLAGS_FOR_TARGET. - - -git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209784 138bc75d-0d04-0410-961f-82ee72b054a4 -Signed-off-by: Max Filippov ---- - config/mt-gnu | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/config/mt-gnu b/config/mt-gnu -index 15bf417..5c696f5 100644 ---- a/config/mt-gnu -+++ b/config/mt-gnu -@@ -1 +1 @@ --CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE -+CXXFLAGS_FOR_TARGET += -D_GNU_SOURCE --- -2.1.4 - diff --git a/patches/gcc/4.9.3/131-mt-ospace-preserve-FLAGS_FOR_TARGET.patch b/patches/gcc/4.9.3/131-mt-ospace-preserve-FLAGS_FOR_TARGET.patch deleted file mode 100644 index 1c49fb0..0000000 --- a/patches/gcc/4.9.3/131-mt-ospace-preserve-FLAGS_FOR_TARGET.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9bcf38cd9f382486b3823eb923b50e2e9a89cef7 Mon Sep 17 00:00:00 2001 -From: law -Date: Tue, 18 Nov 2014 22:12:52 +0000 -Subject: [PATCH] 2014-11-17 Bob Dunlop - - * mt-ospace (CFLAGS_FOR_TARGET): Append -g -Os rather than - overwriting. - (CXXFLAGS_FOR_TARGET): Similarly. - -git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217739 138bc75d-0d04-0410-961f-82ee72b054a4 -Signed-off-by: Max Filippov ---- - config/mt-ospace | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/config/mt-ospace b/config/mt-ospace -index 7f09104..ce29ff4 100644 ---- a/config/mt-ospace -+++ b/config/mt-ospace -@@ -1,3 +1,3 @@ - # Build libraries optimizing for space, not speed. -- CFLAGS_FOR_TARGET = -g -Os -- CXXFLAGS_FOR_TARGET = -g -Os -+ CFLAGS_FOR_TARGET += -g -Os -+ CXXFLAGS_FOR_TARGET += -g -Os --- -2.1.4 - diff --git a/patches/gcc/4.9.3/301-missing-execinfo_h.patch b/patches/gcc/4.9.3/301-missing-execinfo_h.patch deleted file mode 100644 index 00efda2..0000000 --- a/patches/gcc/4.9.3/301-missing-execinfo_h.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: gcc-4.8.0/boehm-gc/include/gc.h -=================================================================== ---- gcc-4.8.0.orig/boehm-gc/include/gc.h 2007-04-23 23:10:09.000000000 +0200 -+++ gcc-4.8.0/boehm-gc/include/gc.h 2013-03-23 17:39:20.000000000 +0100 -@@ -503,7 +503,7 @@ - #if defined(__linux__) || defined(__GLIBC__) - # include - # 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 diff --git a/patches/gcc/4.9.3/810-arm-softfloat-libgcc.patch b/patches/gcc/4.9.3/810-arm-softfloat-libgcc.patch deleted file mode 100644 index c8cb377..0000000 --- a/patches/gcc/4.9.3/810-arm-softfloat-libgcc.patch +++ /dev/null @@ -1,30 +0,0 @@ -Index: gcc-4.8.0/gcc/config/arm/linux-elf.h -=================================================================== ---- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h 2013-01-10 21:38:27.000000000 +0100 -+++ gcc-4.8.0/gcc/config/arm/linux-elf.h 2013-03-23 17:40:00.000000000 +0100 -@@ -55,7 +55,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" - -Index: gcc-4.8.0/libgcc/config/arm/t-linux -=================================================================== ---- gcc-4.8.0.orig/libgcc/config/arm/t-linux 2012-03-22 16:14:46.000000000 +0100 -+++ gcc-4.8.0/libgcc/config/arm/t-linux 2013-03-23 17:40:54.000000000 +0100 -@@ -1,6 +1,11 @@ - LIB1ASMSRC = arm/lib1funcs.S - LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ -- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 -+ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \ -+ _arm_addsubdf3 _arm_addsubsf3 \ -+ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \ -+ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \ -+ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \ -+ _arm_fixsfsi _arm_fixunssfsi - - # Just for these, we omit the frame pointer since it makes such a big - # difference. diff --git a/patches/gcc/4.9.3/830-arm_unbreak_armv4t.patch b/patches/gcc/4.9.3/830-arm_unbreak_armv4t.patch deleted file mode 100644 index 37f8f2a..0000000 --- a/patches/gcc/4.9.3/830-arm_unbreak_armv4t.patch +++ /dev/null @@ -1,13 +0,0 @@ -http://sourceware.org/ml/crossgcc/2008-05/msg00009.html - ---- a/gcc/config/arm/linux-eabi.h -+++ b/gcc/config/arm/linux-eabi.h -@@ -45,7 +45,7 @@ - The ARM10TDMI core is the default for armv5t, so set - SUBTARGET_CPU_DEFAULT to achieve this. */ - #undef SUBTARGET_CPU_DEFAULT --#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi -+#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi - - /* TARGET_BIG_ENDIAN_DEFAULT is set in - config.gcc for big endian configurations. */ diff --git a/patches/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch b/patches/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch deleted file mode 100644 index e116e2b..0000000 --- a/patches/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch +++ /dev/null @@ -1,169 +0,0 @@ -Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc - -From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001 -From: "Edgar E. Iglesias" -Date: Mon, 18 Jun 2012 20:18:13 +0200 -Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support. - -Changelog - -2013-03-18 Edgar E. Iglesias - David Holsgrove - - * common/config/microblaze/microblaze-common.c: Remove - TARGET_EXCEPT_UNWIND_INFO definition. - * config/microblaze/microblaze-protos.h: Add - microblaze_eh_return prototype. - * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register, - microblaze_expand_epilogue, microblaze_return_addr): Handle - calls_eh_return - (microblaze_eh_return): New function. - * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET, - EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX, - ASM_PREFERRED_EH_DATA_FORMAT - * gcc/config/microblaze/microblaze.md: Define eh_return pattern. - -Signed-off-by: David Holsgrove -Signed-off-by: Edgar E. Iglesias ---- - gcc/common/config/microblaze/microblaze-common.c | 3 --- - gcc/config/microblaze/microblaze-protos.h | 1 + - gcc/config/microblaze/microblaze.c | 29 ++++++++++++++++++++---- - gcc/config/microblaze/microblaze.h | 15 ++++++++++++ - gcc/config/microblaze/microblaze.md | 11 +++++++++ - 5 files changed, 52 insertions(+), 7 deletions(-) - -diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c -index 5835acc..85e6a53 100644 ---- a/gcc/common/config/microblaze/microblaze-common.c -+++ b/gcc/common/config/microblaze/microblaze-common.c -@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] = - #undef TARGET_OPTION_OPTIMIZATION_TABLE - #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table - --#undef TARGET_EXCEPT_UNWIND_INFO --#define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info -- - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; -diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h -index c30ec72..260f4e4 100644 ---- a/gcc/config/microblaze/microblaze-protos.h -+++ b/gcc/config/microblaze/microblaze-protos.h -@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx); - extern int symbol_mentioned_p (rtx); - extern int label_mentioned_p (rtx); - extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx); -+extern void microblaze_eh_return (rtx op0); - #endif /* RTX_CODE */ - - /* Declare functions in microblaze-c.c. */ -diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c -index fe61fce..15166d3 100644 ---- a/gcc/config/microblaze/microblaze.c -+++ b/gcc/config/microblaze/microblaze.c -@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno) - if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM)) - return 1; - -+ if (crtl->calls_eh_return -+ && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) { -+ return 1; -+ } -+ - if (!crtl->is_leaf) - { - if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) -@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno) - return 1; - } - -+ if (crtl->calls_eh_return -+ && (regno == EH_RETURN_DATA_REGNO (0) -+ || regno == EH_RETURN_DATA_REGNO (1))) -+ { -+ return 1; -+ } -+ - return 0; - } - -@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void) - emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx)); - } - -+ if (crtl->calls_eh_return) -+ emit_insn (gen_addsi3 (stack_pointer_rtx, -+ stack_pointer_rtx, -+ gen_rtx_raw_REG (SImode, -+ MB_EH_STACKADJ_REGNUM))); -+ - emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST + - MB_ABI_SUB_RETURN_ADDR_REGNUM))); - } -@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED) - if (count != 0) - return NULL_RTX; - -- return gen_rtx_PLUS (Pmode, -- get_hard_reg_initial_val (Pmode, -- MB_ABI_SUB_RETURN_ADDR_REGNUM), -- GEN_INT (8)); -+ return get_hard_reg_initial_val (Pmode, -+ MB_ABI_SUB_RETURN_ADDR_REGNUM); -+} -+ -+void microblaze_eh_return (rtx op0) -+{ -+ emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0)); - } - - /* Queue an .ident string in the queue of top-level asm statements. -diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h -index 4072283..5e9f49c 100644 ---- a/gcc/config/microblaze/microblaze.h -+++ b/gcc/config/microblaze/microblaze.h -@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe; - #define INCOMING_RETURN_ADDR_RTX \ - gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) - -+/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC. */ -+#define RETURN_ADDR_OFFSET (8) -+ -+/* Describe how we implement __builtin_eh_return. */ -+#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM) -+ -+#define MB_EH_STACKADJ_REGNUM MB_ABI_INT_RETURN_VAL2_REGNUM -+#define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM) -+ -+/* Select a format to encode pointers in exception handling data. CODE -+ is 0 for data, 1 for code labels, 2 for function pointers. GLOBAL is -+ true if the symbol may be affected by dynamic relocations. */ -+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \ -+ ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr) -+ - /* Use DWARF 2 debugging information by default. */ - #define DWARF2_DEBUGGING_INFO - #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG -diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md -index ed6131a..dc2405f 100644 ---- a/gcc/config/microblaze/microblaze.md -+++ b/gcc/config/microblaze/microblaze.md -@@ -2327,4 +2327,15 @@ - (set_attr "mode" "SI") - (set_attr "length" "4")]) - -+; This is used in compiling the unwind routines. -+(define_expand "eh_return" -+ [(use (match_operand 0 "general_operand" ""))] -+ "" -+ " -+{ -+ microblaze_eh_return(operands[0]); -+ DONE; -+}") -+ - (include "sync.md") -+ --- -1.8.3.2 - diff --git a/patches/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch b/patches/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch deleted file mode 100644 index d103af1..0000000 --- a/patches/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch +++ /dev/null @@ -1,255 +0,0 @@ -Allow C99-depending features of libstdc++ with uClibc - -The libstdc++ code is fairly restrictive on how it checks for C99 -compatibility: it requires *complete* C99 support to enable certain -features. For example, uClibc provides a good number of C99 features, -but not C99 complex number support. For this reason, libstdc++ -completely disables many the standard C++ methods that can in fact -work because uClibc provides the necessary functions. - -This patch is similar and highly inspired from -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in -a way that doesn't involve changing the configure.ac script, as -autoreconfiguring gcc is complicated. It simply relies on the fact -that uClibc defines the __UCLIBC__ definition. - -Signed-off-by: Thomas Petazzoni -[Gustavo: update for 4.9.3] - -diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h ---- gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h 2015-06-27 06:46:04.420022179 -0300 -@@ -70,7 +70,7 @@ - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - --#ifdef _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); - #else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h ---- gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h 2015-06-27 06:46:04.465023743 -0300 -@@ -88,7 +88,7 @@ - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - --#ifdef _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); - #else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h ---- gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h 2015-05-28 13:27:46.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h 2015-06-27 06:49:04.741284648 -0300 -@@ -2844,7 +2844,7 @@ - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace - --#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) -+#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)) - - #include - -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc ---- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc 2015-06-27 06:46:04.466023777 -0300 -@@ -572,7 +572,7 @@ - { - const locale __loc = __io.getloc(); - const ctype<_CharT>& __ctype = use_facet >(__loc); --#ifdef _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - // First try a buffer perhaps big enough. - int __cs_size = 64; - char* __cs = static_cast(__builtin_alloca(__cs_size)); -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc ---- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc 2015-06-27 06:46:04.466023777 -0300 -@@ -987,7 +987,7 @@ - char __fbuf[16]; - __num_base::_S_format_float(__io, __fbuf, __mod); - --#ifdef _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - // First try a buffer perhaps big enough (most probably sufficient - // for non-ios_base::fixed outputs) - int __cs_size = __max_digits * 3; -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h ---- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h 2015-06-27 06:46:04.466023777 -0300 -@@ -56,7 +56,7 @@ - using std::floor; - using std::fmod; - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - using std::fpclassify; - using std::isfinite; - using std::isinf; -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h 2015-06-27 06:46:04.466023777 -0300 -@@ -103,7 +103,7 @@ - using std::wmemset; - using std::wcsftime; - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - using std::wcstold; - using std::wcstoll; - using std::wcstoull; -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio gcc-4.9.3/libstdc++-v3/include/c_global/cstdio ---- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio 2014-01-23 18:17:15.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdio 2015-06-27 06:46:04.481024298 -0300 -@@ -146,7 +146,7 @@ - using ::vsprintf; - } // namespace - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - #undef snprintf - #undef vfscanf -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib ---- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib 2015-06-27 06:46:04.466023777 -0300 -@@ -182,7 +182,7 @@ - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - #undef _Exit - #undef llabs -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar gcc-4.9.3/libstdc++-v3/include/c_global/cwchar ---- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_global/cwchar 2015-06-27 06:46:04.466023777 -0300 -@@ -232,7 +232,7 @@ - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - #undef wcstold - #undef wcstoll -@@ -289,7 +289,7 @@ - using std::vwscanf; - #endif - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - using std::wcstold; - using std::wcstoll; - using std::wcstoull; -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio gcc-4.9.3/libstdc++-v3/include/c_std/cstdio ---- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdio 2015-06-27 06:46:04.480024263 -0300 -@@ -144,7 +144,7 @@ - using ::vsprintf; - } // namespace std - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - #undef snprintf - #undef vfscanf -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib ---- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib 2015-06-27 06:46:04.480024263 -0300 -@@ -180,7 +180,7 @@ - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - #undef _Exit - #undef llabs -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar gcc-4.9.3/libstdc++-v3/include/c_std/cwchar ---- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/c_std/cwchar 2015-06-27 06:46:04.480024263 -0300 -@@ -228,7 +228,7 @@ - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - #undef wcstold - #undef wcstoll -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h gcc-4.9.3/libstdc++-v3/include/ext/vstring.h ---- gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/ext/vstring.h 2015-06-27 06:46:04.480024263 -0300 -@@ -2680,7 +2680,7 @@ - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace - --#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) -+#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))) - - #include - -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio gcc-4.9.3/libstdc++-v3/include/tr1/cstdio ---- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdio 2015-06-27 06:46:04.480024263 -0300 -@@ -33,7 +33,7 @@ - - #include - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - namespace std _GLIBCXX_VISIBILITY(default) - { -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib ---- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib 2015-06-27 06:46:04.480024263 -0300 -@@ -35,7 +35,7 @@ - - #if _GLIBCXX_HOSTED - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - namespace std _GLIBCXX_VISIBILITY(default) - { -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar gcc-4.9.3/libstdc++-v3/include/tr1/cwchar ---- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/tr1/cwchar 2015-06-27 06:46:04.480024263 -0300 -@@ -52,7 +52,7 @@ - using std::vwscanf; - #endif - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - using std::wcstold; - using std::wcstoll; - using std::wcstoull; -diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h ---- gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h 2015-06-27 06:46:04.481024298 -0300 -@@ -33,7 +33,7 @@ - - #if _GLIBCXX_HOSTED - --#if _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - - using std::tr1::atoll; - using std::tr1::strtoll; -diff -Nura gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc ---- gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc 2014-01-02 19:30:10.000000000 -0300 -+++ gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc 2015-06-27 06:46:04.481024298 -0300 -@@ -788,7 +788,7 @@ - int __n __attribute__ ((__unused__)), - const char* __fmt, _Tp __s) const throw () - { --#ifdef _GLIBCXX_USE_C99 -+#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) - std::snprintf(__buf, __n, __fmt, __s); - #else - std::sprintf(__buf, __fmt, __s); diff --git a/patches/gcc/4.9.3/860-cilk-wchar.patch b/patches/gcc/4.9.3/860-cilk-wchar.patch deleted file mode 100644 index 1837405..0000000 --- a/patches/gcc/4.9.3/860-cilk-wchar.patch +++ /dev/null @@ -1,56 +0,0 @@ -[PATCH] cilk: fix build without wchar - -When building against uClibc with wchar support disabled, WCHAR_MIN and -WCHAR_MAX are not defined leading to compilation errors. - -Fix it by only including the wchar code if available. - -Signed-off-by: Peter Korsgaard ---- - libcilkrts/include/cilk/reducer_min_max.h | 8 ++++++++ - 1 file changed, 8 insertions(+) - -Index: host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h -=================================================================== ---- host-gcc-final-4.9.2.orig/libcilkrts/include/cilk/reducer_min_max.h -+++ host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h -@@ -3154,7 +3154,9 @@ - CILK_C_REDUCER_MAX_INSTANCE(char, char, CHAR_MIN) - CILK_C_REDUCER_MAX_INSTANCE(unsigned char, uchar, 0) - CILK_C_REDUCER_MAX_INSTANCE(signed char, schar, SCHAR_MIN) -+#ifdef WCHAR_MIN - CILK_C_REDUCER_MAX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) -+#endif - CILK_C_REDUCER_MAX_INSTANCE(short, short, SHRT_MIN) - CILK_C_REDUCER_MAX_INSTANCE(unsigned short, ushort, 0) - CILK_C_REDUCER_MAX_INSTANCE(int, int, INT_MIN) -@@ -3306,7 +3308,9 @@ - CILK_C_REDUCER_MAX_INDEX_INSTANCE(char, char, CHAR_MIN) - CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char, uchar, 0) - CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char, schar, SCHAR_MIN) -+#ifdef WCHAR_MIN - CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MIN) -+#endif - CILK_C_REDUCER_MAX_INDEX_INSTANCE(short, short, SHRT_MIN) - CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short, ushort, 0) - CILK_C_REDUCER_MAX_INDEX_INSTANCE(int, int, INT_MIN) -@@ -3432,7 +3436,9 @@ - CILK_C_REDUCER_MIN_INSTANCE(char, char, CHAR_MAX) - CILK_C_REDUCER_MIN_INSTANCE(unsigned char, uchar, CHAR_MAX) - CILK_C_REDUCER_MIN_INSTANCE(signed char, schar, SCHAR_MAX) -+#ifdef WCHAR_MAX - CILK_C_REDUCER_MIN_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) -+#endif - CILK_C_REDUCER_MIN_INSTANCE(short, short, SHRT_MAX) - CILK_C_REDUCER_MIN_INSTANCE(unsigned short, ushort, USHRT_MAX) - CILK_C_REDUCER_MIN_INSTANCE(int, int, INT_MAX) -@@ -3584,7 +3590,9 @@ - CILK_C_REDUCER_MIN_INDEX_INSTANCE(char, char, CHAR_MAX) - CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char, uchar, CHAR_MAX) - CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char, schar, SCHAR_MAX) -+#ifdef WCHAR_MAX - CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t, wchar_t, WCHAR_MAX) -+#endif - CILK_C_REDUCER_MIN_INDEX_INSTANCE(short, short, SHRT_MAX) - CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short, ushort, USHRT_MAX) - CILK_C_REDUCER_MIN_INDEX_INSTANCE(int, int, INT_MAX) diff --git a/patches/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch b/patches/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch deleted file mode 100644 index aa1376c..0000000 --- a/patches/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch +++ /dev/null @@ -1,290 +0,0 @@ -From 6d852ffb43b111a39162135c95249e749c4e285b Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Thu, 6 Aug 2015 01:16:02 +0300 -Subject: [PATCH] xtensa: add -mauto-litpools option - -With support from assembler this option allows compiling huge functions, -where single literal pool at the beginning of a function may not be -reachable by L32R instructions at its end. - -Currently assembler --auto-litpools option cannot deal with literals -used from multiple locations separated by more than 256 KBytes of code. -Don't turn constants into literals, instead use MOVI instruction to load -them into registers and let the assembler turn them into literals as -necessary. - -2015-08-12 Max Filippov -gcc/ - * config/xtensa/constraints.md (define_constraint "Y"): New - constraint. - * config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools. - * config/xtensa/linux.h (ASM_SPEC): Likewise. - * config/xtensa/predicates.md (move_operand): Match constants - and symbols in the presence of TARGET_AUTO_LITPOOLS. - * config/xtensa/xtensa.c (xtensa_valid_move): Don't allow - immediate references to TLS data. - (xtensa_emit_move_sequence): Don't force constants to memory in - the presence of TARGET_AUTO_LITPOOLS. - (print_operand): Add 'y' format, same as default, but capable of - printing SF mode constants as well. - * config/xtensa/xtensa.md (movsi_internal, movhi_internal) - (movsf_internal): Add movi pattern that loads literal. - (movsf, movdf): Don't force constants to memory in the presence - of TARGET_AUTO_LITPOOLS. - (movdf_internal): Add 'Y' constraint. - * config/xtensa/xtensa.opt (mauto-litpools): New option. - -Signed-off-by: Max Filippov ---- -Backported from: r226828 -Changes to ChangeLogs and documentation are dropped. - - gcc/config/xtensa/constraints.md | 5 +++++ - gcc/config/xtensa/elf.h | 4 +++- - gcc/config/xtensa/linux.h | 4 +++- - gcc/config/xtensa/predicates.md | 3 ++- - gcc/config/xtensa/xtensa.c | 19 ++++++++++++++++++- - gcc/config/xtensa/xtensa.md | 35 +++++++++++++++++++---------------- - gcc/config/xtensa/xtensa.opt | 4 ++++ - 7 files changed, 54 insertions(+), 20 deletions(-) - -diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md -index 30f4c1f..773d4f9 100644 ---- a/gcc/config/xtensa/constraints.md -+++ b/gcc/config/xtensa/constraints.md -@@ -111,6 +111,11 @@ - (and (match_code "const_int") - (match_test "xtensa_mask_immediate (ival)"))) - -+(define_constraint "Y" -+ "A constant that can be used in relaxed MOVI instructions." -+ (and (match_code "const_int,const_double,const,symbol_ref,label_ref") -+ (match_test "TARGET_AUTO_LITPOOLS"))) -+ - ;; Memory constraints. Do not use define_memory_constraint here. Doing so - ;; causes reload to force some constants into the constant pool, but since - ;; the Xtensa constant pool can only be accessed with L32R instructions, it -diff --git a/gcc/config/xtensa/elf.h b/gcc/config/xtensa/elf.h -index e59bede..12056f7 100644 ---- a/gcc/config/xtensa/elf.h -+++ b/gcc/config/xtensa/elf.h -@@ -48,7 +48,9 @@ along with GCC; see the file COPYING3. If not see - %{mtarget-align:--target-align} \ - %{mno-target-align:--no-target-align} \ - %{mlongcalls:--longcalls} \ -- %{mno-longcalls:--no-longcalls}" -+ %{mno-longcalls:--no-longcalls} \ -+ %{mauto-litpools:--auto-litpools} \ -+ %{mno-auto-litpools:--no-auto-litpools}" - - #undef LIB_SPEC - #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal" -diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h -index 675aacf..5b0243a 100644 ---- a/gcc/config/xtensa/linux.h -+++ b/gcc/config/xtensa/linux.h -@@ -42,7 +42,9 @@ along with GCC; see the file COPYING3. If not see - %{mtarget-align:--target-align} \ - %{mno-target-align:--no-target-align} \ - %{mlongcalls:--longcalls} \ -- %{mno-longcalls:--no-longcalls}" -+ %{mno-longcalls:--no-longcalls} \ -+ %{mauto-litpools:--auto-litpools} \ -+ %{mno-auto-litpools:--no-auto-litpools}" - - #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1" - -diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md -index e02209e..d7dfa11 100644 ---- a/gcc/config/xtensa/predicates.md -+++ b/gcc/config/xtensa/predicates.md -@@ -142,7 +142,8 @@ - (match_test "GET_MODE_CLASS (mode) == MODE_INT - && xtensa_simm12b (INTVAL (op))")) - (and (match_code "const_int,const_double,const,symbol_ref,label_ref") -- (match_test "TARGET_CONST16 && CONSTANT_P (op) -+ (match_test "(TARGET_CONST16 || TARGET_AUTO_LITPOOLS) -+ && CONSTANT_P (op) - && GET_MODE_SIZE (mode) % UNITS_PER_WORD == 0"))))) - - ;; Accept the floating point constant 1 in the appropriate mode. -diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c -index eb039ba..206ff80 100644 ---- a/gcc/config/xtensa/xtensa.c -+++ b/gcc/config/xtensa/xtensa.c -@@ -501,6 +501,9 @@ xtensa_valid_move (machine_mode mode, rtx *operands) - { - int dst_regnum = xt_true_regnum (operands[0]); - -+ if (xtensa_tls_referenced_p (operands[1])) -+ return FALSE; -+ - /* The stack pointer can only be assigned with a MOVSP opcode. */ - if (dst_regnum == STACK_POINTER_REGNUM) - return !TARGET_WINDOWED_ABI -@@ -1069,7 +1072,7 @@ xtensa_emit_move_sequence (rtx *operands, machine_mode mode) - return 1; - } - -- if (! TARGET_CONST16) -+ if (! TARGET_AUTO_LITPOOLS && ! TARGET_CONST16) - { - src = force_const_mem (SImode, src); - operands[1] = src; -@@ -2449,6 +2452,20 @@ print_operand (FILE *file, rtx x, int letter) - } - break; - -+ case 'y': -+ if (GET_CODE (x) == CONST_DOUBLE && -+ GET_MODE (x) == SFmode) -+ { -+ REAL_VALUE_TYPE r; -+ long l; -+ REAL_VALUE_FROM_CONST_DOUBLE (r, x); -+ REAL_VALUE_TO_TARGET_SINGLE (r, l); -+ fprintf (file, "0x%08lx", l); -+ break; -+ } -+ -+ /* fall through */ -+ - default: - if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG) - fprintf (file, "%s", reg_names[xt_true_regnum (x)]); -diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md -index 6d84384..0e673a3 100644 ---- a/gcc/config/xtensa/xtensa.md -+++ b/gcc/config/xtensa/xtensa.md -@@ -761,8 +761,8 @@ - }) - - (define_insn "movsi_internal" -- [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,W,a,a,U,*a,*A") -- (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,i,T,U,r,*A,*r"))] -+ [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A") -+ (match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))] - "xtensa_valid_move (SImode, operands)" - "@ - movi.n\t%0, %x1 -@@ -774,15 +774,16 @@ - mov\t%0, %1 - movsp\t%0, %1 - movi\t%0, %x1 -+ movi\t%0, %1 - const16\t%0, %t1\;const16\t%0, %b1 - %v1l32r\t%0, %1 - %v1l32i\t%0, %1 - %v0s32i\t%1, %0 - rsr\t%0, ACCLO - wsr\t%1, ACCLO" -- [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,load,load,store,rsr,wsr") -+ [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr") - (set_attr "mode" "SI") -- (set_attr "length" "2,2,2,2,2,2,3,3,3,6,3,3,3,3,3")]) -+ (set_attr "length" "2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")]) - - ;; 16-bit Integer moves - -@@ -796,21 +797,22 @@ - }) - - (define_insn "movhi_internal" -- [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A") -- (match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))] -+ [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A") -+ (match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))] - "xtensa_valid_move (HImode, operands)" - "@ - movi.n\t%0, %x1 - mov.n\t%0, %1 - mov\t%0, %1 - movi\t%0, %x1 -+ movi\t%0, %1 - %v1l16ui\t%0, %1 - %v0s16i\t%1, %0 - rsr\t%0, ACCLO - wsr\t%1, ACCLO" -- [(set_attr "type" "move,move,move,move,load,store,rsr,wsr") -+ [(set_attr "type" "move,move,move,move,move,load,store,rsr,wsr") - (set_attr "mode" "HI") -- (set_attr "length" "2,2,3,3,3,3,3,3")]) -+ (set_attr "length" "2,2,3,3,3,3,3,3,3")]) - - ;; 8-bit Integer moves - -@@ -881,7 +883,7 @@ - (match_operand:SF 1 "general_operand" ""))] - "" - { -- if (!TARGET_CONST16 && CONSTANT_P (operands[1])) -+ if (!TARGET_CONST16 && !TARGET_AUTO_LITPOOLS && CONSTANT_P (operands[1])) - operands[1] = force_const_mem (SFmode, operands[1]); - - if ((!register_operand (operands[0], SFmode) -@@ -896,8 +898,8 @@ - }) - - (define_insn "movsf_internal" -- [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,W,a,a,U") -- (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,iF,T,U,r"))] -+ [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,a,W,a,a,U") -+ (match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,Y,iF,T,U,r"))] - "((register_operand (operands[0], SFmode) - || register_operand (operands[1], SFmode)) - && !(FP_REG_P (xt_true_regnum (operands[0])) -@@ -912,13 +914,14 @@ - mov\t%0, %1 - wfr\t%0, %1 - rfr\t%0, %1 -+ movi\t%0, %y1 - const16\t%0, %t1\;const16\t%0, %b1 - %v1l32r\t%0, %1 - %v1l32i\t%0, %1 - %v0s32i\t%1, %0" -- [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,load,load,store") -+ [(set_attr "type" "farith,fload,fstore,move,load,store,move,farith,farith,move,move,load,load,store") - (set_attr "mode" "SF") -- (set_attr "length" "3,3,3,2,2,2,3,3,3,6,3,3,3")]) -+ (set_attr "length" "3,3,3,2,2,2,3,3,3,3,6,3,3,3")]) - - (define_insn "*lsiu" - [(set (match_operand:SF 0 "register_operand" "=f") -@@ -991,7 +994,7 @@ - (match_operand:DF 1 "general_operand" ""))] - "" - { -- if (CONSTANT_P (operands[1]) && !TARGET_CONST16) -+ if (CONSTANT_P (operands[1]) && !TARGET_CONST16 && !TARGET_AUTO_LITPOOLS) - operands[1] = force_const_mem (DFmode, operands[1]); - - if (!register_operand (operands[0], DFmode) -@@ -1002,8 +1005,8 @@ - }) - - (define_insn_and_split "movdf_internal" -- [(set (match_operand:DF 0 "nonimmed_operand" "=a,W,a,a,U") -- (match_operand:DF 1 "move_operand" "r,iF,T,U,r"))] -+ [(set (match_operand:DF 0 "nonimmed_operand" "=a,a,W,a,a,U") -+ (match_operand:DF 1 "move_operand" "r,Y,iF,T,U,r"))] - "register_operand (operands[0], DFmode) - || register_operand (operands[1], DFmode)" - "#" -diff --git a/gcc/config/xtensa/xtensa.opt b/gcc/config/xtensa/xtensa.opt -index 2fd6cee..21c6e96 100644 ---- a/gcc/config/xtensa/xtensa.opt -+++ b/gcc/config/xtensa/xtensa.opt -@@ -38,6 +38,10 @@ mtext-section-literals - Target - Intersperse literal pools with code in the text section - -+mauto-litpools -+Target Report Mask(AUTO_LITPOOLS) -+Relax literals in assembler and place them automatically in the text section -+ - mserialize-volatile - Target Report Mask(SERIALIZE_VOLATILE) - -mno-serialize-volatile Do not serialize volatile memory references with MEMW instructions --- -1.8.1.4 - diff --git a/patches/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch b/patches/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch deleted file mode 100644 index abc7a08..0000000 --- a/patches/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 05154174b369505238b759cf80d595d8cfc8c731 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Mon, 10 Aug 2015 21:35:20 +0300 -Subject: [PATCH 1/3] xtensa: reimplement register spilling - -Spilling windowed registers in userspace is much easier, more portable, -less error-prone and equally effective as in kernel. Now that register -spilling syscall is considered obsolete in the xtensa linux kernel -replace it with CALL12 followed by series of ENTRY in libgcc. - -2015-08-18 Max Filippov -libgcc/ - * config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use - CALL12 followed by series of ENTRY to spill windowed registers. - (__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill - instead of making linux spill syscall. - -Signed-off-by: Max Filippov ---- -Backported from: r226962 - - libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++------- - 1 file changed, 23 insertions(+), 7 deletions(-) - -diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S -index 3ac8c1d..2e678af 100644 ---- a/libgcc/config/xtensa/lib2funcs.S -+++ b/libgcc/config/xtensa/lib2funcs.S -@@ -33,10 +33,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - .global __xtensa_libgcc_window_spill - .type __xtensa_libgcc_window_spill,@function - __xtensa_libgcc_window_spill: -- entry sp, 32 -- movi a2, 0 -- syscall -+ entry sp, 48 -+#if XCHAL_NUM_AREGS > 16 -+ call12 1f -+ retw -+ .align 4 -+1: -+ .rept (XCHAL_NUM_AREGS - 24) / 12 -+ _entry sp, 48 -+ mov a12, a0 -+ .endr -+ _entry sp, 16 -+#if XCHAL_NUM_AREGS % 12 == 0 -+ mov a4, a4 -+#elif XCHAL_NUM_AREGS % 12 == 4 -+ mov a8, a8 -+#elif XCHAL_NUM_AREGS % 12 == 8 -+ mov a12, a12 -+#endif -+ retw -+#else -+ mov a8, a8 - retw -+#endif - .size __xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill - - -@@ -58,10 +77,7 @@ __xtensa_nonlocal_goto: - entry sp, 32 - - /* Flush registers. */ -- mov a5, a2 -- movi a2, 0 -- syscall -- mov a2, a5 -+ call8 __xtensa_libgcc_window_spill - - /* Because the save area for a0-a3 is stored one frame below - the one identified by a2, the only way to restore those --- -1.8.1.4 - diff --git a/patches/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch b/patches/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch deleted file mode 100644 index f23a5c0..0000000 --- a/patches/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From f66206679a0ad604f13673559f230160cd3d1189 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Fri, 14 Aug 2015 02:45:02 +0300 -Subject: [PATCH 2/3] xtensa: use unwind-dw2-fde-dip instead of unwind-dw2-fde - -This allows having exception cleanup code in binaries that don't -register their unwind tables. - -2015-08-18 Max Filippov -libgcc/ - * config/xtensa/t-xtensa (LIB2ADDEH): Replace unwind-dw2-fde - with unwind-dw2-fde-dip. - -Signed-off-by: Max Filippov ---- -Backported from: r226963 - - libgcc/config/xtensa/t-xtensa | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa -index 27399e6..66d0eb3 100644 ---- a/libgcc/config/xtensa/t-xtensa -+++ b/libgcc/config/xtensa/t-xtensa -@@ -13,4 +13,4 @@ LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \ - LIB2ADD = $(srcdir)/config/xtensa/lib2funcs.S - - LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \ -- $(srcdir)/unwind-dw2-fde.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c -+ $(srcdir)/unwind-dw2-fde-dip.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c --- -1.8.1.4 - diff --git a/patches/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch b/patches/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch deleted file mode 100644 index dc40513..0000000 --- a/patches/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 15c7c4d39b317f0d902ef28fd43eca5c3369f891 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Sat, 15 Aug 2015 05:12:11 +0300 -Subject: [PATCH 3/3] xtensa: fix _Unwind_GetCFA - -Returning context->cfa in _Unwind_GetCFA makes CFA point one stack frame -higher than what was actually used by code at context->ra. This results -in invalid CFA value in signal frames and premature unwinding completion -in forced unwinding used by uClibc NPTL thread cancellation. -Returning context->sp from _Unwind_GetCFA makes all CFA values valid and -matching code that used them. - -2015-08-18 Max Filippov -libgcc/ - * config/xtensa/unwind-dw2-xtensa.c (_Unwind_GetCFA): Return - context->sp instead of context->cfa. - -Signed-off-by: Max Filippov ---- -Backported from: r226964 - - libgcc/config/xtensa/unwind-dw2-xtensa.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libgcc/config/xtensa/unwind-dw2-xtensa.c b/libgcc/config/xtensa/unwind-dw2-xtensa.c -index 35f7797..ef6b900 100644 ---- a/libgcc/config/xtensa/unwind-dw2-xtensa.c -+++ b/libgcc/config/xtensa/unwind-dw2-xtensa.c -@@ -130,7 +130,7 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index) - _Unwind_Word - _Unwind_GetCFA (struct _Unwind_Context *context) - { -- return (_Unwind_Ptr) context->cfa; -+ return (_Unwind_Ptr) context->sp; - } - - /* Overwrite the saved value for register INDEX in CONTEXT with VAL. */ --- -1.8.1.4 - diff --git a/patches/gcc/4.9.3/900-musl-support.patch b/patches/gcc/4.9.3/900-musl-support.patch deleted file mode 100644 index a711b06..0000000 --- a/patches/gcc/4.9.3/900-musl-support.patch +++ /dev/null @@ -1,640 +0,0 @@ -Add musl support to gcc - -This patch comes from the musl-cross project at -https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version: - - * the config.sub modifications have been removed, because Buildroot - already overwrites all config.sub with a more recent config.sub - that has musl support. - - * change to ensure that a dummy dynamic linker path - MUSL_DYNAMIC_LINKER is defined for all architectures, - otherwise building gcc for architectures not supported by musl was - causing build failure. Bug reported upstream at - https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on. - - * change the USE_PT_GNU_EH_FRAME logic to keep the existing gcc logic - and only add the musl one as an addition, not as a replacement. Not - doing this breaks C++ exception handling with glibc, because - USE_PT_GNU_EH_FRAME doesn't get defined due to the configure script - not testing dl_iterate_phdr() on any system except Solaris. - -[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1] -Signed-off-by: Thomas Petazzoni ---- - -Index: b/fixincludes/mkfixinc.sh -=================================================================== ---- a/fixincludes/mkfixinc.sh -+++ b/fixincludes/mkfixinc.sh -@@ -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} -Index: b/gcc/config.gcc -=================================================================== ---- a/gcc/config.gcc -+++ b/gcc/config.gcc -@@ -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" - ;; -@@ -2322,6 +2325,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 -Index: b/gcc/config/aarch64/aarch64-linux.h -=================================================================== ---- a/gcc/config/aarch64/aarch64-linux.h -+++ b/gcc/config/aarch64/aarch64-linux.h -@@ -22,6 +22,8 @@ - #define GCC_AARCH64_LINUX_H - - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1" -+#undef MUSL_DYNAMIC_LINKER -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1" - - #define CPP_SPEC "%{pthread:-D_REENTRANT}" - -Index: b/gcc/config/arm/linux-eabi.h -=================================================================== ---- a/gcc/config/arm/linux-eabi.h -+++ b/gcc/config/arm/linux-eabi.h -@@ -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 -Index: b/gcc/config/i386/linux.h -=================================================================== ---- a/gcc/config/i386/linux.h -+++ b/gcc/config/i386/linux.h -@@ -21,3 +21,5 @@ - - #define GNU_USER_LINK_EMULATION "elf_i386" - #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#undef MUSL_DYNAMIC_LINKER -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1" -Index: b/gcc/config/i386/linux64.h -=================================================================== ---- a/gcc/config/i386/linux64.h -+++ b/gcc/config/i386/linux64.h -@@ -30,3 +30,10 @@ - #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" -+ -+#undef MUSL_DYNAMIC_LINKER32 -+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1" -+#undef MUSL_DYNAMIC_LINKER64 -+#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1" -+#undef MUSL_DYNAMIC_LINKERX32 -+#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1" -Index: b/gcc/config/linux.h -=================================================================== ---- a/gcc/config/linux.h -+++ b/gcc/config/linux.h -@@ -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 */ -@@ -82,23 +87,103 @@ - #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64" - #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32" - -+/* Musl dynamic linker paths must be defined on a per-architecture -+ basis, for each architecture supported by Musl. However, in order -+ to let other architectures continue to build with other C -+ libraries, we provide a dummy definition of the following defines. */ -+#define MUSL_DYNAMIC_LINKER "invalid" -+#define MUSL_DYNAMIC_LINKER32 "invalid" -+#define MUSL_DYNAMIC_LINKER64 "invalid" -+#define MUSL_DYNAMIC_LINKERX32 "invalid" -+ - #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_LINKER32) - - /* 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 -Index: b/gcc/config/linux.opt -=================================================================== ---- a/gcc/config/linux.opt -+++ b/gcc/config/linux.opt -@@ -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 -Index: b/gcc/config/microblaze/linux.h -=================================================================== ---- a/gcc/config/microblaze/linux.h -+++ b/gcc/config/microblaze/linux.h -@@ -25,7 +25,23 @@ - #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 -+ -+#undef MUSL_DYNAMIC_LINKER -+#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 } -Index: b/gcc/config/rs6000/linux64.h -=================================================================== ---- a/gcc/config/rs6000/linux64.h -+++ b/gcc/config/rs6000/linux64.h -@@ -375,17 +375,23 @@ - #endif - #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0" - #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0" -+#undef MUSL_DYNAMIC_LINKER32 -+#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1" -+#undef MUSL_DYNAMIC_LINKER64 -+#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) -Index: b/gcc/config/rs6000/secureplt.h -=================================================================== ---- a/gcc/config/rs6000/secureplt.h -+++ b/gcc/config/rs6000/secureplt.h -@@ -18,3 +18,4 @@ - . */ - - #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt" -+#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt" -Index: b/gcc/config/rs6000/sysv4.h -=================================================================== ---- a/gcc/config/rs6000/sysv4.h -+++ b/gcc/config/rs6000/sysv4.h -@@ -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 }, \ -Index: b/gcc/config/sh/linux.h -=================================================================== ---- a/gcc/config/sh/linux.h -+++ b/gcc/config/sh/linux.h -@@ -43,7 +43,15 @@ - - #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" -+#undef MUSL_DYNAMIC_LINKER -+#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" -Index: b/gcc/configure -=================================================================== ---- a/gcc/configure -+++ b/gcc/configure -@@ -27449,6 +27453,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 -Index: b/gcc/configure.ac -=================================================================== ---- a/gcc/configure.ac -+++ b/gcc/configure.ac -@@ -5108,6 +5112,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 -Index: b/gcc/ginclude/stddef.h -=================================================================== ---- a/gcc/ginclude/stddef.h -+++ b/gcc/ginclude/stddef.h -@@ -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 */ -Index: b/libgcc/unwind-dw2-fde-dip.c -=================================================================== ---- a/libgcc/unwind-dw2-fde-dip.c -+++ b/libgcc/unwind-dw2-fde-dip.c -@@ -73,6 +73,13 @@ - && defined(TARGET_DL_ITERATE_PHDR) \ - && defined(__sun__) && defined(__svr4__) - # define USE_PT_GNU_EH_FRAME -+ #endif -+ -+/* For musl libc, TARGET_DL_ITERATE_PHDR gets defined by the configure -+ script. */ -+#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \ -+ && defined(TARGET_DL_ITERATE_PHDR) -+# define USE_PT_GNU_EH_FRAME - #endif - - #if defined(USE_PT_GNU_EH_FRAME) -Index: b/libgomp/config/posix/time.c -=================================================================== ---- a/libgomp/config/posix/time.c -+++ b/libgomp/config/posix/time.c -@@ -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 - #if TIME_WITH_SYS_TIME -Index: b/libitm/config/arm/hwcap.cc -=================================================================== ---- a/libitm/config/arm/hwcap.cc -+++ b/libitm/config/arm/hwcap.cc -@@ -40,7 +40,11 @@ - - #ifdef __linux__ - #include -+#ifdef __GLIBC__ - #include -+#else -+#include -+#endif - #include - - static void __attribute__((constructor)) -Index: b/libitm/config/linux/x86/tls.h -=================================================================== ---- a/libitm/config/linux/x86/tls.h -+++ b/libitm/config/linux/x86/tls.h -@@ -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 -Index: b/libstdc++-v3/configure.host -=================================================================== ---- a/libstdc++-v3/configure.host -+++ b/libstdc++-v3/configure.host -@@ -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" - ;; -Index: b/gcc/config/mips/linux64.h -=================================================================== ---- a/gcc/config/mips/linux64.h -+++ b/gcc/config/mips/linux64.h -@@ -41,4 +41,4 @@ - #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32" - #define GNU_USER_DYNAMIC_LINKERN32 \ - CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \ -- BIONIC_DYNAMIC_LINKERN32) -+ BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER) -Index: b/gcc/config/mips/linux.h -=================================================================== ---- a/gcc/config/mips/linux.h -+++ b/gcc/config/mips/linux.h -@@ -23,3 +23,11 @@ - #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 -+#undef MUSL_DYNAMIC_LINKER -+#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1" diff --git a/patches/gcc/4.9.3/920-libgcc-remove-unistd-header.patch b/patches/gcc/4.9.3/920-libgcc-remove-unistd-header.patch deleted file mode 100644 index df5372b..0000000 --- a/patches/gcc/4.9.3/920-libgcc-remove-unistd-header.patch +++ /dev/null @@ -1,12 +0,0 @@ -Upstream status: In progress - ---- a/libgcc/config/nios2/linux-atomic.c -+++ b/libgcc/config/nios2/linux-atomic.c -@@ -20,7 +20,6 @@ - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - . */ - --#include - #define EFAULT 14 - #define EBUSY 16 - #define ENOSYS 38 -- cgit v0.10.2-6-g49f6