From dccb90f88e7968dbb6674f3ad4c7e890347ebb03 Mon Sep 17 00:00:00 2001 From: Dave Murphy Date: Thu, 30 Apr 2009 00:06:07 +0000 Subject: [PATCH] add patch for gcc 4.4.0 --- dkarm-eabi/patches/gcc-4.4.0.patch | 171 +++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 dkarm-eabi/patches/gcc-4.4.0.patch diff --git a/dkarm-eabi/patches/gcc-4.4.0.patch b/dkarm-eabi/patches/gcc-4.4.0.patch new file mode 100644 index 0000000..eb9ba44 --- /dev/null +++ b/dkarm-eabi/patches/gcc-4.4.0.patch @@ -0,0 +1,171 @@ +diff -Nbaur gcc-4.4.0/gcc/config/arm/t-arm-elf gcc-4.4.0-arm/gcc/config/arm/t-arm-elf +--- gcc-4.4.0/gcc/config/arm/t-arm-elf 2008-06-12 18:29:47.000000000 +0100 ++++ gcc-4.4.0-arm/gcc/config/arm/t-arm-elf 2009-04-22 23:35:07.000000000 +0100 +@@ -18,23 +18,23 @@ + MULTILIB_EXCEPTIONS = + MULTILIB_MATCHES = + +-#MULTILIB_OPTIONS += march=armv7 +-#MULTILIB_DIRNAMES += thumb2 +-#MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7* +-#MULTILIB_MATCHES += march?armv7=march?armv7-a +-#MULTILIB_MATCHES += march?armv7=march?armv7-r +-#MULTILIB_MATCHES += march?armv7=march?armv7-m +-#MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 +-#MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 +-#MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 ++MULTILIB_OPTIONS += march=armv7 ++MULTILIB_DIRNAMES += thumb2 ++MULTILIB_EXCEPTIONS += march=armv7* marm/*march=armv7* ++MULTILIB_MATCHES += march?armv7=march?armv7-a ++MULTILIB_MATCHES += march?armv7=march?armv7-r ++MULTILIB_MATCHES += march?armv7=march?armv7-m ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-a8 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-r4 ++MULTILIB_MATCHES += march?armv7=mcpu?cortex-m3 + + # MULTILIB_OPTIONS += mcpu=ep9312 + # MULTILIB_DIRNAMES += ep9312 + # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312* + # +-# MULTILIB_OPTIONS += mlittle-endian/mbig-endian +-# MULTILIB_DIRNAMES += le be +-# MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle ++MULTILIB_OPTIONS += mlittle-endian/mbig-endian ++MULTILIB_DIRNAMES += le be ++MULTILIB_MATCHES += mbig-endian=mbe mlittle-endian=mle + # + # MULTILIB_OPTIONS += mhard-float/msoft-float + # MULTILIB_DIRNAMES += fpu soft +diff -Nbaur gcc-4.4.0/gcc/config/arm/unknown-elf.h gcc-4.4.0-arm/gcc/config/arm/unknown-elf.h +--- gcc-4.4.0/gcc/config/arm/unknown-elf.h 2009-02-20 15:20:38.000000000 +0000 ++++ gcc-4.4.0-arm/gcc/config/arm/unknown-elf.h 2009-04-22 23:35:07.000000000 +0100 +@@ -97,4 +97,4 @@ + udivmoddi4, which will depend on the exception unwind routines, + which will depend on abort, which is defined in libc. */ + #undef LINK_GCC_C_SEQUENCE_SPEC +-#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L --end-group" ++#define LINK_GCC_C_SEQUENCE_SPEC "--start-group %G %L %(libgloss) --end-group" +diff -Nbaur gcc-4.4.0/gcc/gcc.c gcc-4.4.0-arm/gcc/gcc.c +--- gcc-4.4.0/gcc/gcc.c 2009-03-17 21:25:59.000000000 +0000 ++++ gcc-4.4.0-arm/gcc/gcc.c 2009-04-23 00:12:47.000000000 +0100 +@@ -643,6 +643,11 @@ + #endif + #endif + ++#ifndef LIBGLOSS_SPEC ++# define LIBGLOSS_SPEC "-lsysbase" ++#endif ++ ++ + /* config.h can define STARTFILE_SPEC to override the default crt0 files. */ + #ifndef STARTFILE_SPEC + #define STARTFILE_SPEC \ +@@ -770,6 +775,7 @@ + static const char *mflib_spec = MFLIB_SPEC; + static const char *link_gomp_spec = ""; + static const char *libgcc_spec = LIBGCC_SPEC; ++static const char *libgloss_spec = LIBGLOSS_SPEC; + static const char *endfile_spec = ENDFILE_SPEC; + static const char *startfile_spec = STARTFILE_SPEC; + static const char *switches_need_spaces = SWITCHES_NEED_SPACES; +@@ -1598,6 +1604,7 @@ + INIT_STATIC_SPEC ("mflib", &mflib_spec), + INIT_STATIC_SPEC ("link_gomp", &link_gomp_spec), + INIT_STATIC_SPEC ("libgcc", &libgcc_spec), ++ INIT_STATIC_SPEC ("libgloss", &libgloss_spec), + INIT_STATIC_SPEC ("startfile", &startfile_spec), + INIT_STATIC_SPEC ("switches_need_spaces", &switches_need_spaces), + INIT_STATIC_SPEC ("cross_compile", &cross_compile), +@@ -3455,8 +3462,6 @@ + gcc_libexec_prefix = make_relative_prefix (argv[0], + standard_bindir_prefix, + standard_libexec_prefix); +- if (gcc_exec_prefix) +- xputenv (concat ("GCC_EXEC_PREFIX=", gcc_exec_prefix, NULL)); + } + else + { +@@ -6361,10 +6366,18 @@ + + /* We need to check standard_exec_prefix/just_machine_suffix/specs + for any override of as, ld and libraries. */ ++ if ( gcc_exec_prefix ) ++ { ++ specs_file = alloca (strlen (gcc_exec_prefix) ++ + strlen (just_machine_suffix) + sizeof ("specs")); ++ ++ strcpy (specs_file, gcc_exec_prefix); ++ } else { + specs_file = (char *) alloca (strlen (standard_exec_prefix) + + strlen (just_machine_suffix) + sizeof ("specs")); + + strcpy (specs_file, standard_exec_prefix); ++ } + strcat (specs_file, just_machine_suffix); + strcat (specs_file, "specs"); + if (access (specs_file, R_OK) == 0) +diff -Nbaur gcc-4.4.0/gcc/prefix.c gcc-4.4.0-arm/gcc/prefix.c +--- gcc-4.4.0/gcc/prefix.c 2007-09-03 18:09:20.000000000 +0100 ++++ gcc-4.4.0-arm/gcc/prefix.c 2009-04-22 23:35:07.000000000 +0100 +@@ -245,13 +245,16 @@ + The returned string is always malloc-ed, and the caller is + responsible for freeing it. */ + ++ ++static const char *old_prefix = PREFIX; ++ + char * + update_path (const char *path, const char *key) + { + char *result, *p; +- const int len = strlen (std_prefix); ++ const int len = strlen (old_prefix); + +- if (! strncmp (path, std_prefix, len) ++ if (! strncmp (path, old_prefix, len) + && (IS_DIR_SEPARATOR(path[len]) + || path[len] == '\0') + && key != 0) +@@ -353,4 +356,6 @@ + set_std_prefix (const char *prefix, int len) + { + std_prefix = save_string (prefix, len); ++ ++ putenv (concat ("GCC_EXEC_PREFIX=", std_prefix, NULL)); + } +diff -Nbaur gcc-4.4.0/gcc/toplev.c gcc-4.4.0-arm/gcc/toplev.c +--- gcc-4.4.0/gcc/toplev.c 2008-12-09 21:25:11.000000000 +0000 ++++ gcc-4.4.0-arm/gcc/toplev.c 2009-04-23 00:14:37.000000000 +0100 +@@ -84,6 +84,7 @@ + #include "tree-mudflap.h" + #include "tree-pass.h" + #include "gimple.h" ++#include "prefix.h" + + #if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO) + #include "dwarf2out.h" +@@ -1553,6 +1554,10 @@ + + xmalloc_set_program_name (progname); + ++ p = getenv("GCC_EXEC_PREFIX"); ++ if (p && strlen(p)) set_std_prefix (p, strlen(p)); ++ ++ + hex_init (); + + /* Unlock the stdio streams. */ +diff -Nbaur gcc-4.4.0/libcpp/Makefile.in gcc-4.4.0-arm/libcpp/Makefile.in +--- gcc-4.4.0/libcpp/Makefile.in 2009-04-21 10:08:08.000000000 +0100 ++++ gcc-4.4.0-arm/libcpp/Makefile.in 2009-04-23 00:17:03.000000000 +0100 +@@ -201,8 +201,7 @@ + # Note that we put the dependencies into a .Tpo file, then move them + # into place if the compile succeeds. We need this because gcc does + # not atomically write the dependency output file. +-COMPILE = $(COMPILE.base) -o $@ -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Tpo +-POSTCOMPILE = @mv $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++COMPILE = $(COMPILE.base) -o $@ + else + COMPILE = source='$<' object='$@' libtool=no DEPDIR=$(DEPDIR) $(DEPMODE) \ + $(depcomp) $(COMPILE.base)