patches/gcc/4.0.4/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@1
     1
--- gcc-4.0.2/gcc/config/t-linux-uclibc
yann@1
     2
+++ gcc-4.0.2/gcc/config/t-linux-uclibc
yann@1
     3
@@ -0,0 +1,5 @@
yann@1
     4
+# Remove glibc specific files added in t-linux
yann@1
     5
+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
yann@1
     6
+
yann@1
     7
+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
yann@1
     8
+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
yann@1
     9
--- gcc-4.0.2/gcc/config.gcc
yann@1
    10
+++ gcc-4.0.2/gcc/config.gcc
yann@1
    11
@@ -1778,7 +1778,7 @@
yann@1
    12
 	;;
yann@1
    13
 sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
yann@1
    14
 sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
yann@1
    15
-  sh-*-linux* | sh[346lbe]*-*-linux* | \
yann@1
    16
+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
yann@1
    17
   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
yann@1
    18
    sh64-*-netbsd* | sh64l*-*-netbsd*)
yann@1
    19
 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
yann@1
    20
@@ -2234,10 +2234,16 @@
yann@1
    21
 *)
yann@1
    22
 	echo "*** Configuration ${target} not supported" 1>&2
yann@1
    23
 	exit 1
yann@1
    24
 	;;
yann@1
    25
 esac
yann@1
    26
+
yann@1
    27
+# Rather than hook into each target, just do it after all the linux
yann@1
    28
+# targets have been processed
yann@1
    29
+case ${target} in
yann@1
    30
+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
yann@1
    31
+esac
yann@1
    32
 
yann@1
    33
 case ${target} in
yann@1
    34
 i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
yann@1
    35
 	tmake_file="${tmake_file} i386/t-gmm_malloc"
yann@1
    36
 	;;
yann@1
    37
--- gcc-4.0.2/gcc/config/alpha/linux-elf.h
yann@1
    38
+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h
yann@1
    39
@@ -27,7 +27,11 @@
yann@1
    40
 #define SUBTARGET_EXTRA_SPECS \
yann@1
    41
 { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
yann@1
    42
 
yann@1
    43
+#ifdef USE_UCLIBC
yann@1
    44
+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
yann@1
    45
+#else
yann@1
    46
 #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
yann@1
    47
+#endif
yann@1
    48
 
yann@1
    49
 #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
yann@1
    50
   %{O*:-O3} %{!O*:-O1}						\
yann@1
    51
--- gcc-4.0.2/gcc/config/arm/linux-elf.h
yann@1
    52
+++ gcc-4.0.2/gcc/config/arm/linux-elf.h
yann@1
    53
@@ -81,14 +81,19 @@
yann@1
    54
 #define ENDFILE_SPEC \
yann@1
    55
   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
yann@1
    56
 
yann@1
    57
+#ifdef USE_UCLIBC
yann@1
    58
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
    59
+#else
yann@1
    60
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@1
    61
+#endif
yann@1
    62
 #undef  LINK_SPEC
yann@1
    63
 #define LINK_SPEC "%{h*} %{version:-v} \
yann@1
    64
    %{b} %{Wl,*:%*} \
yann@1
    65
    %{static:-Bstatic} \
yann@1
    66
    %{shared:-shared} \
yann@1
    67
    %{symbolic:-Bsymbolic} \
yann@1
    68
    %{rdynamic:-export-dynamic} \
yann@1
    69
-   %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
yann@1
    70
+   %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
yann@1
    71
    -X \
yann@1
    72
    %{mbig-endian:-EB}" \
yann@1
    73
    SUBTARGET_EXTRA_LINK_SPEC
yann@1
    74
--- gcc-4.0.2/gcc/config/cris/linux.h
yann@1
    75
+++ gcc-4.0.2/gcc/config/cris/linux.h
yann@1
    76
@@ -79,6 +79,25 @@
yann@1
    77
 #undef CRIS_DEFAULT_CPU_VERSION
yann@1
    78
 #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
yann@1
    79
 
yann@1
    80
+#ifdef USE_UCLIBC
yann@1
    81
+
yann@1
    82
+#undef CRIS_SUBTARGET_VERSION
yann@1
    83
+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
yann@1
    84
+
yann@1
    85
+#undef CRIS_LINK_SUBTARGET_SPEC
yann@1
    86
+#define CRIS_LINK_SUBTARGET_SPEC \
yann@1
    87
+ "-mcrislinux\
yann@1
    88
+  -rpath-link include/asm/../..%s\
yann@1
    89
+  %{shared} %{static}\
yann@1
    90
+  %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
yann@1
    91
+  %{!shared: \
yann@1
    92
+    %{!static: \
yann@1
    93
+      %{rdynamic:-export-dynamic} \
yann@1
    94
+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \
yann@1
    95
+  %{!r:%{O2|O3: --gc-sections}}"
yann@1
    96
+
yann@1
    97
+#else  /* USE_UCLIBC */
yann@1
    98
+
yann@1
    99
 #undef CRIS_SUBTARGET_VERSION
yann@1
   100
 #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
yann@1
   101
 
yann@1
   102
@@ -93,6 +112,8 @@
yann@1
   103
   %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
yann@1
   104
   %{!r:%{O2|O3: --gc-sections}}"
yann@1
   105
 
yann@1
   106
+#endif  /* USE_UCLIBC */
yann@1
   107
+
yann@1
   108
 
yann@1
   109
 /* Node: Run-time Target */
yann@1
   110
 
yann@1
   111
--- gcc-4.0.2/gcc/config/i386/linux.h
yann@1
   112
+++ gcc-4.0.2/gcc/config/i386/linux.h
yann@1
   113
@@ -107,6 +107,11 @@
yann@1
   114
 #define LINK_EMULATION "elf_i386"
yann@1
   115
 #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@1
   116
 
yann@1
   117
+#ifdef USE_UCLIBC
yann@1
   118
+#undef DYNAMIC_LINKER
yann@1
   119
+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   120
+#endif
yann@1
   121
+
yann@1
   122
 #undef  SUBTARGET_EXTRA_SPECS
yann@1
   123
 #define SUBTARGET_EXTRA_SPECS \
yann@1
   124
   { "link_emulation", LINK_EMULATION },\
yann@1
   125
--- gcc-4.0.2/gcc/config/i386/linux64.h
yann@1
   126
+++ gcc-4.0.2/gcc/config/i386/linux64.h
yann@1
   127
@@ -54,14 +54,21 @@
yann@1
   128
    When the -shared link option is used a final link is not being
yann@1
   129
    done.  */
yann@1
   130
 
yann@1
   131
+#ifdef USE_UCLIBC
yann@1
   132
+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   133
+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
yann@1
   134
+#else
yann@1
   135
+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@1
   136
+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
yann@1
   137
+#endif
yann@1
   138
 #undef	LINK_SPEC
yann@1
   139
 #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
yann@1
   140
   %{shared:-shared} \
yann@1
   141
   %{!shared: \
yann@1
   142
     %{!static: \
yann@1
   143
       %{rdynamic:-export-dynamic} \
yann@1
   144
-      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
   145
-      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
yann@1
   146
+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
yann@1
   147
+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
yann@1
   148
     %{static:-static}}"
yann@1
   149
 
yann@1
   150
 #define MULTILIB_DEFAULTS { "m64" }
yann@1
   151
--- gcc-4.0.2/gcc/config/ia64/linux.h
yann@1
   152
+++ gcc-4.0.2/gcc/config/ia64/linux.h
yann@1
   153
@@ -37,13 +37,18 @@
yann@1
   154
 /* Define this for shared library support because it isn't in the main
yann@1
   155
    linux.h file.  */
yann@1
   156
 
yann@1
   157
+#ifdef USE_UCLIBC
yann@1
   158
+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
yann@1
   159
+#else
yann@1
   160
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
yann@1
   161
+#endif
yann@1
   162
 #undef LINK_SPEC
yann@1
   163
 #define LINK_SPEC "\
yann@1
   164
   %{shared:-shared} \
yann@1
   165
   %{!shared: \
yann@1
   166
     %{!static: \
yann@1
   167
       %{rdynamic:-export-dynamic} \
yann@1
   168
-      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
yann@1
   169
+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   170
       %{static:-static}}"
yann@1
   171
 
yann@1
   172
 
yann@1
   173
--- gcc-4.0.2/gcc/config/m68k/linux.h
yann@1
   174
+++ gcc-4.0.2/gcc/config/m68k/linux.h
yann@1
   175
@@ -127,12 +127,17 @@
yann@1
   176
 
yann@1
   177
 /* If ELF is the default format, we should not use /lib/elf.  */
yann@1
   178
 
yann@1
   179
+#ifdef USE_UCLIBC
yann@1
   180
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   181
+#else
yann@1
   182
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
yann@1
   183
+#endif
yann@1
   184
 #undef	LINK_SPEC
yann@1
   185
 #define LINK_SPEC "-m m68kelf %{shared} \
yann@1
   186
   %{!shared: \
yann@1
   187
     %{!static: \
yann@1
   188
       %{rdynamic:-export-dynamic} \
yann@1
   189
-      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
yann@1
   190
+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   191
     %{static}}"
yann@1
   192
 
yann@1
   193
 /* For compatibility with linux/a.out */
yann@1
   194
--- gcc-4.0.2/gcc/config/mips/linux.h
yann@1
   195
+++ gcc-4.0.2/gcc/config/mips/linux.h
yann@1
   196
@@ -108,14 +108,19 @@
yann@1
   197
 
yann@1
   198
 /* Borrowed from sparc/linux.h */
yann@1
   199
 #undef LINK_SPEC
yann@1
   200
+#ifdef USE_UCLIBC
yann@1
   201
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   202
+#else
yann@1
   203
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
yann@1
   204
+#endif
yann@1
   205
 #define LINK_SPEC \
yann@1
   206
  "%(endian_spec) \
yann@1
   207
   %{shared:-shared} \
yann@1
   208
   %{!shared: \
yann@1
   209
     %{!ibcs: \
yann@1
   210
       %{!static: \
yann@1
   211
         %{rdynamic:-export-dynamic} \
yann@1
   212
-        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
yann@1
   213
+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   214
         %{static:-static}}}"
yann@1
   215
 
yann@1
   216
 #undef SUBTARGET_ASM_SPEC
yann@1
   217
--- gcc-4.0.2/gcc/config/pa/pa-linux.h
yann@1
   218
+++ gcc-4.0.2/gcc/config/pa/pa-linux.h
yann@1
   219
@@ -82,13 +82,18 @@
yann@1
   220
 /* Define this for shared library support because it isn't in the main
yann@1
   221
    linux.h file.  */
yann@1
   222
 
yann@1
   223
+#ifdef USE_UCLIBC
yann@1
   224
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   225
+#else
yann@1
   226
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
yann@1
   227
+#endif
yann@1
   228
 #undef LINK_SPEC
yann@1
   229
 #define LINK_SPEC "\
yann@1
   230
   %{shared:-shared} \
yann@1
   231
   %{!shared: \
yann@1
   232
     %{!static: \
yann@1
   233
       %{rdynamic:-export-dynamic} \
yann@1
   234
-      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
yann@1
   235
+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   236
       %{static:-static}}"
yann@1
   237
 
yann@1
   238
 /* glibc's profiling functions don't need gcc to allocate counters.  */
yann@1
   239
--- gcc-4.0.2/gcc/config/rs6000/linux.h
yann@1
   240
+++ gcc-4.0.2/gcc/config/rs6000/linux.h
yann@1
   241
@@ -69,7 +69,11 @@
yann@1
   242
 #define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
yann@1
   243
 
yann@1
   244
 #undef	LINK_OS_DEFAULT_SPEC
yann@1
   245
+#ifdef USE_UCLIBC
yann@1
   246
+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)"
yann@1
   247
+#else
yann@1
   248
 #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
yann@1
   249
+#endif
yann@1
   250
 
yann@1
   251
 #define LINK_GCC_C_SEQUENCE_SPEC \
yann@1
   252
   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
yann@1
   253
--- gcc-4.0.2/gcc/config/rs6000/sysv4.h
yann@1
   254
+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h
yann@1
   255
@@ -949,6 +949,7 @@
yann@1
   256
   mcall-linux  : %(link_os_linux)       ; \
yann@1
   257
   mcall-gnu    : %(link_os_gnu)         ; \
yann@1
   258
   mcall-netbsd : %(link_os_netbsd)      ; \
yann@1
   259
+  mcall-linux-uclibc : %(link_os_linux_uclibc); \
yann@1
   260
   mcall-openbsd: %(link_os_openbsd)     ; \
yann@1
   261
                : %(link_os_default)     }"
yann@1
   262
 
yann@1
   263
@@ -1127,6 +1128,10 @@
yann@1
   264
   %{rdynamic:-export-dynamic} \
yann@1
   265
   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
yann@1
   266
 
yann@1
   267
+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \
yann@1
   268
+  %{rdynamic:-export-dynamic} \
yann@1
   269
+  %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}"
yann@1
   270
+
yann@1
   271
 #if defined(HAVE_LD_EH_FRAME_HDR)
yann@1
   272
 # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
yann@1
   273
 #endif
yann@1
   274
@@ -1293,6 +1298,7 @@
yann@1
   275
   { "link_os_sim",		LINK_OS_SIM_SPEC },			\
yann@1
   276
   { "link_os_freebsd",		LINK_OS_FREEBSD_SPEC },			\
yann@1
   277
   { "link_os_linux",		LINK_OS_LINUX_SPEC },			\
yann@1
   278
+  { "link_os_linux_uclibc",	LINK_OS_LINUX_UCLIBC_SPEC },		\
yann@1
   279
   { "link_os_gnu",		LINK_OS_GNU_SPEC },			\
yann@1
   280
   { "link_os_netbsd",		LINK_OS_NETBSD_SPEC },			\
yann@1
   281
   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
yann@1
   282
--- gcc-4.0.2/gcc/config/s390/linux.h
yann@1
   283
+++ gcc-4.0.2/gcc/config/s390/linux.h
yann@1
   284
@@ -77,6 +77,13 @@
yann@1
   285
 #define MULTILIB_DEFAULTS { "m31" }
yann@1
   286
 #endif
yann@1
   287
 
yann@1
   288
+#ifdef USE_UCLIBC
yann@1
   289
+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   290
+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
yann@1
   291
+#else
yann@1
   292
+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
yann@1
   293
+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
yann@1
   294
+#endif
yann@1
   295
 #undef  LINK_SPEC
yann@1
   296
 #define LINK_SPEC \
yann@1
   297
   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
yann@1
   298
@@ -86,8 +93,8 @@
yann@1
   299
       %{!static: \
yann@1
   300
 	%{rdynamic:-export-dynamic} \
yann@1
   301
 	%{!dynamic-linker: \
yann@1
   302
-          %{m31:-dynamic-linker /lib/ld.so.1} \
yann@1
   303
-          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
yann@1
   304
+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
yann@1
   305
+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
yann@1
   306
 
yann@1
   307
 
yann@1
   308
 #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
yann@1
   309
--- gcc-4.0.2/gcc/config/sh/linux.h
yann@1
   310
+++ gcc-4.0.2/gcc/config/sh/linux.h
yann@1
   311
@@ -67,11 +67,16 @@
yann@1
   312
 #undef SUBTARGET_LINK_EMUL_SUFFIX
yann@1
   313
 #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
yann@1
   314
 #undef SUBTARGET_LINK_SPEC
yann@1
   315
+#ifdef USE_UCLIBC
yann@1
   316
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   317
+#else
yann@1
   318
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@1
   319
+#endif
yann@1
   320
 #define SUBTARGET_LINK_SPEC \
yann@1
   321
   "%{shared:-shared} \
yann@1
   322
    %{!static: \
yann@1
   323
      %{rdynamic:-export-dynamic} \
yann@1
   324
-     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
   325
+     %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   326
    %{static:-static}"
yann@1
   327
 
yann@1
   328
 #undef LIB_SPEC
yann@1
   329
--- gcc-4.0.2/gcc/config/sparc/linux.h
yann@1
   330
+++ gcc-4.0.2/gcc/config/sparc/linux.h
yann@1
   331
@@ -130,14 +130,19 @@
yann@1
   332
 
yann@1
   333
 /* If ELF is the default format, we should not use /lib/elf.  */
yann@1
   334
 
yann@1
   335
+#ifdef USE_UCLIBC
yann@1
   336
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
yann@1
   337
+#else
yann@1
   338
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
yann@1
   339
+#endif
yann@1
   340
 #undef  LINK_SPEC
yann@1
   341
 #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
yann@1
   342
   %{!mno-relax:%{!r:-relax}} \
yann@1
   343
   %{!shared: \
yann@1
   344
     %{!ibcs: \
yann@1
   345
       %{!static: \
yann@1
   346
         %{rdynamic:-export-dynamic} \
yann@1
   347
-        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
   348
+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   349
         %{static:-static}}}"
yann@1
   350
 
yann@1
   351
 /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
yann@1
   352
--- gcc-4.0.2/gcc/config/sparc/linux64.h
yann@1
   353
+++ gcc-4.0.2/gcc/config/sparc/linux64.h
yann@1
   354
@@ -167,12 +166,17 @@
yann@1
   355
   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
yann@1
   356
   { "link_arch",	 LINK_ARCH_SPEC },
yann@1
   357
     
yann@1
   358
+#ifdef USE_UCLIBC
yann@1
   359
+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
yann@1
   360
+#else
yann@1
   361
+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
yann@1
   362
+#endif
yann@1
   363
 #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
yann@1
   364
   %{!shared: \
yann@1
   365
     %{!ibcs: \
yann@1
   366
       %{!static: \
yann@1
   367
         %{rdynamic:-export-dynamic} \
yann@1
   368
-        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
yann@1
   369
+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
yann@1
   370
         %{static:-static}}} \
yann@1
   371
 "
yann@1
   372
 
yann@1
   373
--- gcc-4.0.2/libtool.m4
yann@1
   374
+++ gcc-4.0.2/libtool.m4
yann@1
   375
@@ -682,6 +682,11 @@
yann@1
   376
   lt_cv_deplibs_check_method=pass_all
yann@1
   377
   ;;
yann@1
   378
 
yann@1
   379
+linux-uclibc*)
yann@1
   380
+  lt_cv_deplibs_check_method=pass_all
yann@1
   381
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   382
+  ;;
yann@1
   383
+
yann@1
   384
 netbsd* | knetbsd*-gnu)
yann@1
   385
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   386
     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
yann@1
   387
--- gcc-4.0.2/ltconfig
yann@1
   388
+++ gcc-4.0.2/ltconfig
yann@1
   389
@@ -603,6 +603,7 @@
yann@1
   390
 
yann@1
   391
 # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
yann@1
   392
 case $host_os in
yann@1
   393
+linux-uclibc*) ;;
yann@1
   394
 linux-gnu*) ;;
yann@1
   395
 linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
yann@1
   396
 esac
yann@1
   397
@@ -1274,6 +1275,23 @@
yann@1
   398
   dynamic_linker='GNU/Linux ld.so'
yann@1
   399
   ;;
yann@1
   400
 
yann@1
   401
+linux-uclibc*)
yann@1
   402
+  version_type=linux
yann@1
   403
+  need_lib_prefix=no
yann@1
   404
+  need_version=no
yann@1
   405
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
yann@1
   406
+  soname_spec='${libname}${release}.so$major'
yann@1
   407
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
yann@1
   408
+  shlibpath_var=LD_LIBRARY_PATH
yann@1
   409
+  shlibpath_overrides_runpath=no
yann@1
   410
+  # This implies no fast_install, which is unacceptable.
yann@1
   411
+  # Some rework will be needed to allow for fast_install
yann@1
   412
+  # before this can be enabled.
yann@1
   413
+  hardcode_into_libs=yes
yann@1
   414
+  # Assume using the uClibc dynamic linker.
yann@1
   415
+  dynamic_linker="uClibc ld.so"
yann@1
   416
+  ;;
yann@1
   417
+
yann@1
   418
 netbsd*)
yann@1
   419
   need_lib_prefix=no
yann@1
   420
   need_version=no
yann@1
   421
--- gcc-4.0.2/libffi/configure
yann@1
   422
+++ gcc-4.0.2/libffi/configure
yann@1
   423
@@ -3457,6 +3457,11 @@
yann@1
   424
   lt_cv_deplibs_check_method=pass_all
yann@1
   425
   ;;
yann@1
   426
 
yann@1
   427
+linux-uclibc*)
yann@1
   428
+  lt_cv_deplibs_check_method=pass_all
yann@1
   429
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   430
+  ;;
yann@1
   431
+
yann@1
   432
 netbsd* | knetbsd*-gnu)
yann@1
   433
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   434
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@1
   435
--- gcc-4.0.2/libgfortran/configure
yann@1
   436
+++ gcc-4.0.2/libgfortran/configure
yann@1
   437
@@ -3681,6 +3681,11 @@
yann@1
   438
   lt_cv_deplibs_check_method=pass_all
yann@1
   439
   ;;
yann@1
   440
 
yann@1
   441
+linux-uclibc*)
yann@1
   442
+  lt_cv_deplibs_check_method=pass_all
yann@1
   443
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   444
+  ;;
yann@1
   445
+
yann@1
   446
 netbsd* | knetbsd*-gnu)
yann@1
   447
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   448
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@1
   449
--- gcc-4.0.2/libjava/configure
yann@1
   450
+++ gcc-4.0.2/libjava/configure
yann@1
   451
@@ -4351,6 +4351,11 @@
yann@1
   452
   lt_cv_deplibs_check_method=pass_all
yann@1
   453
   ;;
yann@1
   454
 
yann@1
   455
+linux-uclibc*)
yann@1
   456
+  lt_cv_deplibs_check_method=pass_all
yann@1
   457
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   458
+  ;;
yann@1
   459
+
yann@1
   460
 netbsd* | knetbsd*-gnu)
yann@1
   461
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   462
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@1
   463
--- gcc-4.0.2/libmudflap/configure
yann@1
   464
+++ gcc-4.0.2/libmudflap/configure
yann@1
   465
@@ -5380,6 +5380,11 @@
yann@1
   466
   lt_cv_deplibs_check_method=pass_all
yann@1
   467
   ;;
yann@1
   468
 
yann@1
   469
+linux-uclibc*)
yann@1
   470
+  lt_cv_deplibs_check_method=pass_all
yann@1
   471
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   472
+  ;;
yann@1
   473
+
yann@1
   474
 netbsd* | knetbsd*-gnu)
yann@1
   475
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   476
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@1
   477
--- gcc-4.0.2/libobjc/configure
yann@1
   478
+++ gcc-4.0.2/libobjc/configure
yann@1
   479
@@ -3283,6 +3283,11 @@
yann@1
   480
   lt_cv_deplibs_check_method=pass_all
yann@1
   481
   ;;
yann@1
   482
 
yann@1
   483
+linux-uclibc*)
yann@1
   484
+  lt_cv_deplibs_check_method=pass_all
yann@1
   485
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   486
+  ;;
yann@1
   487
+
yann@1
   488
 netbsd* | knetbsd*-gnu)
yann@1
   489
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   490
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@1
   491
--- gcc-4.0.2/boehm-gc/configure
yann@1
   492
+++ gcc-4.0.2/boehm-gc/configure
yann@1
   493
@@ -4320,6 +4320,11 @@
yann@1
   494
   lt_cv_deplibs_check_method=pass_all
yann@1
   495
   ;;
yann@1
   496
 
yann@1
   497
+linux-uclibc*)
yann@1
   498
+  lt_cv_deplibs_check_method=pass_all
yann@1
   499
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   500
+  ;;
yann@1
   501
+
yann@1
   502
 netbsd* | knetbsd*-gnu)
yann@1
   503
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   504
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
yann@1
   505
--- gcc-4.0.2/configure
yann@1
   506
+++ gcc-4.0.2/configure
yann@1
   507
@@ -1141,7 +1141,7 @@
yann@1
   508
     ;;
yann@1
   509
 "")
yann@1
   510
     case "${target}" in
yann@1
   511
-    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
yann@1
   512
+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
yann@1
   513
         # Enable libmudflap by default in GNU and friends.
yann@1
   514
 	;;
yann@1
   515
     *-*-freebsd*)
yann@1
   516
--- gcc-4.0.2/configure.in
yann@1
   517
+++ gcc-4.0.2/configure.in
yann@1
   518
@@ -350,7 +350,7 @@
yann@1
   519
     ;;
yann@1
   520
 "")
yann@1
   521
     case "${target}" in
yann@1
   522
-    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
yann@1
   523
+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
yann@1
   524
         # Enable libmudflap by default in GNU and friends.
yann@1
   525
 	;;
yann@1
   526
     *-*-freebsd*)
yann@1
   527
--- gcc-4.0.2/contrib/regression/objs-gcc.sh
yann@1
   528
+++ gcc-4.0.2/contrib/regression/objs-gcc.sh
yann@1
   529
@@ -105,6 +105,10 @@
yann@1
   530
  then
yann@1
   531
   make all-gdb all-dejagnu all-ld || exit 1
yann@1
   532
   make install-gdb install-dejagnu install-ld || exit 1
yann@1
   533
+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
yann@1
   534
+ then
yann@1
   535
+  make all-gdb all-dejagnu all-ld || exit 1
yann@1
   536
+  make install-gdb install-dejagnu install-ld || exit 1
yann@1
   537
 elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
yann@1
   538
   make bootstrap || exit 1
yann@1
   539
   make install || exit 1
yann@1
   540
--- gcc-4.0.2/zlib/configure
yann@1
   541
+++ gcc-4.0.2/zlib/configure
yann@1
   542
@@ -3426,6 +3426,11 @@
yann@1
   543
   lt_cv_deplibs_check_method=pass_all
yann@1
   544
   ;;
yann@1
   545
 
yann@1
   546
+linux-uclibc*)
yann@1
   547
+  lt_cv_deplibs_check_method=pass_all
yann@1
   548
+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
yann@1
   549
+  ;;
yann@1
   550
+
yann@1
   551
 netbsd* | knetbsd*-gnu)
yann@1
   552
   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
yann@1
   553
     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'