📄 100-uclibc-conf.patch
字号:
Warning! The powerpc patch (rs6000/linux.h) is hack-ish and woulddefinitely need to be improved to be acceptable upstream. Also,this patch isn't complete as it only supports i386, arm, mips, andpowerpc (rs6000).diff -urN gcc-20011006/config.sub gcc-20011006-new/config.sub--- gcc-20011006/config.sub 2004-01-13 06:15:28.000000000 -0600+++ gcc-20011006-new/config.sub 2004-01-10 11:09:35.000000000 -0600@@ -68,7 +68,7 @@ # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in- linux-gnu*)+ linux-gnu* | linux-uclibc*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;;@@ -936,7 +936,8 @@ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \+ | -mingw32* | -linux-gnu* | -linux-uclibc* \+ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* ) # Remember, each alternative MUST END IN *, to match a version number. ;;diff -urN gcc-20011006/gcc/config/arm/linux-elf.h gcc-20011006-new/gcc/config/arm/linux-elf.h--- gcc-20011006/gcc/config/arm/linux-elf.h 2004-01-13 06:15:28.000000000 -0600+++ gcc-20011006-new/gcc/config/arm/linux-elf.h 2004-01-10 11:12:11.000000000 -0600@@ -90,6 +90,18 @@ #define ENDFILE_SPEC \ "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" +#ifdef USE_UCLIBC+#define LINK_SPEC "%{h*} %{version:-v} \+ %{b} %{Wl,*:%*} \+ %{static:-Bstatic} \+ %{shared:-shared} \+ %{symbolic:-Bsymbolic} \+ %{rdynamic:-export-dynamic} \+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \+ -X \+ %{mbig-endian:-EB}" \+ SUBTARGET_EXTRA_LINK_SPEC+#else #define LINK_SPEC "%{h*} %{version:-v} \ %{b} %{Wl,*:%*} \ %{static:-Bstatic} \@@ -100,6 +112,7 @@ -X \ %{mbig-endian:-EB}" \ SUBTARGET_EXTRA_LINK_SPEC+#endif #undef CPP_PREDEFINES #define CPP_PREDEFINES \diff -urN gcc-20011006/gcc/config/i386/linux.h gcc-20011006-new/gcc/config/i386/linux.h--- gcc-20011006/gcc/config/i386/linux.h 2001-04-03 17:38:59.000000000 -0500+++ gcc-20011006-new/gcc/config/i386/linux.h 2004-01-10 11:15:38.000000000 -0600@@ -199,6 +199,15 @@ %{static:-static}}}" #endif #else+#if defined USE_UCLIBC+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \+ %{!shared: \+ %{!ibcs: \+ %{!static: \+ %{rdynamic:-export-dynamic} \+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \+ %{static:-static}}}"+#else #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ %{!shared: \ %{!ibcs: \@@ -207,6 +216,7 @@ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ %{static:-static}}}" #endif+#endif /* Get perform_* macros to build libgcc.a. */ #include "i386/perform.h"diff -urN gcc-20011006/gcc/config/mips/linux.h gcc-20011006-new/gcc/config/mips/linux.h--- gcc-20011006/gcc/config/mips/linux.h 2004-01-13 06:15:28.000000000 -0600+++ gcc-20011006-new/gcc/config/mips/linux.h 2004-01-10 11:16:39.000000000 -0600@@ -154,6 +154,17 @@ /* Borrowed from sparc/linux.h */ #undef LINK_SPEC+#ifdef USE_UCLIBC+#define LINK_SPEC \+ "%(endian_spec) \+ %{shared:-shared} \+ %{!shared: \+ %{!ibcs: \+ %{!static: \+ %{rdynamic:-export-dynamic} \+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \+ %{static:-static}}}"+#else #define LINK_SPEC \ "%(endian_spec) \ %{shared:-shared} \@@ -163,6 +174,7 @@ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ %{static:-static}}}"+#endif #undef SUBTARGET_ASM_SPECdiff -urN old/gcc-20011006/gcc/config/mips/t-linux-uclibc gcc-20011006/gcc/config/mips/t-linux-uclibc--- old/gcc-20011006/gcc/config/mips/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600+++ gcc-20011006/gcc/config/mips/t-linux-uclibc 2004-01-14 02:51:10.000000000 -0600@@ -0,0 +1 @@+T_CFLAGS = -DUSE_UCLIBCdiff -urN gcc-20011006/gcc/config/rs6000/linux.h gcc-20011006-new/gcc/config/rs6000/linux.h--- gcc-20011006/gcc/config/rs6000/linux.h 2001-04-03 17:38:59.000000000 -0500+++ gcc-20011006-new/gcc/config/rs6000/linux.h 2004-01-10 11:15:38.000000000 -0600@@ -36,12 +36,21 @@ #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)" #undef LINK_SPEC+#ifdef USE_UCLIBC+#define LINK_SPEC "-m elf32ppclinux %{G*} %{shared:-shared} \+ %{!shared: \+ %{!static: \+ %{rdynamic:-export-dynamic} \+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \+ %{static:-static}}"+#else #define LINK_SPEC "-m elf32ppclinux %{G*} %{shared:-shared} \ %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ %{static:-static}}"+#endif #undef LIB_DEFAULT_SPEC #define LIB_DEFAULT_SPEC "%(lib_linux)"diff -urN gcc-20011006/gcc/config/t-linux-uclibc gcc-20011006-new/gcc/config/t-linux-uclibc--- gcc-20011006/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600+++ gcc-20011006-new/gcc/config/t-linux-uclibc 2004-01-10 11:18:46.000000000 -0600@@ -0,0 +1,18 @@+T_CFLAGS = -DUSE_UCLIBC++# Don't run fixproto+STMP_FIXPROTO =++# Don't install "assert.h" in gcc. We use the one in glibc.+INSTALL_ASSERT_H =++# Compile crtbeginS.o and crtendS.o with pic.+CRTSTUFF_T_CFLAGS_S = -fPIC+# Compile libgcc2.a with pic.+TARGET_LIBGCC2_CFLAGS = -fPIC++# Do not build libgcc1. Let gcc generate those functions. The GNU/Linux+# C library can handle them.+LIBGCC1 = +CROSS_LIBGCC1 =+LIBGCC1_TEST =diff -urN gcc-20011006/gcc/configure gcc-20011006-new/gcc/configure--- gcc-20011006/gcc/configure 2004-01-13 06:15:28.000000000 -0600+++ gcc-20011006-new/gcc/configure 2004-01-10 11:28:54.000000000 -0600@@ -3219,6 +3219,24 @@ ;; esac ;;+ arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc+ xm_file=arm/xm-linux.h+ xmake_file=x-linux+ tm_file="arm/linux-elf.h"+ case $machine in+ armv2*-*-*)+ tm_file="arm/linux-elf26.h $tm_file"+ ;;+ esac+ tmake_file="t-linux-uclibc arm/t-linux"+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"+ gnu_ld=yes+ case x${enable_threads} in+ x | xyes | xpthreads | xposix)+ thread_file='posix'+ ;;+ esac+ ;; arm*-*-aout) tm_file=arm/aout.h tmake_file=arm/t-bare@@ -3631,6 +3649,18 @@ thread_file='single' fi ;;+ i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux+ # with ELF format using uClibc+ xmake_file=x-linux+ tm_file=i386/linux.h+ tmake_file="t-linux-uclibc i386/t-crtstuff"+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"+ gnu_ld=yes+ float_format=i386+ if test x$enable_threads = xyes; then+ thread_file='posix'+ fi+ ;; i[34567]86-*-linux-gnu*) # Intel 80386's running GNU/Linux # aka GNU/Linux C library 6 xmake_file=x-linux@@ -4696,7 +4726,19 @@ # On NetBSD, the headers are already okay, except for math.h. tmake_file=t-netbsd ;;- mips*-*-linux*) # Linux MIPS, either endian.+ mips*-*-linux-uclibc*) # Linux (uclibc) MIPS, either endian.+ tmake_file=mips/t-linux-uclibc+ xmake_file=x-linux+ xm_file="xm-siglist.h ${xm_file}"+ case $machine in+ mipsel-*) tm_file="mips/elfl.h mips/linux.h" ;;+ *) tm_file="mips/elf.h mips/linux.h" ;;+ esac+ extra_parts="crtbegin.o crtend.o"+ gnu_ld=yes+ gas=yes+ ;;+ mips*-*-linux*) # Linux MIPS, either endian. xmake_file=x-linux xm_file="xm-siglist.h ${xm_file}" case $machine in@@ -5159,6 +5201,24 @@ thread_file='posix' fi ;;+ powerpc-*-linux-uclibc*)+ tm_file=rs6000/linux.h+ xm_file="xm-siglist.h rs6000/xm-sysv4.h"+ xm_defines="USG ${xm_defines}"+ out_file=rs6000/rs6000.c+ if test x$gas = xyes+ then+ tmake_file="rs6000/t-ppcos t-linux-uclibc rs6000/t-ppccomm"+ else+ tmake_file="rs6000/t-ppc t-linux-uclibc rs6000/t-ppccomm"+ fi+ xmake_file=x-linux+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"+ extra_headers=ppc-asm.h+ if test x$enable_threads = xyes; then+ thread_file='posix'+ fi+ ;; powerpc-wrs-vxworks*) cpu_type=rs6000 xm_file="xm-siglist.h rs6000/xm-sysv4.h"diff -urN gcc-20011006/ltconfig gcc-20011006-new/ltconfig--- gcc-20011006/ltconfig 1999-06-21 21:35:12.000000000 -0500+++ gcc-20011006-new/ltconfig 2004-01-10 11:34:23.000000000 -0600@@ -436,6 +436,7 @@ # Transform linux* to *-*-linux-gnu*, to support old configure scripts. case "$host_os" in linux-gnu*) ;;+linux-uclibc*) ;; linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` esac @@ -1773,6 +1774,22 @@ fi ;; +linux-uclibc*)+ version_type=linux+ need_lib_prefix=no+ need_version=no+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'+ soname_spec='${libname}${release}.so$major'+ finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir'+ shlibpath_var=LD_LIBRARY_PATH+ shlibpath_overrides_runpath=no+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'+ file_magic_cmd=/usr/bin/file+ file_magic_test_file=`echo /lib/libuClibc-*.so`+ # Assume using the uClibc dynamic linker.+ dynamic_linker="uClibc ld.so"+ ;;+ netbsd*) version_type=sunos if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -