patches/gcc/3.4.6/100-uclibc-conf.patch
author "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
Mon Apr 16 15:25:36 2012 +0200 (2012-04-16)
changeset 2941 13e40098fffc
permissions -rw-r--r--
cc/gcc: update Linaro GCC revisions to 2012.04

Update Linaro GCC with the latest available revisions.

The 4.7 revision is also released, but the infrastructure is not yet ready for
it in CT-NG.

Signed-off-by: "Benoît Thébaudeau" <benoit.thebaudeau@advansee.com>
yann@339
     1
diff -durN gcc-3.4.6.orig/boehm-gc/configure gcc-3.4.6/boehm-gc/configure
yann@339
     2
--- gcc-3.4.6.orig/boehm-gc/configure	2006-03-06 04:55:49.000000000 +0100
yann@339
     3
+++ gcc-3.4.6/boehm-gc/configure	2007-08-15 22:49:47.000000000 +0200
yann@339
     4
@@ -1947,6 +1947,11 @@
yann@339
     5
   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
yann@339
     6
   ;;
yann@339
     7
 
yann@339
     8
+linux-uclibc*)
yann@339
     9
+  lt_cv_deplibs_check_method=pass_all
yann@339
    10
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@339
    11
+  ;;
yann@339
    12
+
yann@339
    13
 netbsd*)
yann@339
    14
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@339
    15
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@339
    16
diff -durN gcc-3.4.6.orig/boehm-gc/ltconfig gcc-3.4.6/boehm-gc/ltconfig
yann@339
    17
--- gcc-3.4.6.orig/boehm-gc/ltconfig	2002-11-20 16:59:07.000000000 +0100
yann@339
    18
+++ gcc-3.4.6/boehm-gc/ltconfig	2007-08-15 22:49:47.000000000 +0200
yann@339
    19
@@ -1981,6 +1981,23 @@
yann@339
    20
   fi
yann@339
    21
   ;;
yann@339
    22
 
yann@339
    23
+linux-uclibc*)
yann@339
    24
+  version_type=linux
yann@339
    25
+  need_lib_prefix=no
yann@339
    26
+  need_version=no
yann@339
    27
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
yann@339
    28
+  soname_spec='${libname}${release}.so$major'
yann@339
    29
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
yann@339
    30
+  shlibpath_var=LD_LIBRARY_PATH
yann@339
    31
+  shlibpath_overrides_runpath=no
yann@339
    32
+  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
yann@339
    33
+  file_magic_cmd=/usr/bin/file
yann@339
    34
+  file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@339
    35
+
yann@339
    36
+  # Assume using the uClibc dynamic linker.
yann@339
    37
+  dynamic_linker="uClibc ld.so"
yann@339
    38
+  ;;
yann@339
    39
+
yann@339
    40
 netbsd*)
yann@339
    41
   version_type=sunos
yann@339
    42
   if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
yann@339
    43
diff -durN gcc-3.4.6.orig/gcc/config/alpha/linux-elf.h gcc-3.4.6/gcc/config/alpha/linux-elf.h
yann@339
    44
--- gcc-3.4.6.orig/gcc/config/alpha/linux-elf.h	2003-09-27 06:48:30.000000000 +0200
yann@339
    45
+++ gcc-3.4.6/gcc/config/alpha/linux-elf.h	2007-08-15 22:49:47.000000000 +0200
yann@339
    46
@@ -27,7 +27,11 @@
yann@339
    47
 #define SUBTARGET_EXTRA_SPECS \
yann@339
    48
 { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
yann@339
    49
 
yann@339
    50
+#ifdef USE_UCLIBC
yann@339
    51
+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
yann@339
    52
+#else
yann@339
    53
 #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
yann@339
    54
+#endif
yann@339
    55
 
yann@339
    56
 #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
yann@339
    57
   %{O*:-O3} %{!O*:-O1}						\
yann@339
    58
diff -durN gcc-3.4.6.orig/gcc/config/arm/linux-elf.h gcc-3.4.6/gcc/config/arm/linux-elf.h
yann@339
    59
--- gcc-3.4.6.orig/gcc/config/arm/linux-elf.h	2004-01-31 07:18:40.000000000 +0100
yann@339
    60
+++ gcc-3.4.6/gcc/config/arm/linux-elf.h	2007-08-15 22:49:47.000000000 +0200
yann@339
    61
@@ -80,6 +80,11 @@
yann@339
    62
 #define ENDFILE_SPEC \
yann@339
    63
   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
yann@339
    64
 
yann@339
    65
+#ifdef USE_UCLIBC
yann@339
    66
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
    67
+#else
yann@339
    68
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@339
    69
+#endif
yann@339
    70
 #undef  LINK_SPEC
yann@339
    71
 #define LINK_SPEC "%{h*} %{version:-v} \
yann@339
    72
    %{b} %{Wl,*:%*} \
yann@339
    73
@@ -87,7 +92,7 @@
yann@339
    74
    %{shared:-shared} \
yann@339
    75
    %{symbolic:-Bsymbolic} \
yann@339
    76
    %{rdynamic:-export-dynamic} \
yann@339
    77
-   %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
yann@339
    78
+   %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
yann@339
    79
    -X \
yann@339
    80
    %{mbig-endian:-EB}" \
yann@339
    81
    SUBTARGET_EXTRA_LINK_SPEC
yann@339
    82
diff -durN gcc-3.4.6.orig/gcc/config/cris/linux.h gcc-3.4.6/gcc/config/cris/linux.h
yann@339
    83
--- gcc-3.4.6.orig/gcc/config/cris/linux.h	2003-11-29 04:08:13.000000000 +0100
yann@339
    84
+++ gcc-3.4.6/gcc/config/cris/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
    85
@@ -79,6 +79,25 @@
yann@339
    86
 #undef CRIS_DEFAULT_CPU_VERSION
yann@339
    87
 #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
yann@339
    88
 
yann@339
    89
+#ifdef USE_UCLIBC
yann@339
    90
+
yann@339
    91
+#undef CRIS_SUBTARGET_VERSION
yann@339
    92
+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
yann@339
    93
+
yann@339
    94
+#undef CRIS_LINK_SUBTARGET_SPEC
yann@339
    95
+#define CRIS_LINK_SUBTARGET_SPEC \
yann@339
    96
+ "-mcrislinux\
yann@339
    97
+  -rpath-link include/asm/../..%s\
yann@339
    98
+  %{shared} %{static}\
yann@339
    99
+  %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
yann@339
   100
+  %{!shared: \
yann@339
   101
+    %{!static: \
yann@339
   102
+      %{rdynamic:-export-dynamic} \
yann@339
   103
+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \
yann@339
   104
+  %{!r:%{O2|O3: --gc-sections}}"
yann@339
   105
+
yann@339
   106
+#else  /* USE_UCLIBC */
yann@339
   107
+
yann@339
   108
 #undef CRIS_SUBTARGET_VERSION
yann@339
   109
 #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
yann@339
   110
 
yann@339
   111
@@ -93,6 +112,8 @@
yann@339
   112
   %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
yann@339
   113
   %{!r:%{O2|O3: --gc-sections}}"
yann@339
   114
 
yann@339
   115
+#endif  /* USE_UCLIBC */
yann@339
   116
+
yann@339
   117
 
yann@339
   118
 /* Node: Run-time Target */
yann@339
   119
 
yann@339
   120
diff -durN gcc-3.4.6.orig/gcc/config/i386/linux64.h gcc-3.4.6/gcc/config/i386/linux64.h
yann@339
   121
--- gcc-3.4.6.orig/gcc/config/i386/linux64.h	2003-11-29 04:08:13.000000000 +0100
yann@339
   122
+++ gcc-3.4.6/gcc/config/i386/linux64.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   123
@@ -54,14 +54,21 @@
yann@339
   124
    When the -shared link option is used a final link is not being
yann@339
   125
    done.  */
yann@339
   126
 
yann@339
   127
+#ifdef USE_UCLIBC
yann@339
   128
+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   129
+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
yann@339
   130
+#else
yann@339
   131
+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@339
   132
+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
yann@339
   133
+#endif
yann@339
   134
 #undef	LINK_SPEC
yann@339
   135
 #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
yann@339
   136
   %{shared:-shared} \
yann@339
   137
   %{!shared: \
yann@339
   138
     %{!static: \
yann@339
   139
       %{rdynamic:-export-dynamic} \
yann@339
   140
-      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@339
   141
-      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
yann@339
   142
+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
yann@339
   143
+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
yann@339
   144
     %{static:-static}}"
yann@339
   145
 
yann@339
   146
 #define MULTILIB_DEFAULTS { "m64" }
yann@339
   147
diff -durN gcc-3.4.6.orig/gcc/config/i386/linux.h gcc-3.4.6/gcc/config/i386/linux.h
yann@339
   148
--- gcc-3.4.6.orig/gcc/config/i386/linux.h	2003-11-29 04:08:13.000000000 +0100
yann@339
   149
+++ gcc-3.4.6/gcc/config/i386/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   150
@@ -110,22 +110,21 @@
yann@339
   151
 
yann@339
   152
 #undef	LINK_SPEC
yann@339
   153
 #ifdef USE_GNULIBC_1
yann@339
   154
-#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
yann@339
   155
-  %{!shared: \
yann@339
   156
-    %{!ibcs: \
yann@339
   157
-      %{!static: \
yann@339
   158
-	%{rdynamic:-export-dynamic} \
yann@339
   159
-	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
yann@339
   160
-	%{static:-static}}}"
yann@339
   161
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.1"
yann@339
   162
 #else
yann@339
   163
+#ifdef USE_UCLIBC
yann@339
   164
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   165
+#else
yann@339
   166
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@339
   167
+#endif
yann@339
   168
+#endif
yann@339
   169
 #define LINK_SPEC "-m elf_i386 %{shared:-shared} \
yann@339
   170
   %{!shared: \
yann@339
   171
     %{!ibcs: \
yann@339
   172
       %{!static: \
yann@339
   173
 	%{rdynamic:-export-dynamic} \
yann@339
   174
-	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@339
   175
+	%{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   176
 	%{static:-static}}}"
yann@339
   177
-#endif
yann@339
   178
 
yann@339
   179
 /* A C statement (sans semicolon) to output to the stdio stream
yann@339
   180
    FILE the assembler definition of uninitialized global DECL named
yann@339
   181
diff -durN gcc-3.4.6.orig/gcc/config/ia64/linux.h gcc-3.4.6/gcc/config/ia64/linux.h
yann@339
   182
--- gcc-3.4.6.orig/gcc/config/ia64/linux.h	2004-02-07 08:56:17.000000000 +0100
yann@339
   183
+++ gcc-3.4.6/gcc/config/ia64/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   184
@@ -37,13 +37,18 @@
yann@339
   185
 /* Define this for shared library support because it isn't in the main
yann@339
   186
    linux.h file.  */
yann@339
   187
 
yann@339
   188
+#ifdef USE_UCLIBC
yann@339
   189
+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
yann@339
   190
+#else
yann@339
   191
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
yann@339
   192
+#endif
yann@339
   193
 #undef LINK_SPEC
yann@339
   194
 #define LINK_SPEC "\
yann@339
   195
   %{shared:-shared} \
yann@339
   196
   %{!shared: \
yann@339
   197
     %{!static: \
yann@339
   198
       %{rdynamic:-export-dynamic} \
yann@339
   199
-      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
yann@339
   200
+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   201
       %{static:-static}}"
yann@339
   202
 
yann@339
   203
 
yann@339
   204
diff -durN gcc-3.4.6.orig/gcc/config/m68k/linux.h gcc-3.4.6/gcc/config/m68k/linux.h
yann@339
   205
--- gcc-3.4.6.orig/gcc/config/m68k/linux.h	2003-11-29 04:08:13.000000000 +0100
yann@339
   206
+++ gcc-3.4.6/gcc/config/m68k/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   207
@@ -131,12 +131,17 @@
yann@339
   208
 
yann@339
   209
 /* If ELF is the default format, we should not use /lib/elf.  */
yann@339
   210
 
yann@339
   211
+#ifdef USE_UCLIBC
yann@339
   212
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   213
+#else
yann@339
   214
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
yann@339
   215
+#endif
yann@339
   216
 #undef	LINK_SPEC
yann@339
   217
 #define LINK_SPEC "-m m68kelf %{shared} \
yann@339
   218
   %{!shared: \
yann@339
   219
     %{!static: \
yann@339
   220
       %{rdynamic:-export-dynamic} \
yann@339
   221
-      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
yann@339
   222
+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   223
     %{static}}"
yann@339
   224
 
yann@339
   225
 /* For compatibility with linux/a.out */
yann@339
   226
diff -durN gcc-3.4.6.orig/gcc/config/mips/linux.h gcc-3.4.6/gcc/config/mips/linux.h
yann@339
   227
--- gcc-3.4.6.orig/gcc/config/mips/linux.h	2004-06-16 03:42:25.000000000 +0200
yann@339
   228
+++ gcc-3.4.6/gcc/config/mips/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   229
@@ -109,6 +109,11 @@
yann@339
   230
 
yann@339
   231
 /* Borrowed from sparc/linux.h */
yann@339
   232
 #undef LINK_SPEC
yann@339
   233
+#ifdef USE_UCLIBC
yann@339
   234
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   235
+#else
yann@339
   236
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
yann@339
   237
+#endif
yann@339
   238
 #define LINK_SPEC \
yann@339
   239
  "%(endian_spec) \
yann@339
   240
   %{shared:-shared} \
yann@339
   241
@@ -116,7 +121,7 @@
yann@339
   242
     %{!ibcs: \
yann@339
   243
       %{!static: \
yann@339
   244
         %{rdynamic:-export-dynamic} \
yann@339
   245
-        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
yann@339
   246
+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   247
         %{static:-static}}}"
yann@339
   248
 
yann@339
   249
 #undef SUBTARGET_ASM_SPEC
yann@339
   250
diff -durN gcc-3.4.6.orig/gcc/config/pa/pa-linux.h gcc-3.4.6/gcc/config/pa/pa-linux.h
yann@339
   251
--- gcc-3.4.6.orig/gcc/config/pa/pa-linux.h	2003-11-29 04:08:13.000000000 +0100
yann@339
   252
+++ gcc-3.4.6/gcc/config/pa/pa-linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   253
@@ -77,13 +77,18 @@
yann@339
   254
 /* Define this for shared library support because it isn't in the main
yann@339
   255
    linux.h file.  */
yann@339
   256
 
yann@339
   257
+#ifdef USE_UCLIBC
yann@339
   258
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   259
+#else
yann@339
   260
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
yann@339
   261
+#endif
yann@339
   262
 #undef LINK_SPEC
yann@339
   263
 #define LINK_SPEC "\
yann@339
   264
   %{shared:-shared} \
yann@339
   265
   %{!shared: \
yann@339
   266
     %{!static: \
yann@339
   267
       %{rdynamic:-export-dynamic} \
yann@339
   268
-      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
yann@339
   269
+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   270
       %{static:-static}}"
yann@339
   271
 
yann@339
   272
 /* glibc's profiling functions don't need gcc to allocate counters.  */
yann@339
   273
diff -durN gcc-3.4.6.orig/gcc/config/rs6000/linux.h gcc-3.4.6/gcc/config/rs6000/linux.h
yann@339
   274
--- gcc-3.4.6.orig/gcc/config/rs6000/linux.h	2005-03-17 11:41:18.000000000 +0100
yann@339
   275
+++ gcc-3.4.6/gcc/config/rs6000/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   276
@@ -69,7 +69,11 @@
yann@339
   277
 #define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
yann@339
   278
 
yann@339
   279
 #undef	LINK_OS_DEFAULT_SPEC
yann@339
   280
+#ifdef USE_UCLIBC
yann@339
   281
+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)"
yann@339
   282
+#else
yann@339
   283
 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
yann@339
   284
+#endif
yann@339
   285
 
yann@339
   286
 #define LINK_GCC_C_SEQUENCE_SPEC \
yann@339
   287
   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
yann@339
   288
diff -durN gcc-3.4.6.orig/gcc/config/rs6000/sysv4.h gcc-3.4.6/gcc/config/rs6000/sysv4.h
yann@339
   289
--- gcc-3.4.6.orig/gcc/config/rs6000/sysv4.h	2005-10-30 00:35:37.000000000 +0200
yann@339
   290
+++ gcc-3.4.6/gcc/config/rs6000/sysv4.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   291
@@ -949,6 +949,7 @@
yann@339
   292
   mcall-linux  : %(link_os_linux)       ; \
yann@339
   293
   mcall-gnu    : %(link_os_gnu)         ; \
yann@339
   294
   mcall-netbsd : %(link_os_netbsd)      ; \
yann@339
   295
+  mcall-linux-uclibc : %(link_os_linux_uclibc); \
yann@339
   296
   mcall-openbsd: %(link_os_openbsd)     ; \
yann@339
   297
                : %(link_os_default)     }"
yann@339
   298
 
yann@339
   299
@@ -1127,6 +1128,10 @@
yann@339
   300
   %{rdynamic:-export-dynamic} \
yann@339
   301
   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
yann@339
   302
 
yann@339
   303
+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \
yann@339
   304
+  %{rdynamic:-export-dynamic} \
yann@339
   305
+  %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}"
yann@339
   306
+
yann@339
   307
 #if defined(HAVE_LD_EH_FRAME_HDR)
yann@339
   308
 # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
yann@339
   309
 #endif
yann@339
   310
@@ -1293,6 +1298,7 @@
yann@339
   311
   { "link_os_sim",		LINK_OS_SIM_SPEC },			\
yann@339
   312
   { "link_os_freebsd",		LINK_OS_FREEBSD_SPEC },			\
yann@339
   313
   { "link_os_linux",		LINK_OS_LINUX_SPEC },			\
yann@339
   314
+  { "link_os_linux_uclibc",	LINK_OS_LINUX_UCLIBC_SPEC },		\
yann@339
   315
   { "link_os_gnu",		LINK_OS_GNU_SPEC },			\
yann@339
   316
   { "link_os_netbsd",		LINK_OS_NETBSD_SPEC },			\
yann@339
   317
   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
yann@339
   318
diff -durN gcc-3.4.6.orig/gcc/config/s390/linux.h gcc-3.4.6/gcc/config/s390/linux.h
yann@339
   319
--- gcc-3.4.6.orig/gcc/config/s390/linux.h	2003-11-29 04:08:13.000000000 +0100
yann@339
   320
+++ gcc-3.4.6/gcc/config/s390/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   321
@@ -77,6 +77,13 @@
yann@339
   322
 #define MULTILIB_DEFAULTS { "m31" }
yann@339
   323
 #endif
yann@339
   324
 
yann@339
   325
+#ifdef USE_UCLIBC
yann@339
   326
+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   327
+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
yann@339
   328
+#else
yann@339
   329
+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
yann@339
   330
+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
yann@339
   331
+#endif
yann@339
   332
 #undef  LINK_SPEC
yann@339
   333
 #define LINK_SPEC \
yann@339
   334
   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
yann@339
   335
@@ -86,8 +93,8 @@
yann@339
   336
       %{!static: \
yann@339
   337
 	%{rdynamic:-export-dynamic} \
yann@339
   338
 	%{!dynamic-linker: \
yann@339
   339
-          %{m31:-dynamic-linker /lib/ld.so.1} \
yann@339
   340
-          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
yann@339
   341
+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
yann@339
   342
+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
yann@339
   343
 
yann@339
   344
 
yann@339
   345
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
yann@339
   346
diff -durN gcc-3.4.6.orig/gcc/config/sh/linux.h gcc-3.4.6/gcc/config/sh/linux.h
yann@339
   347
--- gcc-3.4.6.orig/gcc/config/sh/linux.h	2004-01-12 03:29:13.000000000 +0100
yann@339
   348
+++ gcc-3.4.6/gcc/config/sh/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   349
@@ -73,11 +73,16 @@
yann@339
   350
 #undef SUBTARGET_LINK_EMUL_SUFFIX
yann@339
   351
 #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
yann@339
   352
 #undef SUBTARGET_LINK_SPEC
yann@339
   353
+#ifdef USE_UCLIBC
yann@339
   354
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   355
+#else
yann@339
   356
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@339
   357
+#endif
yann@339
   358
 #define SUBTARGET_LINK_SPEC \
yann@339
   359
   "%{shared:-shared} \
yann@339
   360
    %{!static: \
yann@339
   361
      %{rdynamic:-export-dynamic} \
yann@339
   362
-     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@339
   363
+     %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   364
    %{static:-static}"
yann@339
   365
 
yann@339
   366
 #undef LIB_SPEC
yann@339
   367
diff -durN gcc-3.4.6.orig/gcc/config/sparc/linux64.h gcc-3.4.6/gcc/config/sparc/linux64.h
yann@339
   368
--- gcc-3.4.6.orig/gcc/config/sparc/linux64.h	2004-06-06 05:55:17.000000000 +0200
yann@339
   369
+++ gcc-3.4.6/gcc/config/sparc/linux64.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   370
@@ -167,12 +167,17 @@
yann@339
   371
   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
yann@339
   372
   { "link_arch",	 LINK_ARCH_SPEC },
yann@339
   373
     
yann@339
   374
+#ifdef USE_UCLIBC
yann@339
   375
+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
yann@339
   376
+#else
yann@339
   377
+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
yann@339
   378
+#endif
yann@339
   379
 #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
yann@339
   380
   %{!shared: \
yann@339
   381
     %{!ibcs: \
yann@339
   382
       %{!static: \
yann@339
   383
         %{rdynamic:-export-dynamic} \
yann@339
   384
-        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@339
   385
+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   386
         %{static:-static}}} \
yann@339
   387
 "
yann@339
   388
 
yann@339
   389
diff -durN gcc-3.4.6.orig/gcc/config/sparc/linux.h gcc-3.4.6/gcc/config/sparc/linux.h
yann@339
   390
--- gcc-3.4.6.orig/gcc/config/sparc/linux.h	2004-06-06 05:55:17.000000000 +0200
yann@339
   391
+++ gcc-3.4.6/gcc/config/sparc/linux.h	2007-08-15 22:49:47.000000000 +0200
yann@339
   392
@@ -162,13 +162,18 @@
yann@339
   393
         %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
yann@339
   394
         %{static:-static}}}"
yann@339
   395
 #else
yann@339
   396
+#ifdef USE_UCLIBC
yann@339
   397
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@339
   398
+#else
yann@339
   399
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@339
   400
+#endif
yann@339
   401
 #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
yann@339
   402
   %{!mno-relax:%{!r:-relax}} \
yann@339
   403
   %{!shared: \
yann@339
   404
     %{!ibcs: \
yann@339
   405
       %{!static: \
yann@339
   406
         %{rdynamic:-export-dynamic} \
yann@339
   407
-        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@339
   408
+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@339
   409
         %{static:-static}}}"
yann@339
   410
 #endif
yann@339
   411
 
yann@339
   412
diff -durN gcc-3.4.6.orig/gcc/config/t-linux-uclibc gcc-3.4.6/gcc/config/t-linux-uclibc
yann@339
   413
--- gcc-3.4.6.orig/gcc/config/t-linux-uclibc	1970-01-01 01:00:00.000000000 +0100
yann@339
   414
+++ gcc-3.4.6/gcc/config/t-linux-uclibc	2007-08-15 22:49:47.000000000 +0200
yann@339
   415
@@ -0,0 +1,5 @@
yann@339
   416
+# Remove glibc specific files added in t-linux
yann@339
   417
+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
yann@339
   418
+
yann@339
   419
+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
yann@339
   420
+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
yann@339
   421
diff -durN gcc-3.4.6.orig/gcc/config.gcc gcc-3.4.6/gcc/config.gcc
yann@339
   422
--- gcc-3.4.6.orig/gcc/config.gcc	2005-07-19 23:08:48.000000000 +0200
yann@339
   423
+++ gcc-3.4.6/gcc/config.gcc	2007-08-15 22:49:47.000000000 +0200
yann@339
   424
@@ -2322,6 +2322,12 @@
yann@339
   425
 	;;
yann@339
   426
 esac
yann@339
   427
 
yann@339
   428
+# Rather than hook into each target, just do it after all the linux
yann@339
   429
+# targets have been processed
yann@339
   430
+case ${target} in
yann@339
   431
+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
yann@339
   432
+esac
yann@339
   433
+
yann@339
   434
 # Support for --with-cpu and related options (and a few unrelated options,
yann@339
   435
 # too).
yann@339
   436
 case ${with_cpu} in
yann@339
   437
diff -durN gcc-3.4.6.orig/libtool.m4 gcc-3.4.6/libtool.m4
yann@339
   438
--- gcc-3.4.6.orig/libtool.m4	2004-05-18 11:09:14.000000000 +0200
yann@339
   439
+++ gcc-3.4.6/libtool.m4	2007-08-15 22:49:47.000000000 +0200
yann@339
   440
@@ -689,6 +689,11 @@
yann@339
   441
   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
yann@339
   442
   ;;
yann@339
   443
 
yann@339
   444
+linux-uclibc*)
yann@339
   445
+  lt_cv_deplibs_check_method=pass_all
yann@339
   446
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@339
   447
+  ;;
yann@339
   448
+
yann@339
   449
 netbsd*)
yann@339
   450
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@339
   451
     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
yann@339
   452
diff -durN gcc-3.4.6.orig/ltconfig gcc-3.4.6/ltconfig
yann@339
   453
--- gcc-3.4.6.orig/ltconfig	2004-03-05 22:05:41.000000000 +0100
yann@339
   454
+++ gcc-3.4.6/ltconfig	2007-08-15 22:49:47.000000000 +0200
yann@339
   455
@@ -602,6 +602,7 @@
yann@339
   456
 
yann@339
   457
 # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
yann@339
   458
 case $host_os in
yann@339
   459
+linux-uclibc*) ;;
yann@339
   460
 linux-gnu*) ;;
yann@339
   461
 linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
yann@339
   462
 esac
yann@339
   463
@@ -1262,6 +1263,24 @@
yann@339
   464
   dynamic_linker='GNU/Linux ld.so'
yann@339
   465
   ;;
yann@339
   466
 
yann@339
   467
+linux-uclibc*)
yann@339
   468
+  version_type=linux
yann@339
   469
+  need_lib_prefix=no
yann@339
   470
+  need_version=no
yann@339
   471
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
yann@339
   472
+  soname_spec='${libname}${release}.so$major'
yann@339
   473
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
yann@339
   474
+  shlibpath_var=LD_LIBRARY_PATH
yann@339
   475
+  shlibpath_overrides_runpath=no
yann@339
   476
+  # This implies no fast_install, which is unacceptable.
yann@339
   477
+  # Some rework will be needed to allow for fast_install
yann@339
   478
+  # before this can be enabled.
yann@339
   479
+  # Note: copied from linux-gnu, and may not be appropriate.
yann@339
   480
+  hardcode_into_libs=yes
yann@339
   481
+  # Assume using the uClibc dynamic linker.
yann@339
   482
+  dynamic_linker="uClibc ld.so"
yann@339
   483
+  ;;
yann@339
   484
+
yann@339
   485
 netbsd*)
yann@339
   486
   need_lib_prefix=no
yann@339
   487
   need_version=no
yann@339
   488
diff -durN gcc-3.4.6.orig/null gcc-3.4.6/null
yann@339
   489
--- gcc-3.4.6.orig/null	1970-01-01 01:00:00.000000000 +0100
yann@339
   490
+++ gcc-3.4.6/null	2007-08-15 22:49:47.000000000 +0200
yann@339
   491
@@ -0,0 +1 @@
yann@339
   492
+~/dev