diff options
Diffstat (limited to 'misc/buildroot/toolchain')
17 files changed, 794 insertions, 15 deletions
diff --git a/misc/buildroot/toolchain/binutils/2.24/120-sh-conf.patch b/misc/buildroot/toolchain/binutils/2.24/120-sh-conf.patch new file mode 100644 index 000000000..ea3d1b606 --- /dev/null +++ b/misc/buildroot/toolchain/binutils/2.24/120-sh-conf.patch @@ -0,0 +1,29 @@ +r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines + +Likewise, binutils has no idea about any of these new targets either, so we +fix that up too.. now we're able to actually build a real toolchain for +sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more +inept targets than that one, really. Go look, I promise). + +--- a/configure ++++ b/configure +@@ -1495,7 +1495,7 @@ + mips*-*-*) + noconfigdirs="$noconfigdirs gprof" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; +--- a/configure.ac ++++ b/configure.ac +@@ -712,7 +712,7 @@ + mips*-*-*) + noconfigdirs="$noconfigdirs gprof" + ;; +- sh-*-* | sh64-*-*) ++ sh*-*-* | sh64-*-*) + case "${target}" in + sh*-*-elf) + ;; diff --git a/misc/buildroot/toolchain/binutils/2.24/300-001_ld_makefile_patch.patch b/misc/buildroot/toolchain/binutils/2.24/300-001_ld_makefile_patch.patch new file mode 100644 index 000000000..5cb0f614d --- /dev/null +++ b/misc/buildroot/toolchain/binutils/2.24/300-001_ld_makefile_patch.patch @@ -0,0 +1,24 @@ +diff -u binutils-2.17.50.0.17.oorig/ld/Makefile.am binutils-2.17.50.0.17/ld/Makefile.am +--- binutils-2.17.50.0.17.oorig/ld/Makefile.am 2007-06-18 19:29:29.000000000 +0200 ++++ binutils-2.17.50.0.17/ld/Makefile.am 2007-06-25 10:00:36.000000000 +0200 +@@ -18,7 +18,7 @@ + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + + EMUL = @EMUL@ + EMULATION_OFILES = @EMULATION_OFILES@ +diff -u binutils-2.17.50.0.17.oorig/ld/Makefile.in binutils-2.17.50.0.17/ld/Makefile.in +--- binutils-2.17.50.0.17.oorig/ld/Makefile.in 2007-06-18 19:29:29.000000000 +0200 ++++ binutils-2.17.50.0.17/ld/Makefile.in 2007-06-25 10:00:36.000000000 +0200 +@@ -287,7 +287,7 @@ + # We put the scripts in the directory $(scriptdir)/ldscripts. + # We can't put the scripts in $(datadir) because the SEARCH_DIR + # directives need to be different for native and cross linkers. +-scriptdir = $(tooldir)/lib ++scriptdir = $(libdir) + BASEDIR = $(srcdir)/.. + BFDDIR = $(BASEDIR)/bfd + INCDIR = $(BASEDIR)/include diff --git a/misc/buildroot/toolchain/binutils/2.24/300-012_check_ldrunpath_length.patch b/misc/buildroot/toolchain/binutils/2.24/300-012_check_ldrunpath_length.patch new file mode 100644 index 000000000..df783109b --- /dev/null +++ b/misc/buildroot/toolchain/binutils/2.24/300-012_check_ldrunpath_length.patch @@ -0,0 +1,21 @@ +diff -Nura binutils-2.21.orig/ld/emultempl/elf32.em binutils-2.21/ld/emultempl/elf32.em +--- binutils-2.21.orig/ld/emultempl/elf32.em 2010-10-29 09:10:36.000000000 -0300 ++++ binutils-2.21/ld/emultempl/elf32.em 2010-12-10 09:26:56.746102724 -0300 +@@ -1270,6 +1270,8 @@ + && command_line.rpath == NULL) + { + lib_path = (const char *) getenv ("LD_RUN_PATH"); ++ if ((lib_path) && (strlen (lib_path) == 0)) ++ lib_path = NULL; + if (gld${EMULATION_NAME}_search_needed (lib_path, &n, + force)) + break; +@@ -1497,6 +1499,8 @@ + rpath = command_line.rpath; + if (rpath == NULL) + rpath = (const char *) getenv ("LD_RUN_PATH"); ++ if ((rpath) && (strlen (rpath) == 0)) ++ rpath = NULL; + + for (abfd = link_info.input_bfds; abfd; abfd = abfd->link_next) + if (bfd_get_flavour (abfd) == bfd_target_elf_flavour) diff --git a/misc/buildroot/toolchain/binutils/2.24/500-sysroot.patch b/misc/buildroot/toolchain/binutils/2.24/500-sysroot.patch new file mode 100644 index 000000000..e49c79533 --- /dev/null +++ b/misc/buildroot/toolchain/binutils/2.24/500-sysroot.patch @@ -0,0 +1,37 @@ +Signed-off-by: Sven Rebhan <odinshorse@googlemail.com> + +Always try to prepend the sysroot prefix to absolute filenames first. + +http://bugs.gentoo.org/275666 +http://sourceware.org/bugzilla/show_bug.cgi?id=10340 + +--- a/ld/ldfile.c ++++ b/ld/ldfile.c +@@ -308,18 +308,25 @@ + directory first. */ + if (! entry->flags.maybe_archive) + { +- if (entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->flags.sysrooted = is_sysrooted_pathname (entry->filename); ++ if (!entry->flags.sysrooted && IS_ABSOLUTE_PATH (entry->filename) ++ && ld_sysroot) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->flags.sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ ++ if (ldfile_try_open_bfd (entry->filename, entry)) + return TRUE; + + if (IS_ABSOLUTE_PATH (entry->filename)) diff --git a/misc/buildroot/toolchain/binutils/Config.in b/misc/buildroot/toolchain/binutils/Config.in index 5aa674133..c3dfa133c 100644 --- a/misc/buildroot/toolchain/binutils/Config.in +++ b/misc/buildroot/toolchain/binutils/Config.in @@ -4,10 +4,10 @@ comment "Binutils Options" choice prompt "Binutils Version" - default BR2_BINUTILS_VERSION_2_19_1 if BR2_cortex_a5 || BR2_cortex_a8 || BR2_cortex_m3 || BR2_cortex_m0 - default BR2_BINUTILS_VERSION_2_19 if !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_m3 && !BR2_cortex_m0 && !BR2_m9s12x + default BR2_BINUTILS_VERSION_2_19_1 if BR2_GCC_CORTEX + default BR2_BINUTILS_VERSION_2_19 if !BR2_avr32 && !BR2_GCC_CORTEX && !BR2_m9s12x default BR2_BINUTILS_VERSION_2_18 if BR2_m9s12x - default BR2_BINUTILS_VERSION_2_17 if !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_m3 && !BR2_cortex_m0 && !BR2_m9s12x + default BR2_BINUTILS_VERSION_2_17 if !BR2_GCC_CORTEX && !BR2_m9s12x help Select the version of binutils you wish to use. @@ -34,6 +34,11 @@ choice config BR2_BINUTILS_VERSION_2_22 depends !BR2_avr32 && !BR2_nios2 && !BR2_m9s12x bool "binutils 2.22" + + config BR2_BINUTILS_VERSION_2_24 + depends !BR2_avr32 && !BR2_nios2 && !BR2_m9s12x + bool "binutils 2.24" + endchoice config BR2_BINUTILS_VERSION @@ -44,6 +49,7 @@ config BR2_BINUTILS_VERSION default "2.19.1" if BR2_BINUTILS_VERSION_2_19_1 default "2.21.1" if BR2_BINUTILS_VERSION_2_21_1 default "2.22" if BR2_BINUTILS_VERSION_2_22 + default "2.24" if BR2_BINUTILS_VERSION_2_24 config BR2_EXTRA_BINUTILS_CONFIG_OPTIONS string "Additional binutils options" diff --git a/misc/buildroot/toolchain/gcc/4.8.2/305-libmudflap-susv3-legacy.patch b/misc/buildroot/toolchain/gcc/4.8.2/305-libmudflap-susv3-legacy.patch new file mode 100644 index 000000000..35d5f5020 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.8.2/305-libmudflap-susv3-legacy.patch @@ -0,0 +1,49 @@ +Index: gcc-4.8.0/libmudflap/mf-hooks2.c +=================================================================== +--- gcc-4.8.0.orig/libmudflap/mf-hooks2.c 2013-02-03 18:48:05.000000000 +0100 ++++ gcc-4.8.0/libmudflap/mf-hooks2.c 2013-03-23 17:39:43.000000000 +0100 +@@ -424,7 +424,7 @@ + { + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region"); +- bzero (s, n); ++ memset (s, 0, n); + } + + +@@ -434,7 +434,7 @@ + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(src, n, __MF_CHECK_READ, "bcopy src"); + MF_VALIDATE_EXTENT(dest, n, __MF_CHECK_WRITE, "bcopy dest"); +- bcopy (src, dest, n); ++ memmove (dest, src, n); + } + + +@@ -444,7 +444,7 @@ + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s1, n, __MF_CHECK_READ, "bcmp 1st arg"); + MF_VALIDATE_EXTENT(s2, n, __MF_CHECK_READ, "bcmp 2nd arg"); +- return bcmp (s1, s2, n); ++ return n == 0 ? 0 : memcmp (s1, s2, n); + } + + +@@ -453,7 +453,7 @@ + size_t n = strlen (s); + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "index region"); +- return index (s, c); ++ return strchr (s, c); + } + + +@@ -462,7 +462,7 @@ + size_t n = strlen (s); + TRACE ("%s\n", __PRETTY_FUNCTION__); + MF_VALIDATE_EXTENT(s, CLAMPADD(n, 1), __MF_CHECK_READ, "rindex region"); +- return rindex (s, c); ++ return strrchr (s, c); + } + + /* XXX: stpcpy, memccpy */ diff --git a/misc/buildroot/toolchain/gcc/4.8.2/810-arm-softfloat-libgcc.patch b/misc/buildroot/toolchain/gcc/4.8.2/810-arm-softfloat-libgcc.patch new file mode 100644 index 000000000..c8cb377d5 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.8.2/810-arm-softfloat-libgcc.patch @@ -0,0 +1,30 @@ +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/misc/buildroot/toolchain/gcc/4.8.2/830-arm_unbreak_armv4t.patch b/misc/buildroot/toolchain/gcc/4.8.2/830-arm_unbreak_armv4t.patch new file mode 100644 index 000000000..37f8f2a54 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.8.2/830-arm_unbreak_armv4t.patch @@ -0,0 +1,13 @@ +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/misc/buildroot/toolchain/gcc/4.8.2/840-PR57717.patch b/misc/buildroot/toolchain/gcc/4.8.2/840-PR57717.patch new file mode 100644 index 000000000..f983f70d0 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.8.2/840-PR57717.patch @@ -0,0 +1,23 @@ +This backports fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57717 + +Upstream-Status: Backport +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: gcc-4.8.1/gcc/config/rs6000/rs6000.c +=================================================================== +--- gcc-4.8.1.orig/gcc/config/rs6000/rs6000.c 2013-05-09 18:54:06.000000000 -0700 ++++ gcc-4.8.1/gcc/config/rs6000/rs6000.c 2013-06-27 08:22:40.459021366 -0700 +@@ -5431,11 +5431,12 @@ + + case TFmode: + case TDmode: +- case TImode: + if (TARGET_E500_DOUBLE) + return (SPE_CONST_OFFSET_OK (offset) + && SPE_CONST_OFFSET_OK (offset + 8)); ++ /* Fall through. */ + ++ case TImode: + extra = 8; + if (!worst_case) + break; diff --git a/misc/buildroot/toolchain/gcc/4.8.2/841-PR57717-E500v2.patch b/misc/buildroot/toolchain/gcc/4.8.2/841-PR57717-E500v2.patch new file mode 100644 index 000000000..96fa1da07 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.8.2/841-PR57717-E500v2.patch @@ -0,0 +1,21 @@ +This backports fix from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57717 + +Upstream-Status: Backport +Signed-off-by: Julian Brown <Julian_Brown@mentor.com> + +fix for PR57717 (PowerPC E500v2) +http://gcc.gnu.org/ml/gcc-patches/2013-08/msg00668.html + +--- a/gcc/config/rs6000/rs6000.c 2013-05-09 20:54:06.000000000 -0500 ++++ b/gcc/config/rs6000/rs6000.c 2013-08-28 01:25:24.865218744 -0500 +@@ -6337,9 +6337,7 @@ + && GET_CODE (XEXP (x, 1)) == CONST_INT + && reg_offset_p + && !SPE_VECTOR_MODE (mode) +- && !(TARGET_E500_DOUBLE && (mode == DFmode || mode == TFmode +- || mode == DDmode || mode == TDmode +- || mode == DImode)) ++ && !(TARGET_E500_DOUBLE && GET_MODE_SIZE (mode) > UNITS_PER_WORD) + && VECTOR_MEM_NONE_P (mode)) + { + HOST_WIDE_INT val = INTVAL (XEXP (x, 1)); diff --git a/misc/buildroot/toolchain/gcc/4.8.2/powerpc-link-with-math-lib.patch.conditional b/misc/buildroot/toolchain/gcc/4.8.2/powerpc-link-with-math-lib.patch.conditional new file mode 100644 index 000000000..b7094fe65 --- /dev/null +++ b/misc/buildroot/toolchain/gcc/4.8.2/powerpc-link-with-math-lib.patch.conditional @@ -0,0 +1,122 @@ +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 <gustavo@zacarias.com.ar> + +--- + 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 <features.h>' > 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 <features.h>' > 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/misc/buildroot/toolchain/gcc/Config.in b/misc/buildroot/toolchain/gcc/Config.in index f7f9bfd28..3a8f61592 100644 --- a/misc/buildroot/toolchain/gcc/Config.in +++ b/misc/buildroot/toolchain/gcc/Config.in @@ -3,31 +3,31 @@ comment "GCC Options" config BR2_PACKAGE_GCC - bool "Build GCC cross-compiler" - default n - help - Build the GCC cross-compiler for the target architecture. + bool "Build GCC cross-compiler" + default n + help + Build the GCC cross-compiler for the target architecture. choice prompt "GCC compiler Version" - default BR2_GCC_VERSION_4_3_3 if BR2_cortex_a5 || BR2_cortex_a8 || BR2_cortex_m3 || BR2_cortex_m0 - default BR2_GCC_VERSION_4_2_4 if !BR2_avr32 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_m3 && !BR2_cortex_m0 && !BR2_m9s12x + default BR2_GCC_VERSION_4_3_3 if BR2_GCC_CORTEX + default BR2_GCC_VERSION_4_2_4 if !BR2_avr32 && !BR2_GCC_CORTEX && !BR2_m9s12x default BR2_GCC_VERSION_3_4_6 if BR2_avr32 default BR2_GCC_VERSION_3_3_6 if BR2_m9s12x depends on BR2_PACKAGE_GCC help - Select the version of gcc you wish to use. + Select the version of gcc you wish to use. config BR2_GCC_VERSION_3_3_6 depends on BR2_m9s12x bool "gcc 3.3.6" config BR2_GCC_VERSION_3_4_6 - depends on !BR2_m32c && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_m3 && !BR2_cortex_m0 && !BR2_m9s12x + depends on !BR2_m32c && !BR2_GCC_CORTEX bool "gcc 3.4.6" config BR2_GCC_VERSION_4_2_4 - depends on !BR2_avr32 && !BR2_nios2 && !BR2_cortex_a5 && !BR2_cortex_a8 && !BR2_cortex_m3 && !BR2_cortex_m0 && !BR2_m9s12x + depends on !BR2_avr32 && !BR2_nios2 && !BR2_GCC_CORTEX && !BR2_m9s12x select BR2_GCC_SUPPORTS_SYSROOT bool "gcc 4.2.4" @@ -46,6 +46,11 @@ choice select BR2_GCC_SUPPORTS_SYSROOT bool "gcc 4.6.3" + config BR2_GCC_VERSION_4_8_2 + depends on !BR2_avr32 && !BR2_nios2 && !BR2_m9s12x + select BR2_GCC_SUPPORTS_SYSROOT + bool "gcc 4.8.2" + endchoice config BR2_GCC_SUPPORTS_SYSROOT @@ -60,6 +65,7 @@ config BR2_GCC_VERSION default "4.3.3" if BR2_GCC_VERSION_4_3_3 default "4.5.2" if BR2_GCC_VERSION_4_5_2 default "4.6.3" if BR2_GCC_VERSION_4_6_3 + default "4.8.2" if BR2_GCC_VERSION_4_8_2 config BR2_GCC_USE_SJLJ_EXCEPTIONS bool "Enable setjmp/longjmp exceptions?" diff --git a/misc/buildroot/toolchain/gdb/7.4.1/00_all_ptrace_setsiginfo.patch b/misc/buildroot/toolchain/gdb/7.4.1/00_all_ptrace_setsiginfo.patch new file mode 100644 index 000000000..81a92db9a --- /dev/null +++ b/misc/buildroot/toolchain/gdb/7.4.1/00_all_ptrace_setsiginfo.patch @@ -0,0 +1,314 @@ +fix from upstream for building with newer kernel headers + +From a7f9ca9cb797d653dc7919538e1dfa0c26010331 Mon Sep 17 00:00:00 2001 +From: tschwinge <tschwinge> +Date: Wed, 21 Mar 2012 13:43:50 +0000 +Subject: [PATCH] struct siginfo vs. siginfo_t + +gdb/ + * amd64-linux-nat.c (amd64_linux_siginfo_fixup): Use siginfo_t instead + of struct siginfo. + * arm-linux-nat.c (arm_linux_stopped_data_address): Likewise. + * ia64-linux-nat.c (ia64_linux_stopped_data_address): Likewise. + * linux-nat.c (linux_nat_siginfo_fixup, siginfo_fixup) + (linux_xfer_siginfo, linux_nat_set_siginfo_fixup) + (linux_nat_get_siginfo): Likewise. + * linux-nat.h (struct lwp_info, linux_nat_set_siginfo_fixup) + (linux_nat_get_siginfo): Likewise. + * linux-tdep.c (linux_get_siginfo_type): Likewise. + * ppc-linux-nat.c (ppc_linux_stopped_data_address): Likewise. + * procfs.c (gdb_siginfo_t): Likewise. + +gdbserver/ + * linux-arm-low.c (arm_stopped_by_watchpoint): Use siginfo_t instead of + struct siginfo. + * linux-low.c (siginfo_fixup, linux_xfer_siginfo): Likewise. + * linux-x86-low.c (x86_siginfo_fixup): Likewise. + * linux-low.h: Include <signal.h>. + (struct siginfo): Remove forward declaration. + (struct linux_target_ops) <siginfo_fixup>: Use siginfo_t instead of + struct siginfo. +--- + gdb/ChangeLog | 15 +++++++++++++++ + gdb/amd64-linux-nat.c | 4 ++-- + gdb/arm-linux-nat.c | 2 +- + gdb/gdbserver/ChangeLog | 11 +++++++++++ + gdb/gdbserver/linux-arm-low.c | 2 +- + gdb/gdbserver/linux-low.c | 10 +++++----- + gdb/gdbserver/linux-low.h | 5 ++--- + gdb/gdbserver/linux-x86-low.c | 4 ++-- + gdb/ia64-linux-nat.c | 2 +- + gdb/linux-nat.c | 16 ++++++++-------- + gdb/linux-nat.h | 6 +++--- + gdb/ppc-linux-nat.c | 2 +- + gdb/procfs.c | 2 +- + 13 files changed, 53 insertions(+), 28 deletions(-) + +diff --git a/gdb/amd64-linux-nat.c b/gdb/amd64-linux-nat.c +index f954483..5ebba3a 100644 +--- a/gdb/amd64-linux-nat.c ++++ b/gdb/amd64-linux-nat.c +@@ -731,13 +731,13 @@ siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from) + INF. */ + + static int +-amd64_linux_siginfo_fixup (struct siginfo *native, gdb_byte *inf, int direction) ++amd64_linux_siginfo_fixup (siginfo_t *native, gdb_byte *inf, int direction) + { + /* Is the inferior 32-bit? If so, then do fixup the siginfo + object. */ + if (gdbarch_addr_bit (get_frame_arch (get_current_frame ())) == 32) + { +- gdb_assert (sizeof (struct siginfo) == sizeof (compat_siginfo_t)); ++ gdb_assert (sizeof (siginfo_t) == sizeof (compat_siginfo_t)); + + if (direction == 0) + compat_siginfo_from_siginfo ((struct compat_siginfo *) inf, native); +diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c +index c5ce21c..f9f6ba5 100644 +--- a/gdb/arm-linux-nat.c ++++ b/gdb/arm-linux-nat.c +@@ -1137,7 +1137,7 @@ arm_linux_remove_watchpoint (CORE_ADDR addr, int len, int rw, + static int + arm_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p) + { +- struct siginfo *siginfo_p = linux_nat_get_siginfo (inferior_ptid); ++ siginfo_t *siginfo_p = linux_nat_get_siginfo (inferior_ptid); + int slot = siginfo_p->si_errno; + + /* This must be a hardware breakpoint. */ +diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c +index ff2437d..01208ef 100644 +--- a/gdb/gdbserver/linux-arm-low.c ++++ b/gdb/gdbserver/linux-arm-low.c +@@ -631,7 +631,7 @@ static int + arm_stopped_by_watchpoint (void) + { + struct lwp_info *lwp = get_thread_lwp (current_inferior); +- struct siginfo siginfo; ++ siginfo_t siginfo; + + /* We must be able to set hardware watchpoints. */ + if (arm_linux_get_hw_watchpoint_count () == 0) +diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c +index d2d4c1d..4734f15 100644 +--- a/gdb/gdbserver/linux-low.c ++++ b/gdb/gdbserver/linux-low.c +@@ -4779,7 +4779,7 @@ linux_qxfer_osdata (const char *annex, + layout of the inferiors' architecture. */ + + static void +-siginfo_fixup (struct siginfo *siginfo, void *inf_siginfo, int direction) ++siginfo_fixup (siginfo_t *siginfo, void *inf_siginfo, int direction) + { + int done = 0; + +@@ -4791,9 +4791,9 @@ siginfo_fixup (struct siginfo *siginfo, void *inf_siginfo, int direction) + if (!done) + { + if (direction == 1) +- memcpy (siginfo, inf_siginfo, sizeof (struct siginfo)); ++ memcpy (siginfo, inf_siginfo, sizeof (siginfo_t)); + else +- memcpy (inf_siginfo, siginfo, sizeof (struct siginfo)); ++ memcpy (inf_siginfo, siginfo, sizeof (siginfo_t)); + } + } + +@@ -4802,8 +4802,8 @@ linux_xfer_siginfo (const char *annex, unsigned char *readbuf, + unsigned const char *writebuf, CORE_ADDR offset, int len) + { + int pid; +- struct siginfo siginfo; +- char inf_siginfo[sizeof (struct siginfo)]; ++ siginfo_t siginfo; ++ char inf_siginfo[sizeof (siginfo_t)]; + + if (current_inferior == NULL) + return -1; +diff --git a/gdb/gdbserver/linux-low.h b/gdb/gdbserver/linux-low.h +index 677d261..3aeae70 100644 +--- a/gdb/gdbserver/linux-low.h ++++ b/gdb/gdbserver/linux-low.h +@@ -20,6 +20,7 @@ + #ifdef HAVE_THREAD_DB_H + #include <thread_db.h> + #endif ++#include <signal.h> + + #include "gdb_proc_service.h" + +@@ -46,8 +47,6 @@ struct regset_info + extern struct regset_info target_regsets[]; + #endif + +-struct siginfo; +- + struct process_info_private + { + /* Arch-specific additions. */ +@@ -109,7 +108,7 @@ struct linux_target_ops + Returns true if any conversion was done; false otherwise. + If DIRECTION is 1, then copy from INF to NATIVE. + If DIRECTION is 0, copy from NATIVE to INF. */ +- int (*siginfo_fixup) (struct siginfo *native, void *inf, int direction); ++ int (*siginfo_fixup) (siginfo_t *native, void *inf, int direction); + + /* Hook to call when a new process is created or attached to. + If extra per-process architecture-specific data is needed, +diff --git a/gdb/gdbserver/linux-x86-low.c b/gdb/gdbserver/linux-x86-low.c +index ed1f8a8..b466b5d 100644 +--- a/gdb/gdbserver/linux-x86-low.c ++++ b/gdb/gdbserver/linux-x86-low.c +@@ -918,13 +918,13 @@ siginfo_from_compat_siginfo (siginfo_t *to, compat_siginfo_t *from) + INF. */ + + static int +-x86_siginfo_fixup (struct siginfo *native, void *inf, int direction) ++x86_siginfo_fixup (siginfo_t *native, void *inf, int direction) + { + #ifdef __x86_64__ + /* Is the inferior 32-bit? If so, then fixup the siginfo object. */ + if (register_size (0) == 4) + { +- if (sizeof (struct siginfo) != sizeof (compat_siginfo_t)) ++ if (sizeof (siginfo_t) != sizeof (compat_siginfo_t)) + fatal ("unexpected difference in siginfo"); + + if (direction == 0) +diff --git a/gdb/ia64-linux-nat.c b/gdb/ia64-linux-nat.c +index 8773195..19b827f 100644 +--- a/gdb/ia64-linux-nat.c ++++ b/gdb/ia64-linux-nat.c +@@ -637,7 +637,7 @@ static int + ia64_linux_stopped_data_address (struct target_ops *ops, CORE_ADDR *addr_p) + { + CORE_ADDR psr; +- struct siginfo *siginfo_p; ++ siginfo_t *siginfo_p; + struct regcache *regcache = get_current_regcache (); + + siginfo_p = linux_nat_get_siginfo (inferior_ptid); +diff --git a/gdb/linux-nat.c b/gdb/linux-nat.c +index f80c0c1..d81d55e 100644 +--- a/gdb/linux-nat.c ++++ b/gdb/linux-nat.c +@@ -188,7 +188,7 @@ static void (*linux_nat_prepare_to_resume) (struct lwp_info *); + /* The method to call, if any, when the siginfo object needs to be + converted between the layout returned by ptrace, and the layout in + the architecture of the inferior. */ +-static int (*linux_nat_siginfo_fixup) (struct siginfo *, ++static int (*linux_nat_siginfo_fixup) (siginfo_t *, + gdb_byte *, + int); + +@@ -4232,7 +4232,7 @@ linux_nat_mourn_inferior (struct target_ops *ops) + layout of the inferiors' architecture. */ + + static void +-siginfo_fixup (struct siginfo *siginfo, gdb_byte *inf_siginfo, int direction) ++siginfo_fixup (siginfo_t *siginfo, gdb_byte *inf_siginfo, int direction) + { + int done = 0; + +@@ -4244,9 +4244,9 @@ siginfo_fixup (struct siginfo *siginfo, gdb_byte *inf_siginfo, int direction) + if (!done) + { + if (direction == 1) +- memcpy (siginfo, inf_siginfo, sizeof (struct siginfo)); ++ memcpy (siginfo, inf_siginfo, sizeof (siginfo_t)); + else +- memcpy (inf_siginfo, siginfo, sizeof (struct siginfo)); ++ memcpy (inf_siginfo, siginfo, sizeof (siginfo_t)); + } + } + +@@ -4256,8 +4256,8 @@ linux_xfer_siginfo (struct target_ops *ops, enum target_object object, + const gdb_byte *writebuf, ULONGEST offset, LONGEST len) + { + int pid; +- struct siginfo siginfo; +- gdb_byte inf_siginfo[sizeof (struct siginfo)]; ++ siginfo_t siginfo; ++ gdb_byte inf_siginfo[sizeof (siginfo_t)]; + + gdb_assert (object == TARGET_OBJECT_SIGNAL_INFO); + gdb_assert (readbuf || writebuf); +@@ -5266,7 +5266,7 @@ linux_nat_set_new_thread (struct target_ops *t, + inferior. */ + void + linux_nat_set_siginfo_fixup (struct target_ops *t, +- int (*siginfo_fixup) (struct siginfo *, ++ int (*siginfo_fixup) (siginfo_t *, + gdb_byte *, + int)) + { +@@ -5285,7 +5285,7 @@ linux_nat_set_prepare_to_resume (struct target_ops *t, + } + + /* Return the saved siginfo associated with PTID. */ +-struct siginfo * ++siginfo_t * + linux_nat_get_siginfo (ptid_t ptid) + { + struct lwp_info *lp = find_lwp_pid (ptid); +diff --git a/gdb/linux-nat.h b/gdb/linux-nat.h +index c9878d9..d87f0cf 100644 +--- a/gdb/linux-nat.h ++++ b/gdb/linux-nat.h +@@ -78,7 +78,7 @@ struct lwp_info + + /* Non-zero si_signo if this LWP stopped with a trap. si_addr may + be the address of a hardware watchpoint. */ +- struct siginfo siginfo; ++ siginfo_t siginfo; + + /* STOPPED_BY_WATCHPOINT is non-zero if this LWP stopped with a data + watchpoint trap. */ +@@ -184,7 +184,7 @@ void linux_nat_set_new_thread (struct target_ops *, void (*) (struct lwp_info *) + that ptrace returns, and the layout in the architecture of the + inferior. */ + void linux_nat_set_siginfo_fixup (struct target_ops *, +- int (*) (struct siginfo *, ++ int (*) (siginfo_t *, + gdb_byte *, + int)); + +@@ -198,7 +198,7 @@ void linux_nat_set_prepare_to_resume (struct target_ops *, + void linux_nat_switch_fork (ptid_t new_ptid); + + /* Return the saved siginfo associated with PTID. */ +-struct siginfo *linux_nat_get_siginfo (ptid_t ptid); ++siginfo_t *linux_nat_get_siginfo (ptid_t ptid); + + /* Compute and return the processor core of a given thread. */ + int linux_nat_core_of_thread_1 (ptid_t ptid); +diff --git a/gdb/ppc-linux-nat.c b/gdb/ppc-linux-nat.c +index 1bd157b..9bd11fd 100644 +--- a/gdb/ppc-linux-nat.c ++++ b/gdb/ppc-linux-nat.c +@@ -2218,7 +2218,7 @@ ppc_linux_thread_exit (struct thread_info *tp, int silent) + static int + ppc_linux_stopped_data_address (struct target_ops *target, CORE_ADDR *addr_p) + { +- struct siginfo *siginfo_p; ++ siginfo_t *siginfo_p; + + siginfo_p = linux_nat_get_siginfo (inferior_ptid); + +diff --git a/gdb/procfs.c b/gdb/procfs.c +index 903621d..cb4bc7c 100644 +--- a/gdb/procfs.c ++++ b/gdb/procfs.c +@@ -266,7 +266,7 @@ typedef struct sigaction gdb_sigaction_t; + #ifdef HAVE_PR_SIGINFO64_T + typedef pr_siginfo64_t gdb_siginfo_t; + #else +-typedef struct siginfo gdb_siginfo_t; ++typedef siginfo_t gdb_siginfo_t; + #endif + + /* On mips-irix, praddset and prdelset are defined in such a way that +-- +1.7.9.7 + diff --git a/misc/buildroot/toolchain/gdb/7.4.1/05_all_readline-headers.patch b/misc/buildroot/toolchain/gdb/7.4.1/05_all_readline-headers.patch new file mode 100644 index 000000000..e65adf6e6 --- /dev/null +++ b/misc/buildroot/toolchain/gdb/7.4.1/05_all_readline-headers.patch @@ -0,0 +1,42 @@ +--- a/readline/complete.c ++++ b/readline/complete.c +@@ -25,6 +25,11 @@ + # include <config.h> + #endif + ++#ifdef HAVE_WCHAR_H /* wcwidth() */ ++# define _GNU_SOURCE ++# include <wchar.h> ++#endif ++ + #include <sys/types.h> + #include <fcntl.h> + #if defined (HAVE_SYS_FILE_H) +--- a/readline/display.c ++++ b/readline/display.c +@@ -25,6 +25,11 @@ + # include <config.h> + #endif + ++#ifdef HAVE_WCHAR_H /* wcwidth() */ ++# define _GNU_SOURCE ++# include <wchar.h> ++#endif ++ + #include <sys/types.h> + + #if defined (HAVE_UNISTD_H) +--- a/readline/mbutil.c ++++ b/readline/mbutil.c +@@ -25,6 +25,11 @@ + # include <config.h> + #endif + ++#ifdef HAVE_WCHAR_H /* wcwidth() */ ++# define _GNU_SOURCE ++# include <wchar.h> ++#endif ++ + #include <sys/types.h> + #include <fcntl.h> + #include "posixjmp.h" diff --git a/misc/buildroot/toolchain/gdb/7.4.1/xtensa-asm-ptrace-h.patch b/misc/buildroot/toolchain/gdb/7.4.1/xtensa-asm-ptrace-h.patch new file mode 100644 index 000000000..3d1b07c99 --- /dev/null +++ b/misc/buildroot/toolchain/gdb/7.4.1/xtensa-asm-ptrace-h.patch @@ -0,0 +1,22 @@ +--- gdb-7.4.1/gdb/xtensa-linux-nat.c.orig 2012-10-19 16:23:06.908165323 -0700 ++++ gdb-7.4.1/gdb/xtensa-linux-nat.c 2012-10-19 16:35:30.792134876 -0700 +@@ -36,7 +36,7 @@ + #include "gdb_wait.h" + #include <fcntl.h> + #include <sys/procfs.h> +-#include <sys/ptrace.h> ++#include <asm/ptrace.h> + + #include "gregset.h" + #include "xtensa-tdep.h" +--- gdb-7.4.1/gdb/gdbserver/linux-xtensa-low.c.orig 2012-10-19 16:24:06.260162894 -0700 ++++ gdb-7.4.1/gdb/gdbserver/linux-xtensa-low.c 2012-10-19 16:36:07.920133357 -0700 +@@ -23,7 +23,7 @@ + /* Defined in auto-generated file reg-xtensa.c. */ + void init_registers_xtensa (void); + +-#include <sys/ptrace.h> ++#include <asm/ptrace.h> + #include <xtensa-config.h> + + #include "xtensa-xtregs.c" diff --git a/misc/buildroot/toolchain/gdb/7.4.1/xtensa-gdb-regsize.patch b/misc/buildroot/toolchain/gdb/7.4.1/xtensa-gdb-regsize.patch new file mode 100644 index 000000000..e10bb8f3e --- /dev/null +++ b/misc/buildroot/toolchain/gdb/7.4.1/xtensa-gdb-regsize.patch @@ -0,0 +1,19 @@ +--- gdb-7.4.1/gdb/xtensa-tdep.h.orig 2012-10-30 11:40:23.546448594 -0700 ++++ gdb-7.4.1/gdb/xtensa-tdep.h 2012-10-30 11:41:43.078445337 -0700 +@@ -17,6 +17,7 @@ + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + ++#include <stdint.h> + + /* XTENSA_TDEP_VERSION can/should be changed along with XTENSA_CONFIG_VERSION + whenever the "tdep" structure changes in an incompatible way. */ +@@ -84,7 +85,7 @@ + /* Xtensa ELF core file register set representation ('.reg' section). + Copied from target-side ELF header <xtensa/elf.h>. */ + +-typedef unsigned long xtensa_elf_greg_t; ++typedef uint32_t xtensa_elf_greg_t; + + typedef struct + { diff --git a/misc/buildroot/toolchain/gdb/Config.in b/misc/buildroot/toolchain/gdb/Config.in index 1fc1ecd8b..4212ca727 100644 --- a/misc/buildroot/toolchain/gdb/Config.in +++ b/misc/buildroot/toolchain/gdb/Config.in @@ -40,8 +40,8 @@ choice bool "gdb 6.8" depends on !BR2_avr32 - config BR2_GDB_VERSION_7_4 - bool "gdb 7.4" + config BR2_GDB_VERSION_7_4_1 + bool "gdb 7.4.1" depends on !BR2_bfin endchoice @@ -49,5 +49,6 @@ endchoice config BR2_GDB_VERSION string default "6.3" if BR2_GDB_VERSION_6_3 + default "6.4" if BR2_GDB_VERSION_6_4 default "6.8" if BR2_GDB_VERSION_6_8 - default "7.4.1" if BR2_GDB_VERSION_7_4 + default "7.4.1" if BR2_GDB_VERSION_7_4_1 |