gcc: add 4.6-linaro version 4.6-2011.08
SVN-Revision: 28042
This commit is contained in:
		| @@ -17,6 +17,9 @@ choice | |||||||
| 	config GCC_VERSION_4_5_LINARO | 	config GCC_VERSION_4_5_LINARO | ||||||
| 		bool "gcc 4.5.x with Linaro enhancements" | 		bool "gcc 4.5.x with Linaro enhancements" | ||||||
|  |  | ||||||
|  | 	config GCC_VERSION_4_6_LINARO | ||||||
|  | 		bool "gcc 4.6.x with Linaro enhancements" | ||||||
|  |  | ||||||
| 	config GCC_VERSION_LLVM | 	config GCC_VERSION_LLVM | ||||||
| 		bool "llvm-gcc 4.2" | 		bool "llvm-gcc 4.2" | ||||||
| 		depends BROKEN | 		depends BROKEN | ||||||
|   | |||||||
| @@ -10,12 +10,16 @@ config GCC_DEFAULT_VERSION_4_5_LINARO | |||||||
| 	default y if !(GCC_DEFAULT_VERSION) | 	default y if !(GCC_DEFAULT_VERSION) | ||||||
| 	bool | 	bool | ||||||
|  |  | ||||||
|  | config GCC_DEFAULT_VERSION_4_6_LINARO | ||||||
|  | 	bool | ||||||
|  |  | ||||||
|  |  | ||||||
| config GCC_VERSION | config GCC_VERSION | ||||||
| 	string | 	string | ||||||
| 	default "4.4.6"	    if GCC_VERSION_4_4_6 | 	default "4.4.6"	    if GCC_VERSION_4_4_6 | ||||||
| 	default "4.6.1"	    if GCC_VERSION_4_6_1 | 	default "4.6.1"	    if GCC_VERSION_4_6_1 | ||||||
| 	default "4.5-linaro"    if GCC_VERSION_4_5_LINARO | 	default "4.5-linaro"    if GCC_VERSION_4_5_LINARO | ||||||
|  | 	default "4.6-linaro"    if GCC_VERSION_4_6_LINARO | ||||||
| 	default "llvm"	    if GCC_VERSION_LLVM | 	default "llvm"	    if GCC_VERSION_LLVM | ||||||
| 	default "4.5-linaro" | 	default "4.5-linaro" | ||||||
|  |  | ||||||
| @@ -29,7 +33,7 @@ config GCC_VERSION_4_5 | |||||||
|  |  | ||||||
| config GCC_VERSION_4_6 | config GCC_VERSION_4_6 | ||||||
| 	bool | 	bool | ||||||
| 	default y       if GCC_VERSION_4_6_1 | 	default y       if (GCC_VERSION_4_6_1 || GCC_VERSION_4_6_LINARO) | ||||||
|  |  | ||||||
| if !TOOLCHAINOPTS | if !TOOLCHAINOPTS | ||||||
|  |  | ||||||
|   | |||||||
| @@ -36,12 +36,21 @@ ifdef CONFIG_GCC_VERSION_LLVM | |||||||
|   PKG_SOURCE_SUBDIR:=$(GCC_DIR) |   PKG_SOURCE_SUBDIR:=$(GCC_DIR) | ||||||
|   HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GCC_DIR) |   HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GCC_DIR) | ||||||
| else | else | ||||||
| ifeq ($(CONFIG_GCC_VERSION),"4.5-linaro") | ifeq ($(findstring linaro, $(CONFIG_GCC_VERSION)),linaro) | ||||||
|  |     ifeq ($(CONFIG_GCC_VERSION),"4.5-linaro") | ||||||
|       PKG_REV:=4.5-2011.08 |       PKG_REV:=4.5-2011.08 | ||||||
|       PKG_VERSION:=4.5.4 |       PKG_VERSION:=4.5.4 | ||||||
|     PKG_SOURCE_URL:=http://launchpad.net/gcc-linaro/4.5/$(PKG_REV)/+download/ |       PKG_VERSION_MAJOR:=4.5 | ||||||
|     PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.bz2 |  | ||||||
|       PKG_MD5SUM:=c3374e210209e35ad1ea175223d3605c |       PKG_MD5SUM:=c3374e210209e35ad1ea175223d3605c | ||||||
|  |     endif | ||||||
|  |     ifeq ($(CONFIG_GCC_VERSION),"4.6-linaro") | ||||||
|  |       PKG_REV:=4.6-2011.08 | ||||||
|  |       PKG_VERSION:=4.6.2 | ||||||
|  |       PKG_VERSION_MAJOR:=4.6 | ||||||
|  |       PKG_MD5SUM:=7417cdb33d7b3a18552b2003a98cadfc | ||||||
|  |     endif | ||||||
|  |     PKG_SOURCE_URL:=http://launchpad.net/gcc-linaro/$(PKG_VERSION_MAJOR)/$(PKG_REV)/+download/ | ||||||
|  |     PKG_SOURCE:=$(PKG_NAME)-linaro-$(PKG_REV).tar.bz2 | ||||||
|     GCC_DIR:=gcc-linaro-$(PKG_REV) |     GCC_DIR:=gcc-linaro-$(PKG_REV) | ||||||
|     HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GCC_DIR) |     HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(GCC_DIR) | ||||||
| else | else | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								toolchain/gcc/patches/4.6-linaro/100-uclibc-conf.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								toolchain/gcc/patches/4.6-linaro/100-uclibc-conf.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | --- a/contrib/regression/objs-gcc.sh | ||||||
|  | +++ b/contrib/regression/objs-gcc.sh | ||||||
|  | @@ -106,6 +106,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H | ||||||
|  |   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 | ||||||
|  | --- a/libjava/classpath/ltconfig | ||||||
|  | +++ b/libjava/classpath/ltconfig | ||||||
|  | @@ -603,7 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- | ||||||
|  |   | ||||||
|  |  # Transform linux* to *-*-linux-gnu*, to support old configure scripts. | ||||||
|  |  case $host_os in | ||||||
|  | -linux-gnu*) ;; | ||||||
|  | +linux-gnu*|linux-uclibc*) ;; | ||||||
|  |  linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` | ||||||
|  |  esac | ||||||
|  |   | ||||||
|  | @@ -1247,7 +1247,7 @@ linux-gnuoldld* | linux-gnuaout* | linux | ||||||
|  |    ;; | ||||||
|  |   | ||||||
|  |  # This must be Linux ELF. | ||||||
|  | -linux-gnu*) | ||||||
|  | +linux*) | ||||||
|  |    version_type=linux | ||||||
|  |    need_lib_prefix=no | ||||||
|  |    need_version=no | ||||||
| @@ -0,0 +1,11 @@ | |||||||
|  | --- a/boehm-gc/include/gc.h | ||||||
|  | +++ b/boehm-gc/include/gc.h | ||||||
|  | @@ -503,7 +503,7 @@ GC_API GC_PTR GC_malloc_atomic_ignore_of | ||||||
|  |  #if defined(__linux__) || defined(__GLIBC__) | ||||||
|  |  # include <features.h> | ||||||
|  |  # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ | ||||||
|  | -     && !defined(__ia64__) | ||||||
|  | +     && !defined(__ia64__) && !defined(__UCLIBC__) | ||||||
|  |  #   ifndef GC_HAVE_BUILTIN_BACKTRACE | ||||||
|  |  #     define GC_HAVE_BUILTIN_BACKTRACE | ||||||
|  |  #   endif | ||||||
							
								
								
									
										11
									
								
								toolchain/gcc/patches/4.6-linaro/302-c99-snprintf.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								toolchain/gcc/patches/4.6-linaro/302-c99-snprintf.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | --- a/libstdc++-v3/include/c_global/cstdio | ||||||
|  | +++ b/libstdc++-v3/include/c_global/cstdio | ||||||
|  | @@ -137,7 +137,7 @@ namespace std | ||||||
|  |    using ::vsprintf; | ||||||
|  |  } // namespace | ||||||
|  |   | ||||||
|  | -#if _GLIBCXX_USE_C99 | ||||||
|  | +#if _GLIBCXX_USE_C99 || defined __UCLIBC__ | ||||||
|  |   | ||||||
|  |  #undef snprintf | ||||||
|  |  #undef vfscanf | ||||||
| @@ -0,0 +1,47 @@ | |||||||
|  | --- a/libmudflap/mf-hooks2.c | ||||||
|  | +++ b/libmudflap/mf-hooks2.c | ||||||
|  | @@ -421,7 +421,7 @@ WRAPPER2(void, bzero, void *s, size_t n) | ||||||
|  |  { | ||||||
|  |    TRACE ("%s\n", __PRETTY_FUNCTION__); | ||||||
|  |    MF_VALIDATE_EXTENT(s, n, __MF_CHECK_WRITE, "bzero region"); | ||||||
|  | -  bzero (s, n); | ||||||
|  | +  memset (s, 0, n); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -431,7 +431,7 @@ WRAPPER2(void, bcopy, const void *src, v | ||||||
|  |    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); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -441,7 +441,7 @@ WRAPPER2(int, bcmp, const void *s1, cons | ||||||
|  |    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); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -450,7 +450,7 @@ WRAPPER2(char *, index, const char *s, i | ||||||
|  |    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); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  | @@ -459,7 +459,7 @@ WRAPPER2(char *, rindex, const char *s, | ||||||
|  |    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 */ | ||||||
							
								
								
									
										9368
									
								
								toolchain/gcc/patches/4.6-linaro/600-ubicom_support.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9368
									
								
								toolchain/gcc/patches/4.6-linaro/600-ubicom_support.patch
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | --- a/gcc/config/arm/linux-elf.h | ||||||
|  | +++ b/gcc/config/arm/linux-elf.h | ||||||
|  | @@ -60,7 +60,7 @@ | ||||||
|  |     %{shared:-lc} \ | ||||||
|  |     %{!shared:%{profile:-lc_p}%{!profile:-lc}}" | ||||||
|  |   | ||||||
|  | -#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" | ||||||
|  | +#define LIBGCC_SPEC "-lgcc" | ||||||
|  |   | ||||||
|  |  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" | ||||||
|  |   | ||||||
|  | --- a/gcc/config/arm/t-linux | ||||||
|  | +++ b/gcc/config/arm/t-linux | ||||||
|  | @@ -23,7 +23,11 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-poi | ||||||
|  |   | ||||||
|  |  LIB1ASMSRC = arm/lib1funcs.asm | ||||||
|  |  LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \ | ||||||
|  | -	_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 | ||||||
|  |   | ||||||
|  |  # MULTILIB_OPTIONS = mhard-float/msoft-float | ||||||
|  |  # MULTILIB_DIRNAMES = hard-float soft-float | ||||||
							
								
								
									
										36
									
								
								toolchain/gcc/patches/4.6-linaro/820-libgcc_pic.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								toolchain/gcc/patches/4.6-linaro/820-libgcc_pic.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | |||||||
|  | --- a/libgcc/Makefile.in | ||||||
|  | +++ b/libgcc/Makefile.in | ||||||
|  | @@ -747,11 +747,12 @@ $(libgcov-objects): %$(objext): $(gcc_sr | ||||||
|  |   | ||||||
|  |  # Static libraries. | ||||||
|  |  libgcc.a: $(libgcc-objects) | ||||||
|  | +libgcc_pic.a: $(libgcc-s-objects) | ||||||
|  |  libgcov.a: $(libgcov-objects) | ||||||
|  |  libunwind.a: $(libunwind-objects) | ||||||
|  |  libgcc_eh.a: $(libgcc-eh-objects) | ||||||
|  |   | ||||||
|  | -libgcc.a libgcov.a libunwind.a libgcc_eh.a: | ||||||
|  | +libgcc.a libgcov.a libunwind.a libgcc_eh.a libgcc_pic.a: | ||||||
|  |  	-rm -f $@ | ||||||
|  |   | ||||||
|  |  	objects="$(objects)";					\ | ||||||
|  | @@ -773,7 +774,7 @@ libgcc_s$(SHLIB_EXT): libunwind$(SHLIB_E | ||||||
|  |  endif | ||||||
|  |   | ||||||
|  |  ifeq ($(enable_shared),yes) | ||||||
|  | -all: libgcc_eh.a libgcc_s$(SHLIB_EXT) | ||||||
|  | +all: libgcc_eh.a libgcc_pic.a libgcc_s$(SHLIB_EXT) | ||||||
|  |  ifneq ($(LIBUNWIND),) | ||||||
|  |  all: libunwind$(SHLIB_EXT) | ||||||
|  |  endif | ||||||
|  | @@ -954,6 +955,10 @@ install-shared: | ||||||
|  |  	chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_eh.a | ||||||
|  |  	$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_eh.a | ||||||
|  |   | ||||||
|  | +	$(INSTALL_DATA) libgcc_pic.a $(mapfile) $(DESTDIR)$(inst_libdir)/ | ||||||
|  | +	chmod 644 $(DESTDIR)$(inst_libdir)/libgcc_pic.a | ||||||
|  | +	$(RANLIB) $(DESTDIR)$(inst_libdir)/libgcc_pic.a | ||||||
|  | + | ||||||
|  |  	$(subst @multilib_dir@,$(MULTIDIR),$(subst \ | ||||||
|  |  		@shlib_base_name@,libgcc_s,$(subst \ | ||||||
|  |  		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(SHLIB_INSTALL)))) | ||||||
| @@ -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.  */ | ||||||
| @@ -0,0 +1,20 @@ | |||||||
|  | --- a/gcc/config/arm/linux-eabi.h | ||||||
|  | +++ b/gcc/config/arm/linux-eabi.h | ||||||
|  | @@ -64,12 +64,16 @@ | ||||||
|  |  #undef  GLIBC_DYNAMIC_LINKER | ||||||
|  |  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3" | ||||||
|  |   | ||||||
|  | +/* For armv4 we pass --fix-v4bx to linker to support EABI */ | ||||||
|  | +#undef TARGET_FIX_V4BX_SPEC | ||||||
|  | +#define TARGET_FIX_V4BX_SPEC " %{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4:--fix-v4bx}" | ||||||
|  | + | ||||||
|  |  /* 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 | ||||||
|  |  #define LINK_SPEC BE8_LINK_SPEC						\ | ||||||
|  |    LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC,				\ | ||||||
|  | -		       LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC) | ||||||
|  | +		       LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)	\ | ||||||
|  |   | ||||||
|  |  #undef  CC1_SPEC | ||||||
|  |  #define CC1_SPEC							\ | ||||||
							
								
								
									
										253
									
								
								toolchain/gcc/patches/4.6-linaro/910-mbsd_multi.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										253
									
								
								toolchain/gcc/patches/4.6-linaro/910-mbsd_multi.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,253 @@ | |||||||
|  |  | ||||||
|  | 	This patch brings over a few features from MirBSD: | ||||||
|  | 	* -fhonour-copts | ||||||
|  | 	  If this option is not given, it's warned (depending | ||||||
|  | 	  on environment variables). This is to catch errors | ||||||
|  | 	  of misbuilt packages which override CFLAGS themselves. | ||||||
|  | 	* -Werror-maybe-reset | ||||||
|  | 	  Has the effect of -Wno-error if GCC_NO_WERROR is | ||||||
|  | 	  set and not '0', a no-operation otherwise. This is | ||||||
|  | 	  to be able to use -Werror in "make" but prevent | ||||||
|  | 	  GNU autoconf generated configure scripts from | ||||||
|  | 	  freaking out. | ||||||
|  | 	* Make -fno-strict-aliasing and -fno-delete-null-pointer-checks | ||||||
|  | 	  the default for -O2/-Os, because they trigger gcc bugs | ||||||
|  | 	  and can delete code with security implications. | ||||||
|  |  | ||||||
|  | 	This patch was authored by Thorsten Glaser <tg at mirbsd.de> | ||||||
|  | 	with copyright assignment to the FSF in effect. | ||||||
|  |  | ||||||
|  | --- a/gcc/c-family/c-opts.c | ||||||
|  | +++ b/gcc/c-family/c-opts.c | ||||||
|  | @@ -103,6 +103,9 @@ static size_t deferred_count; | ||||||
|  |  /* Number of deferred options scanned for -include.  */ | ||||||
|  |  static size_t include_cursor; | ||||||
|  |   | ||||||
|  | +/* Check if a port honours COPTS.  */ | ||||||
|  | +static int honour_copts = 0; | ||||||
|  | + | ||||||
|  |  static void handle_OPT_d (const char *); | ||||||
|  |  static void set_std_cxx98 (int); | ||||||
|  |  static void set_std_cxx0x (int); | ||||||
|  | @@ -441,6 +444,9 @@ c_common_handle_option (size_t scode, co | ||||||
|  |        global_dc->warning_as_error_requested = value; | ||||||
|  |        break; | ||||||
|  |   | ||||||
|  | +    case OPT_Werror_maybe_reset: | ||||||
|  | +      break; | ||||||
|  | + | ||||||
|  |      case OPT_Wformat: | ||||||
|  |        set_Wformat (value); | ||||||
|  |        break; | ||||||
|  | @@ -584,6 +590,12 @@ c_common_handle_option (size_t scode, co | ||||||
|  |        flag_no_builtin = !value; | ||||||
|  |        break; | ||||||
|  |   | ||||||
|  | +    case OPT_fhonour_copts: | ||||||
|  | +      if (c_language == clk_c) { | ||||||
|  | +        honour_copts++; | ||||||
|  | +      } | ||||||
|  | +      break; | ||||||
|  | + | ||||||
|  |      case OPT_fconstant_string_class_: | ||||||
|  |        constant_string_class_name = arg; | ||||||
|  |        break; | ||||||
|  | @@ -1058,6 +1070,47 @@ c_common_init (void) | ||||||
|  |        return false; | ||||||
|  |      } | ||||||
|  |   | ||||||
|  | +  if (c_language == clk_c) { | ||||||
|  | +    char *ev = getenv ("GCC_HONOUR_COPTS"); | ||||||
|  | +    int evv; | ||||||
|  | +    if (ev == NULL) | ||||||
|  | +      evv = -1; | ||||||
|  | +    else if ((*ev == '0') || (*ev == '\0')) | ||||||
|  | +      evv = 0; | ||||||
|  | +    else if (*ev == '1') | ||||||
|  | +      evv = 1; | ||||||
|  | +    else if (*ev == '2') | ||||||
|  | +      evv = 2; | ||||||
|  | +    else if (*ev == 's') | ||||||
|  | +      evv = -1; | ||||||
|  | +    else { | ||||||
|  | +      warning (0, "unknown GCC_HONOUR_COPTS value, assuming 1"); | ||||||
|  | +      evv = 1; /* maybe depend this on something like MIRBSD_NATIVE?  */ | ||||||
|  | +    } | ||||||
|  | +    if (evv == 1) { | ||||||
|  | +      if (honour_copts == 0) { | ||||||
|  | +        error ("someone does not honour COPTS at all in lenient mode"); | ||||||
|  | +        return false; | ||||||
|  | +      } else if (honour_copts != 1) { | ||||||
|  | +        warning (0, "someone does not honour COPTS correctly, passed %d times", | ||||||
|  | +         honour_copts); | ||||||
|  | +      } | ||||||
|  | +    } else if (evv == 2) { | ||||||
|  | +      if (honour_copts == 0) { | ||||||
|  | +        error ("someone does not honour COPTS at all in strict mode"); | ||||||
|  | +        return false; | ||||||
|  | +      } else if (honour_copts != 1) { | ||||||
|  | +        error ("someone does not honour COPTS correctly, passed %d times", | ||||||
|  | +         honour_copts); | ||||||
|  | +        return false; | ||||||
|  | +      } | ||||||
|  | +    } else if (evv == 0) { | ||||||
|  | +      if (honour_copts != 1) | ||||||
|  | +        inform (0, "someone does not honour COPTS correctly, passed %d times", | ||||||
|  | +         honour_copts); | ||||||
|  | +    } | ||||||
|  | +  } | ||||||
|  | + | ||||||
|  |    return true; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | --- a/gcc/c-family/c.opt | ||||||
|  | +++ b/gcc/c-family/c.opt | ||||||
|  | @@ -363,6 +363,10 @@ Werror-implicit-function-declaration | ||||||
|  |  C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration) | ||||||
|  |  This switch is deprecated; use -Werror=implicit-function-declaration instead | ||||||
|  |   | ||||||
|  | +Werror-maybe-reset | ||||||
|  | +C ObjC C++ ObjC++ | ||||||
|  | +; Documented in common.opt | ||||||
|  | + | ||||||
|  |  Wfloat-equal | ||||||
|  |  C ObjC C++ ObjC++ Var(warn_float_equal) Warning | ||||||
|  |  Warn if testing floating point numbers for equality | ||||||
|  | @@ -794,6 +798,9 @@ C++ ObjC++ Optimization Alias(fexception | ||||||
|  |  fhonor-std | ||||||
|  |  C++ ObjC++ Ignore Warn(switch %qs is no longer supported) | ||||||
|  |   | ||||||
|  | +fhonour-copts | ||||||
|  | +C ObjC C++ ObjC++ RejectNegative | ||||||
|  | + | ||||||
|  |  fhosted | ||||||
|  |  C ObjC | ||||||
|  |  Assume normal C execution environment | ||||||
|  | --- a/gcc/common.opt | ||||||
|  | +++ b/gcc/common.opt | ||||||
|  | @@ -520,6 +520,10 @@ Werror= | ||||||
|  |  Common Joined | ||||||
|  |  Treat specified warning as error | ||||||
|  |   | ||||||
|  | +Werror-maybe-reset | ||||||
|  | +Common | ||||||
|  | +If environment variable GCC_NO_WERROR is set, act as -Wno-error | ||||||
|  | + | ||||||
|  |  Wextra | ||||||
|  |  Common Var(extra_warnings) Warning | ||||||
|  |  Print extra (possibly unwanted) warnings | ||||||
|  | @@ -1156,6 +1160,9 @@ fguess-branch-probability | ||||||
|  |  Common Report Var(flag_guess_branch_prob) Optimization | ||||||
|  |  Enable guessing of branch probabilities | ||||||
|  |   | ||||||
|  | +fhonour-copts | ||||||
|  | +Common RejectNegative | ||||||
|  | + | ||||||
|  |  ; Nonzero means ignore `#ident' directives.  0 means handle them. | ||||||
|  |  ; Generate position-independent code for executables if possible | ||||||
|  |  ; On SVR4 targets, it also controls whether or not to emit a | ||||||
|  | --- a/gcc/opts.c | ||||||
|  | +++ b/gcc/opts.c | ||||||
|  | @@ -477,8 +477,6 @@ static const struct default_options defa | ||||||
|  |      { OPT_LEVELS_2_PLUS, OPT_fschedule_insns2, NULL, 1 }, | ||||||
|  |  #endif | ||||||
|  |      { OPT_LEVELS_2_PLUS, OPT_fregmove, NULL, 1 }, | ||||||
|  | -    { OPT_LEVELS_2_PLUS, OPT_fstrict_aliasing, NULL, 1 }, | ||||||
|  | -    { OPT_LEVELS_2_PLUS, OPT_fstrict_overflow, NULL, 1 }, | ||||||
|  |      { OPT_LEVELS_2_PLUS, OPT_freorder_blocks, NULL, 1 }, | ||||||
|  |      { OPT_LEVELS_2_PLUS, OPT_freorder_functions, NULL, 1 }, | ||||||
|  |      { OPT_LEVELS_2_PLUS, OPT_ftree_vrp, NULL, 1 }, | ||||||
|  | @@ -494,6 +492,8 @@ static const struct default_options defa | ||||||
|  |      { OPT_LEVELS_2_PLUS, OPT_falign_functions, NULL, 1 }, | ||||||
|  |   | ||||||
|  |      /* -O3 optimizations.  */ | ||||||
|  | +    { OPT_LEVELS_3_PLUS, OPT_fstrict_aliasing, NULL, 1 }, | ||||||
|  | +    { OPT_LEVELS_3_PLUS, OPT_fstrict_overflow, NULL, 1 }, | ||||||
|  |      { OPT_LEVELS_3_PLUS, OPT_ftree_loop_distribute_patterns, NULL, 1 }, | ||||||
|  |      { OPT_LEVELS_3_PLUS, OPT_fpredictive_commoning, NULL, 1 }, | ||||||
|  |      /* Inlining of functions reducing size is a good idea with -Os | ||||||
|  | @@ -1399,6 +1399,17 @@ common_handle_option (struct gcc_options | ||||||
|  |  			       opts, opts_set, loc, dc); | ||||||
|  |        break; | ||||||
|  |   | ||||||
|  | +    case OPT_Werror_maybe_reset: | ||||||
|  | +      { | ||||||
|  | +        char *ev = getenv ("GCC_NO_WERROR"); | ||||||
|  | +        if ((ev != NULL) && (*ev != '0')) | ||||||
|  | +          warnings_are_errors = 0; | ||||||
|  | +      } | ||||||
|  | +      break; | ||||||
|  | + | ||||||
|  | +    case OPT_fhonour_copts: | ||||||
|  | +      break; | ||||||
|  | + | ||||||
|  |      case OPT_Wlarger_than_: | ||||||
|  |        opts->x_larger_than_size = value; | ||||||
|  |        opts->x_warn_larger_than = value != -1; | ||||||
|  | --- a/gcc/doc/cppopts.texi | ||||||
|  | +++ b/gcc/doc/cppopts.texi | ||||||
|  | @@ -164,6 +164,11 @@ in older programs.  This warning is on b | ||||||
|  |  Make all warnings into hard errors.  Source code which triggers warnings | ||||||
|  |  will be rejected. | ||||||
|  |   | ||||||
|  | + at item -Werror-maybe-reset | ||||||
|  | + at opindex Werror-maybe-reset | ||||||
|  | +Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment | ||||||
|  | +variable is set to anything other than 0 or empty. | ||||||
|  | + | ||||||
|  |  @item -Wsystem-headers | ||||||
|  |  @opindex Wsystem-headers | ||||||
|  |  Issue warnings for code in system headers.  These are normally unhelpful | ||||||
|  | --- a/gcc/doc/invoke.texi | ||||||
|  | +++ b/gcc/doc/invoke.texi | ||||||
|  | @@ -240,7 +240,7 @@ Objective-C and Objective-C++ Dialects}. | ||||||
|  |  -Wconversion  -Wcoverage-mismatch  -Wno-cpp  -Wno-deprecated  @gol | ||||||
|  |  -Wno-deprecated-declarations -Wdisabled-optimization  @gol | ||||||
|  |  -Wno-div-by-zero -Wdouble-promotion -Wempty-body  -Wenum-compare @gol | ||||||
|  | --Wno-endif-labels -Werror  -Werror=* @gol | ||||||
|  | +-Wno-endif-labels -Werror  -Werror=* -Werror-maybe-reset @gol | ||||||
|  |  -Wfatal-errors  -Wfloat-equal  -Wformat  -Wformat=2 @gol | ||||||
|  |  -Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol | ||||||
|  |  -Wformat-security  -Wformat-y2k @gol | ||||||
|  | @@ -4495,6 +4495,22 @@ This option is only supported for C and | ||||||
|  |  @option{-Wall} and by @option{-pedantic}, which can be disabled with | ||||||
|  |  @option{-Wno-pointer-sign}. | ||||||
|  |   | ||||||
|  | + at item -Werror-maybe-reset | ||||||
|  | + at opindex Werror-maybe-reset | ||||||
|  | +Act like @samp{-Wno-error} if the @env{GCC_NO_WERROR} environment | ||||||
|  | +variable is set to anything other than 0 or empty. | ||||||
|  | + | ||||||
|  | + at item -fhonour-copts | ||||||
|  | + at opindex fhonour-copts | ||||||
|  | +If @env{GCC_HONOUR_COPTS} is set to 1, abort if this option is not | ||||||
|  | +given at least once, and warn if it is given more than once. | ||||||
|  | +If @env{GCC_HONOUR_COPTS} is set to 2, abort if this option is not | ||||||
|  | +given exactly once. | ||||||
|  | +If @env{GCC_HONOUR_COPTS} is set to 0 or unset, warn if this option | ||||||
|  | +is not given exactly once. | ||||||
|  | +The warning is quelled if @env{GCC_HONOUR_COPTS} is set to @samp{s}. | ||||||
|  | +This flag and environment variable only affect the C language. | ||||||
|  | + | ||||||
|  |  @item -Wstack-protector | ||||||
|  |  @opindex Wstack-protector | ||||||
|  |  @opindex Wno-stack-protector | ||||||
|  | @@ -6317,7 +6333,7 @@ so, the first branch is redirected to ei | ||||||
|  |  second branch or a point immediately following it, depending on whether | ||||||
|  |  the condition is known to be true or false. | ||||||
|  |   | ||||||
|  | -Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. | ||||||
|  | +Enabled at levels @option{-O3}. | ||||||
|  |   | ||||||
|  |  @item -fsplit-wide-types | ||||||
|  |  @opindex fsplit-wide-types | ||||||
|  | --- a/gcc/java/jvspec.c | ||||||
|  | +++ b/gcc/java/jvspec.c | ||||||
|  | @@ -627,6 +627,7 @@ lang_specific_pre_link (void) | ||||||
|  |       class name.  Append dummy `.c' that can be stripped by set_input so %b | ||||||
|  |       is correct.  */  | ||||||
|  |    set_input (concat (main_class_name, "main.c", NULL)); | ||||||
|  | +  putenv ("GCC_HONOUR_COPTS=s"); /* XXX hack!  */ | ||||||
|  |    err = do_spec (jvgenmain_spec); | ||||||
|  |    if (err == 0) | ||||||
|  |      { | ||||||
| @@ -0,0 +1,15 @@ | |||||||
|  | --- a/gcc/config/arm/arm-protos.h | ||||||
|  | +++ b/gcc/config/arm/arm-protos.h | ||||||
|  | @@ -41,11 +41,11 @@ extern unsigned int arm_dbx_register_num | ||||||
|  |  extern void arm_output_fn_unwind (FILE *, bool); | ||||||
|  |     | ||||||
|  |   | ||||||
|  | -#ifdef RTX_CODE | ||||||
|  |  extern bool arm_vector_mode_supported_p (enum machine_mode); | ||||||
|  |  extern bool arm_small_register_classes_for_mode_p (enum machine_mode); | ||||||
|  |  extern int arm_hard_regno_mode_ok (unsigned int, enum machine_mode); | ||||||
|  |  extern int const_ok_for_arm (HOST_WIDE_INT); | ||||||
|  | +#ifdef RTX_CODE | ||||||
|  |  extern int arm_split_constant (RTX_CODE, enum machine_mode, rtx, | ||||||
|  |  			       HOST_WIDE_INT, rtx, rtx, int); | ||||||
|  |  extern RTX_CODE arm_canonicalize_comparison (RTX_CODE, rtx *, rtx *); | ||||||
							
								
								
									
										10
									
								
								toolchain/gcc/patches/4.6-linaro/999-coldfire.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								toolchain/gcc/patches/4.6-linaro/999-coldfire.patch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | --- a/gcc/config.gcc | ||||||
|  | +++ b/gcc/config.gcc | ||||||
|  | @@ -1791,6 +1791,7 @@ m68k-*-linux*)		# Motorola m68k's runnin | ||||||
|  |  	if test x$sjlj != x1; then | ||||||
|  |  	    tmake_file="$tmake_file m68k/t-slibgcc-elf-ver" | ||||||
|  |  	fi | ||||||
|  | +	tmake_file="m68k/t-floatlib m68k/t-m68kbare m68k/t-m68kelf" | ||||||
|  |  	;; | ||||||
|  |  m68k-*-rtems*) | ||||||
|  |  	default_m68k_cpu=68020 | ||||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens