patches/gcc/3.4.6/100-uclibc-conf.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Jan 12 19:24:03 2010 +0100 (2010-01-12)
changeset 1761 88020b2c3246
permissions -rw-r--r--
scripts/functions: change handling of nochdir

- 'nochdir' must be the first option
- have systematic pushd/popd, even if nochdir
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