Fourth step at renaming patches: renumber all patches with a 10-step.
author"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Jul 28 21:32:33 2008 +0000 (2008-07-28)
changeset 747d3e603e7c17c
parent 746 b150d6f590fc
child 748 61cd4eb6034d
Fourth step at renaming patches: renumber all patches with a 10-step.
patches/binutils/2.15/002-uclibc.patch
patches/binutils/2.15/100-uclibc-conf.patch
patches/binutils/2.15/100-uclibc.patch
patches/binutils/2.15/110-uclibc-conf.patch
patches/binutils/2.15/120-cflags.patch
patches/binutils/2.15/130-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.15/140-arm-textrel.patch
patches/binutils/2.15/150-bfd-hash-tweak.patch
patches/binutils/2.15/160-allow-gcc-4.0.patch
patches/binutils/2.15/170-psignal.patch
patches/binutils/2.15/180-solaris-qsort.patch
patches/binutils/2.15/190-vmx.patch
patches/binutils/2.15/200-arm-undef-imm.patch
patches/binutils/2.15/210-cflags.patch
patches/binutils/2.15/210-skip-comments.patch
patches/binutils/2.15/220-cross-gprof.patch
patches/binutils/2.15/230-gccpr15247-fix.patch
patches/binutils/2.15/240-ld-callahan.patch
patches/binutils/2.15/250-ld-stabs-tweak.patch
patches/binutils/2.15/260-s390-invalid-insn-format.patch
patches/binutils/2.15/400-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.15/600-arm-textrel.patch
patches/binutils/2.15/700-bfd-hash-tweak.patch
patches/binutils/2.15/710-allow-gcc-4.0.patch
patches/binutils/2.15/720-psignal.patch
patches/binutils/2.15/730-solaris-qsort.patch
patches/binutils/2.15/740-vmx.patch
patches/binutils/2.15/750-arm-undef-imm.patch
patches/binutils/2.15/760-skip-comments.patch
patches/binutils/2.15/770-cross-gprof.patch
patches/binutils/2.15/780-gccpr15247-fix.patch
patches/binutils/2.15/790-ld-callahan.patch
patches/binutils/2.15/800-ld-stabs-tweak.patch
patches/binutils/2.15/810-s390-invalid-insn-format.patch
patches/binutils/2.17/130-ld_makefile_patch.patch
patches/binutils/2.17/140-better_file_error.patch
patches/binutils/2.17/150-check_ldrunpath_length.patch
patches/binutils/2.17/160-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.17/170-bfd-hash-tweak.patch
patches/binutils/2.17/180-psignal.patch
patches/binutils/2.17/190-skip-comments.patch
patches/binutils/2.17/200-cross-gprof.patch
patches/binutils/2.17/300-ld_makefile_patch.patch
patches/binutils/2.17/301-better_file_error.patch
patches/binutils/2.17/302-check_ldrunpath_length.patch
patches/binutils/2.17/400-mips-ELF_MAXPAGESIZE-4K.patch
patches/binutils/2.17/500-bfd-hash-tweak.patch
patches/binutils/2.17/501-psignal.patch
patches/binutils/2.17/502-skip-comments.patch
patches/binutils/2.17/503-cross-gprof.patch
patches/binutils/2.18.50.0.4/110-ld-makefile-path.patch
patches/binutils/2.18.50.0.4/120-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.4/200-ld-makefile-path.patch
patches/binutils/2.18.50.0.4/300-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.6/110-ld-makefile-path.patch
patches/binutils/2.18.50.0.6/120-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.6/200-ld-makefile-path.patch
patches/binutils/2.18.50.0.6/300-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.7/110-ld-makefile-path.patch
patches/binutils/2.18.50.0.7/120-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.7/200-ld-makefile-path.patch
patches/binutils/2.18.50.0.7/300-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.8/110-ld-makefile-path.patch
patches/binutils/2.18.50.0.8/120-check-ldrunpath-length.patch
patches/binutils/2.18.50.0.8/200-ld-makefile-path.patch
patches/binutils/2.18.50.0.8/300-check-ldrunpath-length.patch
patches/dmalloc/5.5.2/130-mips.patch
patches/dmalloc/5.5.2/140-shared_library.patch
patches/dmalloc/5.5.2/150-use_DESTDIR.patch
patches/dmalloc/5.5.2/160-strdup_macro.patch
patches/dmalloc/5.5.2/200-mips.patch
patches/dmalloc/5.5.2/300-shared_library.patch
patches/dmalloc/5.5.2/400-use_DESTDIR.patch
patches/dmalloc/5.5.2/500-strdup_macro.patch
patches/duma/2_5_1/110-separate_cpp.patch
patches/duma/2_5_1/200-separate_cpp.patch
patches/duma/2_5_12/110-separate_cpp.patch
patches/duma/2_5_12/200-separate_cpp.patch
patches/duma/2_5_14/110-separate_cpp.patch
patches/duma/2_5_14/200-separate_cpp.patch
patches/duma/2_5_8/110-separate_cpp.patch
patches/duma/2_5_8/200-separate_cpp.patch
patches/gcc/3.4.6/110-uclibc-locale.patch
patches/gcc/3.4.6/120-libstdc++-pic.patch
patches/gcc/3.4.6/130-index_macro.patch
patches/gcc/3.4.6/140-arm-ldm-peephole.patch
patches/gcc/3.4.6/150-arm-ldm.patch
patches/gcc/3.4.6/160-arm-ldm-peephole2.patch
patches/gcc/3.4.6/170-sdk-libstdc++-includes.patch
patches/gcc/3.4.6/180-pr15068-fix.patch
patches/gcc/3.4.6/190-all_sh-pr16665-fix.patch
patches/gcc/3.4.6/200-all_sh-no-reorder-blocks.patch
patches/gcc/3.4.6/200-uclibc-locale.patch
patches/gcc/3.4.6/210-all_sh-pr20617.patch
patches/gcc/3.4.6/220-arm-bigendian.patch
patches/gcc/3.4.6/230-powerpc-libc_stack_end-uclibc.patch
patches/gcc/3.4.6/240-mips-xgot.patch
patches/gcc/3.4.6/250-nios2.patch
patches/gcc/3.4.6/260-arm-softfloat.patch
patches/gcc/3.4.6/300-libstdc++-pic.patch
patches/gcc/3.4.6/304-index_macro.patch
patches/gcc/3.4.6/600-arm-ldm-peephole.patch
patches/gcc/3.4.6/601-arm-ldm.patch
patches/gcc/3.4.6/602-arm-ldm-peephole2.patch
patches/gcc/3.4.6/602-sdk-libstdc++-includes.patch
patches/gcc/3.4.6/700-pr15068-fix.patch
patches/gcc/3.4.6/710-all_sh-pr16665-fix.patch
patches/gcc/3.4.6/720-all_sh-no-reorder-blocks.patch
patches/gcc/3.4.6/730-all_sh-pr20617.patch
patches/gcc/3.4.6/800-arm-bigendian.patch
patches/gcc/3.4.6/800-powerpc-libc_stack_end-uclibc.patch
patches/gcc/3.4.6/810-mips-xgot.patch
patches/gcc/3.4.6/900-nios2.patch
patches/gcc/3.4.6/910-arm-softfloat.patch
patches/gcc/4.0.3/110-uclibc-locale.patch
patches/gcc/4.0.3/120-libstdc++-pic.patch
patches/gcc/4.0.3/130-missing-execinfo_h.patch
patches/gcc/4.0.3/140-c99-snprintf.patch
patches/gcc/4.0.3/150-c99-complex-ugly-hack.patch
patches/gcc/4.0.3/160-index_macro.patch
patches/gcc/4.0.3/170-sdk-libstdc++-includes.patch
patches/gcc/4.0.3/180-arm-bigendian.patch
patches/gcc/4.0.3/200-uclibc-locale.patch
patches/gcc/4.0.3/300-libstdc++-pic.patch
patches/gcc/4.0.3/301-missing-execinfo_h.patch
patches/gcc/4.0.3/302-c99-snprintf.patch
patches/gcc/4.0.3/303-c99-complex-ugly-hack.patch
patches/gcc/4.0.3/304-index_macro.patch
patches/gcc/4.0.3/602-sdk-libstdc++-includes.patch
patches/gcc/4.0.3/800-arm-bigendian.patch
patches/gcc/4.0.4/110-uclibc-locale.patch
patches/gcc/4.0.4/120-libstdc++-pic.patch
patches/gcc/4.0.4/130-missing-execinfo_h.patch
patches/gcc/4.0.4/140-c99-snprintf.patch
patches/gcc/4.0.4/150-c99-complex-ugly-hack.patch
patches/gcc/4.0.4/160-index_macro.patch
patches/gcc/4.0.4/170-libmudflap-susv3-legacy.patch
patches/gcc/4.0.4/180-sdk-libstdc++-includes.patch
patches/gcc/4.0.4/190-arm-bigendian.patch
patches/gcc/4.0.4/200-arm-softfloat.patch
patches/gcc/4.0.4/200-uclibc-locale.patch
patches/gcc/4.0.4/300-libstdc++-pic.patch
patches/gcc/4.0.4/301-missing-execinfo_h.patch
patches/gcc/4.0.4/302-c99-snprintf.patch
patches/gcc/4.0.4/303-c99-complex-ugly-hack.patch
patches/gcc/4.0.4/304-index_macro.patch
patches/gcc/4.0.4/305-libmudflap-susv3-legacy.patch
patches/gcc/4.0.4/602-sdk-libstdc++-includes.patch
patches/gcc/4.0.4/800-arm-bigendian.patch
patches/gcc/4.0.4/801-arm-softfloat.patch
patches/gcc/4.1.1/120-uclibc-locale.patch
patches/gcc/4.1.1/130-libstdc++-pic.patch
patches/gcc/4.1.1/140-missing-execinfo_h.patch
patches/gcc/4.1.1/150-c99-snprintf.patch
patches/gcc/4.1.1/160-c99-complex-ugly-hack.patch
patches/gcc/4.1.1/170-index_macro.patch
patches/gcc/4.1.1/180-sh-pr24836.patch
patches/gcc/4.1.1/190-arm-bigendian.patch
patches/gcc/4.1.1/200-softfloat-fix.patch
patches/gcc/4.1.1/200-uclibc-locale.patch
patches/gcc/4.1.1/300-libstdc++-pic.patch
patches/gcc/4.1.1/301-missing-execinfo_h.patch
patches/gcc/4.1.1/302-c99-snprintf.patch
patches/gcc/4.1.1/303-c99-complex-ugly-hack.patch
patches/gcc/4.1.1/304-index_macro.patch
patches/gcc/4.1.1/740-sh-pr24836.patch
patches/gcc/4.1.1/800-arm-bigendian.patch
patches/gcc/4.1.1/801-softfloat-fix.patch
patches/gcc/4.1.2/120-uclibc-locale.patch
patches/gcc/4.1.2/130-libstdc++-pic.patch
patches/gcc/4.1.2/140-missing-execinfo_h.patch
patches/gcc/4.1.2/150-c99-snprintf.patch
patches/gcc/4.1.2/160-c99-complex-ugly-hack.patch
patches/gcc/4.1.2/170-index_macro.patch
patches/gcc/4.1.2/180-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.1.2/190-sh-pr24836.patch
patches/gcc/4.1.2/200-arm-bigendian.patch
patches/gcc/4.1.2/200-uclibc-locale.patch
patches/gcc/4.1.2/210-softfloat-fix.patch
patches/gcc/4.1.2/300-libstdc++-pic.patch
patches/gcc/4.1.2/301-missing-execinfo_h.patch
patches/gcc/4.1.2/302-c99-snprintf.patch
patches/gcc/4.1.2/303-c99-complex-ugly-hack.patch
patches/gcc/4.1.2/304-index_macro.patch
patches/gcc/4.1.2/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.1.2/740-sh-pr24836.patch
patches/gcc/4.1.2/800-arm-bigendian.patch
patches/gcc/4.1.2/801-softfloat-fix.patch
patches/gcc/4.2.0/103-uclibc-conf-noupstream.patch
patches/gcc/4.2.0/110-uclibc-conf-noupstream.patch
patches/gcc/4.2.0/120-uclibc-locale.patch
patches/gcc/4.2.0/130-uclibc-locale-no__x.patch
patches/gcc/4.2.0/140-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.0/150-uclibc-locale-update.patch
patches/gcc/4.2.0/160-libstdc++-pic.patch
patches/gcc/4.2.0/170-missing-execinfo_h.patch
patches/gcc/4.2.0/180-c99-snprintf.patch
patches/gcc/4.2.0/190-c99-complex-ugly-hack.patch
patches/gcc/4.2.0/200-index_macro.patch
patches/gcc/4.2.0/200-uclibc-locale.patch
patches/gcc/4.2.0/203-uclibc-locale-no__x.patch
patches/gcc/4.2.0/204-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.0/205-uclibc-locale-update.patch
patches/gcc/4.2.0/210-libmudflap-susv3-legacy.patch
patches/gcc/4.2.0/220-libstdc++-namespace.patch
patches/gcc/4.2.0/230-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.0/240-arm-bigendian.patch
patches/gcc/4.2.0/250-softfloat-fix.patch
patches/gcc/4.2.0/260-flatten-switch-stmt-00.patch
patches/gcc/4.2.0/270-soft-float.patch
patches/gcc/4.2.0/280-alpha-signal_h.patch
patches/gcc/4.2.0/300-libstdc++-pic.patch
patches/gcc/4.2.0/301-missing-execinfo_h.patch
patches/gcc/4.2.0/302-c99-snprintf.patch
patches/gcc/4.2.0/303-c99-complex-ugly-hack.patch
patches/gcc/4.2.0/304-index_macro.patch
patches/gcc/4.2.0/305-libmudflap-susv3-legacy.patch
patches/gcc/4.2.0/306-libstdc++-namespace.patch
patches/gcc/4.2.0/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.0/800-arm-bigendian.patch
patches/gcc/4.2.0/801-softfloat-fix.patch
patches/gcc/4.2.0/904-flatten-switch-stmt-00.patch
patches/gcc/4.2.0/920-soft-float.patch
patches/gcc/4.2.0/940-alpha-signal_h.patch
patches/gcc/4.2.1/103-uclibc-conf-noupstream.patch
patches/gcc/4.2.1/110-uclibc-conf-noupstream.patch
patches/gcc/4.2.1/120-uclibc-locale.patch
patches/gcc/4.2.1/130-uclibc-locale-no__x.patch
patches/gcc/4.2.1/140-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.1/150-uclibc-locale-update.patch
patches/gcc/4.2.1/160-libstdc++-pic.patch
patches/gcc/4.2.1/170-missing-execinfo_h.patch
patches/gcc/4.2.1/180-c99-snprintf.patch
patches/gcc/4.2.1/190-c99-complex-ugly-hack.patch
patches/gcc/4.2.1/200-index_macro.patch
patches/gcc/4.2.1/200-uclibc-locale.patch
patches/gcc/4.2.1/203-uclibc-locale-no__x.patch
patches/gcc/4.2.1/204-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.1/205-uclibc-locale-update.patch
patches/gcc/4.2.1/210-libmudflap-susv3-legacy.patch
patches/gcc/4.2.1/220-libstdc++-namespace.patch
patches/gcc/4.2.1/230-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.1/240-arm-bigendian.patch
patches/gcc/4.2.1/250-softfloat-fix.patch
patches/gcc/4.2.1/260-flatten-switch-stmt-00.patch
patches/gcc/4.2.1/270-soft-float.patch
patches/gcc/4.2.1/280-alpha-signal_h.patch
patches/gcc/4.2.1/300-libstdc++-pic.patch
patches/gcc/4.2.1/301-missing-execinfo_h.patch
patches/gcc/4.2.1/302-c99-snprintf.patch
patches/gcc/4.2.1/303-c99-complex-ugly-hack.patch
patches/gcc/4.2.1/304-index_macro.patch
patches/gcc/4.2.1/305-libmudflap-susv3-legacy.patch
patches/gcc/4.2.1/306-libstdc++-namespace.patch
patches/gcc/4.2.1/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.1/800-arm-bigendian.patch
patches/gcc/4.2.1/801-softfloat-fix.patch
patches/gcc/4.2.1/904-flatten-switch-stmt-00.patch
patches/gcc/4.2.1/920-soft-float.patch
patches/gcc/4.2.1/940-alpha-signal_h.patch
patches/gcc/4.2.2/103-uclibc-conf-noupstream.patch
patches/gcc/4.2.2/110-uclibc-conf-noupstream.patch
patches/gcc/4.2.2/120-uclibc-locale.patch
patches/gcc/4.2.2/130-uclibc-locale-no__x.patch
patches/gcc/4.2.2/140-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.2/150-uclibc-locale-update.patch
patches/gcc/4.2.2/160-libstdc++-pic.patch
patches/gcc/4.2.2/170-missing-execinfo_h.patch
patches/gcc/4.2.2/180-c99-snprintf.patch
patches/gcc/4.2.2/190-c99-complex-ugly-hack.patch
patches/gcc/4.2.2/200-index_macro.patch
patches/gcc/4.2.2/200-uclibc-locale.patch
patches/gcc/4.2.2/203-uclibc-locale-no__x.patch
patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.2/205-uclibc-locale-update.patch
patches/gcc/4.2.2/210-libmudflap-susv3-legacy.patch
patches/gcc/4.2.2/220-libstdc++-namespace.patch
patches/gcc/4.2.2/230-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.2/240-arm-bigendian.patch
patches/gcc/4.2.2/250-softfloat-fix.patch
patches/gcc/4.2.2/260-flatten-switch-stmt-00.patch
patches/gcc/4.2.2/270-soft-float.patch
patches/gcc/4.2.2/280-alpha-signal_h.patch
patches/gcc/4.2.2/300-libstdc++-pic.patch
patches/gcc/4.2.2/301-missing-execinfo_h.patch
patches/gcc/4.2.2/302-c99-snprintf.patch
patches/gcc/4.2.2/303-c99-complex-ugly-hack.patch
patches/gcc/4.2.2/304-index_macro.patch
patches/gcc/4.2.2/305-libmudflap-susv3-legacy.patch
patches/gcc/4.2.2/306-libstdc++-namespace.patch
patches/gcc/4.2.2/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.2/800-arm-bigendian.patch
patches/gcc/4.2.2/801-softfloat-fix.patch
patches/gcc/4.2.2/904-flatten-switch-stmt-00.patch
patches/gcc/4.2.2/920-soft-float.patch
patches/gcc/4.2.2/940-alpha-signal_h.patch
patches/gcc/4.2.3/103-uclibc-conf-noupstream.patch
patches/gcc/4.2.3/110-uclibc-conf-noupstream.patch
patches/gcc/4.2.3/120-uclibc-locale.patch
patches/gcc/4.2.3/130-uclibc-locale-no__x.patch
patches/gcc/4.2.3/140-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.3/150-uclibc-locale-update.patch
patches/gcc/4.2.3/160-libstdc++-pic.patch
patches/gcc/4.2.3/170-missing-execinfo_h.patch
patches/gcc/4.2.3/180-c99-snprintf.patch
patches/gcc/4.2.3/190-c99-complex-ugly-hack.patch
patches/gcc/4.2.3/200-index_macro.patch
patches/gcc/4.2.3/200-uclibc-locale.patch
patches/gcc/4.2.3/203-uclibc-locale-no__x.patch
patches/gcc/4.2.3/204-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.3/205-uclibc-locale-update.patch
patches/gcc/4.2.3/210-libmudflap-susv3-legacy.patch
patches/gcc/4.2.3/220-libstdc++-namespace.patch
patches/gcc/4.2.3/230-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.3/240-arm-bigendian.patch
patches/gcc/4.2.3/250-softfloat-fix.patch
patches/gcc/4.2.3/260-flatten-switch-stmt-00.patch
patches/gcc/4.2.3/270-soft-float.patch
patches/gcc/4.2.3/280-eabi_fixes.patch
patches/gcc/4.2.3/290-alpha-signal_h.patch
patches/gcc/4.2.3/300-fortran-signed-TImode.patch
patches/gcc/4.2.3/300-libstdc++-pic.patch
patches/gcc/4.2.3/301-missing-execinfo_h.patch
patches/gcc/4.2.3/302-c99-snprintf.patch
patches/gcc/4.2.3/303-c99-complex-ugly-hack.patch
patches/gcc/4.2.3/304-index_macro.patch
patches/gcc/4.2.3/305-libmudflap-susv3-legacy.patch
patches/gcc/4.2.3/306-libstdc++-namespace.patch
patches/gcc/4.2.3/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.3/800-arm-bigendian.patch
patches/gcc/4.2.3/801-softfloat-fix.patch
patches/gcc/4.2.3/904-flatten-switch-stmt-00.patch
patches/gcc/4.2.3/920-soft-float.patch
patches/gcc/4.2.3/930-eabi_fixes.patch
patches/gcc/4.2.3/940-alpha-signal_h.patch
patches/gcc/4.2.3/950-fortran-signed-TImode.patch
patches/gcc/4.2.4/103-uclibc-conf-noupstream.patch
patches/gcc/4.2.4/110-uclibc-conf-noupstream.patch
patches/gcc/4.2.4/120-uclibc-locale.patch
patches/gcc/4.2.4/130-uclibc-locale-no__x.patch
patches/gcc/4.2.4/140-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.4/150-uclibc-locale-update.patch
patches/gcc/4.2.4/160-libstdc++-pic.patch
patches/gcc/4.2.4/170-missing-execinfo_h.patch
patches/gcc/4.2.4/180-c99-snprintf.patch
patches/gcc/4.2.4/190-c99-complex-ugly-hack.patch
patches/gcc/4.2.4/200-index_macro.patch
patches/gcc/4.2.4/200-uclibc-locale.patch
patches/gcc/4.2.4/203-uclibc-locale-no__x.patch
patches/gcc/4.2.4/204-uclibc-locale-wchar_fix.patch
patches/gcc/4.2.4/205-uclibc-locale-update.patch
patches/gcc/4.2.4/210-libmudflap-susv3-legacy.patch
patches/gcc/4.2.4/220-libstdc++-namespace.patch
patches/gcc/4.2.4/230-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.4/240-arm-bigendian.patch
patches/gcc/4.2.4/250-softfloat-fix.patch
patches/gcc/4.2.4/260-flatten-switch-stmt-00.patch
patches/gcc/4.2.4/270-soft-float.patch
patches/gcc/4.2.4/280-eabi_fixes.patch
patches/gcc/4.2.4/290-alpha-signal_h.patch
patches/gcc/4.2.4/300-fortran-signed-TImode.patch
patches/gcc/4.2.4/300-libstdc++-pic.patch
patches/gcc/4.2.4/301-missing-execinfo_h.patch
patches/gcc/4.2.4/302-c99-snprintf.patch
patches/gcc/4.2.4/303-c99-complex-ugly-hack.patch
patches/gcc/4.2.4/304-index_macro.patch
patches/gcc/4.2.4/305-libmudflap-susv3-legacy.patch
patches/gcc/4.2.4/306-libstdc++-namespace.patch
patches/gcc/4.2.4/402-libbackend_dep_gcov-iov.h.patch
patches/gcc/4.2.4/800-arm-bigendian.patch
patches/gcc/4.2.4/801-softfloat-fix.patch
patches/gcc/4.2.4/904-flatten-switch-stmt-00.patch
patches/gcc/4.2.4/920-soft-float.patch
patches/gcc/4.2.4/930-eabi_fixes.patch
patches/gcc/4.2.4/940-alpha-signal_h.patch
patches/gcc/4.2.4/950-fortran-signed-TImode.patch
patches/gcc/4.3.0/110-trampolinewarn.patch
patches/gcc/4.3.0/120-java-nomulti.patch
patches/gcc/4.3.0/125-trampolinewarn.patch
patches/gcc/4.3.0/130-cross-compile.patch
patches/gcc/4.3.0/140-netbsd-symbolic.patch
patches/gcc/4.3.0/150-java-nomulti.patch
patches/gcc/4.3.0/150-sparc64-bsd.patch
patches/gcc/4.3.0/160-flatten-switch-stmt-00.patch
patches/gcc/4.3.0/170-x86-emit-cld.patch
patches/gcc/4.3.0/175-cross-compile.patch
patches/gcc/4.3.0/180-libiberty-pic.patch
patches/gcc/4.3.0/190-superh-default-multilib.patch
patches/gcc/4.3.0/200-libstdc++-pic.patch
patches/gcc/4.3.0/200-netbsd-symbolic.patch
patches/gcc/4.3.0/210-pr35440.patch
patches/gcc/4.3.0/220-pr24170.patch
patches/gcc/4.3.0/225-sparc64-bsd.patch
patches/gcc/4.3.0/230-noteGNUstack-00.patch
patches/gcc/4.3.0/240-noteGNUstack-01.patch
patches/gcc/4.3.0/250-flatten-switch-stmt-00.patch
patches/gcc/4.3.0/250-pr35705.patch
patches/gcc/4.3.0/260-pr34571.patch
patches/gcc/4.3.0/270-pr35982.patch
patches/gcc/4.3.0/275-x86-emit-cld.patch
patches/gcc/4.3.0/280-pr25343.patch
patches/gcc/4.3.0/290-sh-pr24836.patch
patches/gcc/4.3.0/300-ca-translation-typo.patch
patches/gcc/4.3.0/300-libiberty-pic.patch
patches/gcc/4.3.0/310-uclibc-conf-noupstream.patch
patches/gcc/4.3.0/320-uclibc-locale.patch
patches/gcc/4.3.0/325-superh-default-multilib.patch
patches/gcc/4.3.0/330-uclibc-locale-no__x.patch
patches/gcc/4.3.0/340-uclibc-locale-wchar_fix.patch
patches/gcc/4.3.0/350-libstdc++-pic.patch
patches/gcc/4.3.0/350-uclibc-locale-update.patch
patches/gcc/4.3.0/360-missing-execinfo_h.patch
patches/gcc/4.3.0/370-c99-complex-ugly-hack.patch
patches/gcc/4.3.0/375-pr35440.patch
patches/gcc/4.3.0/380-index_macro.patch
patches/gcc/4.3.0/390-libmudflap-susv3-legacy.patch
patches/gcc/4.3.0/400-libstdc++-namespace.patch
patches/gcc/4.3.0/400-pr24170.patch
patches/gcc/4.3.0/410-arm-softfloat.patch
patches/gcc/4.3.0/420-alpha-signal_h.patch
patches/gcc/4.3.0/425-noteGNUstack-00.patch
patches/gcc/4.3.0/450-noteGNUstack-01.patch
patches/gcc/4.3.0/475-pr35705.patch
patches/gcc/4.3.0/500-pr34571.patch
patches/gcc/4.3.0/525-pr35982.patch
patches/gcc/4.3.0/550-pr25343.patch
patches/gcc/4.3.0/575-sh-pr24836.patch
patches/gcc/4.3.0/600-ca-translation-typo.patch
patches/gcc/4.3.0/625-uclibc-conf-noupstream.patch
patches/gcc/4.3.0/650-uclibc-locale.patch
patches/gcc/4.3.0/675-uclibc-locale-no__x.patch
patches/gcc/4.3.0/700-uclibc-locale-wchar_fix.patch
patches/gcc/4.3.0/725-uclibc-locale-update.patch
patches/gcc/4.3.0/750-missing-execinfo_h.patch
patches/gcc/4.3.0/775-c99-complex-ugly-hack.patch
patches/gcc/4.3.0/800-index_macro.patch
patches/gcc/4.3.0/825-libmudflap-susv3-legacy.patch
patches/gcc/4.3.0/850-libstdc++-namespace.patch
patches/gcc/4.3.0/875-arm-softfloat.patch
patches/gcc/4.3.0/940-alpha-signal_h.patch
patches/gcc/4.3.1/110-trampolinewarn.patch
patches/gcc/4.3.1/120-java-nomulti.patch
patches/gcc/4.3.1/125-trampolinewarn.patch
patches/gcc/4.3.1/130-cross-compile.patch
patches/gcc/4.3.1/140-netbsd-symbolic.patch
patches/gcc/4.3.1/150-java-nomulti.patch
patches/gcc/4.3.1/150-sparc64-bsd.patch
patches/gcc/4.3.1/160-flatten-switch-stmt-00.patch
patches/gcc/4.3.1/170-libiberty-pic.patch
patches/gcc/4.3.1/175-cross-compile.patch
patches/gcc/4.3.1/180-superh-default-multilib.patch
patches/gcc/4.3.1/190-libstdc++-pic.patch
patches/gcc/4.3.1/200-netbsd-symbolic.patch
patches/gcc/4.3.1/200-pr24170.patch
patches/gcc/4.3.1/210-noteGNUstack-00.patch
patches/gcc/4.3.1/220-noteGNUstack-01.patch
patches/gcc/4.3.1/225-sparc64-bsd.patch
patches/gcc/4.3.1/230-pr34571.patch
patches/gcc/4.3.1/240-pr25343.patch
patches/gcc/4.3.1/250-flatten-switch-stmt-00.patch
patches/gcc/4.3.1/250-sh-pr24836.patch
patches/gcc/4.3.1/260-uclibc-conf-noupstream.patch
patches/gcc/4.3.1/270-uclibc-locale.patch
patches/gcc/4.3.1/275-libiberty-pic.patch
patches/gcc/4.3.1/280-uclibc-locale-no__x.patch
patches/gcc/4.3.1/290-uclibc-locale-wchar_fix.patch
patches/gcc/4.3.1/300-superh-default-multilib.patch
patches/gcc/4.3.1/300-uclibc-locale-update.patch
patches/gcc/4.3.1/310-missing-execinfo_h.patch
patches/gcc/4.3.1/320-c99-complex-ugly-hack.patch
patches/gcc/4.3.1/325-libstdc++-pic.patch
patches/gcc/4.3.1/330-index_macro.patch
patches/gcc/4.3.1/340-libmudflap-susv3-legacy.patch
patches/gcc/4.3.1/350-libstdc++-namespace.patch
patches/gcc/4.3.1/350-pr24170.patch
patches/gcc/4.3.1/360-arm-softfloat.patch
patches/gcc/4.3.1/370-alpha-signal_h.patch
patches/gcc/4.3.1/375-noteGNUstack-00.patch
patches/gcc/4.3.1/400-noteGNUstack-01.patch
patches/gcc/4.3.1/425-pr34571.patch
patches/gcc/4.3.1/450-pr25343.patch
patches/gcc/4.3.1/475-sh-pr24836.patch
patches/gcc/4.3.1/500-uclibc-conf-noupstream.patch
patches/gcc/4.3.1/525-uclibc-locale.patch
patches/gcc/4.3.1/550-uclibc-locale-no__x.patch
patches/gcc/4.3.1/575-uclibc-locale-wchar_fix.patch
patches/gcc/4.3.1/600-uclibc-locale-update.patch
patches/gcc/4.3.1/625-missing-execinfo_h.patch
patches/gcc/4.3.1/650-c99-complex-ugly-hack.patch
patches/gcc/4.3.1/675-index_macro.patch
patches/gcc/4.3.1/700-libmudflap-susv3-legacy.patch
patches/gcc/4.3.1/725-libstdc++-namespace.patch
patches/gcc/4.3.1/750-arm-softfloat.patch
patches/gcc/4.3.1/940-alpha-signal_h.patch
patches/gdb/6.4/110-uclibc-readline-conf.patch
patches/gdb/6.4/120-thread-timeout.patch
patches/gdb/6.4/130-fix-compile-flag-mismatch.patch
patches/gdb/6.4/200-uclibc-readline-conf.patch
patches/gdb/6.4/500-thread-timeout.patch
patches/gdb/6.4/600-fix-compile-flag-mismatch.patch
patches/gdb/6.5/110-uclibc-readline-conf.patch
patches/gdb/6.5/120-thread-timeout.patch
patches/gdb/6.5/130-fix-compile-flag-mismatch.patch
patches/gdb/6.5/200-uclibc-readline-conf.patch
patches/gdb/6.5/500-thread-timeout.patch
patches/gdb/6.5/600-fix-compile-flag-mismatch.patch
patches/gdb/6.6/110-fix-compile-flag-mismatch.patch
patches/gdb/6.6/600-fix-compile-flag-mismatch.patch
patches/gdb/6.7.1/100-security-errata-20050610.patch
patches/gdb/6.7.1/110-hppa-offsets.patch
patches/gdb/6.7.1/120-deleted-children.patch
patches/gdb/6.7.1/130-dwarf-stack-overflow.patch
patches/gdb/6.7.1/150-security-errata-20050610.patch
patches/gdb/6.7.1/175-hppa-offsets.patch
patches/gdb/6.7.1/200-deleted-children.patch
patches/gdb/6.7.1/225-dwarf-stack-overflow.patch
patches/gdb/6.7/110-hppa-offsets.patch
patches/gdb/6.7/120-dwarf-stack-overflow.patch
patches/gdb/6.7/125-hppa-offsets.patch
patches/gdb/6.7/150-dwarf-stack-overflow.patch
patches/gdb/6.8/110-security-errata-20050610.patch
patches/gdb/6.8/120-tdep-opcode-include-workaround.patch
patches/gdb/6.8/150-security-errata-20050610.patch
patches/gdb/6.8/200-tdep-opcode-include-workaround.patch
patches/glibc/2.3.6/195-use_short_for_fnstsw.patch
patches/glibc/2.3.6/200-fix-pr631.patch
patches/glibc/2.3.6/200-use_short_for_fnstsw.patch
patches/glibc/2.3.6/210-fix-pr631.patch
patches/glibc/2.3.6/210-fp-byteorder.patch
patches/glibc/2.3.6/220-fp-byteorder.patch
patches/glibc/2.3.6/220-mips-bootstrap-gcc-header-install.patch
patches/glibc/2.3.6/230-make-install-lib-all.patch
patches/glibc/2.3.6/230-mips-bootstrap-gcc-header-install.patch
patches/glibc/2.3.6/240-make-install-lib-all.patch
patches/glibc/2.3.6/240-weakalias.patch
patches/glibc/2.3.6/250-csu-Makefile.patch
patches/glibc/2.3.6/250-weakalias.patch
patches/glibc/2.3.6/260-alpha-asm_page.patch
patches/glibc/2.3.6/260-csu-Makefile.patch
patches/glibc/2.3.6/270-alpha-asm_elf.patch
patches/glibc/2.3.6/270-alpha-asm_page.patch
patches/glibc/2.3.6/280-alpha-asm_elf.patch
patches/glibc/2.5.1/100-cygwin.patch
patches/glibc/2.5.1/110-configure-apple-as.patch
patches/glibc/2.5.1/120-cygwin.patch
patches/glibc/2.5.1/120-fix-pr631.patch
patches/glibc/2.5.1/130-i686-assembler.patch
patches/glibc/2.5.1/140-configure-apple-as.patch
patches/glibc/2.5.1/140-i386-preferred-stack-boundary.patch
patches/glibc/2.5.1/150-alpha-asm_page.patch
patches/glibc/2.5.1/150-fix-pr631.patch
patches/glibc/2.5.1/160-i686-assembler.patch
patches/glibc/2.5.1/160-use_short_for_fnstsw.patch
patches/glibc/2.5.1/170-alpha-asm_elf.patch
patches/glibc/2.5.1/170-i386-preferred-stack-boundary.patch
patches/glibc/2.5.1/180-alpha-asm_page.patch
patches/glibc/2.5.1/180-alpha-cfi.patch
patches/glibc/2.5.1/190-alpha-sigsuspend.patch
patches/glibc/2.5.1/190-use_short_for_fnstsw.patch
patches/glibc/2.5.1/260-alpha-asm_elf.patch
patches/glibc/2.5.1/270-alpha-cfi.patch
patches/glibc/2.5.1/280-alpha-sigsuspend.patch
patches/glibc/2.5/100-cygwin.patch
patches/glibc/2.5/110-configure-apple-as.patch
patches/glibc/2.5/120-cygwin.patch
patches/glibc/2.5/120-fix-pr631.patch
patches/glibc/2.5/130-i686-assembler.patch
patches/glibc/2.5/140-configure-apple-as.patch
patches/glibc/2.5/140-i386-preferred-stack-boundary.patch
patches/glibc/2.5/150-alpha-asm_page.patch
patches/glibc/2.5/150-fix-pr631.patch
patches/glibc/2.5/160-i686-assembler.patch
patches/glibc/2.5/160-use_short_for_fnstsw.patch
patches/glibc/2.5/170-alpha-asm_elf.patch
patches/glibc/2.5/170-i386-preferred-stack-boundary.patch
patches/glibc/2.5/180-alpha-asm_page.patch
patches/glibc/2.5/180-alpha-cfi.patch
patches/glibc/2.5/190-alpha-sigsuspend.patch
patches/glibc/2.5/190-use_short_for_fnstsw.patch
patches/glibc/2.5/260-alpha-asm_elf.patch
patches/glibc/2.5/270-alpha-cfi.patch
patches/glibc/2.5/280-alpha-sigsuspend.patch
patches/glibc/2.6.1/100-cygwin.patch
patches/glibc/2.6.1/110-configure-apple-as.patch
patches/glibc/2.6.1/120-cygwin.patch
patches/glibc/2.6.1/120-fix-pr631.patch
patches/glibc/2.6.1/130-i686-assembler.patch
patches/glibc/2.6.1/140-configure-apple-as.patch
patches/glibc/2.6.1/140-i386-preferred-stack-boundary.patch
patches/glibc/2.6.1/150-alpha-asm_page.patch
patches/glibc/2.6.1/150-fix-pr631.patch
patches/glibc/2.6.1/160-i686-assembler.patch
patches/glibc/2.6.1/160-use_short_for_fnstsw.patch
patches/glibc/2.6.1/170-alpha-asm_elf.patch
patches/glibc/2.6.1/170-i386-preferred-stack-boundary.patch
patches/glibc/2.6.1/180-alpha-asm_page.patch
patches/glibc/2.6.1/190-use_short_for_fnstsw.patch
patches/glibc/2.6.1/200-alpha-asm_elf.patch
patches/glibc/2.6/100-cygwin.patch
patches/glibc/2.6/110-configure-apple-as.patch
patches/glibc/2.6/120-cygwin.patch
patches/glibc/2.6/120-fix-pr631.patch
patches/glibc/2.6/130-i686-assembler.patch
patches/glibc/2.6/140-configure-apple-as.patch
patches/glibc/2.6/140-i386-preferred-stack-boundary.patch
patches/glibc/2.6/150-alpha-asm_page.patch
patches/glibc/2.6/150-fix-pr631.patch
patches/glibc/2.6/160-i686-assembler.patch
patches/glibc/2.6/160-use_short_for_fnstsw.patch
patches/glibc/2.6/170-alpha-asm_elf.patch
patches/glibc/2.6/170-i386-preferred-stack-boundary.patch
patches/glibc/2.6/180-alpha-asm_page.patch
patches/glibc/2.6/190-use_short_for_fnstsw.patch
patches/glibc/2.6/200-alpha-asm_elf.patch
patches/glibc/2.7/100-cygwin.patch
patches/glibc/2.7/110-configure-apple-as.patch
patches/glibc/2.7/120-cygwin.patch
patches/glibc/2.7/120-fix-pr631.patch
patches/glibc/2.7/130-i686-assembler.patch
patches/glibc/2.7/140-configure-apple-as.patch
patches/glibc/2.7/140-i386-preferred-stack-boundary.patch
patches/glibc/2.7/150-alpha-asm_page.patch
patches/glibc/2.7/150-fix-pr631.patch
patches/glibc/2.7/160-build_wcs_upper_buffer.patch
patches/glibc/2.7/160-i686-assembler.patch
patches/glibc/2.7/170-i386-preferred-stack-boundary.patch
patches/glibc/2.7/170-use_short_for_fnstsw.patch
patches/glibc/2.7/180-alpha-asm_page.patch
patches/glibc/2.7/180-gcc-4.3_sysinclude_path.patch
patches/glibc/2.7/190-alpha-asm_elf.patch
patches/glibc/2.7/190-build_wcs_upper_buffer.patch
patches/glibc/2.7/200-alpha-atfcts.patch
patches/glibc/2.7/200-use_short_for_fnstsw.patch
patches/glibc/2.7/210-alpha-ptr_mangle.patch
patches/glibc/2.7/210-gcc-4.3_sysinclude_path.patch
patches/glibc/2.7/220-alpha-asm_elf.patch
patches/glibc/2.7/230-alpha-atfcts.patch
patches/glibc/2.7/240-alpha-ptr_mangle.patch
patches/glibc/linuxthreads-2.3.6/110-alpha-cfi.patch
patches/glibc/linuxthreads-2.3.6/270-alpha-cfi.patch
patches/glibc/ports-2.6.1/110-ARM-asm_page_h.patch
patches/glibc/ports-2.6.1/200-ARM-asm_page_h.patch
patches/strace/4.5.15/110-dont-use-REG_SYSCALL-for-sh.patch
patches/strace/4.5.15/120-fix-arm-bad-syscall.patch
patches/strace/4.5.15/130-fix-disabled-largefile-syscalls.patch
patches/strace/4.5.15/140-mips-sprintsigmask-fix.patch
patches/strace/4.5.15/150-dont-use-REG_SYSCALL-for-sh.patch
patches/strace/4.5.15/150-statfs64-check.patch
patches/strace/4.5.15/160-superh-update.ac.patch
patches/strace/4.5.15/170-undef-CTL_PROC.patch
patches/strace/4.5.15/180-undef-PACKET_MEMBERSHIP.patch
patches/strace/4.5.15/190-undef-syscall.patch
patches/strace/4.5.15/200-fix-arm-bad-syscall.patch
patches/strace/4.5.15/250-fix-disabled-largefile-syscalls.patch
patches/strace/4.5.15/300-mips-sprintsigmask-fix.patch
patches/strace/4.5.15/350-statfs64-check.patch
patches/strace/4.5.15/400-superh-update.ac.patch
patches/strace/4.5.15/450-undef-CTL_PROC.patch
patches/strace/4.5.15/500-undef-PACKET_MEMBERSHIP.patch
patches/strace/4.5.15/550-undef-syscall.patch
patches/strace/4.5.16/110-dont-use-REG_SYSCALL-for-sh.patch
patches/strace/4.5.16/120-fix-arm-bad-syscall.patch
patches/strace/4.5.16/130-fix-disabled-largefile-syscalls.patch
patches/strace/4.5.16/140-statfs64-check.patch
patches/strace/4.5.16/150-dont-use-REG_SYSCALL-for-sh.patch
patches/strace/4.5.16/150-superh-update.ac.patch
patches/strace/4.5.16/160-undef-CTL_PROC.patch
patches/strace/4.5.16/170-undef-PACKET_MEMBERSHIP.patch
patches/strace/4.5.16/180-undef-syscall.patch
patches/strace/4.5.16/200-fix-arm-bad-syscall.patch
patches/strace/4.5.16/250-fix-disabled-largefile-syscalls.patch
patches/strace/4.5.16/350-statfs64-check.patch
patches/strace/4.5.16/400-superh-update.ac.patch
patches/strace/4.5.16/450-undef-CTL_PROC.patch
patches/strace/4.5.16/500-undef-PACKET_MEMBERSHIP.patch
patches/strace/4.5.16/550-undef-syscall.patch
patches/uClibc/0.9.28.1/000-string-functions.patch
patches/uClibc/0.9.28.1/001-install_dev.patch
patches/uClibc/0.9.28.1/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.1/003-time-locale.patch
patches/uClibc/0.9.28.1/004-ctype.patch
patches/uClibc/0.9.28.1/100-string-functions.patch
patches/uClibc/0.9.28.1/110-install_dev.patch
patches/uClibc/0.9.28.1/120-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.1/130-time-locale.patch
patches/uClibc/0.9.28.1/140-ctype.patch
patches/uClibc/0.9.28.1/150-custom-ISA.patch
patches/uClibc/0.9.28.1/160-mips-asm.h.patch
patches/uClibc/0.9.28.1/200-custom-ISA.patch
patches/uClibc/0.9.28.1/201-mips-asm.h.patch
patches/uClibc/0.9.28.2/000-string-functions.patch
patches/uClibc/0.9.28.2/001-install_dev.patch
patches/uClibc/0.9.28.2/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.2/004-ctype.patch
patches/uClibc/0.9.28.2/100-string-functions.patch
patches/uClibc/0.9.28.2/110-install_dev.patch
patches/uClibc/0.9.28.2/120-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.2/130-ctype.patch
patches/uClibc/0.9.28.2/140-custom-ISA.patch
patches/uClibc/0.9.28.2/150-mips-asm.h.patch
patches/uClibc/0.9.28.2/200-custom-ISA.patch
patches/uClibc/0.9.28.2/201-mips-asm.h.patch
patches/uClibc/0.9.28.3/000-string-functions.patch
patches/uClibc/0.9.28.3/001-install_dev.patch
patches/uClibc/0.9.28.3/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.3/004-ctype.patch
patches/uClibc/0.9.28.3/100-string-functions.patch
patches/uClibc/0.9.28.3/110-install_dev.patch
patches/uClibc/0.9.28.3/120-no_LFS-no_readahead.patch
patches/uClibc/0.9.28.3/130-ctype.patch
patches/uClibc/0.9.28.3/140-custom-ISA.patch
patches/uClibc/0.9.28.3/150-mips-asm.h.patch
patches/uClibc/0.9.28.3/200-custom-ISA.patch
patches/uClibc/0.9.28.3/201-mips-asm.h.patch
patches/uClibc/0.9.28/000-string-functions.patch
patches/uClibc/0.9.28/001-install_dev.patch
patches/uClibc/0.9.28/002-no_LFS-no_readahead.patch
patches/uClibc/0.9.28/004-ctype.patch
patches/uClibc/0.9.28/005-fix_includes.sh.patch
patches/uClibc/0.9.28/100-string-functions.patch
patches/uClibc/0.9.28/110-install_dev.patch
patches/uClibc/0.9.28/120-no_LFS-no_readahead.patch
patches/uClibc/0.9.28/130-ctype.patch
patches/uClibc/0.9.28/140-fix_includes.sh.patch
patches/uClibc/0.9.28/150-custom-ISA.patch
patches/uClibc/0.9.28/160-mips-asm.h.patch
patches/uClibc/0.9.28/200-custom-ISA.patch
patches/uClibc/0.9.28/201-mips-asm.h.patch
patches/uClibc/0.9.29/000-fix-mmap.patch
patches/uClibc/0.9.29/100-conditional-sched_affinity.patch
patches/uClibc/0.9.29/100-fix-mmap.patch
patches/uClibc/0.9.29/110-conditional-sched_affinity.patch
patches/uClibc/0.9.29/120-fix-internal_function-definition.patch
patches/uClibc/0.9.29/130-fix-gethostent_r-failure-retval.patch
patches/uClibc/0.9.29/140-bits_sysnum_h.patch
patches/uClibc/0.9.29/150-bits_sysnum_h2.patch
patches/uClibc/0.9.29/160-custom-ISA.patch
patches/uClibc/0.9.29/170-filter-gnu99-from-assembly-flags.patch
patches/uClibc/0.9.29/180-linuxthreads.patch
patches/uClibc/0.9.29/190-rm-whitespace.patch
patches/uClibc/0.9.29/200-fix-internal_function-definition.patch
patches/uClibc/0.9.29/300-fix-gethostent_r-failure-retval.patch
patches/uClibc/0.9.29/400-bits_sysnum_h.patch
patches/uClibc/0.9.29/401-bits_sysnum_h2.patch
patches/uClibc/0.9.29/500-custom-ISA.patch
patches/uClibc/0.9.29/600-filter-gnu99-from-assembly-flags.patch
patches/uClibc/0.9.29/700-linuxthreads.patch
patches/uClibc/0.9.29/800-rm-whitespace.patch
     1.1 --- a/patches/binutils/2.15/002-uclibc.patch	Mon Jul 28 21:08:01 2008 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,144 +0,0 @@
     1.4 -diff -uNr binutils-2.15-pristine/bfd/configure binutils-2.15/bfd/configure
     1.5 ---- binutils-2.15-pristine/bfd/configure	2004-05-17 12:35:57.000000000 -0700
     1.6 -+++ binutils-2.15/bfd/configure	2004-07-19 16:36:19.000000000 -0700
     1.7 -@@ -1009,7 +1009,7 @@
     1.8 - bfd_version_string="\"${VERSION}\""
     1.9 - if test x${is_release} = x; then
    1.10 -   bfd_version_date=`sed -n -e 's/.*DATE //p' < ${srcdir}/version.h`
    1.11 --  bfd_version_string="\"${VERSION} ${bfd_version_date}\""
    1.12 -+  bfd_version_string="\"${VERSION} ${bfd_version_date} uClibc\""
    1.13 - fi
    1.14 - 
    1.15 - 
    1.16 -diff -uNr binutils-2.15-pristine/bfd/elf32-arm.h binutils-2.15/bfd/elf32-arm.h
    1.17 ---- binutils-2.15-pristine/bfd/elf32-arm.h	2004-05-17 12:35:58.000000000 -0700
    1.18 -+++ binutils-2.15/bfd/elf32-arm.h	2004-07-19 16:37:06.000000000 -0700
    1.19 -@@ -124,7 +124,7 @@
    1.20 - 
    1.21 - /* The name of the dynamic interpreter.  This is put in the .interp
    1.22 -    section.  */
    1.23 --#define ELF_DYNAMIC_INTERPRETER     "/usr/lib/ld.so.1"
    1.24 -+#define ELF_DYNAMIC_INTERPRETER     "/lib/ld-uClibc.so.0"
    1.25 - 
    1.26 - #ifdef FOUR_WORD_PLT
    1.27 - 
    1.28 -diff -uNr binutils-2.15-pristine/bfd/elf32-cris.c binutils-2.15/bfd/elf32-cris.c
    1.29 ---- binutils-2.15-pristine/bfd/elf32-cris.c	2004-05-17 12:35:58.000000000 -0700
    1.30 -+++ binutils-2.15/bfd/elf32-cris.c	2004-07-19 16:49:59.000000000 -0700
    1.31 -@@ -536,7 +536,7 @@
    1.32 - /* The name of the dynamic interpreter.  This is put in the .interp
    1.33 -    section.  */
    1.34 - 
    1.35 --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
    1.36 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    1.37 - 
    1.38 - /* The size in bytes of an entry in the procedure linkage table.  */
    1.39 - 
    1.40 -diff -uNr binutils-2.15-pristine/bfd/elf32-frv.c binutils-2.15/bfd/elf32-frv.c
    1.41 ---- binutils-2.15-pristine/bfd/elf32-frv.c	2004-05-17 12:35:58.000000000 -0700
    1.42 -+++ binutils-2.15/bfd/elf32-frv.c	2004-07-19 16:49:59.000000000 -0700
    1.43 -@@ -2913,7 +2913,7 @@
    1.44 - /* The name of the dynamic interpreter.  This is put in the .interp
    1.45 -    section.  */
    1.46 - 
    1.47 --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
    1.48 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    1.49 - 
    1.50 - #define DEFAULT_STACK_SIZE 0x20000
    1.51 - 
    1.52 -diff -uNr binutils-2.15-pristine/bfd/elf32-hppa.c binutils-2.15/bfd/elf32-hppa.c
    1.53 ---- binutils-2.15-pristine/bfd/elf32-hppa.c	2004-05-17 12:35:58.000000000 -0700
    1.54 -+++ binutils-2.15/bfd/elf32-hppa.c	2004-07-19 16:49:59.000000000 -0700
    1.55 -@@ -115,7 +115,7 @@
    1.56 - 
    1.57 - #define PLT_ENTRY_SIZE 8
    1.58 - #define GOT_ENTRY_SIZE 4
    1.59 --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
    1.60 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    1.61 - 
    1.62 - static const bfd_byte plt_stub[] =
    1.63 - {
    1.64 -diff -uNr binutils-2.15-pristine/bfd/elf32-ppc.c binutils-2.15/bfd/elf32-ppc.c
    1.65 ---- binutils-2.15-pristine/bfd/elf32-ppc.c	2004-05-17 12:35:59.000000000 -0700
    1.66 -+++ binutils-2.15/bfd/elf32-ppc.c	2004-07-19 16:49:59.000000000 -0700
    1.67 -@@ -49,7 +49,7 @@
    1.68 - 
    1.69 - /* The name of the dynamic interpreter.  This is put in the .interp
    1.70 -    section.  */
    1.71 --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
    1.72 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    1.73 - 
    1.74 - /* The size in bytes of an entry in the procedure linkage table.  */
    1.75 - #define PLT_ENTRY_SIZE 12
    1.76 -diff -uNr binutils-2.15-pristine/bfd/elf32-s390.c binutils-2.15/bfd/elf32-s390.c
    1.77 ---- binutils-2.15-pristine/bfd/elf32-s390.c	2004-05-17 12:35:59.000000000 -0700
    1.78 -+++ binutils-2.15/bfd/elf32-s390.c	2004-07-19 16:49:59.000000000 -0700
    1.79 -@@ -452,7 +452,7 @@
    1.80 - /* The name of the dynamic interpreter.  This is put in the .interp
    1.81 -    section.  */
    1.82 - 
    1.83 --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
    1.84 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    1.85 - 
    1.86 - /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
    1.87 -    copying dynamic variables from a shared lib into an app's dynbss
    1.88 -diff -uNr binutils-2.15-pristine/bfd/elf32-sparc.c binutils-2.15/bfd/elf32-sparc.c
    1.89 ---- binutils-2.15-pristine/bfd/elf32-sparc.c	2004-05-17 12:36:00.000000000 -0700
    1.90 -+++ binutils-2.15/bfd/elf32-sparc.c	2004-07-19 16:49:59.000000000 -0700
    1.91 -@@ -536,7 +536,7 @@
    1.92 - /* The name of the dynamic interpreter.  This is put in the .interp
    1.93 -    section.  */
    1.94 - 
    1.95 --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
    1.96 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    1.97 - 
    1.98 - /* The nop opcode we use.  */
    1.99 - 
   1.100 -diff -uNr binutils-2.15-pristine/bfd/elf64-ppc.c binutils-2.15/bfd/elf64-ppc.c
   1.101 ---- binutils-2.15-pristine/bfd/elf64-ppc.c	2004-05-17 12:36:01.000000000 -0700
   1.102 -+++ binutils-2.15/bfd/elf64-ppc.c	2004-07-19 16:49:59.000000000 -0700
   1.103 -@@ -99,7 +99,7 @@
   1.104 - 
   1.105 - /* The name of the dynamic interpreter.  This is put in the .interp
   1.106 -    section.  */
   1.107 --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
   1.108 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   1.109 - 
   1.110 - /* The size in bytes of an entry in the procedure linkage table.  */
   1.111 - #define PLT_ENTRY_SIZE 24
   1.112 -diff -uNr binutils-2.15-pristine/bfd/elf64-s390.c binutils-2.15/bfd/elf64-s390.c
   1.113 ---- binutils-2.15-pristine/bfd/elf64-s390.c	2004-05-17 12:36:01.000000000 -0700
   1.114 -+++ binutils-2.15/bfd/elf64-s390.c	2004-07-19 16:49:59.000000000 -0700
   1.115 -@@ -473,7 +473,7 @@
   1.116 - /* The name of the dynamic interpreter.  This is put in the .interp
   1.117 -    section.  */
   1.118 - 
   1.119 --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
   1.120 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   1.121 - 
   1.122 - /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
   1.123 -    copying dynamic variables from a shared lib into an app's dynbss
   1.124 -diff -uNr binutils-2.15-pristine/bfd/elf-m10300.c binutils-2.15/bfd/elf-m10300.c
   1.125 ---- binutils-2.15-pristine/bfd/elf-m10300.c	2004-05-17 12:35:57.000000000 -0700
   1.126 -+++ binutils-2.15/bfd/elf-m10300.c	2004-07-19 16:49:59.000000000 -0700
   1.127 -@@ -4026,7 +4026,7 @@
   1.128 - /* The name of the dynamic interpreter.  This is put in the .interp
   1.129 -    section.  */
   1.130 - 
   1.131 --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
   1.132 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   1.133 - 
   1.134 - /* Create dynamic sections when linking against a dynamic object.  */
   1.135 - 
   1.136 -diff -uNr binutils-2.15-pristine/bfd/elfxx-ia64.c binutils-2.15/bfd/elfxx-ia64.c
   1.137 ---- binutils-2.15-pristine/bfd/elfxx-ia64.c	2004-05-17 12:36:02.000000000 -0700
   1.138 -+++ binutils-2.15/bfd/elfxx-ia64.c	2004-07-19 16:49:59.000000000 -0700
   1.139 -@@ -643,7 +643,7 @@
   1.140 -   0x60, 0x00, 0x80, 0x00               /*               br.few b6;;        */
   1.141 - };
   1.142 - 
   1.143 --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
   1.144 -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   1.145 - 
   1.146 - static const bfd_byte oor_brl[16] =
   1.147 - {
     2.1 --- a/patches/binutils/2.15/100-uclibc-conf.patch	Mon Jul 28 21:08:01 2008 +0000
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,692 +0,0 @@
     2.4 -diff -urN binutils-2.15-dist/bfd/config.bfd binutils-2.15/bfd/config.bfd
     2.5 ---- binutils-2.15-dist/bfd/config.bfd	2004-05-17 14:35:56.000000000 -0500
     2.6 -+++ binutils-2.15/bfd/config.bfd	2004-08-04 12:01:44.000000000 -0500
     2.7 -@@ -126,7 +126,7 @@
     2.8 -     targ_defvec=ecoffalpha_little_vec
     2.9 -     targ_selvecs=bfd_elf64_alpha_vec
    2.10 -     ;;
    2.11 --  alpha*-*-linux-gnu* | alpha*-*-elf*)
    2.12 -+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*)
    2.13 -     targ_defvec=bfd_elf64_alpha_vec
    2.14 -     targ_selvecs=ecoffalpha_little_vec
    2.15 -     ;;
    2.16 -@@ -136,7 +136,7 @@
    2.17 -   alpha*-*-*)
    2.18 -     targ_defvec=ecoffalpha_little_vec
    2.19 -     ;;
    2.20 --  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
    2.21 -+  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
    2.22 -     targ_defvec=bfd_elf64_ia64_little_vec
    2.23 -     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
    2.24 -     ;;
    2.25 -@@ -213,7 +213,7 @@
    2.26 -     targ_defvec=bfd_elf32_littlearm_vec
    2.27 -     targ_selvecs=bfd_elf32_bigarm_vec
    2.28 -     ;;
    2.29 --  armeb-*-elf | arm*b-*-linux-gnu*)
    2.30 -+  armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*)
    2.31 -     targ_defvec=bfd_elf32_bigarm_vec
    2.32 -     targ_selvecs=bfd_elf32_littlearm_vec
    2.33 -     ;;
    2.34 -@@ -221,7 +221,7 @@
    2.35 -     targ_defvec=bfd_elf32_littlearm_vec
    2.36 -     targ_selvecs=bfd_elf32_bigarm_vec
    2.37 -     ;;
    2.38 --  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
    2.39 -+  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \
    2.40 -   arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
    2.41 -     targ_defvec=bfd_elf32_littlearm_vec
    2.42 -     targ_selvecs=bfd_elf32_bigarm_vec
    2.43 -@@ -360,7 +360,7 @@
    2.44 -     ;;
    2.45 - 
    2.46 - #ifdef BFD64
    2.47 --  hppa*64*-*-linux-gnu*)
    2.48 -+  hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)
    2.49 -     targ_defvec=bfd_elf64_hppa_linux_vec
    2.50 -     targ_selvecs=bfd_elf64_hppa_vec
    2.51 -     ;;
    2.52 -@@ -371,7 +371,7 @@
    2.53 -     ;;
    2.54 - #endif
    2.55 - 
    2.56 --  hppa*-*-linux-gnu* | hppa*-*-netbsd*)
    2.57 -+  hppa*-*-linux-gnu* | hppa*-*-linux-uclibc* | hppa*-*-netbsd*)
    2.58 -     targ_defvec=bfd_elf32_hppa_linux_vec
    2.59 -     targ_selvecs=bfd_elf32_hppa_vec
    2.60 -     ;;
    2.61 -@@ -494,7 +494,7 @@
    2.62 -     targ_selvecs=bfd_elf32_i386_vec
    2.63 -     targ_underscore=yes
    2.64 -     ;;
    2.65 --  i[3-7]86-*-linux-gnu*)
    2.66 -+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
    2.67 -     targ_defvec=bfd_elf32_i386_vec
    2.68 -     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
    2.69 -     targ64_selvecs=bfd_elf64_x86_64_vec
    2.70 -@@ -508,7 +508,7 @@
    2.71 -     targ_defvec=bfd_elf64_x86_64_vec
    2.72 -     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
    2.73 -     ;;
    2.74 --  x86_64-*-linux-gnu*)
    2.75 -+  x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*)
    2.76 -     targ_defvec=bfd_elf64_x86_64_vec
    2.77 -     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
    2.78 -     ;;
    2.79 -@@ -683,7 +683,7 @@
    2.80 -     targ_selvecs=bfd_elf32_m68k_vec
    2.81 -     targ_underscore=yes
    2.82 -     ;;
    2.83 --  m68*-*-linux-gnu*)
    2.84 -+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
    2.85 -     targ_defvec=bfd_elf32_m68k_vec
    2.86 -     targ_selvecs=m68klinux_vec
    2.87 -     ;;
    2.88 -@@ -955,7 +955,8 @@
    2.89 -     ;;
    2.90 - #endif
    2.91 -   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
    2.92 --  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
    2.93 -+  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \
    2.94 -+  powerpc-*-rtems* | \
    2.95 -   powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
    2.96 -     targ_defvec=bfd_elf32_powerpc_vec
    2.97 -     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
    2.98 -@@ -987,8 +988,8 @@
    2.99 -     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
   2.100 -     ;;
   2.101 -   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
   2.102 --  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
   2.103 --  powerpcle-*-rtems*)
   2.104 -+  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\
   2.105 -+  powerpcle-*-vxworks* | powerpcle-*-rtems*)
   2.106 -     targ_defvec=bfd_elf32_powerpcle_vec
   2.107 -     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
   2.108 -     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
   2.109 -@@ -1149,7 +1150,7 @@
   2.110 -     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
   2.111 -     targ_underscore=yes
   2.112 -     ;;
   2.113 --  sparc-*-linux-gnu*)
   2.114 -+  sparc-*-linux-gnu* | sparc-*-linux-uclibc*)
   2.115 -     targ_defvec=bfd_elf32_sparc_vec
   2.116 -     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
   2.117 -     ;;
   2.118 -@@ -1196,7 +1197,7 @@
   2.119 -     targ_defvec=sunos_big_vec
   2.120 -     targ_underscore=yes
   2.121 -     ;;
   2.122 --  sparc64-*-linux-gnu*)
   2.123 -+  sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)
   2.124 -     targ_defvec=bfd_elf64_sparc_vec
   2.125 -     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
   2.126 -     ;;
   2.127 -@@ -1265,7 +1266,7 @@
   2.128 -     targ_underscore=yes
   2.129 -     ;;
   2.130 - 
   2.131 --  vax-*-linux-gnu*)
   2.132 -+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
   2.133 -     targ_defvec=bfd_elf32_vax_vec
   2.134 -     ;;
   2.135 - 
   2.136 -diff -urN binutils-2.15-dist/bfd/configure binutils-2.15/bfd/configure
   2.137 ---- binutils-2.15-dist/bfd/configure	2004-05-17 14:35:57.000000000 -0500
   2.138 -+++ binutils-2.15/bfd/configure	2004-08-04 12:01:44.000000000 -0500
   2.139 -@@ -1699,6 +1699,11 @@
   2.140 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.141 -   ;;
   2.142 - 
   2.143 -+linux-uclibc*)
   2.144 -+  lt_cv_deplibs_check_method=pass_all
   2.145 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.146 -+  ;;
   2.147 -+
   2.148 - netbsd*)
   2.149 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.150 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   2.151 -@@ -5278,7 +5283,7 @@
   2.152 -   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
   2.153 - 	COREFILE=''
   2.154 - 	;;
   2.155 --  alpha*-*-linux-gnu*)
   2.156 -+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
   2.157 - 	COREFILE=trad-core.lo
   2.158 - 	TRAD_HEADER='"hosts/alphalinux.h"'
   2.159 - 	;;
   2.160 -@@ -5338,7 +5343,7 @@
   2.161 - 	COREFILE=trad-core.lo
   2.162 - 	TRAD_HEADER='"hosts/i386mach3.h"'
   2.163 - 	;;
   2.164 --  i[3-7]86-*-linux-gnu*)
   2.165 -+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
   2.166 - 	COREFILE=trad-core.lo
   2.167 - 	TRAD_HEADER='"hosts/i386linux.h"'
   2.168 - 	;;
   2.169 -@@ -5376,7 +5381,7 @@
   2.170 - 	COREFILE=trad-core.lo
   2.171 - 	TRAD_HEADER='"hosts/hp300bsd.h"'
   2.172 - 	;;
   2.173 --  m68*-*-linux-gnu*)
   2.174 -+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
   2.175 - 	COREFILE=trad-core.lo
   2.176 - 	TRAD_HEADER='"hosts/m68klinux.h"'
   2.177 - 	;;
   2.178 -@@ -5477,7 +5482,7 @@
   2.179 - 	COREFILE=trad-core.lo
   2.180 - 	TRAD_HEADER='"hosts/vaxult2.h"'
   2.181 - 	;;
   2.182 --  vax-*-linux-gnu*)
   2.183 -+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
   2.184 - 	COREFILE=trad-core.lo
   2.185 - 	TRAD_HEADER='"hosts/vaxlinux.h"'
   2.186 - 	;;
   2.187 -diff -urN binutils-2.15-dist/bfd/configure.in binutils-2.15/bfd/configure.in
   2.188 ---- binutils-2.15-dist/bfd/configure.in	2004-05-17 14:35:57.000000000 -0500
   2.189 -+++ binutils-2.15/bfd/configure.in	2004-08-04 12:01:44.000000000 -0500
   2.190 -@@ -178,7 +178,7 @@
   2.191 -   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
   2.192 - 	COREFILE=''
   2.193 - 	;;
   2.194 --  alpha*-*-linux-gnu*)
   2.195 -+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
   2.196 - 	COREFILE=trad-core.lo
   2.197 - 	TRAD_HEADER='"hosts/alphalinux.h"'
   2.198 - 	;;
   2.199 -@@ -259,7 +259,7 @@
   2.200 - 	TRAD_HEADER='"hosts/i386mach3.h"'
   2.201 - 	;;
   2.202 - changequote(,)dnl
   2.203 --  i[3-7]86-*-linux-gnu*)
   2.204 -+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
   2.205 - changequote([,])dnl
   2.206 - 	COREFILE=trad-core.lo
   2.207 - 	TRAD_HEADER='"hosts/i386linux.h"'
   2.208 -@@ -300,7 +300,7 @@
   2.209 - 	COREFILE=trad-core.lo
   2.210 - 	TRAD_HEADER='"hosts/hp300bsd.h"'
   2.211 - 	;;
   2.212 --  m68*-*-linux-gnu*)
   2.213 -+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
   2.214 - 	COREFILE=trad-core.lo
   2.215 - 	TRAD_HEADER='"hosts/m68klinux.h"'
   2.216 - 	;;
   2.217 -@@ -385,7 +385,7 @@
   2.218 - 	COREFILE=trad-core.lo
   2.219 - 	TRAD_HEADER='"hosts/vaxult2.h"'
   2.220 - 	;;
   2.221 --  vax-*-linux-gnu*)
   2.222 -+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
   2.223 - 	COREFILE=trad-core.lo
   2.224 - 	TRAD_HEADER='"hosts/vaxlinux.h"'
   2.225 - 	;;
   2.226 -diff -urN binutils-2.15-dist/binutils/configure binutils-2.15/binutils/configure
   2.227 ---- binutils-2.15-dist/binutils/configure	2004-01-02 11:08:04.000000000 -0600
   2.228 -+++ binutils-2.15/binutils/configure	2004-08-04 12:01:44.000000000 -0500
   2.229 -@@ -1585,6 +1585,11 @@
   2.230 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.231 -   ;;
   2.232 - 
   2.233 -+linux-uclibc*)
   2.234 -+  lt_cv_deplibs_check_method=pass_all
   2.235 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.236 -+  ;;
   2.237 -+
   2.238 - netbsd*)
   2.239 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.240 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   2.241 -diff -urN binutils-2.15-dist/configure binutils-2.15/configure
   2.242 ---- binutils-2.15-dist/configure	2004-05-17 14:36:20.000000000 -0500
   2.243 -+++ binutils-2.15/configure	2004-08-04 12:01:44.000000000 -0500
   2.244 -@@ -1288,6 +1288,18 @@
   2.245 -   i[3456789]86-*-freebsd* | i[3456789]86-*-kfreebsd*-gnu)
   2.246 -     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   2.247 -     ;;
   2.248 -+  i[3456789]86-*-linux-uclibc*)
   2.249 -+    # This section makes it possible to build newlib natively on linux.
   2.250 -+    # If we are using a cross compiler then don't configure newlib.
   2.251 -+    if test x${is_cross_compiler} != xno ; then
   2.252 -+      noconfigdirs="$noconfigdirs target-newlib"
   2.253 -+    fi
   2.254 -+    noconfigdirs="$noconfigdirs target-libgloss"
   2.255 -+    # If we are not using a cross compiler, do configure newlib.
   2.256 -+    # Note however, that newlib will only be configured in this situation
   2.257 -+    # if the --with-newlib option has been given, because otherwise
   2.258 -+    # 'target-newlib' will appear in skipdirs.
   2.259 -+    ;;
   2.260 -   i[3456789]86-*-linux*)
   2.261 -     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
   2.262 -     # not build java stuff by default.
   2.263 -diff -urN binutils-2.15-dist/configure.in binutils-2.15/configure.in
   2.264 ---- binutils-2.15-dist/configure.in	2004-05-17 14:40:54.000000000 -0500
   2.265 -+++ binutils-2.15/configure.in	2004-08-04 12:01:44.000000000 -0500
   2.266 -@@ -521,6 +521,18 @@
   2.267 -   i[[3456789]]86-*-freebsd* | i[[3456789]]86-*-kfreebsd*-gnu)
   2.268 -     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   2.269 -     ;;
   2.270 -+  i[[3456789]]86-*-linux-uclibc*)
   2.271 -+    # This section makes it possible to build newlib natively on linux.
   2.272 -+    # If we are using a cross compiler then don't configure newlib.
   2.273 -+    if test x${is_cross_compiler} != xno ; then
   2.274 -+      noconfigdirs="$noconfigdirs target-newlib"
   2.275 -+    fi
   2.276 -+    noconfigdirs="$noconfigdirs target-libgloss"
   2.277 -+    # If we are not using a cross compiler, do configure newlib.
   2.278 -+    # Note however, that newlib will only be configured in this situation
   2.279 -+    # if the --with-newlib option has been given, because otherwise
   2.280 -+    # 'target-newlib' will appear in skipdirs.
   2.281 -+    ;;
   2.282 -   i[[3456789]]86-*-linux*)
   2.283 -     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
   2.284 -     # not build java stuff by default.
   2.285 -diff -urN binutils-2.15-dist/gas/configure binutils-2.15/gas/configure
   2.286 ---- binutils-2.15-dist/gas/configure	2004-05-17 14:36:07.000000000 -0500
   2.287 -+++ binutils-2.15/gas/configure	2004-08-04 12:07:50.000000000 -0500
   2.288 -@@ -3400,6 +3400,11 @@
   2.289 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.290 -   ;;
   2.291 - 
   2.292 -+linux-uclibc*)
   2.293 -+  lt_cv_deplibs_check_method=pass_all
   2.294 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.295 -+  ;;
   2.296 -+
   2.297 - netbsd*)
   2.298 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.299 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   2.300 -@@ -4224,6 +4229,7 @@
   2.301 -       alpha*-*-osf*)			fmt=ecoff ;;
   2.302 -       alpha*-*-linuxecoff*)		fmt=ecoff ;;
   2.303 -       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
   2.304 -+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.305 -       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
   2.306 -       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
   2.307 - 
   2.308 -@@ -4240,6 +4246,7 @@
   2.309 -       arm*-*-conix*)			fmt=elf ;;
   2.310 -       arm-*-linux*aout*)		fmt=aout em=linux ;;
   2.311 -       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
   2.312 -+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
   2.313 -       arm*-*-uclinux*)			fmt=elf  em=linux ;;
   2.314 -       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
   2.315 -       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
   2.316 -@@ -4253,6 +4260,7 @@
   2.317 -       avr-*-*)				fmt=elf ;;
   2.318 - 
   2.319 -       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
   2.320 -+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
   2.321 -       cris-*-*)				fmt=multi bfd_gas=yes ;;
   2.322 - 
   2.323 -       d10v-*-*)				fmt=elf ;;
   2.324 -@@ -4310,7 +4318,9 @@
   2.325 -       i386-*-linux*oldld)		fmt=aout em=linux ;;
   2.326 -       i386-*-linux*coff*)		fmt=coff em=linux ;;
   2.327 -       i386-*-linux-gnu*)		fmt=elf em=linux ;;
   2.328 -+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.329 -       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
   2.330 -+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.331 -       i386-*-lynxos*)			fmt=coff em=lynx ;;
   2.332 -       i386-*-sysv[45]*)			fmt=elf ;;
   2.333 -       i386-*-solaris*)			fmt=elf ;;
   2.334 -@@ -4370,6 +4380,7 @@
   2.335 -       ia64-*-elf*)			fmt=elf ;;
   2.336 -       ia64-*-aix*)			fmt=elf em=ia64aix ;;
   2.337 -       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
   2.338 -+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.339 -       ia64-*-hpux*)			fmt=elf em=hpux ;;
   2.340 -       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
   2.341 - 
   2.342 -@@ -4397,6 +4408,7 @@
   2.343 -       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
   2.344 -       m68k-*-linux*aout*)		fmt=aout em=linux ;;
   2.345 -       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
   2.346 -+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.347 -       m68k-*-uclinux*)			fmt=elf ;;
   2.348 -       m68k-*-gnu*)			fmt=elf ;;
   2.349 -       m68k-*-lynxos*)			fmt=coff em=lynx ;;
   2.350 -@@ -4459,6 +4471,7 @@
   2.351 -       ppc-*-beos*)			fmt=coff ;;
   2.352 -       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
   2.353 -       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
   2.354 -+      ppc-*-linux-uclibc* | \
   2.355 -       ppc-*-linux-gnu*)			fmt=elf em=linux
   2.356 - 	    case "$endian" in
   2.357 - 		big)  ;;
   2.358 -@@ -4486,7 +4499,9 @@
   2.359 -       ppc-*-kaos*)			fmt=elf ;;
   2.360 - 
   2.361 -       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
   2.362 -+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.363 -       s390-*-linux-gnu*)		fmt=elf em=linux ;;
   2.364 -+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.365 - 
   2.366 -       sh*-*-linux*)			fmt=elf em=linux
   2.367 - 	    case ${cpu} in
   2.368 -@@ -4519,6 +4534,7 @@
   2.369 -       sparc-*-coff)			fmt=coff ;;
   2.370 -       sparc-*-linux*aout*)		fmt=aout em=linux ;;
   2.371 -       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
   2.372 -+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.373 -       sparc-*-lynxos*)			fmt=coff em=lynx ;;
   2.374 -       sparc-fujitsu-none)		fmt=aout ;;
   2.375 -       sparc-*-elf)			fmt=elf ;;
   2.376 -diff -urN binutils-2.15-dist/gas/configure.in binutils-2.15/gas/configure.in
   2.377 ---- binutils-2.15-dist/gas/configure.in	2004-05-17 14:36:07.000000000 -0500
   2.378 -+++ binutils-2.15/gas/configure.in	2004-08-04 12:07:21.000000000 -0500
   2.379 -@@ -194,6 +194,7 @@
   2.380 -       alpha*-*-osf*)			fmt=ecoff ;;
   2.381 -       alpha*-*-linuxecoff*)		fmt=ecoff ;;
   2.382 -       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
   2.383 -+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.384 -       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
   2.385 -       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
   2.386 - 
   2.387 -@@ -210,6 +211,7 @@
   2.388 -       arm*-*-conix*)			fmt=elf ;;
   2.389 -       arm-*-linux*aout*)		fmt=aout em=linux ;;
   2.390 -       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
   2.391 -+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
   2.392 -       arm*-*-uclinux*)			fmt=elf  em=linux ;;
   2.393 -       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
   2.394 -       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
   2.395 -@@ -223,6 +225,7 @@
   2.396 -       avr-*-*)				fmt=elf ;;
   2.397 - 
   2.398 -       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
   2.399 -+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
   2.400 -       cris-*-*)				fmt=multi bfd_gas=yes ;;
   2.401 - 
   2.402 -       d10v-*-*)				fmt=elf ;;
   2.403 -@@ -280,7 +283,9 @@
   2.404 -       i386-*-linux*oldld)		fmt=aout em=linux ;;
   2.405 -       i386-*-linux*coff*)		fmt=coff em=linux ;;
   2.406 -       i386-*-linux-gnu*)		fmt=elf em=linux ;;
   2.407 -+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.408 -       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
   2.409 -+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.410 -       i386-*-lynxos*)			fmt=coff em=lynx ;;
   2.411 - changequote(,)dnl
   2.412 -       i386-*-sysv[45]*)			fmt=elf ;;
   2.413 -@@ -333,6 +338,7 @@
   2.414 -       ia64-*-elf*)			fmt=elf ;;
   2.415 -       ia64-*-aix*)			fmt=elf em=ia64aix ;;
   2.416 -       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
   2.417 -+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.418 -       ia64-*-hpux*)			fmt=elf em=hpux ;;
   2.419 -       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
   2.420 - 
   2.421 -@@ -360,6 +366,7 @@
   2.422 -       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
   2.423 -       m68k-*-linux*aout*)		fmt=aout em=linux ;;
   2.424 -       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
   2.425 -+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.426 -       m68k-*-uclinux*)			fmt=elf ;;
   2.427 -       m68k-*-gnu*)			fmt=elf ;;
   2.428 -       m68k-*-lynxos*)			fmt=coff em=lynx ;;
   2.429 -@@ -419,6 +426,7 @@
   2.430 -       ppc-*-beos*)			fmt=coff ;;
   2.431 -       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
   2.432 -       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
   2.433 -+      ppc-*-linux-uclibc* | \
   2.434 -       ppc-*-linux-gnu*)			fmt=elf em=linux
   2.435 - 	    case "$endian" in
   2.436 - 		big)  ;;
   2.437 -@@ -439,7 +447,9 @@
   2.438 -       ppc-*-kaos*)			fmt=elf ;;
   2.439 - 
   2.440 -       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
   2.441 -+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.442 -       s390-*-linux-gnu*)		fmt=elf em=linux ;;
   2.443 -+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.444 - 
   2.445 -       sh*-*-linux*)			fmt=elf em=linux
   2.446 - 	    case ${cpu} in
   2.447 -@@ -472,6 +482,7 @@
   2.448 -       sparc-*-coff)			fmt=coff ;;
   2.449 -       sparc-*-linux*aout*)		fmt=aout em=linux ;;
   2.450 -       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
   2.451 -+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
   2.452 -       sparc-*-lynxos*)			fmt=coff em=lynx ;;
   2.453 -       sparc-fujitsu-none)		fmt=aout ;;
   2.454 -       sparc-*-elf)			fmt=elf ;;
   2.455 -diff -urN binutils-2.15-dist/gprof/configure binutils-2.15/gprof/configure
   2.456 ---- binutils-2.15-dist/gprof/configure	2003-08-26 12:19:19.000000000 -0500
   2.457 -+++ binutils-2.15/gprof/configure	2004-08-04 12:01:45.000000000 -0500
   2.458 -@@ -1581,6 +1581,11 @@
   2.459 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.460 -   ;;
   2.461 - 
   2.462 -+linux-uclibc*)
   2.463 -+  lt_cv_deplibs_check_method=pass_all
   2.464 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.465 -+  ;;
   2.466 -+
   2.467 - netbsd*)
   2.468 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.469 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   2.470 -diff -urN binutils-2.15-dist/ld/configure binutils-2.15/ld/configure
   2.471 ---- binutils-2.15-dist/ld/configure	2003-04-24 07:36:07.000000000 -0500
   2.472 -+++ binutils-2.15/ld/configure	2004-08-04 12:01:45.000000000 -0500
   2.473 -@@ -1589,6 +1589,11 @@
   2.474 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.475 -   ;;
   2.476 - 
   2.477 -+linux-uclibc*)
   2.478 -+  lt_cv_deplibs_check_method=pass_all
   2.479 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.480 -+  ;;
   2.481 -+
   2.482 - netbsd*)
   2.483 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.484 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   2.485 -diff -urN binutils-2.15-dist/ld/configure.tgt binutils-2.15/ld/configure.tgt
   2.486 ---- binutils-2.15-dist/ld/configure.tgt	2004-05-17 14:36:15.000000000 -0500
   2.487 -+++ binutils-2.15/ld/configure.tgt	2004-08-04 12:01:45.000000000 -0500
   2.488 -@@ -30,6 +30,7 @@
   2.489 - 			targ_extra_emuls="criself crislinux"
   2.490 - 			targ_extra_libpath=$targ_extra_emuls ;;
   2.491 - cris-*-linux-gnu*)	targ_emul=crislinux ;;
   2.492 -+cris-*-linux-uclibc*)	targ_emul=crislinux ;;
   2.493 - cris-*-*)		targ_emul=criself
   2.494 - 			targ_extra_emuls="crisaout crislinux"
   2.495 - 			targ_extra_libpath=$targ_extra_emuls ;;
   2.496 -@@ -59,14 +60,16 @@
   2.497 - 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
   2.498 - 			tdir_sun4=sparc-sun-sunos4
   2.499 - 			;;
   2.500 --sparc64-*-linux-gnu*)	targ_emul=elf64_sparc
   2.501 -+sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)	 \
   2.502 -+			targ_emul=elf64_sparc
   2.503 - 			targ_extra_emuls="elf32_sparc sparclinux sun4"
   2.504 - 			targ_extra_libpath=elf32_sparc
   2.505 - 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
   2.506 - 			tdir_sparclinux=${tdir_elf32_sparc}aout
   2.507 - 			tdir_sun4=sparc-sun-sunos4
   2.508 - 			;;
   2.509 --sparc*-*-linux-gnu*)	targ_emul=elf32_sparc
   2.510 -+sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \
   2.511 -+			targ_emul=elf32_sparc
   2.512 - 			targ_extra_emuls="sparclinux elf64_sparc sun4"
   2.513 - 			targ_extra_libpath=elf64_sparc
   2.514 - 			tdir_sparclinux=${targ_alias}aout
   2.515 -@@ -118,7 +121,9 @@
   2.516 - m32r*le-*-elf*)         targ_emul=m32rlelf ;;
   2.517 - m32r*-*-elf*)           targ_emul=m32relf ;;
   2.518 - m32r*le-*-linux-gnu*)   targ_emul=m32rlelf_linux ;;
   2.519 -+m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;;
   2.520 - m32r*-*-linux-gnu*)     targ_emul=m32relf_linux ;;
   2.521 -+m32r*-*-linux-uclibc*)  targ_emul=m32relf_linux ;;
   2.522 - m68hc11-*-*|m6811-*-*)	targ_emul=m68hc11elf 
   2.523 - 			targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
   2.524 - m68hc12-*-*|m6812-*-*)	targ_emul=m68hc12elf 
   2.525 -@@ -128,7 +133,7 @@
   2.526 - m68*-ericsson-ose)	targ_emul=sun3 ;;
   2.527 - m68*-apple-aux*)	targ_emul=m68kaux ;;
   2.528 - *-tandem-none)		targ_emul=st2000 ;;
   2.529 --i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
   2.530 -+i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;;
   2.531 - i[3-7]86-*-nto-qnx*)	targ_emul=i386nto ;;
   2.532 - i[3-7]86-*-vsta)	targ_emul=vsta ;;
   2.533 - i[3-7]86-go32-rtems*)	targ_emul=i386go32 ;;
   2.534 -@@ -152,14 +157,16 @@
   2.535 - 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
   2.536 - 			;;
   2.537 - i[3-7]86-*-linux*oldld)	targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
   2.538 --i[3-7]86-*-linux-gnu*)	targ_emul=elf_i386
   2.539 -+i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \
   2.540 -+			targ_emul=elf_i386
   2.541 - 			targ_extra_emuls=i386linux
   2.542 - 			if test x${want64} = xtrue; then
   2.543 - 			  targ_extra_emuls="$targ_extra_emuls elf_x86_64"
   2.544 - 			fi
   2.545 - 			tdir_i386linux=${targ_alias}aout
   2.546 - 			;;
   2.547 --x86_64-*-linux-gnu*)	targ_emul=elf_x86_64
   2.548 -+x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \
   2.549 -+			targ_emul=elf_x86_64
   2.550 - 			targ_extra_emuls="elf_i386 i386linux"
   2.551 - 			targ_extra_libpath=elf_i386
   2.552 - 			tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
   2.553 -@@ -259,10 +266,13 @@
   2.554 - arm9e-*-elf)		targ_emul=armelf ;;
   2.555 - arm-*-oabi)		targ_emul=armelf_oabi ;;
   2.556 - arm*b-*-linux-gnu*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
   2.557 -+arm*b-*-linux-uclibc*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
   2.558 - arm*-*-linux-gnu*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   2.559 -+arm*-*-linux-uclibc*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   2.560 - arm*-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   2.561 - arm*-*-conix*)		targ_emul=armelf ;;
   2.562 --thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   2.563 -+thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \
   2.564 -+			targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   2.565 - strongarm-*-coff)	targ_emul=armcoff ;;
   2.566 - strongarm-*-elf)	targ_emul=armelf ;;
   2.567 - strongarm-*-kaos*)	targ_emul=armelf ;;
   2.568 -@@ -364,7 +374,8 @@
   2.569 - 			targ_extra_emuls=m68kelf
   2.570 - 			tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
   2.571 - 			;;
   2.572 --m68k-*-linux-gnu*)	targ_emul=m68kelf
   2.573 -+m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \
   2.574 -+			targ_emul=m68kelf
   2.575 - 			targ_extra_emuls=m68klinux
   2.576 - 			tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
   2.577 - 			;;
   2.578 -@@ -381,9 +392,9 @@
   2.579 - m68*-*-psos*)		targ_emul=m68kpsos ;;
   2.580 - m68*-*-rtemscoff*)	targ_emul=m68kcoff ;;
   2.581 - m68*-*-rtems*)		targ_emul=m68kelf ;;
   2.582 --hppa*64*-*-linux-gnu*)	targ_emul=hppa64linux ;;
   2.583 -+hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)  targ_emul=hppa64linux ;;
   2.584 - hppa*64*-*)		targ_emul=elf64hppa ;;
   2.585 --hppa*-*-linux-gnu*)	targ_emul=hppalinux ;;
   2.586 -+hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*)	targ_emul=hppalinux ;;
   2.587 - hppa*-*-*elf*)		targ_emul=hppaelf ;;
   2.588 - hppa*-*-lites*)		targ_emul=hppaelf ;;
   2.589 - hppa*-*-netbsd*)	targ_emul=hppanbsd ;;
   2.590 -@@ -396,6 +407,7 @@
   2.591 - 			targ_emul=vaxnbsd
   2.592 - 			targ_extra_emuls=elf32vax ;;
   2.593 - vax-*-linux-gnu*)	targ_emul=elf32vax ;;
   2.594 -+vax-*-linux-uclibc*)	targ_emul=elf32vax ;;
   2.595 - mips*-*-pe)		targ_emul=mipspe ;
   2.596 - 			targ_extra_ofiles="deffilep.o pe-dll.o" ;;
   2.597 - mips*-dec-ultrix*)	targ_emul=mipslit ;;
   2.598 -@@ -429,16 +441,16 @@
   2.599 - mips*-*-vxworks*)	targ_emul=elf32ebmip
   2.600 - 		        targ_extra_emuls="elf32elmip" ;;
   2.601 - mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
   2.602 --mips64*el-*-linux-gnu*)	targ_emul=elf32ltsmipn32
   2.603 -+mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*)	targ_emul=elf32ltsmipn32
   2.604 - 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
   2.605 - 			;;
   2.606 --mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
   2.607 -+mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*)	targ_emul=elf32btsmipn32
   2.608 - 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
   2.609 - 			;;
   2.610 --mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
   2.611 -+mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*)	targ_emul=elf32ltsmip
   2.612 - 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
   2.613 - 			;;
   2.614 --mips*-*-linux-gnu*)	targ_emul=elf32btsmip
   2.615 -+mips*-*-linux-gnu* | mips*-*-linux-uclibc*)	targ_emul=elf32btsmip
   2.616 - 			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
   2.617 - 			;;
   2.618 - mips*-*-lnews*)		targ_emul=mipslnews ;;
   2.619 -@@ -461,6 +473,10 @@
   2.620 - alpha*-*-linux-gnu*)	targ_emul=elf64alpha targ_extra_emuls=alpha
   2.621 - 			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
   2.622 - 			;;
   2.623 -+alpha*-*-linux-uclibc*)	targ_emul=elf64alpha targ_extra_emuls=alpha
   2.624 -+			# The following needs to be checked...
   2.625 -+			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
   2.626 -+			;;
   2.627 - alpha*-*-osf*)		targ_emul=alpha ;;
   2.628 - alpha*-*-gnu*)		targ_emul=elf64alpha ;;
   2.629 - alpha*-*-netware*)	targ_emul=alpha ;;
   2.630 -diff -urN binutils-2.15-dist/libtool.m4 binutils-2.15/libtool.m4
   2.631 ---- binutils-2.15-dist/libtool.m4	2003-04-10 22:58:39.000000000 -0500
   2.632 -+++ binutils-2.15/libtool.m4	2004-08-04 12:01:45.000000000 -0500
   2.633 -@@ -645,6 +645,11 @@
   2.634 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.635 -   ;;
   2.636 - 
   2.637 -+linux-uclibc*)
   2.638 -+  lt_cv_deplibs_check_method=pass_all
   2.639 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.640 -+  ;;
   2.641 -+
   2.642 - netbsd*)
   2.643 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.644 -     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
   2.645 -diff -urN binutils-2.15-dist/ltconfig binutils-2.15/ltconfig
   2.646 ---- binutils-2.15-dist/ltconfig	2003-10-03 23:54:47.000000000 -0500
   2.647 -+++ binutils-2.15/ltconfig	2004-08-04 12:01:45.000000000 -0500
   2.648 -@@ -603,6 +603,7 @@
   2.649 - # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
   2.650 - case $host_os in
   2.651 - linux-gnu*) ;;
   2.652 -+linux-uclibc*) ;;
   2.653 - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
   2.654 - esac
   2.655 - 
   2.656 -@@ -1259,6 +1260,24 @@
   2.657 -   dynamic_linker='GNU/Linux ld.so'
   2.658 -   ;;
   2.659 - 
   2.660 -+linux-uclibc*)
   2.661 -+  version_type=linux
   2.662 -+  need_lib_prefix=no
   2.663 -+  need_version=no
   2.664 -+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
   2.665 -+  soname_spec='${libname}${release}.so$major'
   2.666 -+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   2.667 -+  shlibpath_var=LD_LIBRARY_PATH
   2.668 -+  shlibpath_overrides_runpath=no
   2.669 -+  # This implies no fast_install, which is unacceptable.
   2.670 -+  # Some rework will be needed to allow for fast_install
   2.671 -+  # before this can be enabled.
   2.672 -+  # Note: copied from linux-gnu, and may not be appropriate.
   2.673 -+  hardcode_into_libs=yes
   2.674 -+  # Assume using the uClibc dynamic linker.
   2.675 -+  dynamic_linker="uClibc ld.so"
   2.676 -+  ;;
   2.677 -+
   2.678 - netbsd*)
   2.679 -   need_lib_prefix=no
   2.680 -   need_version=no
   2.681 -diff -urN binutils-2.15-dist/opcodes/configure binutils-2.15/opcodes/configure
   2.682 ---- binutils-2.15-dist/opcodes/configure	2003-08-05 04:39:31.000000000 -0500
   2.683 -+++ binutils-2.15/opcodes/configure	2004-08-04 12:01:45.000000000 -0500
   2.684 -@@ -1700,6 +1700,11 @@
   2.685 -   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   2.686 -   ;;
   2.687 - 
   2.688 -+linux-uclibc*)
   2.689 -+  lt_cv_deplibs_check_method=pass_all
   2.690 -+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   2.691 -+  ;;
   2.692 -+
   2.693 - netbsd*)
   2.694 -   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   2.695 -     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/patches/binutils/2.15/100-uclibc.patch	Mon Jul 28 21:32:33 2008 +0000
     3.3 @@ -0,0 +1,144 @@
     3.4 +diff -uNr binutils-2.15-pristine/bfd/configure binutils-2.15/bfd/configure
     3.5 +--- binutils-2.15-pristine/bfd/configure	2004-05-17 12:35:57.000000000 -0700
     3.6 ++++ binutils-2.15/bfd/configure	2004-07-19 16:36:19.000000000 -0700
     3.7 +@@ -1009,7 +1009,7 @@
     3.8 + bfd_version_string="\"${VERSION}\""
     3.9 + if test x${is_release} = x; then
    3.10 +   bfd_version_date=`sed -n -e 's/.*DATE //p' < ${srcdir}/version.h`
    3.11 +-  bfd_version_string="\"${VERSION} ${bfd_version_date}\""
    3.12 ++  bfd_version_string="\"${VERSION} ${bfd_version_date} uClibc\""
    3.13 + fi
    3.14 + 
    3.15 + 
    3.16 +diff -uNr binutils-2.15-pristine/bfd/elf32-arm.h binutils-2.15/bfd/elf32-arm.h
    3.17 +--- binutils-2.15-pristine/bfd/elf32-arm.h	2004-05-17 12:35:58.000000000 -0700
    3.18 ++++ binutils-2.15/bfd/elf32-arm.h	2004-07-19 16:37:06.000000000 -0700
    3.19 +@@ -124,7 +124,7 @@
    3.20 + 
    3.21 + /* The name of the dynamic interpreter.  This is put in the .interp
    3.22 +    section.  */
    3.23 +-#define ELF_DYNAMIC_INTERPRETER     "/usr/lib/ld.so.1"
    3.24 ++#define ELF_DYNAMIC_INTERPRETER     "/lib/ld-uClibc.so.0"
    3.25 + 
    3.26 + #ifdef FOUR_WORD_PLT
    3.27 + 
    3.28 +diff -uNr binutils-2.15-pristine/bfd/elf32-cris.c binutils-2.15/bfd/elf32-cris.c
    3.29 +--- binutils-2.15-pristine/bfd/elf32-cris.c	2004-05-17 12:35:58.000000000 -0700
    3.30 ++++ binutils-2.15/bfd/elf32-cris.c	2004-07-19 16:49:59.000000000 -0700
    3.31 +@@ -536,7 +536,7 @@
    3.32 + /* The name of the dynamic interpreter.  This is put in the .interp
    3.33 +    section.  */
    3.34 + 
    3.35 +-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
    3.36 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    3.37 + 
    3.38 + /* The size in bytes of an entry in the procedure linkage table.  */
    3.39 + 
    3.40 +diff -uNr binutils-2.15-pristine/bfd/elf32-frv.c binutils-2.15/bfd/elf32-frv.c
    3.41 +--- binutils-2.15-pristine/bfd/elf32-frv.c	2004-05-17 12:35:58.000000000 -0700
    3.42 ++++ binutils-2.15/bfd/elf32-frv.c	2004-07-19 16:49:59.000000000 -0700
    3.43 +@@ -2913,7 +2913,7 @@
    3.44 + /* The name of the dynamic interpreter.  This is put in the .interp
    3.45 +    section.  */
    3.46 + 
    3.47 +-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
    3.48 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    3.49 + 
    3.50 + #define DEFAULT_STACK_SIZE 0x20000
    3.51 + 
    3.52 +diff -uNr binutils-2.15-pristine/bfd/elf32-hppa.c binutils-2.15/bfd/elf32-hppa.c
    3.53 +--- binutils-2.15-pristine/bfd/elf32-hppa.c	2004-05-17 12:35:58.000000000 -0700
    3.54 ++++ binutils-2.15/bfd/elf32-hppa.c	2004-07-19 16:49:59.000000000 -0700
    3.55 +@@ -115,7 +115,7 @@
    3.56 + 
    3.57 + #define PLT_ENTRY_SIZE 8
    3.58 + #define GOT_ENTRY_SIZE 4
    3.59 +-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
    3.60 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    3.61 + 
    3.62 + static const bfd_byte plt_stub[] =
    3.63 + {
    3.64 +diff -uNr binutils-2.15-pristine/bfd/elf32-ppc.c binutils-2.15/bfd/elf32-ppc.c
    3.65 +--- binutils-2.15-pristine/bfd/elf32-ppc.c	2004-05-17 12:35:59.000000000 -0700
    3.66 ++++ binutils-2.15/bfd/elf32-ppc.c	2004-07-19 16:49:59.000000000 -0700
    3.67 +@@ -49,7 +49,7 @@
    3.68 + 
    3.69 + /* The name of the dynamic interpreter.  This is put in the .interp
    3.70 +    section.  */
    3.71 +-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
    3.72 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    3.73 + 
    3.74 + /* The size in bytes of an entry in the procedure linkage table.  */
    3.75 + #define PLT_ENTRY_SIZE 12
    3.76 +diff -uNr binutils-2.15-pristine/bfd/elf32-s390.c binutils-2.15/bfd/elf32-s390.c
    3.77 +--- binutils-2.15-pristine/bfd/elf32-s390.c	2004-05-17 12:35:59.000000000 -0700
    3.78 ++++ binutils-2.15/bfd/elf32-s390.c	2004-07-19 16:49:59.000000000 -0700
    3.79 +@@ -452,7 +452,7 @@
    3.80 + /* The name of the dynamic interpreter.  This is put in the .interp
    3.81 +    section.  */
    3.82 + 
    3.83 +-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
    3.84 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    3.85 + 
    3.86 + /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
    3.87 +    copying dynamic variables from a shared lib into an app's dynbss
    3.88 +diff -uNr binutils-2.15-pristine/bfd/elf32-sparc.c binutils-2.15/bfd/elf32-sparc.c
    3.89 +--- binutils-2.15-pristine/bfd/elf32-sparc.c	2004-05-17 12:36:00.000000000 -0700
    3.90 ++++ binutils-2.15/bfd/elf32-sparc.c	2004-07-19 16:49:59.000000000 -0700
    3.91 +@@ -536,7 +536,7 @@
    3.92 + /* The name of the dynamic interpreter.  This is put in the .interp
    3.93 +    section.  */
    3.94 + 
    3.95 +-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
    3.96 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
    3.97 + 
    3.98 + /* The nop opcode we use.  */
    3.99 + 
   3.100 +diff -uNr binutils-2.15-pristine/bfd/elf64-ppc.c binutils-2.15/bfd/elf64-ppc.c
   3.101 +--- binutils-2.15-pristine/bfd/elf64-ppc.c	2004-05-17 12:36:01.000000000 -0700
   3.102 ++++ binutils-2.15/bfd/elf64-ppc.c	2004-07-19 16:49:59.000000000 -0700
   3.103 +@@ -99,7 +99,7 @@
   3.104 + 
   3.105 + /* The name of the dynamic interpreter.  This is put in the .interp
   3.106 +    section.  */
   3.107 +-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
   3.108 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   3.109 + 
   3.110 + /* The size in bytes of an entry in the procedure linkage table.  */
   3.111 + #define PLT_ENTRY_SIZE 24
   3.112 +diff -uNr binutils-2.15-pristine/bfd/elf64-s390.c binutils-2.15/bfd/elf64-s390.c
   3.113 +--- binutils-2.15-pristine/bfd/elf64-s390.c	2004-05-17 12:36:01.000000000 -0700
   3.114 ++++ binutils-2.15/bfd/elf64-s390.c	2004-07-19 16:49:59.000000000 -0700
   3.115 +@@ -473,7 +473,7 @@
   3.116 + /* The name of the dynamic interpreter.  This is put in the .interp
   3.117 +    section.  */
   3.118 + 
   3.119 +-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
   3.120 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   3.121 + 
   3.122 + /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
   3.123 +    copying dynamic variables from a shared lib into an app's dynbss
   3.124 +diff -uNr binutils-2.15-pristine/bfd/elf-m10300.c binutils-2.15/bfd/elf-m10300.c
   3.125 +--- binutils-2.15-pristine/bfd/elf-m10300.c	2004-05-17 12:35:57.000000000 -0700
   3.126 ++++ binutils-2.15/bfd/elf-m10300.c	2004-07-19 16:49:59.000000000 -0700
   3.127 +@@ -4026,7 +4026,7 @@
   3.128 + /* The name of the dynamic interpreter.  This is put in the .interp
   3.129 +    section.  */
   3.130 + 
   3.131 +-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
   3.132 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   3.133 + 
   3.134 + /* Create dynamic sections when linking against a dynamic object.  */
   3.135 + 
   3.136 +diff -uNr binutils-2.15-pristine/bfd/elfxx-ia64.c binutils-2.15/bfd/elfxx-ia64.c
   3.137 +--- binutils-2.15-pristine/bfd/elfxx-ia64.c	2004-05-17 12:36:02.000000000 -0700
   3.138 ++++ binutils-2.15/bfd/elfxx-ia64.c	2004-07-19 16:49:59.000000000 -0700
   3.139 +@@ -643,7 +643,7 @@
   3.140 +   0x60, 0x00, 0x80, 0x00               /*               br.few b6;;        */
   3.141 + };
   3.142 + 
   3.143 +-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
   3.144 ++#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
   3.145 + 
   3.146 + static const bfd_byte oor_brl[16] =
   3.147 + {
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/patches/binutils/2.15/110-uclibc-conf.patch	Mon Jul 28 21:32:33 2008 +0000
     4.3 @@ -0,0 +1,692 @@
     4.4 +diff -urN binutils-2.15-dist/bfd/config.bfd binutils-2.15/bfd/config.bfd
     4.5 +--- binutils-2.15-dist/bfd/config.bfd	2004-05-17 14:35:56.000000000 -0500
     4.6 ++++ binutils-2.15/bfd/config.bfd	2004-08-04 12:01:44.000000000 -0500
     4.7 +@@ -126,7 +126,7 @@
     4.8 +     targ_defvec=ecoffalpha_little_vec
     4.9 +     targ_selvecs=bfd_elf64_alpha_vec
    4.10 +     ;;
    4.11 +-  alpha*-*-linux-gnu* | alpha*-*-elf*)
    4.12 ++  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*)
    4.13 +     targ_defvec=bfd_elf64_alpha_vec
    4.14 +     targ_selvecs=ecoffalpha_little_vec
    4.15 +     ;;
    4.16 +@@ -136,7 +136,7 @@
    4.17 +   alpha*-*-*)
    4.18 +     targ_defvec=ecoffalpha_little_vec
    4.19 +     ;;
    4.20 +-  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
    4.21 ++  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
    4.22 +     targ_defvec=bfd_elf64_ia64_little_vec
    4.23 +     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
    4.24 +     ;;
    4.25 +@@ -213,7 +213,7 @@
    4.26 +     targ_defvec=bfd_elf32_littlearm_vec
    4.27 +     targ_selvecs=bfd_elf32_bigarm_vec
    4.28 +     ;;
    4.29 +-  armeb-*-elf | arm*b-*-linux-gnu*)
    4.30 ++  armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*)
    4.31 +     targ_defvec=bfd_elf32_bigarm_vec
    4.32 +     targ_selvecs=bfd_elf32_littlearm_vec
    4.33 +     ;;
    4.34 +@@ -221,7 +221,7 @@
    4.35 +     targ_defvec=bfd_elf32_littlearm_vec
    4.36 +     targ_selvecs=bfd_elf32_bigarm_vec
    4.37 +     ;;
    4.38 +-  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
    4.39 ++  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \
    4.40 +   arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
    4.41 +     targ_defvec=bfd_elf32_littlearm_vec
    4.42 +     targ_selvecs=bfd_elf32_bigarm_vec
    4.43 +@@ -360,7 +360,7 @@
    4.44 +     ;;
    4.45 + 
    4.46 + #ifdef BFD64
    4.47 +-  hppa*64*-*-linux-gnu*)
    4.48 ++  hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)
    4.49 +     targ_defvec=bfd_elf64_hppa_linux_vec
    4.50 +     targ_selvecs=bfd_elf64_hppa_vec
    4.51 +     ;;
    4.52 +@@ -371,7 +371,7 @@
    4.53 +     ;;
    4.54 + #endif
    4.55 + 
    4.56 +-  hppa*-*-linux-gnu* | hppa*-*-netbsd*)
    4.57 ++  hppa*-*-linux-gnu* | hppa*-*-linux-uclibc* | hppa*-*-netbsd*)
    4.58 +     targ_defvec=bfd_elf32_hppa_linux_vec
    4.59 +     targ_selvecs=bfd_elf32_hppa_vec
    4.60 +     ;;
    4.61 +@@ -494,7 +494,7 @@
    4.62 +     targ_selvecs=bfd_elf32_i386_vec
    4.63 +     targ_underscore=yes
    4.64 +     ;;
    4.65 +-  i[3-7]86-*-linux-gnu*)
    4.66 ++  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
    4.67 +     targ_defvec=bfd_elf32_i386_vec
    4.68 +     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
    4.69 +     targ64_selvecs=bfd_elf64_x86_64_vec
    4.70 +@@ -508,7 +508,7 @@
    4.71 +     targ_defvec=bfd_elf64_x86_64_vec
    4.72 +     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
    4.73 +     ;;
    4.74 +-  x86_64-*-linux-gnu*)
    4.75 ++  x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*)
    4.76 +     targ_defvec=bfd_elf64_x86_64_vec
    4.77 +     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
    4.78 +     ;;
    4.79 +@@ -683,7 +683,7 @@
    4.80 +     targ_selvecs=bfd_elf32_m68k_vec
    4.81 +     targ_underscore=yes
    4.82 +     ;;
    4.83 +-  m68*-*-linux-gnu*)
    4.84 ++  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
    4.85 +     targ_defvec=bfd_elf32_m68k_vec
    4.86 +     targ_selvecs=m68klinux_vec
    4.87 +     ;;
    4.88 +@@ -955,7 +955,8 @@
    4.89 +     ;;
    4.90 + #endif
    4.91 +   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
    4.92 +-  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
    4.93 ++  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \
    4.94 ++  powerpc-*-rtems* | \
    4.95 +   powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
    4.96 +     targ_defvec=bfd_elf32_powerpc_vec
    4.97 +     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
    4.98 +@@ -987,8 +988,8 @@
    4.99 +     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
   4.100 +     ;;
   4.101 +   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
   4.102 +-  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
   4.103 +-  powerpcle-*-rtems*)
   4.104 ++  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\
   4.105 ++  powerpcle-*-vxworks* | powerpcle-*-rtems*)
   4.106 +     targ_defvec=bfd_elf32_powerpcle_vec
   4.107 +     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
   4.108 +     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
   4.109 +@@ -1149,7 +1150,7 @@
   4.110 +     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
   4.111 +     targ_underscore=yes
   4.112 +     ;;
   4.113 +-  sparc-*-linux-gnu*)
   4.114 ++  sparc-*-linux-gnu* | sparc-*-linux-uclibc*)
   4.115 +     targ_defvec=bfd_elf32_sparc_vec
   4.116 +     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
   4.117 +     ;;
   4.118 +@@ -1196,7 +1197,7 @@
   4.119 +     targ_defvec=sunos_big_vec
   4.120 +     targ_underscore=yes
   4.121 +     ;;
   4.122 +-  sparc64-*-linux-gnu*)
   4.123 ++  sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)
   4.124 +     targ_defvec=bfd_elf64_sparc_vec
   4.125 +     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
   4.126 +     ;;
   4.127 +@@ -1265,7 +1266,7 @@
   4.128 +     targ_underscore=yes
   4.129 +     ;;
   4.130 + 
   4.131 +-  vax-*-linux-gnu*)
   4.132 ++  vax-*-linux-gnu* | vax-*-linux-uclibc*)
   4.133 +     targ_defvec=bfd_elf32_vax_vec
   4.134 +     ;;
   4.135 + 
   4.136 +diff -urN binutils-2.15-dist/bfd/configure binutils-2.15/bfd/configure
   4.137 +--- binutils-2.15-dist/bfd/configure	2004-05-17 14:35:57.000000000 -0500
   4.138 ++++ binutils-2.15/bfd/configure	2004-08-04 12:01:44.000000000 -0500
   4.139 +@@ -1699,6 +1699,11 @@
   4.140 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.141 +   ;;
   4.142 + 
   4.143 ++linux-uclibc*)
   4.144 ++  lt_cv_deplibs_check_method=pass_all
   4.145 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.146 ++  ;;
   4.147 ++
   4.148 + netbsd*)
   4.149 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.150 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   4.151 +@@ -5278,7 +5283,7 @@
   4.152 +   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
   4.153 + 	COREFILE=''
   4.154 + 	;;
   4.155 +-  alpha*-*-linux-gnu*)
   4.156 ++  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
   4.157 + 	COREFILE=trad-core.lo
   4.158 + 	TRAD_HEADER='"hosts/alphalinux.h"'
   4.159 + 	;;
   4.160 +@@ -5338,7 +5343,7 @@
   4.161 + 	COREFILE=trad-core.lo
   4.162 + 	TRAD_HEADER='"hosts/i386mach3.h"'
   4.163 + 	;;
   4.164 +-  i[3-7]86-*-linux-gnu*)
   4.165 ++  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
   4.166 + 	COREFILE=trad-core.lo
   4.167 + 	TRAD_HEADER='"hosts/i386linux.h"'
   4.168 + 	;;
   4.169 +@@ -5376,7 +5381,7 @@
   4.170 + 	COREFILE=trad-core.lo
   4.171 + 	TRAD_HEADER='"hosts/hp300bsd.h"'
   4.172 + 	;;
   4.173 +-  m68*-*-linux-gnu*)
   4.174 ++  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
   4.175 + 	COREFILE=trad-core.lo
   4.176 + 	TRAD_HEADER='"hosts/m68klinux.h"'
   4.177 + 	;;
   4.178 +@@ -5477,7 +5482,7 @@
   4.179 + 	COREFILE=trad-core.lo
   4.180 + 	TRAD_HEADER='"hosts/vaxult2.h"'
   4.181 + 	;;
   4.182 +-  vax-*-linux-gnu*)
   4.183 ++  vax-*-linux-gnu* | vax-*-linux-uclibc*)
   4.184 + 	COREFILE=trad-core.lo
   4.185 + 	TRAD_HEADER='"hosts/vaxlinux.h"'
   4.186 + 	;;
   4.187 +diff -urN binutils-2.15-dist/bfd/configure.in binutils-2.15/bfd/configure.in
   4.188 +--- binutils-2.15-dist/bfd/configure.in	2004-05-17 14:35:57.000000000 -0500
   4.189 ++++ binutils-2.15/bfd/configure.in	2004-08-04 12:01:44.000000000 -0500
   4.190 +@@ -178,7 +178,7 @@
   4.191 +   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
   4.192 + 	COREFILE=''
   4.193 + 	;;
   4.194 +-  alpha*-*-linux-gnu*)
   4.195 ++  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
   4.196 + 	COREFILE=trad-core.lo
   4.197 + 	TRAD_HEADER='"hosts/alphalinux.h"'
   4.198 + 	;;
   4.199 +@@ -259,7 +259,7 @@
   4.200 + 	TRAD_HEADER='"hosts/i386mach3.h"'
   4.201 + 	;;
   4.202 + changequote(,)dnl
   4.203 +-  i[3-7]86-*-linux-gnu*)
   4.204 ++  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
   4.205 + changequote([,])dnl
   4.206 + 	COREFILE=trad-core.lo
   4.207 + 	TRAD_HEADER='"hosts/i386linux.h"'
   4.208 +@@ -300,7 +300,7 @@
   4.209 + 	COREFILE=trad-core.lo
   4.210 + 	TRAD_HEADER='"hosts/hp300bsd.h"'
   4.211 + 	;;
   4.212 +-  m68*-*-linux-gnu*)
   4.213 ++  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
   4.214 + 	COREFILE=trad-core.lo
   4.215 + 	TRAD_HEADER='"hosts/m68klinux.h"'
   4.216 + 	;;
   4.217 +@@ -385,7 +385,7 @@
   4.218 + 	COREFILE=trad-core.lo
   4.219 + 	TRAD_HEADER='"hosts/vaxult2.h"'
   4.220 + 	;;
   4.221 +-  vax-*-linux-gnu*)
   4.222 ++  vax-*-linux-gnu* | vax-*-linux-uclibc*)
   4.223 + 	COREFILE=trad-core.lo
   4.224 + 	TRAD_HEADER='"hosts/vaxlinux.h"'
   4.225 + 	;;
   4.226 +diff -urN binutils-2.15-dist/binutils/configure binutils-2.15/binutils/configure
   4.227 +--- binutils-2.15-dist/binutils/configure	2004-01-02 11:08:04.000000000 -0600
   4.228 ++++ binutils-2.15/binutils/configure	2004-08-04 12:01:44.000000000 -0500
   4.229 +@@ -1585,6 +1585,11 @@
   4.230 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.231 +   ;;
   4.232 + 
   4.233 ++linux-uclibc*)
   4.234 ++  lt_cv_deplibs_check_method=pass_all
   4.235 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.236 ++  ;;
   4.237 ++
   4.238 + netbsd*)
   4.239 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.240 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   4.241 +diff -urN binutils-2.15-dist/configure binutils-2.15/configure
   4.242 +--- binutils-2.15-dist/configure	2004-05-17 14:36:20.000000000 -0500
   4.243 ++++ binutils-2.15/configure	2004-08-04 12:01:44.000000000 -0500
   4.244 +@@ -1288,6 +1288,18 @@
   4.245 +   i[3456789]86-*-freebsd* | i[3456789]86-*-kfreebsd*-gnu)
   4.246 +     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   4.247 +     ;;
   4.248 ++  i[3456789]86-*-linux-uclibc*)
   4.249 ++    # This section makes it possible to build newlib natively on linux.
   4.250 ++    # If we are using a cross compiler then don't configure newlib.
   4.251 ++    if test x${is_cross_compiler} != xno ; then
   4.252 ++      noconfigdirs="$noconfigdirs target-newlib"
   4.253 ++    fi
   4.254 ++    noconfigdirs="$noconfigdirs target-libgloss"
   4.255 ++    # If we are not using a cross compiler, do configure newlib.
   4.256 ++    # Note however, that newlib will only be configured in this situation
   4.257 ++    # if the --with-newlib option has been given, because otherwise
   4.258 ++    # 'target-newlib' will appear in skipdirs.
   4.259 ++    ;;
   4.260 +   i[3456789]86-*-linux*)
   4.261 +     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
   4.262 +     # not build java stuff by default.
   4.263 +diff -urN binutils-2.15-dist/configure.in binutils-2.15/configure.in
   4.264 +--- binutils-2.15-dist/configure.in	2004-05-17 14:40:54.000000000 -0500
   4.265 ++++ binutils-2.15/configure.in	2004-08-04 12:01:44.000000000 -0500
   4.266 +@@ -521,6 +521,18 @@
   4.267 +   i[[3456789]]86-*-freebsd* | i[[3456789]]86-*-kfreebsd*-gnu)
   4.268 +     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
   4.269 +     ;;
   4.270 ++  i[[3456789]]86-*-linux-uclibc*)
   4.271 ++    # This section makes it possible to build newlib natively on linux.
   4.272 ++    # If we are using a cross compiler then don't configure newlib.
   4.273 ++    if test x${is_cross_compiler} != xno ; then
   4.274 ++      noconfigdirs="$noconfigdirs target-newlib"
   4.275 ++    fi
   4.276 ++    noconfigdirs="$noconfigdirs target-libgloss"
   4.277 ++    # If we are not using a cross compiler, do configure newlib.
   4.278 ++    # Note however, that newlib will only be configured in this situation
   4.279 ++    # if the --with-newlib option has been given, because otherwise
   4.280 ++    # 'target-newlib' will appear in skipdirs.
   4.281 ++    ;;
   4.282 +   i[[3456789]]86-*-linux*)
   4.283 +     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
   4.284 +     # not build java stuff by default.
   4.285 +diff -urN binutils-2.15-dist/gas/configure binutils-2.15/gas/configure
   4.286 +--- binutils-2.15-dist/gas/configure	2004-05-17 14:36:07.000000000 -0500
   4.287 ++++ binutils-2.15/gas/configure	2004-08-04 12:07:50.000000000 -0500
   4.288 +@@ -3400,6 +3400,11 @@
   4.289 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.290 +   ;;
   4.291 + 
   4.292 ++linux-uclibc*)
   4.293 ++  lt_cv_deplibs_check_method=pass_all
   4.294 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.295 ++  ;;
   4.296 ++
   4.297 + netbsd*)
   4.298 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.299 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   4.300 +@@ -4224,6 +4229,7 @@
   4.301 +       alpha*-*-osf*)			fmt=ecoff ;;
   4.302 +       alpha*-*-linuxecoff*)		fmt=ecoff ;;
   4.303 +       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
   4.304 ++      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.305 +       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
   4.306 +       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
   4.307 + 
   4.308 +@@ -4240,6 +4246,7 @@
   4.309 +       arm*-*-conix*)			fmt=elf ;;
   4.310 +       arm-*-linux*aout*)		fmt=aout em=linux ;;
   4.311 +       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
   4.312 ++      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
   4.313 +       arm*-*-uclinux*)			fmt=elf  em=linux ;;
   4.314 +       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
   4.315 +       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
   4.316 +@@ -4253,6 +4260,7 @@
   4.317 +       avr-*-*)				fmt=elf ;;
   4.318 + 
   4.319 +       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
   4.320 ++      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
   4.321 +       cris-*-*)				fmt=multi bfd_gas=yes ;;
   4.322 + 
   4.323 +       d10v-*-*)				fmt=elf ;;
   4.324 +@@ -4310,7 +4318,9 @@
   4.325 +       i386-*-linux*oldld)		fmt=aout em=linux ;;
   4.326 +       i386-*-linux*coff*)		fmt=coff em=linux ;;
   4.327 +       i386-*-linux-gnu*)		fmt=elf em=linux ;;
   4.328 ++      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.329 +       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
   4.330 ++      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.331 +       i386-*-lynxos*)			fmt=coff em=lynx ;;
   4.332 +       i386-*-sysv[45]*)			fmt=elf ;;
   4.333 +       i386-*-solaris*)			fmt=elf ;;
   4.334 +@@ -4370,6 +4380,7 @@
   4.335 +       ia64-*-elf*)			fmt=elf ;;
   4.336 +       ia64-*-aix*)			fmt=elf em=ia64aix ;;
   4.337 +       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
   4.338 ++      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.339 +       ia64-*-hpux*)			fmt=elf em=hpux ;;
   4.340 +       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
   4.341 + 
   4.342 +@@ -4397,6 +4408,7 @@
   4.343 +       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
   4.344 +       m68k-*-linux*aout*)		fmt=aout em=linux ;;
   4.345 +       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
   4.346 ++      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.347 +       m68k-*-uclinux*)			fmt=elf ;;
   4.348 +       m68k-*-gnu*)			fmt=elf ;;
   4.349 +       m68k-*-lynxos*)			fmt=coff em=lynx ;;
   4.350 +@@ -4459,6 +4471,7 @@
   4.351 +       ppc-*-beos*)			fmt=coff ;;
   4.352 +       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
   4.353 +       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
   4.354 ++      ppc-*-linux-uclibc* | \
   4.355 +       ppc-*-linux-gnu*)			fmt=elf em=linux
   4.356 + 	    case "$endian" in
   4.357 + 		big)  ;;
   4.358 +@@ -4486,7 +4499,9 @@
   4.359 +       ppc-*-kaos*)			fmt=elf ;;
   4.360 + 
   4.361 +       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
   4.362 ++      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.363 +       s390-*-linux-gnu*)		fmt=elf em=linux ;;
   4.364 ++      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.365 + 
   4.366 +       sh*-*-linux*)			fmt=elf em=linux
   4.367 + 	    case ${cpu} in
   4.368 +@@ -4519,6 +4534,7 @@
   4.369 +       sparc-*-coff)			fmt=coff ;;
   4.370 +       sparc-*-linux*aout*)		fmt=aout em=linux ;;
   4.371 +       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
   4.372 ++      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.373 +       sparc-*-lynxos*)			fmt=coff em=lynx ;;
   4.374 +       sparc-fujitsu-none)		fmt=aout ;;
   4.375 +       sparc-*-elf)			fmt=elf ;;
   4.376 +diff -urN binutils-2.15-dist/gas/configure.in binutils-2.15/gas/configure.in
   4.377 +--- binutils-2.15-dist/gas/configure.in	2004-05-17 14:36:07.000000000 -0500
   4.378 ++++ binutils-2.15/gas/configure.in	2004-08-04 12:07:21.000000000 -0500
   4.379 +@@ -194,6 +194,7 @@
   4.380 +       alpha*-*-osf*)			fmt=ecoff ;;
   4.381 +       alpha*-*-linuxecoff*)		fmt=ecoff ;;
   4.382 +       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
   4.383 ++      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.384 +       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
   4.385 +       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
   4.386 + 
   4.387 +@@ -210,6 +211,7 @@
   4.388 +       arm*-*-conix*)			fmt=elf ;;
   4.389 +       arm-*-linux*aout*)		fmt=aout em=linux ;;
   4.390 +       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
   4.391 ++      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
   4.392 +       arm*-*-uclinux*)			fmt=elf  em=linux ;;
   4.393 +       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
   4.394 +       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
   4.395 +@@ -223,6 +225,7 @@
   4.396 +       avr-*-*)				fmt=elf ;;
   4.397 + 
   4.398 +       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
   4.399 ++      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
   4.400 +       cris-*-*)				fmt=multi bfd_gas=yes ;;
   4.401 + 
   4.402 +       d10v-*-*)				fmt=elf ;;
   4.403 +@@ -280,7 +283,9 @@
   4.404 +       i386-*-linux*oldld)		fmt=aout em=linux ;;
   4.405 +       i386-*-linux*coff*)		fmt=coff em=linux ;;
   4.406 +       i386-*-linux-gnu*)		fmt=elf em=linux ;;
   4.407 ++      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.408 +       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
   4.409 ++      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.410 +       i386-*-lynxos*)			fmt=coff em=lynx ;;
   4.411 + changequote(,)dnl
   4.412 +       i386-*-sysv[45]*)			fmt=elf ;;
   4.413 +@@ -333,6 +338,7 @@
   4.414 +       ia64-*-elf*)			fmt=elf ;;
   4.415 +       ia64-*-aix*)			fmt=elf em=ia64aix ;;
   4.416 +       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
   4.417 ++      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.418 +       ia64-*-hpux*)			fmt=elf em=hpux ;;
   4.419 +       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
   4.420 + 
   4.421 +@@ -360,6 +366,7 @@
   4.422 +       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
   4.423 +       m68k-*-linux*aout*)		fmt=aout em=linux ;;
   4.424 +       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
   4.425 ++      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.426 +       m68k-*-uclinux*)			fmt=elf ;;
   4.427 +       m68k-*-gnu*)			fmt=elf ;;
   4.428 +       m68k-*-lynxos*)			fmt=coff em=lynx ;;
   4.429 +@@ -419,6 +426,7 @@
   4.430 +       ppc-*-beos*)			fmt=coff ;;
   4.431 +       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
   4.432 +       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
   4.433 ++      ppc-*-linux-uclibc* | \
   4.434 +       ppc-*-linux-gnu*)			fmt=elf em=linux
   4.435 + 	    case "$endian" in
   4.436 + 		big)  ;;
   4.437 +@@ -439,7 +447,9 @@
   4.438 +       ppc-*-kaos*)			fmt=elf ;;
   4.439 + 
   4.440 +       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
   4.441 ++      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.442 +       s390-*-linux-gnu*)		fmt=elf em=linux ;;
   4.443 ++      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.444 + 
   4.445 +       sh*-*-linux*)			fmt=elf em=linux
   4.446 + 	    case ${cpu} in
   4.447 +@@ -472,6 +482,7 @@
   4.448 +       sparc-*-coff)			fmt=coff ;;
   4.449 +       sparc-*-linux*aout*)		fmt=aout em=linux ;;
   4.450 +       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
   4.451 ++      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
   4.452 +       sparc-*-lynxos*)			fmt=coff em=lynx ;;
   4.453 +       sparc-fujitsu-none)		fmt=aout ;;
   4.454 +       sparc-*-elf)			fmt=elf ;;
   4.455 +diff -urN binutils-2.15-dist/gprof/configure binutils-2.15/gprof/configure
   4.456 +--- binutils-2.15-dist/gprof/configure	2003-08-26 12:19:19.000000000 -0500
   4.457 ++++ binutils-2.15/gprof/configure	2004-08-04 12:01:45.000000000 -0500
   4.458 +@@ -1581,6 +1581,11 @@
   4.459 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.460 +   ;;
   4.461 + 
   4.462 ++linux-uclibc*)
   4.463 ++  lt_cv_deplibs_check_method=pass_all
   4.464 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.465 ++  ;;
   4.466 ++
   4.467 + netbsd*)
   4.468 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.469 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   4.470 +diff -urN binutils-2.15-dist/ld/configure binutils-2.15/ld/configure
   4.471 +--- binutils-2.15-dist/ld/configure	2003-04-24 07:36:07.000000000 -0500
   4.472 ++++ binutils-2.15/ld/configure	2004-08-04 12:01:45.000000000 -0500
   4.473 +@@ -1589,6 +1589,11 @@
   4.474 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.475 +   ;;
   4.476 + 
   4.477 ++linux-uclibc*)
   4.478 ++  lt_cv_deplibs_check_method=pass_all
   4.479 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.480 ++  ;;
   4.481 ++
   4.482 + netbsd*)
   4.483 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.484 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
   4.485 +diff -urN binutils-2.15-dist/ld/configure.tgt binutils-2.15/ld/configure.tgt
   4.486 +--- binutils-2.15-dist/ld/configure.tgt	2004-05-17 14:36:15.000000000 -0500
   4.487 ++++ binutils-2.15/ld/configure.tgt	2004-08-04 12:01:45.000000000 -0500
   4.488 +@@ -30,6 +30,7 @@
   4.489 + 			targ_extra_emuls="criself crislinux"
   4.490 + 			targ_extra_libpath=$targ_extra_emuls ;;
   4.491 + cris-*-linux-gnu*)	targ_emul=crislinux ;;
   4.492 ++cris-*-linux-uclibc*)	targ_emul=crislinux ;;
   4.493 + cris-*-*)		targ_emul=criself
   4.494 + 			targ_extra_emuls="crisaout crislinux"
   4.495 + 			targ_extra_libpath=$targ_extra_emuls ;;
   4.496 +@@ -59,14 +60,16 @@
   4.497 + 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
   4.498 + 			tdir_sun4=sparc-sun-sunos4
   4.499 + 			;;
   4.500 +-sparc64-*-linux-gnu*)	targ_emul=elf64_sparc
   4.501 ++sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)	 \
   4.502 ++			targ_emul=elf64_sparc
   4.503 + 			targ_extra_emuls="elf32_sparc sparclinux sun4"
   4.504 + 			targ_extra_libpath=elf32_sparc
   4.505 + 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
   4.506 + 			tdir_sparclinux=${tdir_elf32_sparc}aout
   4.507 + 			tdir_sun4=sparc-sun-sunos4
   4.508 + 			;;
   4.509 +-sparc*-*-linux-gnu*)	targ_emul=elf32_sparc
   4.510 ++sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \
   4.511 ++			targ_emul=elf32_sparc
   4.512 + 			targ_extra_emuls="sparclinux elf64_sparc sun4"
   4.513 + 			targ_extra_libpath=elf64_sparc
   4.514 + 			tdir_sparclinux=${targ_alias}aout
   4.515 +@@ -118,7 +121,9 @@
   4.516 + m32r*le-*-elf*)         targ_emul=m32rlelf ;;
   4.517 + m32r*-*-elf*)           targ_emul=m32relf ;;
   4.518 + m32r*le-*-linux-gnu*)   targ_emul=m32rlelf_linux ;;
   4.519 ++m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;;
   4.520 + m32r*-*-linux-gnu*)     targ_emul=m32relf_linux ;;
   4.521 ++m32r*-*-linux-uclibc*)  targ_emul=m32relf_linux ;;
   4.522 + m68hc11-*-*|m6811-*-*)	targ_emul=m68hc11elf 
   4.523 + 			targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
   4.524 + m68hc12-*-*|m6812-*-*)	targ_emul=m68hc12elf 
   4.525 +@@ -128,7 +133,7 @@
   4.526 + m68*-ericsson-ose)	targ_emul=sun3 ;;
   4.527 + m68*-apple-aux*)	targ_emul=m68kaux ;;
   4.528 + *-tandem-none)		targ_emul=st2000 ;;
   4.529 +-i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
   4.530 ++i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;;
   4.531 + i[3-7]86-*-nto-qnx*)	targ_emul=i386nto ;;
   4.532 + i[3-7]86-*-vsta)	targ_emul=vsta ;;
   4.533 + i[3-7]86-go32-rtems*)	targ_emul=i386go32 ;;
   4.534 +@@ -152,14 +157,16 @@
   4.535 + 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
   4.536 + 			;;
   4.537 + i[3-7]86-*-linux*oldld)	targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
   4.538 +-i[3-7]86-*-linux-gnu*)	targ_emul=elf_i386
   4.539 ++i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \
   4.540 ++			targ_emul=elf_i386
   4.541 + 			targ_extra_emuls=i386linux
   4.542 + 			if test x${want64} = xtrue; then
   4.543 + 			  targ_extra_emuls="$targ_extra_emuls elf_x86_64"
   4.544 + 			fi
   4.545 + 			tdir_i386linux=${targ_alias}aout
   4.546 + 			;;
   4.547 +-x86_64-*-linux-gnu*)	targ_emul=elf_x86_64
   4.548 ++x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \
   4.549 ++			targ_emul=elf_x86_64
   4.550 + 			targ_extra_emuls="elf_i386 i386linux"
   4.551 + 			targ_extra_libpath=elf_i386
   4.552 + 			tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
   4.553 +@@ -259,10 +266,13 @@
   4.554 + arm9e-*-elf)		targ_emul=armelf ;;
   4.555 + arm-*-oabi)		targ_emul=armelf_oabi ;;
   4.556 + arm*b-*-linux-gnu*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
   4.557 ++arm*b-*-linux-uclibc*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
   4.558 + arm*-*-linux-gnu*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   4.559 ++arm*-*-linux-uclibc*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   4.560 + arm*-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   4.561 + arm*-*-conix*)		targ_emul=armelf ;;
   4.562 +-thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   4.563 ++thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \
   4.564 ++			targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
   4.565 + strongarm-*-coff)	targ_emul=armcoff ;;
   4.566 + strongarm-*-elf)	targ_emul=armelf ;;
   4.567 + strongarm-*-kaos*)	targ_emul=armelf ;;
   4.568 +@@ -364,7 +374,8 @@
   4.569 + 			targ_extra_emuls=m68kelf
   4.570 + 			tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
   4.571 + 			;;
   4.572 +-m68k-*-linux-gnu*)	targ_emul=m68kelf
   4.573 ++m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \
   4.574 ++			targ_emul=m68kelf
   4.575 + 			targ_extra_emuls=m68klinux
   4.576 + 			tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
   4.577 + 			;;
   4.578 +@@ -381,9 +392,9 @@
   4.579 + m68*-*-psos*)		targ_emul=m68kpsos ;;
   4.580 + m68*-*-rtemscoff*)	targ_emul=m68kcoff ;;
   4.581 + m68*-*-rtems*)		targ_emul=m68kelf ;;
   4.582 +-hppa*64*-*-linux-gnu*)	targ_emul=hppa64linux ;;
   4.583 ++hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)  targ_emul=hppa64linux ;;
   4.584 + hppa*64*-*)		targ_emul=elf64hppa ;;
   4.585 +-hppa*-*-linux-gnu*)	targ_emul=hppalinux ;;
   4.586 ++hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*)	targ_emul=hppalinux ;;
   4.587 + hppa*-*-*elf*)		targ_emul=hppaelf ;;
   4.588 + hppa*-*-lites*)		targ_emul=hppaelf ;;
   4.589 + hppa*-*-netbsd*)	targ_emul=hppanbsd ;;
   4.590 +@@ -396,6 +407,7 @@
   4.591 + 			targ_emul=vaxnbsd
   4.592 + 			targ_extra_emuls=elf32vax ;;
   4.593 + vax-*-linux-gnu*)	targ_emul=elf32vax ;;
   4.594 ++vax-*-linux-uclibc*)	targ_emul=elf32vax ;;
   4.595 + mips*-*-pe)		targ_emul=mipspe ;
   4.596 + 			targ_extra_ofiles="deffilep.o pe-dll.o" ;;
   4.597 + mips*-dec-ultrix*)	targ_emul=mipslit ;;
   4.598 +@@ -429,16 +441,16 @@
   4.599 + mips*-*-vxworks*)	targ_emul=elf32ebmip
   4.600 + 		        targ_extra_emuls="elf32elmip" ;;
   4.601 + mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
   4.602 +-mips64*el-*-linux-gnu*)	targ_emul=elf32ltsmipn32
   4.603 ++mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*)	targ_emul=elf32ltsmipn32
   4.604 + 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
   4.605 + 			;;
   4.606 +-mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
   4.607 ++mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*)	targ_emul=elf32btsmipn32
   4.608 + 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
   4.609 + 			;;
   4.610 +-mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
   4.611 ++mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*)	targ_emul=elf32ltsmip
   4.612 + 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
   4.613 + 			;;
   4.614 +-mips*-*-linux-gnu*)	targ_emul=elf32btsmip
   4.615 ++mips*-*-linux-gnu* | mips*-*-linux-uclibc*)	targ_emul=elf32btsmip
   4.616 + 			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
   4.617 + 			;;
   4.618 + mips*-*-lnews*)		targ_emul=mipslnews ;;
   4.619 +@@ -461,6 +473,10 @@
   4.620 + alpha*-*-linux-gnu*)	targ_emul=elf64alpha targ_extra_emuls=alpha
   4.621 + 			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
   4.622 + 			;;
   4.623 ++alpha*-*-linux-uclibc*)	targ_emul=elf64alpha targ_extra_emuls=alpha
   4.624 ++			# The following needs to be checked...
   4.625 ++			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
   4.626 ++			;;
   4.627 + alpha*-*-osf*)		targ_emul=alpha ;;
   4.628 + alpha*-*-gnu*)		targ_emul=elf64alpha ;;
   4.629 + alpha*-*-netware*)	targ_emul=alpha ;;
   4.630 +diff -urN binutils-2.15-dist/libtool.m4 binutils-2.15/libtool.m4
   4.631 +--- binutils-2.15-dist/libtool.m4	2003-04-10 22:58:39.000000000 -0500
   4.632 ++++ binutils-2.15/libtool.m4	2004-08-04 12:01:45.000000000 -0500
   4.633 +@@ -645,6 +645,11 @@
   4.634 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.635 +   ;;
   4.636 + 
   4.637 ++linux-uclibc*)
   4.638 ++  lt_cv_deplibs_check_method=pass_all
   4.639 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.640 ++  ;;
   4.641 ++
   4.642 + netbsd*)
   4.643 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.644 +     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
   4.645 +diff -urN binutils-2.15-dist/ltconfig binutils-2.15/ltconfig
   4.646 +--- binutils-2.15-dist/ltconfig	2003-10-03 23:54:47.000000000 -0500
   4.647 ++++ binutils-2.15/ltconfig	2004-08-04 12:01:45.000000000 -0500
   4.648 +@@ -603,6 +603,7 @@
   4.649 + # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
   4.650 + case $host_os in
   4.651 + linux-gnu*) ;;
   4.652 ++linux-uclibc*) ;;
   4.653 + linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
   4.654 + esac
   4.655 + 
   4.656 +@@ -1259,6 +1260,24 @@
   4.657 +   dynamic_linker='GNU/Linux ld.so'
   4.658 +   ;;
   4.659 + 
   4.660 ++linux-uclibc*)
   4.661 ++  version_type=linux
   4.662 ++  need_lib_prefix=no
   4.663 ++  need_version=no
   4.664 ++  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
   4.665 ++  soname_spec='${libname}${release}.so$major'
   4.666 ++  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   4.667 ++  shlibpath_var=LD_LIBRARY_PATH
   4.668 ++  shlibpath_overrides_runpath=no
   4.669 ++  # This implies no fast_install, which is unacceptable.
   4.670 ++  # Some rework will be needed to allow for fast_install
   4.671 ++  # before this can be enabled.
   4.672 ++  # Note: copied from linux-gnu, and may not be appropriate.
   4.673 ++  hardcode_into_libs=yes
   4.674 ++  # Assume using the uClibc dynamic linker.
   4.675 ++  dynamic_linker="uClibc ld.so"
   4.676 ++  ;;
   4.677 ++
   4.678 + netbsd*)
   4.679 +   need_lib_prefix=no
   4.680 +   need_version=no
   4.681 +diff -urN binutils-2.15-dist/opcodes/configure binutils-2.15/opcodes/configure
   4.682 +--- binutils-2.15-dist/opcodes/configure	2003-08-05 04:39:31.000000000 -0500
   4.683 ++++ binutils-2.15/opcodes/configure	2004-08-04 12:01:45.000000000 -0500
   4.684 +@@ -1700,6 +1700,11 @@
   4.685 +   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
   4.686 +   ;;
   4.687 + 
   4.688 ++linux-uclibc*)
   4.689 ++  lt_cv_deplibs_check_method=pass_all
   4.690 ++  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
   4.691 ++  ;;
   4.692 ++
   4.693 + netbsd*)
   4.694 +   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
   4.695 +     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/patches/binutils/2.15/120-cflags.patch	Mon Jul 28 21:32:33 2008 +0000
     5.3 @@ -0,0 +1,32 @@
     5.4 +diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am
     5.5 +--- binutils-2.14.90.0.6/bfd/doc/Makefile.am	2003-07-23 10:08:09.000000000 -0500
     5.6 ++++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am	2004-03-01 16:05:16.000000000 -0600
     5.7 +@@ -55,10 +55,10 @@
     5.8 + MKDOC = chew$(EXEEXT_FOR_BUILD)
     5.9 + 
    5.10 + $(MKDOC): chew.o
    5.11 +-	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
    5.12 ++	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
    5.13 + 
    5.14 + chew.o: chew.c
    5.15 +-	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
    5.16 ++	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
    5.17 + 
    5.18 + protos: libbfd.h libcoff.h bfd.h
    5.19 + 
    5.20 +diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in
    5.21 +--- binutils-2.14.90.0.6/bfd/doc/Makefile.in	2003-07-23 10:08:09.000000000 -0500
    5.22 ++++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in	2004-03-01 16:05:03.000000000 -0600
    5.23 +@@ -469,10 +469,10 @@
    5.24 + 
    5.25 + 
    5.26 + $(MKDOC): chew.o
    5.27 +-	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
    5.28 ++	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
    5.29 + 
    5.30 + chew.o: chew.c
    5.31 +-	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
    5.32 ++	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
    5.33 + 
    5.34 + protos: libbfd.h libcoff.h bfd.h
    5.35 + 
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/patches/binutils/2.15/130-mips-ELF_MAXPAGESIZE-4K.patch	Mon Jul 28 21:32:33 2008 +0000
     6.3 @@ -0,0 +1,26 @@
     6.4 +--- binutils/bfd/elf32-mips.c~
     6.5 ++++ binutils/bfd/elf32-mips.c
     6.6 +@@ -1611,7 +1611,9 @@
     6.7 + 
     6.8 + /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
     6.9 +    page sizes of up to that limit, so we need to respect it.  */
    6.10 +-#define ELF_MAXPAGESIZE			0x10000
    6.11 ++/*#define ELF_MAXPAGESIZE			0x10000*/
    6.12 ++/* Use 4K to shrink the elf header.  NOT for general use! */
    6.13 ++#define ELF_MAXPAGESIZE			0x1000
    6.14 + #define elf32_bed			elf32_tradbed
    6.15 + 
    6.16 + /* Include the target file again for this target.  */
    6.17 +--- binutils/bfd/elfn32-mips.c~
    6.18 ++++ binutils/bfd/elfn32-mips.c
    6.19 +@@ -1976,7 +1976,9 @@
    6.20 + 
    6.21 + /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
    6.22 +    page sizes of up to that limit, so we need to respect it.  */
    6.23 +-#define ELF_MAXPAGESIZE			0x10000
    6.24 ++/*#define ELF_MAXPAGESIZE			0x10000*/
    6.25 ++/* Use 4K to shrink the elf header.  NOT for general use! */
    6.26 ++#define ELF_MAXPAGESIZE			0x1000
    6.27 + #define elf32_bed			elf32_tradbed
    6.28 + 
    6.29 + /* Include the target file again for this target.  */
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/patches/binutils/2.15/140-arm-textrel.patch	Mon Jul 28 21:32:33 2008 +0000
     7.3 @@ -0,0 +1,63 @@
     7.4 +http://sources.redhat.com/ml/binutils/2004-06/msg00010.html
     7.5 +--- binutils-2.15.90.0.3-old/bfd/elf32-arm.h	2004-04-12 14:56:33.000000000 -0500
     7.6 ++++ binutils-2.15.90.0.3/bfd/elf32-arm.h	2004-09-03 06:56:40.000000000 -0500
     7.7 +@@ -87,6 +87,8 @@
     7.8 + #endif
     7.9 + static bfd_boolean allocate_dynrelocs 
    7.10 +   PARAMS ((struct elf_link_hash_entry *h, PTR inf));
    7.11 ++static bfd_boolean elf32_arm_readonly_dynrelocs
    7.12 ++  PARAMS ((struct elf_link_hash_entry *, PTR));
    7.13 + static bfd_boolean create_got_section 
    7.14 +   PARAMS ((bfd * dynobj, struct bfd_link_info * info));
    7.15 + static bfd_boolean elf32_arm_create_dynamic_sections 
    7.16 +@@ -3531,6 +3533,37 @@
    7.17 +   return TRUE;
    7.18 + }
    7.19 + 
    7.20 ++/* Find any dynamic relocs that apply to read-only sections.  */
    7.21 ++
    7.22 ++static bfd_boolean
    7.23 ++elf32_arm_readonly_dynrelocs (h, inf)
    7.24 ++     struct elf_link_hash_entry *h;
    7.25 ++     PTR inf;
    7.26 ++{
    7.27 ++  struct elf32_arm_link_hash_entry *eh;
    7.28 ++  struct elf32_arm_relocs_copied *p;
    7.29 ++
    7.30 ++  if (h->root.type == bfd_link_hash_warning)
    7.31 ++    h = (struct elf_link_hash_entry *) h->root.u.i.link;
    7.32 ++
    7.33 ++  eh = (struct elf32_arm_link_hash_entry *) h;
    7.34 ++  for (p = eh->relocs_copied; p != NULL; p = p->next)
    7.35 ++    {
    7.36 ++      asection *s = p->section;
    7.37 ++
    7.38 ++      if (s != NULL && (s->flags & SEC_READONLY) != 0)
    7.39 ++       {
    7.40 ++         struct bfd_link_info *info = (struct bfd_link_info *) inf;
    7.41 ++
    7.42 ++         info->flags |= DF_TEXTREL;
    7.43 ++
    7.44 ++         /* Not an error, just cut short the traversal.  */
    7.45 ++         return FALSE;
    7.46 ++       }
    7.47 ++    }
    7.48 ++  return TRUE;
    7.49 ++}
    7.50 ++
    7.51 + /* Set the sizes of the dynamic sections.  */
    7.52 + 
    7.53 + static bfd_boolean
    7.54 +@@ -3740,6 +3773,12 @@
    7.55 + 	    return FALSE;
    7.56 + 	}
    7.57 + 
    7.58 ++      /* If any dynamic relocs apply to a read-only section,
    7.59 ++         then we need a DT_TEXTREL entry.  */
    7.60 ++      if ((info->flags & DF_TEXTREL) == 0)
    7.61 ++        elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs,
    7.62 ++                                (PTR) info);
    7.63 ++
    7.64 +       if ((info->flags & DF_TEXTREL) != 0)
    7.65 + 	{
    7.66 + 	  if (!add_dynamic_entry (DT_TEXTREL, 0))
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/patches/binutils/2.15/150-bfd-hash-tweak.patch	Mon Jul 28 21:32:33 2008 +0000
     8.3 @@ -0,0 +1,24 @@
     8.4 +Signed-off-by: dank@kegel.com
     8.5 +
     8.6 +Raising the size of the hash table is a noticable win when linking 
     8.7 +at least one large app.  
     8.8 +
     8.9 +There was a patch,
    8.10 +http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
    8.11 +to do this dynamically.  No idea why that didn't make it in.
    8.12 +So this tiny change to raise the default size is just
    8.13 +a stopgap for now.
    8.14 +
    8.15 +
    8.16 +--- binutils-2.15/bfd/hash.c.old	2003-12-01 01:33:01.000000000 -0500
    8.17 ++++ binutils-2.15/bfd/hash.c	2006-03-01 16:26:26.701991000 -0500
    8.18 +@@ -295,7 +295,7 @@
    8.19 + */
    8.20 + 
    8.21 + /* The default number of entries to use when creating a hash table.  */
    8.22 +-#define DEFAULT_SIZE (4051)
    8.23 ++#define DEFAULT_SIZE (32749)
    8.24 + 
    8.25 + /* Create a new hash table, given a number of entries.  */
    8.26 + 
    8.27 +
     9.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.2 +++ b/patches/binutils/2.15/160-allow-gcc-4.0.patch	Mon Jul 28 21:32:33 2008 +0000
     9.3 @@ -0,0 +1,75 @@
     9.4 +Fix found here: http://www.freelists.org/archives/openbeos/11-2005/msg00090.html
     9.5 +
     9.6 +Fixes:
     9.7 +In file included from ./targ-cpu.h:1,
     9.8 +                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/obj-elf.h:42,
     9.9 +                 from ./obj-format.h:1,
    9.10 +                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/te-linux.h:4,
    9.11 +                 from ./targ-env.h:1,
    9.12 +                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/as.h:626,
    9.13 +                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/app.c:30:
    9.14 +/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/tc-i386.h:451: error: array type has incomplete element type
    9.15 +make[3]: *** [app.o] Error 1
    9.16 +make[3]: Leaving directory `/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-binutils/gas'
    9.17 +
    9.18 +when building binutils-2.15 with gcc-4.0
    9.19 +
    9.20 +
    9.21 +diff -ur binutils-2.15.old/gas/as.h binutils-2.15/gas/as.h
    9.22 +--- binutils-2.15.old/gas/as.h	2003-11-22 18:14:21.000000000 -0800
    9.23 ++++ binutils-2.15/gas/as.h	2006-02-14 22:05:35.000000000 -0800
    9.24 +@@ -605,7 +605,26 @@
    9.25 + struct expressionS;
    9.26 + struct fix;
    9.27 + typedef struct symbol symbolS;
    9.28 +-struct relax_type;
    9.29 ++
    9.30 ++/* JF moved this here from as.h under the theory that nobody except MACHINE.c
    9.31 ++   and write.c care about it anyway.  */
    9.32 ++/* [zooey]: the above no longer holds with gcc4, as it keeps bugging about
    9.33 ++            incomplete element types in arrays, if relax_type isn't defined
    9.34 ++            here. So I moved the definition back from tc.h to here. */
    9.35 ++struct relax_type
    9.36 ++{
    9.37 ++  /* Forward reach. Signed number. > 0.  */
    9.38 ++  long rlx_forward;
    9.39 ++  /* Backward reach. Signed number. < 0.  */
    9.40 ++  long rlx_backward;
    9.41 ++
    9.42 ++  /* Bytes length of this address.  */
    9.43 ++  unsigned char rlx_length;
    9.44 ++
    9.45 ++  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
    9.46 ++  relax_substateT rlx_more;
    9.47 ++};
    9.48 ++
    9.49 + typedef struct frag fragS;
    9.50 + 
    9.51 + #ifdef BFD_ASSEMBLER
    9.52 +diff -ur binutils-2.15.old/gas/tc.h binutils-2.15/gas/tc.h
    9.53 +--- binutils-2.15.old/gas/tc.h	2003-12-03 15:39:38.000000000 -0800
    9.54 ++++ binutils-2.15/gas/tc.h	2006-02-14 22:03:35.000000000 -0800
    9.55 +@@ -24,23 +24,6 @@
    9.56 + 
    9.57 + extern const pseudo_typeS md_pseudo_table[];
    9.58 + 
    9.59 +-/* JF moved this here from as.h under the theory that nobody except MACHINE.c
    9.60 +-   and write.c care about it anyway.  */
    9.61 +-
    9.62 +-struct relax_type
    9.63 +-{
    9.64 +-  /* Forward reach. Signed number. > 0.  */
    9.65 +-  long rlx_forward;
    9.66 +-  /* Backward reach. Signed number. < 0.  */
    9.67 +-  long rlx_backward;
    9.68 +-
    9.69 +-  /* Bytes length of this address.  */
    9.70 +-  unsigned char rlx_length;
    9.71 +-
    9.72 +-  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
    9.73 +-  relax_substateT rlx_more;
    9.74 +-};
    9.75 +-
    9.76 + typedef struct relax_type relax_typeS;
    9.77 + 
    9.78 + extern const int md_reloc_size;	/* Size of a relocation record */
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/patches/binutils/2.15/170-psignal.patch	Mon Jul 28 21:32:33 2008 +0000
    10.3 @@ -0,0 +1,40 @@
    10.4 +Make psignal prototype in libiberty match that in glibc.
    10.5 +
    10.6 +Fixes:
    10.7 +
    10.8 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
    10.9 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
   10.10 +/usr/include/signal.h:131: prototype declaration
   10.11 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
   10.12 +/usr/include/signal.h:131: prototype declaration
   10.13 +gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
   10.14 +mprotect... make[1]: *** [strsignal.o] Error 1
   10.15 +make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
   10.16 +make: *** [all-libiberty] Error 2
   10.17 +
   10.18 +when building on red hat 7.1
   10.19 +though it's a bit of a mystery why libiberty's psignal is being compiled at
   10.20 +all, since red hat 7.1's glibc supports psignal (hence the error message)
   10.21 +
   10.22 +--- binutils-2.15/libiberty/strsignal.c.old	2005-04-18 13:57:40.000000000 -0700
   10.23 ++++ binutils-2.15/libiberty/strsignal.c	2005-04-18 13:59:09.000000000 -0700
   10.24 +@@ -544,7 +544,7 @@
   10.25 + 
   10.26 + /*
   10.27 + 
   10.28 +-@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
   10.29 ++@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
   10.30 + 
   10.31 + Print @var{message} to the standard error, followed by a colon,
   10.32 + followed by the description of the signal specified by @var{signo},
   10.33 +@@ -557,9 +557,7 @@
   10.34 + #ifndef HAVE_PSIGNAL
   10.35 + 
   10.36 + void
   10.37 +-psignal (signo, message)
   10.38 +-  unsigned signo;
   10.39 +-  char *message;
   10.40 ++psignal (int signo, const char *message)
   10.41 + {
   10.42 +   if (signal_names == NULL)
   10.43 +     {
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/patches/binutils/2.15/180-solaris-qsort.patch	Mon Jul 28 21:32:33 2008 +0000
    11.3 @@ -0,0 +1,22 @@
    11.4 +See http://sources.redhat.com/ml/binutils/2004-06/msg00114.html
    11.5 +
    11.6 +--- src/bfd/elflink.c.org	2004-07-05 09:11:42.920597000 -0400
    11.7 ++++ src/bfd/elflink.c	2004-07-05 09:12:59.240847000 -0400
    11.8 +@@ -2700,7 +2700,7 @@
    11.9 +     return vdiff > 0 ? 1 : -1;
   11.10 +   else
   11.11 +     {
   11.12 +-      long sdiff = h1->root.u.def.section - h2->root.u.def.section;
   11.13 ++      long sdiff = h1->root.u.def.section->id - h2->root.u.def.section->id;
   11.14 +       if (sdiff != 0)
   11.15 + 	return sdiff > 0 ? 1 : -1;
   11.16 +     }
   11.17 +@@ -3954,7 +3954,7 @@
   11.18 + 		i = idx + 1;
   11.19 + 	      else
   11.20 + 		{
   11.21 +-		  long sdiff = slook - h->root.u.def.section;
   11.22 ++		  long sdiff = slook->id - h->root.u.def.section->id;
   11.23 + 		  if (sdiff < 0)
   11.24 + 		    j = idx;
   11.25 + 		  else if (sdiff > 0)
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/patches/binutils/2.15/190-vmx.patch	Mon Jul 28 21:32:33 2008 +0000
    12.3 @@ -0,0 +1,45 @@
    12.4 +Grabbed with
    12.5 +wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/opcodes/ppc-opc.c.diff?r1=1.70&r2=1.71&cvsroot=src'
    12.6 +See 
    12.7 +http://mail.gnu.org/archive/html/bug-binutils/2004-05/msg00071.html
    12.8 +and
    12.9 +http://sources.redhat.com/ml/binutils-cvs/2004-05/msg00111.html
   12.10 +
   12.11 +This fixes problems like
   12.12 +{standard input}: Assembler messages:
   12.13 +{standard input}:1: Error: Unrecognized opcode: `dssall' 
   12.14 +which show up in binutils-2.15 when building the Linux kernel,
   12.15 +or possibly failed compilations when building setjmp/longjmp in glibc.
   12.16 +
   12.17 +An alternative fix would be to pass -many to the assembler.
   12.18 +A patch to do that for glibc is at
   12.19 +wget 'http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2004-05&msgid=40B36E8C.9030609%40us.ibm.com'
   12.20 +Yet another, better, fix would be for gcc to generate assembly
   12.21 +that told the assembler which processor type to use.
   12.22 +Presumably the Linux kernel sources would need a fix, too.
   12.23 +Probably better to just fix binutils to accept sources that it used to.
   12.24 +
   12.25 +
   12.26 +===================================================================
   12.27 +RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
   12.28 +retrieving revision 1.70
   12.29 +retrieving revision 1.71
   12.30 +diff -u -r1.70 -r1.71
   12.31 +--- src/opcodes/ppc-opc.c	2004/05/05 13:43:36	1.70
   12.32 ++++ src/opcodes/ppc-opc.c	2004/05/19 05:11:48	1.71
   12.33 +@@ -1004,8 +1004,13 @@
   12.34 + 
   12.35 +   /* If only one bit of the FXM field is set, we can use the new form
   12.36 +      of the instruction, which is faster.  Unlike the Power4 branch hint
   12.37 +-     encoding, this is not backward compatible.  */
   12.38 +-  else if ((dialect & PPC_OPCODE_POWER4) != 0 && (value & -value) == value)
   12.39 ++     encoding, this is not backward compatible.  Do not generate the
   12.40 ++     new form unless -mpower4 has been given, or -many and the two
   12.41 ++     operand form of mfcr was used.  */
   12.42 ++  else if ((value & -value) == value
   12.43 ++	   && ((dialect & PPC_OPCODE_POWER4) != 0
   12.44 ++	       || ((dialect & PPC_OPCODE_ANY) != 0
   12.45 ++		   && (insn & (0x3ff << 1)) == 19 << 1)))
   12.46 +     insn |= 1 << 20;
   12.47 + 
   12.48 +   /* Any other value on mfcr is an error.  */
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/patches/binutils/2.15/200-arm-undef-imm.patch	Mon Jul 28 21:32:33 2008 +0000
    13.3 @@ -0,0 +1,51 @@
    13.4 +From http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?r1=1.168&r2=1.169&cvsroot=src
    13.5 +See also http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-July/023128.html,
    13.6 +"[CRITICAL PATCH] 2.6: fix silent build error]"
    13.7 +
    13.8 +Revision 1.169, Fri Jul 2 11:12:29 2004 UTC (19 hours, 4 minutes ago) by nickc
    13.9 +Branch: MAIN
   13.10 +CVS Tags: binutils_latest_snapshot, HEAD
   13.11 +Changes since 1.168: +14 -1 lines
   13.12 +
   13.13 +(md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come
   13.14 +from undefined symbols.
   13.15 +Always consider this fixup to have been processed as a reloc cannot be
   13.16 +generated for it.
   13.17 +
   13.18 +
   13.19 +===================================================================
   13.20 +RCS file: /cvs/src/src/gas/config/tc-arm.c,v
   13.21 +retrieving revision 1.168
   13.22 +retrieving revision 1.169
   13.23 +diff -u -r1.168 -r1.169
   13.24 +--- src/gas/config/tc-arm.c	2004/04/30 10:51:12	1.168
   13.25 ++++ src/gas/config/tc-arm.c	2004/07/02 11:12:29	1.169
   13.26 +@@ -12186,6 +12186,20 @@
   13.27 +   switch (fixP->fx_r_type)
   13.28 +     {
   13.29 +     case BFD_RELOC_ARM_IMMEDIATE:
   13.30 ++      /* We claim that this fixup has been processed here,
   13.31 ++	 even if in fact we generate an error because we do
   13.32 ++	 not have a reloc for it, so tc_gen_reloc will reject it.  */
   13.33 ++      fixP->fx_done = 1;
   13.34 ++
   13.35 ++      if (fixP->fx_addsy
   13.36 ++	  && ! S_IS_DEFINED (fixP->fx_addsy))
   13.37 ++	{
   13.38 ++	  as_bad_where (fixP->fx_file, fixP->fx_line,
   13.39 ++			_("undefined symbol %s used as an immediate value"),
   13.40 ++			S_GET_NAME (fixP->fx_addsy));
   13.41 ++	  break;
   13.42 ++	}
   13.43 ++
   13.44 +       newimm = validate_immediate (value);
   13.45 +       temp = md_chars_to_number (buf, INSN_SIZE);
   13.46 + 
   13.47 +@@ -12202,7 +12216,6 @@
   13.48 + 
   13.49 +       newimm |= (temp & 0xfffff000);
   13.50 +       md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
   13.51 +-      fixP->fx_done = 1;
   13.52 +       break;
   13.53 + 
   13.54 +     case BFD_RELOC_ARM_ADRL_IMMEDIATE:
    14.1 --- a/patches/binutils/2.15/210-cflags.patch	Mon Jul 28 21:08:01 2008 +0000
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,32 +0,0 @@
    14.4 -diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am
    14.5 ---- binutils-2.14.90.0.6/bfd/doc/Makefile.am	2003-07-23 10:08:09.000000000 -0500
    14.6 -+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am	2004-03-01 16:05:16.000000000 -0600
    14.7 -@@ -55,10 +55,10 @@
    14.8 - MKDOC = chew$(EXEEXT_FOR_BUILD)
    14.9 - 
   14.10 - $(MKDOC): chew.o
   14.11 --	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
   14.12 -+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
   14.13 - 
   14.14 - chew.o: chew.c
   14.15 --	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
   14.16 -+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
   14.17 - 
   14.18 - protos: libbfd.h libcoff.h bfd.h
   14.19 - 
   14.20 -diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in
   14.21 ---- binutils-2.14.90.0.6/bfd/doc/Makefile.in	2003-07-23 10:08:09.000000000 -0500
   14.22 -+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in	2004-03-01 16:05:03.000000000 -0600
   14.23 -@@ -469,10 +469,10 @@
   14.24 - 
   14.25 - 
   14.26 - $(MKDOC): chew.o
   14.27 --	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
   14.28 -+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
   14.29 - 
   14.30 - chew.o: chew.c
   14.31 --	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
   14.32 -+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
   14.33 - 
   14.34 - protos: libbfd.h libcoff.h bfd.h
   14.35 - 
    15.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.2 +++ b/patches/binutils/2.15/210-skip-comments.patch	Mon Jul 28 21:32:33 2008 +0000
    15.3 @@ -0,0 +1,101 @@
    15.4 +Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html
    15.5 +Fixes
    15.6 +localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 
    15.7 +when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3
    15.8 +
    15.9 +Paths adjusted to match crosstool's patcher.
   15.10 +
   15.11 +Message-Id: m3n052qw2g.fsf@whitebox.m5r.de
   15.12 +From: Andreas Schwab <schwab at suse dot de>
   15.13 +To: Nathan Sidwell <nathan at codesourcery dot com>
   15.14 +Cc: Ian Lance Taylor <ian at wasabisystems dot com>, binutils at sources dot redhat dot com
   15.15 +Date: Fri, 23 Apr 2004 22:27:19 +0200
   15.16 +Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line
   15.17 +
   15.18 +Nathan Sidwell <nathan@codesourcery.com> writes:
   15.19 +
   15.20 +> Index: read.c
   15.21 +> ===================================================================
   15.22 +> RCS file: /cvs/src/src/gas/read.c,v
   15.23 +> retrieving revision 1.76
   15.24 +> diff -c -3 -p -r1.76 read.c
   15.25 +> *** read.c	12 Mar 2004 17:48:12 -0000	1.76
   15.26 +> --- read.c	18 Mar 2004 09:56:05 -0000
   15.27 +> *************** read_a_source_file (char *name)
   15.28 +> *** 1053,1059 ****
   15.29 +>   #endif
   15.30 +>   	  input_line_pointer--;
   15.31 +>   	  /* Report unknown char as ignored.  */
   15.32 +> ! 	  ignore_rest_of_line ();
   15.33 +>   	}
   15.34 +>   
   15.35 +>   #ifdef md_after_pass_hook
   15.36 +> --- 1053,1059 ----
   15.37 +>   #endif
   15.38 +>   	  input_line_pointer--;
   15.39 +>   	  /* Report unknown char as ignored.  */
   15.40 +> ! 	  demand_empty_rest_of_line ();
   15.41 +>   	}
   15.42 +>   
   15.43 +>   #ifdef md_after_pass_hook
   15.44 +
   15.45 +This means that the unknown character is no longer ignored, despite the
   15.46 +comment.  As a side effect a line starting with a line comment character
   15.47 +not followed by APP in NO_APP mode now triggers an error instead of just a
   15.48 +warning, breaking builds of glibc on m68k-linux.  Earlier in
   15.49 +read_a_source_file where #APP is handled there is another comment that
   15.50 +claims that unknown comments are ignored, when in fact they aren't (only
   15.51 +the initial line comment character is skipped).
   15.52 +
   15.53 +Note that the presence of #APP will mess up the line counters, but
   15.54 +that appears to be difficult to fix.
   15.55 +
   15.56 +Andreas.
   15.57 +
   15.58 +2004-04-23  Andreas Schwab  <schwab@suse.de>
   15.59 +
   15.60 +	* read.c (read_a_source_file): Ignore unknown text after line
   15.61 +	comment character.  Fix misleading comment.
   15.62 +
   15.63 +--- binutils/gas/read.c.~1.78.~	2004-04-23 08:58:23.000000000 +0200
   15.64 ++++ binutils/gas/read.c	2004-04-23 21:49:01.000000000 +0200
   15.65 +@@ -1,6 +1,6 @@
   15.66 + /* read.c - read a source file -
   15.67 +    Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
   15.68 +-   1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
   15.69 ++   1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
   15.70 + 
   15.71 + This file is part of GAS, the GNU Assembler.
   15.72 + 
   15.73 +@@ -950,10 +950,14 @@ read_a_source_file (char *name)
   15.74 + 	      unsigned int new_length;
   15.75 + 	      char *tmp_buf = 0;
   15.76 + 
   15.77 +-	      bump_line_counters ();
   15.78 + 	      s = input_line_pointer;
   15.79 + 	      if (strncmp (s, "APP\n", 4))
   15.80 +-		continue;	/* We ignore it */
   15.81 ++		{
   15.82 ++		  /* We ignore it */
   15.83 ++		  ignore_rest_of_line ();
   15.84 ++		  continue;
   15.85 ++		}
   15.86 ++	      bump_line_counters ();
   15.87 + 	      s += 4;
   15.88 + 
   15.89 + 	      sb_new (&sbuf);
   15.90 +@@ -1052,7 +1056,7 @@ read_a_source_file (char *name)
   15.91 + 	    continue;
   15.92 + #endif
   15.93 + 	  input_line_pointer--;
   15.94 +-	  /* Report unknown char as ignored.  */
   15.95 ++	  /* Report unknown char as error.  */
   15.96 + 	  demand_empty_rest_of_line ();
   15.97 + 	}
   15.98 + 
   15.99 +
  15.100 +-- 
  15.101 +Andreas Schwab, SuSE Labs, schwab@suse.de
  15.102 +SuSE Linux AG, Maxfeldstra&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
  15.103 +Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
  15.104 +"And now for something completely different."
    16.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.2 +++ b/patches/binutils/2.15/220-cross-gprof.patch	Mon Jul 28 21:32:33 2008 +0000
    16.3 @@ -0,0 +1,22 @@
    16.4 +--- binutils-2.15/configure.old	2004-07-21 21:36:47.000000000 -0700
    16.5 ++++ binutils-2.15/configure	2004-07-21 21:37:08.000000000 -0700
    16.6 +@@ -999,7 +999,7 @@
    16.7 + 
    16.8 + # Some tools are only suitable for building in a "native" situation.
    16.9 + # Remove these if host!=target.  
   16.10 +-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   16.11 ++native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   16.12 + 
   16.13 + # Similarly, some are only suitable for cross toolchains.
   16.14 + # Remove these if host=target.
   16.15 +--- binutils-2.15/configure.in.old	2004-07-21 21:37:19.000000000 -0700
   16.16 ++++ binutils-2.15/configure.in	2004-07-21 21:37:34.000000000 -0700
   16.17 +@@ -236,7 +236,7 @@
   16.18 + 
   16.19 + # Some tools are only suitable for building in a "native" situation.
   16.20 + # Remove these if host!=target.  
   16.21 +-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   16.22 ++native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   16.23 + 
   16.24 + # Similarly, some are only suitable for cross toolchains.
   16.25 + # Remove these if host=target.
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/patches/binutils/2.15/230-gccpr15247-fix.patch	Mon Jul 28 21:32:33 2008 +0000
    17.3 @@ -0,0 +1,192 @@
    17.4 +See
    17.5 +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247
    17.6 +
    17.7 +Fixes spurious error
    17.8 +/tmp/ccvNi4ou.s: Assembler messages:
    17.9 +/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31]
   17.10 +make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1
   17.11 +
   17.12 +when compiling glibc's dosincos.c with gcc-3.4.0
   17.13 +
   17.14 +===================================================================
   17.15 +RCS file: /cvs/src/src/opcodes/sparc-opc.c,v
   17.16 +retrieving revision 1.9
   17.17 +retrieving revision 1.10
   17.18 +diff -u -r1.9 -r1.10
   17.19 +--- src/opcodes/sparc-opc.c	2004/01/18 23:46:32	1.9
   17.20 ++++ src/opcodes/sparc-opc.c	2004/04/20 10:23:51	1.10
   17.21 +@@ -1273,110 +1273,72 @@
   17.22 + #define FM_DF 2		/* v9 */
   17.23 + #define FM_QF 3		/* v9 */
   17.24 + 
   17.25 +-#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \
   17.26 +-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags, v9 }, \
   17.27 +-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags, v9 }
   17.28 +-
   17.29 +-#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \
   17.30 +-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \
   17.31 +-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \
   17.32 +-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \
   17.33 +-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 }
   17.34 ++#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \
   17.35 ++{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags, v9 }, \
   17.36 ++{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags, v9 }
   17.37 ++
   17.38 ++#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \
   17.39 ++{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \
   17.40 ++{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \
   17.41 ++{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \
   17.42 ++{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
   17.43 + 
   17.44 + /* FIXME: use fmovicc/fmovfcc? */ /* v9 */
   17.45 +-#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \
   17.46 +-{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags | F_FLOAT, v9 }, \
   17.47 +-{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \
   17.48 +-{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags | F_FLOAT, v9 }, \
   17.49 +-{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \
   17.50 +-{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \
   17.51 +-{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 }
   17.52 +-
   17.53 +-/* v9 */ fmovcc  ("fmovda",	FM_DF, CONDA, FCONDA, 0),
   17.54 +-/* v9 */ fmovcc  ("fmovqa",	FM_QF, CONDA, FCONDA, 0),
   17.55 +-/* v9 */ fmovcc  ("fmovsa",	FM_SF, CONDA, FCONDA, 0),
   17.56 +-/* v9 */ fmovicc ("fmovdcc",	FM_DF, CONDCC, 0),
   17.57 +-/* v9 */ fmovicc ("fmovqcc",	FM_QF, CONDCC, 0),
   17.58 +-/* v9 */ fmovicc ("fmovscc",	FM_SF, CONDCC, 0),
   17.59 +-/* v9 */ fmovicc ("fmovdcs",	FM_DF, CONDCS, 0),
   17.60 +-/* v9 */ fmovicc ("fmovqcs",	FM_QF, CONDCS, 0),
   17.61 +-/* v9 */ fmovicc ("fmovscs",	FM_SF, CONDCS, 0),
   17.62 +-/* v9 */ fmovcc  ("fmovde",	FM_DF, CONDE, FCONDE, 0),
   17.63 +-/* v9 */ fmovcc  ("fmovqe",	FM_QF, CONDE, FCONDE, 0),
   17.64 +-/* v9 */ fmovcc  ("fmovse",	FM_SF, CONDE, FCONDE, 0),
   17.65 +-/* v9 */ fmovcc  ("fmovdg",	FM_DF, CONDG, FCONDG, 0),
   17.66 +-/* v9 */ fmovcc  ("fmovqg",	FM_QF, CONDG, FCONDG, 0),
   17.67 +-/* v9 */ fmovcc  ("fmovsg",	FM_SF, CONDG, FCONDG, 0),
   17.68 +-/* v9 */ fmovcc  ("fmovdge",	FM_DF, CONDGE, FCONDGE, 0),
   17.69 +-/* v9 */ fmovcc  ("fmovqge",	FM_QF, CONDGE, FCONDGE, 0),
   17.70 +-/* v9 */ fmovcc  ("fmovsge",	FM_SF, CONDGE, FCONDGE, 0),
   17.71 +-/* v9 */ fmovicc ("fmovdgeu",	FM_DF, CONDGEU, F_ALIAS),
   17.72 +-/* v9 */ fmovicc ("fmovqgeu",	FM_QF, CONDGEU, F_ALIAS),
   17.73 +-/* v9 */ fmovicc ("fmovsgeu",	FM_SF, CONDGEU, F_ALIAS),
   17.74 +-/* v9 */ fmovicc ("fmovdgu",	FM_DF, CONDGU, 0),
   17.75 +-/* v9 */ fmovicc ("fmovqgu",	FM_QF, CONDGU, 0),
   17.76 +-/* v9 */ fmovicc ("fmovsgu",	FM_SF, CONDGU, 0),
   17.77 +-/* v9 */ fmovcc  ("fmovdl",	FM_DF, CONDL, FCONDL, 0),
   17.78 +-/* v9 */ fmovcc  ("fmovql",	FM_QF, CONDL, FCONDL, 0),
   17.79 +-/* v9 */ fmovcc  ("fmovsl",	FM_SF, CONDL, FCONDL, 0),
   17.80 +-/* v9 */ fmovcc  ("fmovdle",	FM_DF, CONDLE, FCONDLE, 0),
   17.81 +-/* v9 */ fmovcc  ("fmovqle",	FM_QF, CONDLE, FCONDLE, 0),
   17.82 +-/* v9 */ fmovcc  ("fmovsle",	FM_SF, CONDLE, FCONDLE, 0),
   17.83 +-/* v9 */ fmovicc ("fmovdleu",	FM_DF, CONDLEU, 0),
   17.84 +-/* v9 */ fmovicc ("fmovqleu",	FM_QF, CONDLEU, 0),
   17.85 +-/* v9 */ fmovicc ("fmovsleu",	FM_SF, CONDLEU, 0),
   17.86 +-/* v9 */ fmovfcc ("fmovdlg",	FM_DF, FCONDLG, 0),
   17.87 +-/* v9 */ fmovfcc ("fmovqlg",	FM_QF, FCONDLG, 0),
   17.88 +-/* v9 */ fmovfcc ("fmovslg",	FM_SF, FCONDLG, 0),
   17.89 +-/* v9 */ fmovicc ("fmovdlu",	FM_DF, CONDLU, F_ALIAS),
   17.90 +-/* v9 */ fmovicc ("fmovqlu",	FM_QF, CONDLU, F_ALIAS),
   17.91 +-/* v9 */ fmovicc ("fmovslu",	FM_SF, CONDLU, F_ALIAS),
   17.92 +-/* v9 */ fmovcc  ("fmovdn",	FM_DF, CONDN, FCONDN, 0),
   17.93 +-/* v9 */ fmovcc  ("fmovqn",	FM_QF, CONDN, FCONDN, 0),
   17.94 +-/* v9 */ fmovcc  ("fmovsn",	FM_SF, CONDN, FCONDN, 0),
   17.95 +-/* v9 */ fmovcc  ("fmovdne",	FM_DF, CONDNE, FCONDNE, 0),
   17.96 +-/* v9 */ fmovcc  ("fmovqne",	FM_QF, CONDNE, FCONDNE, 0),
   17.97 +-/* v9 */ fmovcc  ("fmovsne",	FM_SF, CONDNE, FCONDNE, 0),
   17.98 +-/* v9 */ fmovicc ("fmovdneg",	FM_DF, CONDNEG, 0),
   17.99 +-/* v9 */ fmovicc ("fmovqneg",	FM_QF, CONDNEG, 0),
  17.100 +-/* v9 */ fmovicc ("fmovsneg",	FM_SF, CONDNEG, 0),
  17.101 +-/* v9 */ fmovcc  ("fmovdnz",	FM_DF, CONDNZ, FCONDNZ, F_ALIAS),
  17.102 +-/* v9 */ fmovcc  ("fmovqnz",	FM_QF, CONDNZ, FCONDNZ, F_ALIAS),
  17.103 +-/* v9 */ fmovcc  ("fmovsnz",	FM_SF, CONDNZ, FCONDNZ, F_ALIAS),
  17.104 +-/* v9 */ fmovfcc ("fmovdo",	FM_DF, FCONDO, 0),
  17.105 +-/* v9 */ fmovfcc ("fmovqo",	FM_QF, FCONDO, 0),
  17.106 +-/* v9 */ fmovfcc ("fmovso",	FM_SF, FCONDO, 0),
  17.107 +-/* v9 */ fmovicc ("fmovdpos",	FM_DF, CONDPOS, 0),
  17.108 +-/* v9 */ fmovicc ("fmovqpos",	FM_QF, CONDPOS, 0),
  17.109 +-/* v9 */ fmovicc ("fmovspos",	FM_SF, CONDPOS, 0),
  17.110 +-/* v9 */ fmovfcc ("fmovdu",	FM_DF, FCONDU, 0),
  17.111 +-/* v9 */ fmovfcc ("fmovqu",	FM_QF, FCONDU, 0),
  17.112 +-/* v9 */ fmovfcc ("fmovsu",	FM_SF, FCONDU, 0),
  17.113 +-/* v9 */ fmovfcc ("fmovdue",	FM_DF, FCONDUE, 0),
  17.114 +-/* v9 */ fmovfcc ("fmovque",	FM_QF, FCONDUE, 0),
  17.115 +-/* v9 */ fmovfcc ("fmovsue",	FM_SF, FCONDUE, 0),
  17.116 +-/* v9 */ fmovfcc ("fmovdug",	FM_DF, FCONDUG, 0),
  17.117 +-/* v9 */ fmovfcc ("fmovqug",	FM_QF, FCONDUG, 0),
  17.118 +-/* v9 */ fmovfcc ("fmovsug",	FM_SF, FCONDUG, 0),
  17.119 +-/* v9 */ fmovfcc ("fmovduge",	FM_DF, FCONDUGE, 0),
  17.120 +-/* v9 */ fmovfcc ("fmovquge",	FM_QF, FCONDUGE, 0),
  17.121 +-/* v9 */ fmovfcc ("fmovsuge",	FM_SF, FCONDUGE, 0),
  17.122 +-/* v9 */ fmovfcc ("fmovdul",	FM_DF, FCONDUL, 0),
  17.123 +-/* v9 */ fmovfcc ("fmovqul",	FM_QF, FCONDUL, 0),
  17.124 +-/* v9 */ fmovfcc ("fmovsul",	FM_SF, FCONDUL, 0),
  17.125 +-/* v9 */ fmovfcc ("fmovdule",	FM_DF, FCONDULE, 0),
  17.126 +-/* v9 */ fmovfcc ("fmovqule",	FM_QF, FCONDULE, 0),
  17.127 +-/* v9 */ fmovfcc ("fmovsule",	FM_SF, FCONDULE, 0),
  17.128 +-/* v9 */ fmovicc ("fmovdvc",	FM_DF, CONDVC, 0),
  17.129 +-/* v9 */ fmovicc ("fmovqvc",	FM_QF, CONDVC, 0),
  17.130 +-/* v9 */ fmovicc ("fmovsvc",	FM_SF, CONDVC, 0),
  17.131 +-/* v9 */ fmovicc ("fmovdvs",	FM_DF, CONDVS, 0),
  17.132 +-/* v9 */ fmovicc ("fmovqvs",	FM_QF, CONDVS, 0),
  17.133 +-/* v9 */ fmovicc ("fmovsvs",	FM_SF, CONDVS, 0),
  17.134 +-/* v9 */ fmovcc  ("fmovdz",	FM_DF, CONDZ, FCONDZ, F_ALIAS),
  17.135 +-/* v9 */ fmovcc  ("fmovqz",	FM_QF, CONDZ, FCONDZ, F_ALIAS),
  17.136 +-/* v9 */ fmovcc  ("fmovsz",	FM_SF, CONDZ, FCONDZ, F_ALIAS),
  17.137 +-
  17.138 ++#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \
  17.139 ++{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags | F_FLOAT, v9 }, \
  17.140 ++{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \
  17.141 ++{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags | F_FLOAT, v9 }, \
  17.142 ++{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \
  17.143 ++{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \
  17.144 ++{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
  17.145 ++
  17.146 ++#define fmovicc(suffix, cond, flags) /* v9 */ \
  17.147 ++fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags),		\
  17.148 ++fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags),		\
  17.149 ++fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)
  17.150 ++
  17.151 ++#define fmovfcc(suffix, fcond, flags) /* v9 */ \
  17.152 ++fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags),		\
  17.153 ++fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags),		\
  17.154 ++fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)
  17.155 ++
  17.156 ++#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \
  17.157 ++fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags),	\
  17.158 ++fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags),	\
  17.159 ++fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)
  17.160 ++
  17.161 ++/* v9 */ fmovcc  ("a", CONDA, FCONDA, 0),
  17.162 ++/* v9 */ fmovicc ("cc", CONDCC, 0),
  17.163 ++/* v9 */ fmovicc ("cs", CONDCS, 0),
  17.164 ++/* v9 */ fmovcc  ("e", CONDE, FCONDE, 0),
  17.165 ++/* v9 */ fmovcc  ("g", CONDG, FCONDG, 0),
  17.166 ++/* v9 */ fmovcc  ("ge", CONDGE, FCONDGE, 0),
  17.167 ++/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS),
  17.168 ++/* v9 */ fmovicc ("gu", CONDGU, 0),
  17.169 ++/* v9 */ fmovcc  ("l", CONDL, FCONDL, 0),
  17.170 ++/* v9 */ fmovcc  ("le", CONDLE, FCONDLE, 0),
  17.171 ++/* v9 */ fmovicc ("leu", CONDLEU, 0),
  17.172 ++/* v9 */ fmovfcc ("lg", FCONDLG, 0),
  17.173 ++/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS),
  17.174 ++/* v9 */ fmovcc  ("n", CONDN, FCONDN, 0),
  17.175 ++/* v9 */ fmovcc  ("ne", CONDNE, FCONDNE, 0),
  17.176 ++/* v9 */ fmovicc ("neg", CONDNEG, 0),
  17.177 ++/* v9 */ fmovcc  ("nz", CONDNZ, FCONDNZ, F_ALIAS),
  17.178 ++/* v9 */ fmovfcc ("o", FCONDO, 0),
  17.179 ++/* v9 */ fmovicc ("pos", CONDPOS, 0),
  17.180 ++/* v9 */ fmovfcc ("u", FCONDU, 0),
  17.181 ++/* v9 */ fmovfcc ("ue", FCONDUE, 0),
  17.182 ++/* v9 */ fmovfcc ("ug", FCONDUG, 0),
  17.183 ++/* v9 */ fmovfcc ("uge", FCONDUGE, 0),
  17.184 ++/* v9 */ fmovfcc ("ul", FCONDUL, 0),
  17.185 ++/* v9 */ fmovfcc ("ule", FCONDULE, 0),
  17.186 ++/* v9 */ fmovicc ("vc", CONDVC, 0),
  17.187 ++/* v9 */ fmovicc ("vs", CONDVS, 0),
  17.188 ++/* v9 */ fmovcc  ("z", CONDZ, FCONDZ, F_ALIAS),
  17.189 ++
  17.190 ++#undef fmoviccx /* v9 */
  17.191 ++#undef fmovfccx /* v9 */
  17.192 ++#undef fmovccx /* v9 */
  17.193 + #undef fmovicc /* v9 */
  17.194 + #undef fmovfcc /* v9 */
  17.195 + #undef fmovcc /* v9 */
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/patches/binutils/2.15/240-ld-callahan.patch	Mon Jul 28 21:32:33 2008 +0000
    18.3 @@ -0,0 +1,677 @@
    18.4 +Signed-off-by: dank@kegel.com
    18.5 +Fixes ld speed issue. 
    18.6 +See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html
    18.7 +See thread "Re: optimizations for 3x speedup in ld",
    18.8 +http://sources.redhat.com/ml/binutils/2005-03/msg00847.html
    18.9 +
   18.10 +Wildcard section matching enhancement, backported from the binutils CVS tree.
   18.11 +Here's the CVS log comment from the original change to ldlang.c:
   18.12 +
   18.13 +revision 1.177
   18.14 +date: 2005/04/06 15:33:02;  author: jakub;  state: Exp;  lines: +438 -51
   18.15 +2005-04-06  Jakub Jelinek  <jakub@redhat.com>
   18.16 +
   18.17 +        * ldlang.c: Formatting.
   18.18 +        (walk_wild_consider_section): Remember return value from wildcardp.
   18.19 +        (is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen.
   18.20 +        (wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen.
   18.21 +
   18.22 +2005-04-06  Robert O'Callahan  <rocallahan@novell.com>
   18.23 +
   18.24 +        * ld.h (lean_section_userdata_type): Remove.
   18.25 +        (fat_section_userdata_type): Remove file field.
   18.26 +        (SECTION_USERDATA_SIZE): Remove.
   18.27 +        * ldlang.c (init_os): Eliminate initialization of unused
   18.28 +        lean_section_userdata_type.
   18.29 +
   18.30 +        * ldlang.h (callback_t, walk_wild_section_handler_t): New
   18.31 +        typedefs.
   18.32 +        (struct lang_wild_statement_struct): Add walk_wild_section_handler
   18.33 +        and handler_data fields.
   18.34 +        * ldlang.c (callback_t): Removed.
   18.35 +        (walk_wild_consider_section, walk_wild_section_general,
   18.36 +        section_iterator_callback, find_section, is_simple_wild,
   18.37 +        match_simple_wild, walk_wild_section_specs1_wild0,
   18.38 +        walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1,
   18.39 +        walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2,
   18.40 +        wild_spec_can_overlap, analyze_walk_wild_section_handler): New
   18.41 +        functions.
   18.42 +        (lang_add_wild): Call analyze_walk_wild_section_handler.
   18.43 +        (walk_wild_section): Renamed to walk_wild_section_general and
   18.44 +        created a wrapper function.
   18.45 +        (section_iterator_callback_data): New typedef.
   18.46 +
   18.47 +Note that bfd_get_section_by_name_if didn't exist in 2.15, so it was backported
   18.48 +as well.
   18.49 +
   18.50 +--- binutils-2.15/bfd/bfd-in2.h.old	2004-05-17 15:35:56.000000000 -0400
   18.51 ++++ binutils-2.15/bfd/bfd-in2.h	2006-02-09 11:54:45.989940000 -0500
   18.52 +@@ -1425,6 +1425,10 @@
   18.53 + 
   18.54 + asection *bfd_get_section_by_name (bfd *abfd, const char *name);
   18.55 + 
   18.56 ++asection *bfd_get_section_by_name_if (bfd *abfd, const char *name,
   18.57 ++   bfd_boolean (*operation) (bfd *, asection *, void *),
   18.58 ++   void *user_storage);
   18.59 ++
   18.60 + char *bfd_get_unique_section_name
   18.61 +    (bfd *abfd, const char *templat, int *count);
   18.62 + 
   18.63 +--- binutils-2.15/bfd/section.c.old	2003-12-01 01:33:01.000000000 -0500
   18.64 ++++ binutils-2.15/bfd/section.c	2006-01-23 14:16:54.768993000 -0500
   18.65 +@@ -801,6 +801,57 @@
   18.66 + 
   18.67 + /*
   18.68 + FUNCTION
   18.69 ++	bfd_get_section_by_name_if
   18.70 ++
   18.71 ++SYNOPSIS
   18.72 ++	asection *bfd_get_section_by_name_if
   18.73 ++	  (bfd *abfd,
   18.74 ++	   const char *name,
   18.75 ++	   bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
   18.76 ++	   void *obj);
   18.77 ++
   18.78 ++DESCRIPTION
   18.79 ++	Call the provided function @var{func} for each section
   18.80 ++	attached to the BFD @var{abfd} whose name matches @var{name},
   18.81 ++	passing @var{obj} as an argument. The function will be called
   18.82 ++	as if by
   18.83 ++
   18.84 ++|	func (abfd, the_section, obj);
   18.85 ++
   18.86 ++	It returns the first section for which @var{func} returns true,
   18.87 ++	otherwise <<NULL>>.
   18.88 ++
   18.89 ++*/
   18.90 ++
   18.91 ++asection *
   18.92 ++bfd_get_section_by_name_if (bfd *abfd, const char *name,
   18.93 ++			    bfd_boolean (*operation) (bfd *,
   18.94 ++						      asection *,
   18.95 ++						      void *),
   18.96 ++			    void *user_storage)
   18.97 ++{
   18.98 ++  struct section_hash_entry *sh;
   18.99 ++  unsigned long hash;
  18.100 ++
  18.101 ++  sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE);
  18.102 ++  if (sh == NULL)
  18.103 ++    return NULL;
  18.104 ++
  18.105 ++  hash = sh->root.hash;
  18.106 ++  do
  18.107 ++    {
  18.108 ++      if ((*operation) (abfd, &sh->section, user_storage))
  18.109 ++	return &sh->section;
  18.110 ++      sh = (struct section_hash_entry *) sh->root.next;
  18.111 ++    }
  18.112 ++  while (sh != NULL && sh->root.hash == hash
  18.113 ++	 && strcmp (sh->root.string, name) == 0);
  18.114 ++
  18.115 ++  return NULL;
  18.116 ++}
  18.117 ++
  18.118 ++/*
  18.119 ++FUNCTION
  18.120 + 	bfd_get_unique_section_name
  18.121 + 
  18.122 + SYNOPSIS
  18.123 +--- binutils-2.15/ld/ldlang.c.old	2004-05-17 15:36:16.000000000 -0400
  18.124 ++++ binutils-2.15/ld/ldlang.c	2006-01-23 13:40:12.745499000 -0500
  18.125 +@@ -81,9 +81,6 @@
  18.126 + static void lang_record_phdrs (void);
  18.127 + static void lang_do_version_exports_section (void);
  18.128 + 
  18.129 +-typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
  18.130 +-			    asection *, lang_input_statement_type *, void *);
  18.131 +-
  18.132 + /* Exported variables.  */
  18.133 + lang_output_section_statement_type *abs_output_section;
  18.134 + lang_statement_list_type lang_output_section_statement;
  18.135 +@@ -138,21 +135,71 @@
  18.136 + 
  18.137 + /* Generic traversal routines for finding matching sections.  */
  18.138 + 
  18.139 ++/* Try processing a section against a wildcard.  This just calls
  18.140 ++   the callback unless the filename exclusion list is present
  18.141 ++   and excludes the file.  It's hardly ever present so this
  18.142 ++   function is very fast.  */
  18.143 ++
  18.144 ++static void
  18.145 ++walk_wild_consider_section (lang_wild_statement_type *ptr,
  18.146 ++			    lang_input_statement_type *file,
  18.147 ++			    asection *s,
  18.148 ++			    struct wildcard_list *sec,
  18.149 ++			    callback_t callback,
  18.150 ++			    void *data)
  18.151 ++{
  18.152 ++  bfd_boolean skip = FALSE;
  18.153 ++  struct name_list *list_tmp;
  18.154 ++
  18.155 ++  /* Don't process sections from files which were
  18.156 ++     excluded.  */
  18.157 ++  for (list_tmp = sec->spec.exclude_name_list;
  18.158 ++       list_tmp;
  18.159 ++       list_tmp = list_tmp->next)
  18.160 ++    {
  18.161 ++      bfd_boolean is_wildcard = wildcardp (list_tmp->name);
  18.162 ++      if (is_wildcard)
  18.163 ++	skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
  18.164 ++      else
  18.165 ++	skip = strcmp (list_tmp->name, file->filename) == 0;
  18.166 ++
  18.167 ++      /* If this file is part of an archive, and the archive is
  18.168 ++	 excluded, exclude this file.  */
  18.169 ++      if (! skip && file->the_bfd != NULL
  18.170 ++	  && file->the_bfd->my_archive != NULL
  18.171 ++	  && file->the_bfd->my_archive->filename != NULL)
  18.172 ++	{
  18.173 ++	  if (is_wildcard)
  18.174 ++	    skip = fnmatch (list_tmp->name,
  18.175 ++			    file->the_bfd->my_archive->filename,
  18.176 ++			    0) == 0;
  18.177 ++	  else
  18.178 ++	    skip = strcmp (list_tmp->name,
  18.179 ++			   file->the_bfd->my_archive->filename) == 0;
  18.180 ++	}
  18.181 ++
  18.182 ++      if (skip)
  18.183 ++	break;
  18.184 ++    }
  18.185 ++
  18.186 ++  if (!skip)
  18.187 ++    (*callback) (ptr, sec, s, file, data);
  18.188 ++}
  18.189 ++
  18.190 ++/* Lowest common denominator routine that can handle everything correctly,
  18.191 ++   but slowly.  */
  18.192 ++
  18.193 + static void
  18.194 +-walk_wild_section (lang_wild_statement_type *ptr,
  18.195 +-		   lang_input_statement_type *file,
  18.196 +-		   callback_t callback,
  18.197 +-		   void *data)
  18.198 ++walk_wild_section_general (lang_wild_statement_type *ptr,
  18.199 ++			   lang_input_statement_type *file,
  18.200 ++			   callback_t callback,
  18.201 ++			   void *data)
  18.202 + {
  18.203 +   asection *s;
  18.204 +-
  18.205 +-  if (file->just_syms_flag)
  18.206 +-    return;
  18.207 ++  struct wildcard_list *sec;
  18.208 + 
  18.209 +   for (s = file->the_bfd->sections; s != NULL; s = s->next)
  18.210 +     {
  18.211 +-      struct wildcard_list *sec;
  18.212 +-
  18.213 +       sec = ptr->section_list;
  18.214 +       if (sec == NULL)
  18.215 + 	(*callback) (ptr, sec, s, file, data);
  18.216 +@@ -160,39 +207,8 @@
  18.217 +       while (sec != NULL)
  18.218 + 	{
  18.219 + 	  bfd_boolean skip = FALSE;
  18.220 +-	  struct name_list *list_tmp;
  18.221 +-
  18.222 +-	  /* Don't process sections from files which were
  18.223 +-	     excluded.  */
  18.224 +-	  for (list_tmp = sec->spec.exclude_name_list;
  18.225 +-	       list_tmp;
  18.226 +-	       list_tmp = list_tmp->next)
  18.227 +-	    {
  18.228 +-	      if (wildcardp (list_tmp->name))
  18.229 +-		skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
  18.230 +-	      else
  18.231 +-		skip = strcmp (list_tmp->name, file->filename) == 0;
  18.232 +-
  18.233 +-	      /* If this file is part of an archive, and the archive is
  18.234 +-		 excluded, exclude this file.  */
  18.235 +-	      if (! skip && file->the_bfd != NULL
  18.236 +-		  && file->the_bfd->my_archive != NULL
  18.237 +-		  && file->the_bfd->my_archive->filename != NULL)
  18.238 +-		{
  18.239 +-		  if (wildcardp (list_tmp->name))
  18.240 +-		    skip = fnmatch (list_tmp->name,
  18.241 +-				    file->the_bfd->my_archive->filename,
  18.242 +-				    0) == 0;
  18.243 +-		  else
  18.244 +-		    skip = strcmp (list_tmp->name,
  18.245 +-				   file->the_bfd->my_archive->filename) == 0;
  18.246 +-		}
  18.247 +-
  18.248 +-	      if (skip)
  18.249 +-		break;
  18.250 +-	    }
  18.251 + 
  18.252 +-	  if (!skip && sec->spec.name != NULL)
  18.253 ++	  if (sec->spec.name != NULL)
  18.254 + 	    {
  18.255 + 	      const char *sname = bfd_get_section_name (file->the_bfd, s);
  18.256 + 
  18.257 +@@ -203,13 +219,381 @@
  18.258 + 	    }
  18.259 + 
  18.260 + 	  if (!skip)
  18.261 +-	    (*callback) (ptr, sec, s, file, data);
  18.262 ++	    walk_wild_consider_section (ptr, file, s, sec, callback, data);
  18.263 + 
  18.264 + 	  sec = sec->next;
  18.265 + 	}
  18.266 +     }
  18.267 + }
  18.268 + 
  18.269 ++/* Routines to find a single section given its name.  If there's more
  18.270 ++   than one section with that name, we report that.  */
  18.271 ++
  18.272 ++typedef struct
  18.273 ++{
  18.274 ++  asection *found_section;
  18.275 ++  bfd_boolean multiple_sections_found;
  18.276 ++} section_iterator_callback_data;
  18.277 ++
  18.278 ++static bfd_boolean
  18.279 ++section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data)
  18.280 ++{
  18.281 ++  section_iterator_callback_data *d = data;
  18.282 ++
  18.283 ++  if (d->found_section != NULL)
  18.284 ++    {
  18.285 ++      d->multiple_sections_found = TRUE;
  18.286 ++      return TRUE;
  18.287 ++    }
  18.288 ++
  18.289 ++  d->found_section = s;
  18.290 ++  return FALSE;
  18.291 ++}
  18.292 ++
  18.293 ++static asection *
  18.294 ++find_section (lang_input_statement_type *file,
  18.295 ++	      struct wildcard_list *sec,
  18.296 ++	      bfd_boolean *multiple_sections_found)
  18.297 ++{
  18.298 ++  section_iterator_callback_data cb_data = { NULL, FALSE };
  18.299 ++
  18.300 ++  bfd_get_section_by_name_if (file->the_bfd, sec->spec.name, 
  18.301 ++			      section_iterator_callback, &cb_data);
  18.302 ++  *multiple_sections_found = cb_data.multiple_sections_found;
  18.303 ++  return cb_data.found_section;
  18.304 ++}
  18.305 ++
  18.306 ++/* Code for handling simple wildcards without going through fnmatch,
  18.307 ++   which can be expensive because of charset translations etc.  */
  18.308 ++
  18.309 ++/* A simple wild is a literal string followed by a single '*',
  18.310 ++   where the literal part is at least 4 characters long.  */
  18.311 ++
  18.312 ++static bfd_boolean
  18.313 ++is_simple_wild (const char *name)
  18.314 ++{
  18.315 ++  size_t len = strcspn (name, "*?[");
  18.316 ++  return len >= 4 && name[len] == '*' && name[len + 1] == '\0';
  18.317 ++}
  18.318 ++
  18.319 ++static bfd_boolean
  18.320 ++match_simple_wild (const char *pattern, const char *name)
  18.321 ++{
  18.322 ++  /* The first four characters of the pattern are guaranteed valid
  18.323 ++     non-wildcard characters.  So we can go faster.  */
  18.324 ++  if (pattern[0] != name[0] || pattern[1] != name[1]
  18.325 ++      || pattern[2] != name[2] || pattern[3] != name[3])
  18.326 ++    return FALSE;
  18.327 ++
  18.328 ++  pattern += 4;
  18.329 ++  name += 4;
  18.330 ++  while (*pattern != '*')
  18.331 ++    if (*name++ != *pattern++)
  18.332 ++      return FALSE;
  18.333 ++
  18.334 ++  return TRUE;
  18.335 ++}
  18.336 ++
  18.337 ++/* Specialized, optimized routines for handling different kinds of
  18.338 ++   wildcards */
  18.339 ++
  18.340 ++static void
  18.341 ++walk_wild_section_specs1_wild0 (lang_wild_statement_type *ptr,
  18.342 ++				lang_input_statement_type *file,
  18.343 ++				callback_t callback,
  18.344 ++				void *data)
  18.345 ++{
  18.346 ++  /* We can just do a hash lookup for the section with the right name.
  18.347 ++     But if that lookup discovers more than one section with the name
  18.348 ++     (should be rare), we fall back to the general algorithm because
  18.349 ++     we would otherwise have to sort the sections to make sure they
  18.350 ++     get processed in the bfd's order.  */
  18.351 ++  bfd_boolean multiple_sections_found;
  18.352 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  18.353 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  18.354 ++
  18.355 ++  if (multiple_sections_found)
  18.356 ++    walk_wild_section_general (ptr, file, callback, data);
  18.357 ++  else if (s0)
  18.358 ++    walk_wild_consider_section (ptr, file, s0, sec0, callback, data);
  18.359 ++}
  18.360 ++
  18.361 ++static void
  18.362 ++walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr,
  18.363 ++				lang_input_statement_type *file,
  18.364 ++				callback_t callback,
  18.365 ++				void *data)
  18.366 ++{
  18.367 ++  asection *s;
  18.368 ++  struct wildcard_list *wildsec0 = ptr->handler_data[0];
  18.369 ++
  18.370 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  18.371 ++    {
  18.372 ++      const char *sname = bfd_get_section_name (file->the_bfd, s);
  18.373 ++      bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname);
  18.374 ++
  18.375 ++      if (!skip)
  18.376 ++	walk_wild_consider_section (ptr, file, s, wildsec0, callback, data);
  18.377 ++    }
  18.378 ++}
  18.379 ++
  18.380 ++static void
  18.381 ++walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr,
  18.382 ++				lang_input_statement_type *file,
  18.383 ++				callback_t callback,
  18.384 ++				void *data)
  18.385 ++{
  18.386 ++  asection *s;
  18.387 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  18.388 ++  struct wildcard_list *wildsec1 = ptr->handler_data[1];
  18.389 ++  bfd_boolean multiple_sections_found;
  18.390 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  18.391 ++
  18.392 ++  if (multiple_sections_found)
  18.393 ++    {
  18.394 ++      walk_wild_section_general (ptr, file, callback, data);
  18.395 ++      return;
  18.396 ++    }
  18.397 ++
  18.398 ++  /* Note that if the section was not found, s0 is NULL and
  18.399 ++     we'll simply never succeed the s == s0 test below.  */
  18.400 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  18.401 ++    {
  18.402 ++      /* Recall that in this code path, a section cannot satisfy more
  18.403 ++	 than one spec, so if s == s0 then it cannot match
  18.404 ++	 wildspec1.  */
  18.405 ++      if (s == s0)
  18.406 ++	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  18.407 ++      else
  18.408 ++	{
  18.409 ++	  const char *sname = bfd_get_section_name (file->the_bfd, s);
  18.410 ++	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
  18.411 ++
  18.412 ++	  if (!skip)
  18.413 ++	    walk_wild_consider_section (ptr, file, s, wildsec1, callback,
  18.414 ++					data);
  18.415 ++	}
  18.416 ++    }
  18.417 ++}
  18.418 ++
  18.419 ++static void
  18.420 ++walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr,
  18.421 ++				lang_input_statement_type *file,
  18.422 ++				callback_t callback,
  18.423 ++				void *data)
  18.424 ++{
  18.425 ++  asection *s;
  18.426 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  18.427 ++  struct wildcard_list *wildsec1 = ptr->handler_data[1];
  18.428 ++  struct wildcard_list *wildsec2 = ptr->handler_data[2];
  18.429 ++  bfd_boolean multiple_sections_found;
  18.430 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  18.431 ++
  18.432 ++  if (multiple_sections_found)
  18.433 ++    {
  18.434 ++      walk_wild_section_general (ptr, file, callback, data);
  18.435 ++      return;
  18.436 ++    }
  18.437 ++
  18.438 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  18.439 ++    {
  18.440 ++      if (s == s0)
  18.441 ++	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  18.442 ++      else
  18.443 ++	{
  18.444 ++	  const char *sname = bfd_get_section_name (file->the_bfd, s);
  18.445 ++	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
  18.446 ++
  18.447 ++	  if (!skip)
  18.448 ++	    walk_wild_consider_section (ptr, file, s, wildsec1, callback, data);
  18.449 ++	  else
  18.450 ++	    {
  18.451 ++	      skip = !match_simple_wild (wildsec2->spec.name, sname);
  18.452 ++	      if (!skip)
  18.453 ++		walk_wild_consider_section (ptr, file, s, wildsec2, callback,
  18.454 ++					    data);
  18.455 ++	    }
  18.456 ++	}
  18.457 ++    }
  18.458 ++}
  18.459 ++
  18.460 ++static void
  18.461 ++walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr,
  18.462 ++				lang_input_statement_type *file,
  18.463 ++				callback_t callback,
  18.464 ++				void *data)
  18.465 ++{
  18.466 ++  asection *s;
  18.467 ++  struct wildcard_list *sec0 = ptr->handler_data[0];
  18.468 ++  struct wildcard_list *sec1 = ptr->handler_data[1];
  18.469 ++  struct wildcard_list *wildsec2 = ptr->handler_data[2];
  18.470 ++  struct wildcard_list *wildsec3 = ptr->handler_data[3];
  18.471 ++  bfd_boolean multiple_sections_found;
  18.472 ++  asection *s0 = find_section (file, sec0, &multiple_sections_found), *s1;
  18.473 ++
  18.474 ++  if (multiple_sections_found)
  18.475 ++    {
  18.476 ++      walk_wild_section_general (ptr, file, callback, data);
  18.477 ++      return;
  18.478 ++    }
  18.479 ++
  18.480 ++  s1 = find_section (file, sec1, &multiple_sections_found);
  18.481 ++  if (multiple_sections_found)
  18.482 ++    {
  18.483 ++      walk_wild_section_general (ptr, file, callback, data);
  18.484 ++      return;
  18.485 ++    }
  18.486 ++
  18.487 ++  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  18.488 ++    {
  18.489 ++      if (s == s0)
  18.490 ++	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  18.491 ++      else
  18.492 ++	if (s == s1)
  18.493 ++	  walk_wild_consider_section (ptr, file, s, sec1, callback, data);
  18.494 ++	else
  18.495 ++	  {
  18.496 ++	    const char *sname = bfd_get_section_name (file->the_bfd, s);
  18.497 ++	    bfd_boolean skip = !match_simple_wild (wildsec2->spec.name,
  18.498 ++						   sname);
  18.499 ++
  18.500 ++	    if (!skip)
  18.501 ++	      walk_wild_consider_section (ptr, file, s, wildsec2, callback,
  18.502 ++					  data);
  18.503 ++	    else
  18.504 ++	      {
  18.505 ++		skip = !match_simple_wild (wildsec3->spec.name, sname);
  18.506 ++		if (!skip)
  18.507 ++		  walk_wild_consider_section (ptr, file, s, wildsec3,
  18.508 ++					      callback, data);
  18.509 ++	      }
  18.510 ++	  }
  18.511 ++    }
  18.512 ++}
  18.513 ++
  18.514 ++static void
  18.515 ++walk_wild_section (lang_wild_statement_type *ptr,
  18.516 ++		   lang_input_statement_type *file,
  18.517 ++		   callback_t callback,
  18.518 ++		   void *data)
  18.519 ++{
  18.520 ++  if (file->just_syms_flag)
  18.521 ++    return;
  18.522 ++
  18.523 ++  (*ptr->walk_wild_section_handler) (ptr, file, callback, data);
  18.524 ++}
  18.525 ++
  18.526 ++/* Returns TRUE when name1 is a wildcard spec that might match
  18.527 ++   something name2 can match.  We're conservative: we return FALSE
  18.528 ++   only if the prefixes of name1 and name2 are different up to the
  18.529 ++   first wildcard character.  */
  18.530 ++
  18.531 ++static bfd_boolean
  18.532 ++wild_spec_can_overlap (const char *name1, const char *name2)
  18.533 ++{
  18.534 ++  size_t prefix1_len = strcspn (name1, "?*[");
  18.535 ++  size_t prefix2_len = strcspn (name2, "?*[");
  18.536 ++  size_t min_prefix_len;
  18.537 ++
  18.538 ++  /* Note that if there is no wildcard character, then we treat the
  18.539 ++     terminating 0 as part of the prefix.  Thus ".text" won't match
  18.540 ++     ".text." or ".text.*", for example.  */
  18.541 ++  if (name1[prefix1_len] == '\0')
  18.542 ++    prefix1_len++;
  18.543 ++  if (name2[prefix2_len] == '\0')
  18.544 ++    prefix2_len++;
  18.545 ++
  18.546 ++  min_prefix_len = prefix1_len < prefix2_len ? prefix1_len : prefix2_len;
  18.547 ++
  18.548 ++  return memcmp (name1, name2, min_prefix_len) == 0;
  18.549 ++}
  18.550 ++
  18.551 ++/* Select specialized code to handle various kinds of wildcard
  18.552 ++   statements.  */
  18.553 ++
  18.554 ++static void
  18.555 ++analyze_walk_wild_section_handler (lang_wild_statement_type *ptr)
  18.556 ++{
  18.557 ++  int sec_count = 0;
  18.558 ++  int wild_name_count = 0;
  18.559 ++  struct wildcard_list *sec;
  18.560 ++  int signature;
  18.561 ++  int data_counter;
  18.562 ++
  18.563 ++  ptr->walk_wild_section_handler = walk_wild_section_general;
  18.564 ++
  18.565 ++  /* Count how many wildcard_specs there are, and how many of those
  18.566 ++     actually use wildcards in the name.  Also, bail out if any of the
  18.567 ++     wildcard names are NULL. (Can this actually happen?
  18.568 ++     walk_wild_section used to test for it.)  And bail out if any
  18.569 ++     of the wildcards are more complex than a simple string
  18.570 ++     ending in a single '*'.  */
  18.571 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  18.572 ++    {
  18.573 ++      ++sec_count;
  18.574 ++      if (sec->spec.name == NULL)
  18.575 ++	return;
  18.576 ++      if (wildcardp (sec->spec.name))
  18.577 ++	{
  18.578 ++	  ++wild_name_count;
  18.579 ++	  if (!is_simple_wild (sec->spec.name))
  18.580 ++	    return;
  18.581 ++	}
  18.582 ++    }
  18.583 ++
  18.584 ++  /* The zero-spec case would be easy to optimize but it doesn't
  18.585 ++     happen in practice.  Likewise, more than 4 specs doesn't
  18.586 ++     happen in practice.  */
  18.587 ++  if (sec_count == 0 || sec_count > 4)
  18.588 ++    return;
  18.589 ++
  18.590 ++  /* Check that no two specs can match the same section.  */
  18.591 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  18.592 ++    {
  18.593 ++      struct wildcard_list *sec2;
  18.594 ++      for (sec2 = sec->next; sec2 != NULL; sec2 = sec2->next)
  18.595 ++	{
  18.596 ++	  if (wild_spec_can_overlap (sec->spec.name, sec2->spec.name))
  18.597 ++	    return;
  18.598 ++	}
  18.599 ++    }
  18.600 ++
  18.601 ++  signature = (sec_count << 8) + wild_name_count;
  18.602 ++  switch (signature)
  18.603 ++    {
  18.604 ++    case 0x0100:
  18.605 ++      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild0;
  18.606 ++      break;
  18.607 ++    case 0x0101:
  18.608 ++      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild1;
  18.609 ++      break;
  18.610 ++    case 0x0201:
  18.611 ++      ptr->walk_wild_section_handler = walk_wild_section_specs2_wild1;
  18.612 ++      break;
  18.613 ++    case 0x0302:
  18.614 ++      ptr->walk_wild_section_handler = walk_wild_section_specs3_wild2;
  18.615 ++      break;
  18.616 ++    case 0x0402:
  18.617 ++      ptr->walk_wild_section_handler = walk_wild_section_specs4_wild2;
  18.618 ++      break;
  18.619 ++    default:
  18.620 ++      return;
  18.621 ++    }
  18.622 ++
  18.623 ++  /* Now fill the data array with pointers to the specs, first the
  18.624 ++     specs with non-wildcard names, then the specs with wildcard
  18.625 ++     names.  It's OK to process the specs in different order from the
  18.626 ++     given order, because we've already determined that no section
  18.627 ++     will match more than one spec.  */
  18.628 ++  data_counter = 0;
  18.629 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  18.630 ++    if (!wildcardp (sec->spec.name))
  18.631 ++      ptr->handler_data[data_counter++] = sec;
  18.632 ++  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  18.633 ++    if (wildcardp (sec->spec.name))
  18.634 ++      ptr->handler_data[data_counter++] = sec;
  18.635 ++}
  18.636 ++
  18.637 + /* Handle a wild statement for a single file F.  */
  18.638 + 
  18.639 + static void
  18.640 +@@ -4353,6 +4737,7 @@
  18.641 +   new->section_list = section_list;
  18.642 +   new->keep_sections = keep_sections;
  18.643 +   lang_list_init (&new->children);
  18.644 ++  analyze_walk_wild_section_handler (new);
  18.645 + }
  18.646 + 
  18.647 + void
  18.648 +--- binutils-2.15/ld/ldlang.h.old	2004-05-17 15:36:16.000000000 -0400
  18.649 ++++ binutils-2.15/ld/ldlang.h	2006-01-23 13:32:33.653292000 -0500
  18.650 +@@ -295,7 +295,17 @@
  18.651 +   union lang_statement_union *file;
  18.652 + } lang_afile_asection_pair_statement_type;
  18.653 + 
  18.654 +-typedef struct lang_wild_statement_struct
  18.655 ++typedef struct lang_wild_statement_struct lang_wild_statement_type;
  18.656 ++
  18.657 ++typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
  18.658 ++			    asection *, lang_input_statement_type *, void *);
  18.659 ++
  18.660 ++typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *,
  18.661 ++					     lang_input_statement_type *,
  18.662 ++					     callback_t callback,
  18.663 ++					     void *data);
  18.664 ++
  18.665 ++struct lang_wild_statement_struct
  18.666 + {
  18.667 +   lang_statement_header_type header;
  18.668 +   const char *filename;
  18.669 +@@ -303,7 +313,10 @@
  18.670 +   struct wildcard_list *section_list;
  18.671 +   bfd_boolean keep_sections;
  18.672 +   lang_statement_list_type children;
  18.673 +-} lang_wild_statement_type;
  18.674 ++
  18.675 ++  walk_wild_section_handler_t walk_wild_section_handler;
  18.676 ++  struct wildcard_list *handler_data[4];
  18.677 ++};
  18.678 + 
  18.679 + typedef struct lang_address_statement_struct
  18.680 + {
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/patches/binutils/2.15/250-ld-stabs-tweak.patch	Mon Jul 28 21:32:33 2008 +0000
    19.3 @@ -0,0 +1,33 @@
    19.4 +Signed-off-by: dank@kegel.com
    19.5 +
    19.6 +See http://sourceware.org/ml/binutils/2005-12/msg00270.html
    19.7 +http://sourceware.org/ml/binutils-cvs/2005-12/msg00139.html
    19.8 +
    19.9 +STABS hash table size change, backported from the binutils CVS tree.  Here's
   19.10 +the CVS log comment for the original change:
   19.11 +
   19.12 +revision 1.25
   19.13 +date: 2005/12/29 10:29:23;  author: nickc;  state: Exp;  lines: +2 -3
   19.14 +(_bfd_link_section_stabs): Use bfd_hash_table_init rather than
   19.15 +bfd_hash_table_init_n(...,251) so that the size of the hash table can be
   19.16 +controlled by the user.
   19.17 +
   19.18 +Note that tunable hash table size changes were added after 2.15.  The effect
   19.19 +of this change is to make bfd use its default hash table size for the stabs
   19.20 +hash as well.
   19.21 +
   19.22 +
   19.23 +--- binutils-2.15/bfd/stabs.c.old	2004-05-17 15:36:04.000000000 -0400
   19.24 ++++ binutils-2.15/bfd/stabs.c	2006-02-09 15:21:56.567014000 -0500
   19.25 +@@ -241,9 +241,8 @@
   19.26 + 	goto error_return;
   19.27 +       /* Make sure the first byte is zero.  */
   19.28 +       (void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
   19.29 +-      if (! bfd_hash_table_init_n (&sinfo->includes.root,
   19.30 +-				   stab_link_includes_newfunc,
   19.31 +-				   251))
   19.32 ++      if (! bfd_hash_table_init (&sinfo->includes.root,
   19.33 ++				   stab_link_includes_newfunc))
   19.34 + 	goto error_return;
   19.35 +       sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
   19.36 +       sinfo->stabstr->flags |= SEC_HAS_CONTENTS | SEC_READONLY | SEC_DEBUGGING;
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/patches/binutils/2.15/260-s390-invalid-insn-format.patch	Mon Jul 28 21:32:33 2008 +0000
    20.3 @@ -0,0 +1,42 @@
    20.4 +Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012>
    20.5 +From: "Michael Geiger" <mcgege@gmx.de>
    20.6 +To: <dank@kegel.com>
    20.7 +Subject: Patch for cross compiling s/390 kernel on linux host
    20.8 +Date: Tue, 31 Aug 2004 15:45:41 +0200
    20.9 +
   20.10 +Dear Dan,
   20.11 +
   20.12 +I had big problems compiling a kernel for s/390 on my linux host - I tried
   20.13 +different chains from crosstool-0.28-rc34 and finally succeded with
   20.14 +gcc-3.3.4-glibc-2.3.2 after applying another patch to binutils-2.15
   20.15 +(attached).
   20.16 +All compilations of the different kernel versions I tried stopped with
   20.17 +"Invalid .insn format" somewhere. I checked the recent cvs version of
   20.18 +binutils and applied the latest diff to gas/config/tc-s390.c and that solved
   20.19 +it.
   20.20 +
   20.21 +Greetings
   20.22 +
   20.23 +Michael Geiger
   20.24 +
   20.25 +
   20.26 +diff -u -r1.39 -r1.40
   20.27 +--- src/gas/config/tc-s390.c	2004/05/06 11:01:48	1.39
   20.28 ++++ src/gas/config/tc-s390.c	2004/06/15 12:38:08	1.40
   20.29 +@@ -1596,13 +1596,13 @@
   20.30 +   if (exp.X_op == O_constant)
   20.31 +     {
   20.32 +       if (   (   opformat->oplen == 6
   20.33 +-	      && exp.X_add_number >= 0
   20.34 ++	      && (addressT) exp.X_add_number >= 0
   20.35 + 	      && (addressT) exp.X_add_number < (1ULL << 48))
   20.36 + 	  || (   opformat->oplen == 4
   20.37 +-	      && exp.X_add_number >= 0
   20.38 ++	      && (addressT) exp.X_add_number >= 0
   20.39 + 	      && (addressT) exp.X_add_number < (1ULL << 32))
   20.40 + 	  || (   opformat->oplen == 2
   20.41 +-	      && exp.X_add_number >= 0
   20.42 ++	      && (addressT) exp.X_add_number >= 0
   20.43 + 	      && (addressT) exp.X_add_number < (1ULL << 16)))
   20.44 + 	md_number_to_chars (insn, exp.X_add_number, opformat->oplen);
   20.45 +       else
    21.1 --- a/patches/binutils/2.15/400-mips-ELF_MAXPAGESIZE-4K.patch	Mon Jul 28 21:08:01 2008 +0000
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,26 +0,0 @@
    21.4 ---- binutils/bfd/elf32-mips.c~
    21.5 -+++ binutils/bfd/elf32-mips.c
    21.6 -@@ -1611,7 +1611,9 @@
    21.7 - 
    21.8 - /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
    21.9 -    page sizes of up to that limit, so we need to respect it.  */
   21.10 --#define ELF_MAXPAGESIZE			0x10000
   21.11 -+/*#define ELF_MAXPAGESIZE			0x10000*/
   21.12 -+/* Use 4K to shrink the elf header.  NOT for general use! */
   21.13 -+#define ELF_MAXPAGESIZE			0x1000
   21.14 - #define elf32_bed			elf32_tradbed
   21.15 - 
   21.16 - /* Include the target file again for this target.  */
   21.17 ---- binutils/bfd/elfn32-mips.c~
   21.18 -+++ binutils/bfd/elfn32-mips.c
   21.19 -@@ -1976,7 +1976,9 @@
   21.20 - 
   21.21 - /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
   21.22 -    page sizes of up to that limit, so we need to respect it.  */
   21.23 --#define ELF_MAXPAGESIZE			0x10000
   21.24 -+/*#define ELF_MAXPAGESIZE			0x10000*/
   21.25 -+/* Use 4K to shrink the elf header.  NOT for general use! */
   21.26 -+#define ELF_MAXPAGESIZE			0x1000
   21.27 - #define elf32_bed			elf32_tradbed
   21.28 - 
   21.29 - /* Include the target file again for this target.  */
    22.1 --- a/patches/binutils/2.15/600-arm-textrel.patch	Mon Jul 28 21:08:01 2008 +0000
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,63 +0,0 @@
    22.4 -http://sources.redhat.com/ml/binutils/2004-06/msg00010.html
    22.5 ---- binutils-2.15.90.0.3-old/bfd/elf32-arm.h	2004-04-12 14:56:33.000000000 -0500
    22.6 -+++ binutils-2.15.90.0.3/bfd/elf32-arm.h	2004-09-03 06:56:40.000000000 -0500
    22.7 -@@ -87,6 +87,8 @@
    22.8 - #endif
    22.9 - static bfd_boolean allocate_dynrelocs 
   22.10 -   PARAMS ((struct elf_link_hash_entry *h, PTR inf));
   22.11 -+static bfd_boolean elf32_arm_readonly_dynrelocs
   22.12 -+  PARAMS ((struct elf_link_hash_entry *, PTR));
   22.13 - static bfd_boolean create_got_section 
   22.14 -   PARAMS ((bfd * dynobj, struct bfd_link_info * info));
   22.15 - static bfd_boolean elf32_arm_create_dynamic_sections 
   22.16 -@@ -3531,6 +3533,37 @@
   22.17 -   return TRUE;
   22.18 - }
   22.19 - 
   22.20 -+/* Find any dynamic relocs that apply to read-only sections.  */
   22.21 -+
   22.22 -+static bfd_boolean
   22.23 -+elf32_arm_readonly_dynrelocs (h, inf)
   22.24 -+     struct elf_link_hash_entry *h;
   22.25 -+     PTR inf;
   22.26 -+{
   22.27 -+  struct elf32_arm_link_hash_entry *eh;
   22.28 -+  struct elf32_arm_relocs_copied *p;
   22.29 -+
   22.30 -+  if (h->root.type == bfd_link_hash_warning)
   22.31 -+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
   22.32 -+
   22.33 -+  eh = (struct elf32_arm_link_hash_entry *) h;
   22.34 -+  for (p = eh->relocs_copied; p != NULL; p = p->next)
   22.35 -+    {
   22.36 -+      asection *s = p->section;
   22.37 -+
   22.38 -+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
   22.39 -+       {
   22.40 -+         struct bfd_link_info *info = (struct bfd_link_info *) inf;
   22.41 -+
   22.42 -+         info->flags |= DF_TEXTREL;
   22.43 -+
   22.44 -+         /* Not an error, just cut short the traversal.  */
   22.45 -+         return FALSE;
   22.46 -+       }
   22.47 -+    }
   22.48 -+  return TRUE;
   22.49 -+}
   22.50 -+
   22.51 - /* Set the sizes of the dynamic sections.  */
   22.52 - 
   22.53 - static bfd_boolean
   22.54 -@@ -3740,6 +3773,12 @@
   22.55 - 	    return FALSE;
   22.56 - 	}
   22.57 - 
   22.58 -+      /* If any dynamic relocs apply to a read-only section,
   22.59 -+         then we need a DT_TEXTREL entry.  */
   22.60 -+      if ((info->flags & DF_TEXTREL) == 0)
   22.61 -+        elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs,
   22.62 -+                                (PTR) info);
   22.63 -+
   22.64 -       if ((info->flags & DF_TEXTREL) != 0)
   22.65 - 	{
   22.66 - 	  if (!add_dynamic_entry (DT_TEXTREL, 0))
    23.1 --- a/patches/binutils/2.15/700-bfd-hash-tweak.patch	Mon Jul 28 21:08:01 2008 +0000
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,24 +0,0 @@
    23.4 -Signed-off-by: dank@kegel.com
    23.5 -
    23.6 -Raising the size of the hash table is a noticable win when linking 
    23.7 -at least one large app.  
    23.8 -
    23.9 -There was a patch,
   23.10 -http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
   23.11 -to do this dynamically.  No idea why that didn't make it in.
   23.12 -So this tiny change to raise the default size is just
   23.13 -a stopgap for now.
   23.14 -
   23.15 -
   23.16 ---- binutils-2.15/bfd/hash.c.old	2003-12-01 01:33:01.000000000 -0500
   23.17 -+++ binutils-2.15/bfd/hash.c	2006-03-01 16:26:26.701991000 -0500
   23.18 -@@ -295,7 +295,7 @@
   23.19 - */
   23.20 - 
   23.21 - /* The default number of entries to use when creating a hash table.  */
   23.22 --#define DEFAULT_SIZE (4051)
   23.23 -+#define DEFAULT_SIZE (32749)
   23.24 - 
   23.25 - /* Create a new hash table, given a number of entries.  */
   23.26 - 
   23.27 -
    24.1 --- a/patches/binutils/2.15/710-allow-gcc-4.0.patch	Mon Jul 28 21:08:01 2008 +0000
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,75 +0,0 @@
    24.4 -Fix found here: http://www.freelists.org/archives/openbeos/11-2005/msg00090.html
    24.5 -
    24.6 -Fixes:
    24.7 -In file included from ./targ-cpu.h:1,
    24.8 -                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/obj-elf.h:42,
    24.9 -                 from ./obj-format.h:1,
   24.10 -                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/te-linux.h:4,
   24.11 -                 from ./targ-env.h:1,
   24.12 -                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/as.h:626,
   24.13 -                 from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/app.c:30:
   24.14 -/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/tc-i386.h:451: error: array type has incomplete element type
   24.15 -make[3]: *** [app.o] Error 1
   24.16 -make[3]: Leaving directory `/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-binutils/gas'
   24.17 -
   24.18 -when building binutils-2.15 with gcc-4.0
   24.19 -
   24.20 -
   24.21 -diff -ur binutils-2.15.old/gas/as.h binutils-2.15/gas/as.h
   24.22 ---- binutils-2.15.old/gas/as.h	2003-11-22 18:14:21.000000000 -0800
   24.23 -+++ binutils-2.15/gas/as.h	2006-02-14 22:05:35.000000000 -0800
   24.24 -@@ -605,7 +605,26 @@
   24.25 - struct expressionS;
   24.26 - struct fix;
   24.27 - typedef struct symbol symbolS;
   24.28 --struct relax_type;
   24.29 -+
   24.30 -+/* JF moved this here from as.h under the theory that nobody except MACHINE.c
   24.31 -+   and write.c care about it anyway.  */
   24.32 -+/* [zooey]: the above no longer holds with gcc4, as it keeps bugging about
   24.33 -+            incomplete element types in arrays, if relax_type isn't defined
   24.34 -+            here. So I moved the definition back from tc.h to here. */
   24.35 -+struct relax_type
   24.36 -+{
   24.37 -+  /* Forward reach. Signed number. > 0.  */
   24.38 -+  long rlx_forward;
   24.39 -+  /* Backward reach. Signed number. < 0.  */
   24.40 -+  long rlx_backward;
   24.41 -+
   24.42 -+  /* Bytes length of this address.  */
   24.43 -+  unsigned char rlx_length;
   24.44 -+
   24.45 -+  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
   24.46 -+  relax_substateT rlx_more;
   24.47 -+};
   24.48 -+
   24.49 - typedef struct frag fragS;
   24.50 - 
   24.51 - #ifdef BFD_ASSEMBLER
   24.52 -diff -ur binutils-2.15.old/gas/tc.h binutils-2.15/gas/tc.h
   24.53 ---- binutils-2.15.old/gas/tc.h	2003-12-03 15:39:38.000000000 -0800
   24.54 -+++ binutils-2.15/gas/tc.h	2006-02-14 22:03:35.000000000 -0800
   24.55 -@@ -24,23 +24,6 @@
   24.56 - 
   24.57 - extern const pseudo_typeS md_pseudo_table[];
   24.58 - 
   24.59 --/* JF moved this here from as.h under the theory that nobody except MACHINE.c
   24.60 --   and write.c care about it anyway.  */
   24.61 --
   24.62 --struct relax_type
   24.63 --{
   24.64 --  /* Forward reach. Signed number. > 0.  */
   24.65 --  long rlx_forward;
   24.66 --  /* Backward reach. Signed number. < 0.  */
   24.67 --  long rlx_backward;
   24.68 --
   24.69 --  /* Bytes length of this address.  */
   24.70 --  unsigned char rlx_length;
   24.71 --
   24.72 --  /* Next longer relax-state.  0 means there is no 'next' relax-state.  */
   24.73 --  relax_substateT rlx_more;
   24.74 --};
   24.75 --
   24.76 - typedef struct relax_type relax_typeS;
   24.77 - 
   24.78 - extern const int md_reloc_size;	/* Size of a relocation record */
    25.1 --- a/patches/binutils/2.15/720-psignal.patch	Mon Jul 28 21:08:01 2008 +0000
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,40 +0,0 @@
    25.4 -Make psignal prototype in libiberty match that in glibc.
    25.5 -
    25.6 -Fixes:
    25.7 -
    25.8 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
    25.9 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
   25.10 -/usr/include/signal.h:131: prototype declaration
   25.11 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
   25.12 -/usr/include/signal.h:131: prototype declaration
   25.13 -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
   25.14 -mprotect... make[1]: *** [strsignal.o] Error 1
   25.15 -make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
   25.16 -make: *** [all-libiberty] Error 2
   25.17 -
   25.18 -when building on red hat 7.1
   25.19 -though it's a bit of a mystery why libiberty's psignal is being compiled at
   25.20 -all, since red hat 7.1's glibc supports psignal (hence the error message)
   25.21 -
   25.22 ---- binutils-2.15/libiberty/strsignal.c.old	2005-04-18 13:57:40.000000000 -0700
   25.23 -+++ binutils-2.15/libiberty/strsignal.c	2005-04-18 13:59:09.000000000 -0700
   25.24 -@@ -544,7 +544,7 @@
   25.25 - 
   25.26 - /*
   25.27 - 
   25.28 --@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
   25.29 -+@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
   25.30 - 
   25.31 - Print @var{message} to the standard error, followed by a colon,
   25.32 - followed by the description of the signal specified by @var{signo},
   25.33 -@@ -557,9 +557,7 @@
   25.34 - #ifndef HAVE_PSIGNAL
   25.35 - 
   25.36 - void
   25.37 --psignal (signo, message)
   25.38 --  unsigned signo;
   25.39 --  char *message;
   25.40 -+psignal (int signo, const char *message)
   25.41 - {
   25.42 -   if (signal_names == NULL)
   25.43 -     {
    26.1 --- a/patches/binutils/2.15/730-solaris-qsort.patch	Mon Jul 28 21:08:01 2008 +0000
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,22 +0,0 @@
    26.4 -See http://sources.redhat.com/ml/binutils/2004-06/msg00114.html
    26.5 -
    26.6 ---- src/bfd/elflink.c.org	2004-07-05 09:11:42.920597000 -0400
    26.7 -+++ src/bfd/elflink.c	2004-07-05 09:12:59.240847000 -0400
    26.8 -@@ -2700,7 +2700,7 @@
    26.9 -     return vdiff > 0 ? 1 : -1;
   26.10 -   else
   26.11 -     {
   26.12 --      long sdiff = h1->root.u.def.section - h2->root.u.def.section;
   26.13 -+      long sdiff = h1->root.u.def.section->id - h2->root.u.def.section->id;
   26.14 -       if (sdiff != 0)
   26.15 - 	return sdiff > 0 ? 1 : -1;
   26.16 -     }
   26.17 -@@ -3954,7 +3954,7 @@
   26.18 - 		i = idx + 1;
   26.19 - 	      else
   26.20 - 		{
   26.21 --		  long sdiff = slook - h->root.u.def.section;
   26.22 -+		  long sdiff = slook->id - h->root.u.def.section->id;
   26.23 - 		  if (sdiff < 0)
   26.24 - 		    j = idx;
   26.25 - 		  else if (sdiff > 0)
    27.1 --- a/patches/binutils/2.15/740-vmx.patch	Mon Jul 28 21:08:01 2008 +0000
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,45 +0,0 @@
    27.4 -Grabbed with
    27.5 -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/opcodes/ppc-opc.c.diff?r1=1.70&r2=1.71&cvsroot=src'
    27.6 -See 
    27.7 -http://mail.gnu.org/archive/html/bug-binutils/2004-05/msg00071.html
    27.8 -and
    27.9 -http://sources.redhat.com/ml/binutils-cvs/2004-05/msg00111.html
   27.10 -
   27.11 -This fixes problems like
   27.12 -{standard input}: Assembler messages:
   27.13 -{standard input}:1: Error: Unrecognized opcode: `dssall' 
   27.14 -which show up in binutils-2.15 when building the Linux kernel,
   27.15 -or possibly failed compilations when building setjmp/longjmp in glibc.
   27.16 -
   27.17 -An alternative fix would be to pass -many to the assembler.
   27.18 -A patch to do that for glibc is at
   27.19 -wget 'http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2004-05&msgid=40B36E8C.9030609%40us.ibm.com'
   27.20 -Yet another, better, fix would be for gcc to generate assembly
   27.21 -that told the assembler which processor type to use.
   27.22 -Presumably the Linux kernel sources would need a fix, too.
   27.23 -Probably better to just fix binutils to accept sources that it used to.
   27.24 -
   27.25 -
   27.26 -===================================================================
   27.27 -RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
   27.28 -retrieving revision 1.70
   27.29 -retrieving revision 1.71
   27.30 -diff -u -r1.70 -r1.71
   27.31 ---- src/opcodes/ppc-opc.c	2004/05/05 13:43:36	1.70
   27.32 -+++ src/opcodes/ppc-opc.c	2004/05/19 05:11:48	1.71
   27.33 -@@ -1004,8 +1004,13 @@
   27.34 - 
   27.35 -   /* If only one bit of the FXM field is set, we can use the new form
   27.36 -      of the instruction, which is faster.  Unlike the Power4 branch hint
   27.37 --     encoding, this is not backward compatible.  */
   27.38 --  else if ((dialect & PPC_OPCODE_POWER4) != 0 && (value & -value) == value)
   27.39 -+     encoding, this is not backward compatible.  Do not generate the
   27.40 -+     new form unless -mpower4 has been given, or -many and the two
   27.41 -+     operand form of mfcr was used.  */
   27.42 -+  else if ((value & -value) == value
   27.43 -+	   && ((dialect & PPC_OPCODE_POWER4) != 0
   27.44 -+	       || ((dialect & PPC_OPCODE_ANY) != 0
   27.45 -+		   && (insn & (0x3ff << 1)) == 19 << 1)))
   27.46 -     insn |= 1 << 20;
   27.47 - 
   27.48 -   /* Any other value on mfcr is an error.  */
    28.1 --- a/patches/binutils/2.15/750-arm-undef-imm.patch	Mon Jul 28 21:08:01 2008 +0000
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,51 +0,0 @@
    28.4 -From http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?r1=1.168&r2=1.169&cvsroot=src
    28.5 -See also http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-July/023128.html,
    28.6 -"[CRITICAL PATCH] 2.6: fix silent build error]"
    28.7 -
    28.8 -Revision 1.169, Fri Jul 2 11:12:29 2004 UTC (19 hours, 4 minutes ago) by nickc
    28.9 -Branch: MAIN
   28.10 -CVS Tags: binutils_latest_snapshot, HEAD
   28.11 -Changes since 1.168: +14 -1 lines
   28.12 -
   28.13 -(md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come
   28.14 -from undefined symbols.
   28.15 -Always consider this fixup to have been processed as a reloc cannot be
   28.16 -generated for it.
   28.17 -
   28.18 -
   28.19 -===================================================================
   28.20 -RCS file: /cvs/src/src/gas/config/tc-arm.c,v
   28.21 -retrieving revision 1.168
   28.22 -retrieving revision 1.169
   28.23 -diff -u -r1.168 -r1.169
   28.24 ---- src/gas/config/tc-arm.c	2004/04/30 10:51:12	1.168
   28.25 -+++ src/gas/config/tc-arm.c	2004/07/02 11:12:29	1.169
   28.26 -@@ -12186,6 +12186,20 @@
   28.27 -   switch (fixP->fx_r_type)
   28.28 -     {
   28.29 -     case BFD_RELOC_ARM_IMMEDIATE:
   28.30 -+      /* We claim that this fixup has been processed here,
   28.31 -+	 even if in fact we generate an error because we do
   28.32 -+	 not have a reloc for it, so tc_gen_reloc will reject it.  */
   28.33 -+      fixP->fx_done = 1;
   28.34 -+
   28.35 -+      if (fixP->fx_addsy
   28.36 -+	  && ! S_IS_DEFINED (fixP->fx_addsy))
   28.37 -+	{
   28.38 -+	  as_bad_where (fixP->fx_file, fixP->fx_line,
   28.39 -+			_("undefined symbol %s used as an immediate value"),
   28.40 -+			S_GET_NAME (fixP->fx_addsy));
   28.41 -+	  break;
   28.42 -+	}
   28.43 -+
   28.44 -       newimm = validate_immediate (value);
   28.45 -       temp = md_chars_to_number (buf, INSN_SIZE);
   28.46 - 
   28.47 -@@ -12202,7 +12216,6 @@
   28.48 - 
   28.49 -       newimm |= (temp & 0xfffff000);
   28.50 -       md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
   28.51 --      fixP->fx_done = 1;
   28.52 -       break;
   28.53 - 
   28.54 -     case BFD_RELOC_ARM_ADRL_IMMEDIATE:
    29.1 --- a/patches/binutils/2.15/760-skip-comments.patch	Mon Jul 28 21:08:01 2008 +0000
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,101 +0,0 @@
    29.4 -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html
    29.5 -Fixes
    29.6 -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 
    29.7 -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3
    29.8 -
    29.9 -Paths adjusted to match crosstool's patcher.
   29.10 -
   29.11 -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de
   29.12 -From: Andreas Schwab <schwab at suse dot de>
   29.13 -To: Nathan Sidwell <nathan at codesourcery dot com>
   29.14 -Cc: Ian Lance Taylor <ian at wasabisystems dot com>, binutils at sources dot redhat dot com
   29.15 -Date: Fri, 23 Apr 2004 22:27:19 +0200
   29.16 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line
   29.17 -
   29.18 -Nathan Sidwell <nathan@codesourcery.com> writes:
   29.19 -
   29.20 -> Index: read.c
   29.21 -> ===================================================================
   29.22 -> RCS file: /cvs/src/src/gas/read.c,v
   29.23 -> retrieving revision 1.76
   29.24 -> diff -c -3 -p -r1.76 read.c
   29.25 -> *** read.c	12 Mar 2004 17:48:12 -0000	1.76
   29.26 -> --- read.c	18 Mar 2004 09:56:05 -0000
   29.27 -> *************** read_a_source_file (char *name)
   29.28 -> *** 1053,1059 ****
   29.29 ->   #endif
   29.30 ->   	  input_line_pointer--;
   29.31 ->   	  /* Report unknown char as ignored.  */
   29.32 -> ! 	  ignore_rest_of_line ();
   29.33 ->   	}
   29.34 ->   
   29.35 ->   #ifdef md_after_pass_hook
   29.36 -> --- 1053,1059 ----
   29.37 ->   #endif
   29.38 ->   	  input_line_pointer--;
   29.39 ->   	  /* Report unknown char as ignored.  */
   29.40 -> ! 	  demand_empty_rest_of_line ();
   29.41 ->   	}
   29.42 ->   
   29.43 ->   #ifdef md_after_pass_hook
   29.44 -
   29.45 -This means that the unknown character is no longer ignored, despite the
   29.46 -comment.  As a side effect a line starting with a line comment character
   29.47 -not followed by APP in NO_APP mode now triggers an error instead of just a
   29.48 -warning, breaking builds of glibc on m68k-linux.  Earlier in
   29.49 -read_a_source_file where #APP is handled there is another comment that
   29.50 -claims that unknown comments are ignored, when in fact they aren't (only
   29.51 -the initial line comment character is skipped).
   29.52 -
   29.53 -Note that the presence of #APP will mess up the line counters, but
   29.54 -that appears to be difficult to fix.
   29.55 -
   29.56 -Andreas.
   29.57 -
   29.58 -2004-04-23  Andreas Schwab  <schwab@suse.de>
   29.59 -
   29.60 -	* read.c (read_a_source_file): Ignore unknown text after line
   29.61 -	comment character.  Fix misleading comment.
   29.62 -
   29.63 ---- binutils/gas/read.c.~1.78.~	2004-04-23 08:58:23.000000000 +0200
   29.64 -+++ binutils/gas/read.c	2004-04-23 21:49:01.000000000 +0200
   29.65 -@@ -1,6 +1,6 @@
   29.66 - /* read.c - read a source file -
   29.67 -    Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
   29.68 --   1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
   29.69 -+   1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
   29.70 - 
   29.71 - This file is part of GAS, the GNU Assembler.
   29.72 - 
   29.73 -@@ -950,10 +950,14 @@ read_a_source_file (char *name)
   29.74 - 	      unsigned int new_length;
   29.75 - 	      char *tmp_buf = 0;
   29.76 - 
   29.77 --	      bump_line_counters ();
   29.78 - 	      s = input_line_pointer;
   29.79 - 	      if (strncmp (s, "APP\n", 4))
   29.80 --		continue;	/* We ignore it */
   29.81 -+		{
   29.82 -+		  /* We ignore it */
   29.83 -+		  ignore_rest_of_line ();
   29.84 -+		  continue;
   29.85 -+		}
   29.86 -+	      bump_line_counters ();
   29.87 - 	      s += 4;
   29.88 - 
   29.89 - 	      sb_new (&sbuf);
   29.90 -@@ -1052,7 +1056,7 @@ read_a_source_file (char *name)
   29.91 - 	    continue;
   29.92 - #endif
   29.93 - 	  input_line_pointer--;
   29.94 --	  /* Report unknown char as ignored.  */
   29.95 -+	  /* Report unknown char as error.  */
   29.96 - 	  demand_empty_rest_of_line ();
   29.97 - 	}
   29.98 - 
   29.99 -
  29.100 --- 
  29.101 -Andreas Schwab, SuSE Labs, schwab@suse.de
  29.102 -SuSE Linux AG, Maxfeldstra&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
  29.103 -Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
  29.104 -"And now for something completely different."
    30.1 --- a/patches/binutils/2.15/770-cross-gprof.patch	Mon Jul 28 21:08:01 2008 +0000
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,22 +0,0 @@
    30.4 ---- binutils-2.15/configure.old	2004-07-21 21:36:47.000000000 -0700
    30.5 -+++ binutils-2.15/configure	2004-07-21 21:37:08.000000000 -0700
    30.6 -@@ -999,7 +999,7 @@
    30.7 - 
    30.8 - # Some tools are only suitable for building in a "native" situation.
    30.9 - # Remove these if host!=target.  
   30.10 --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   30.11 -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   30.12 - 
   30.13 - # Similarly, some are only suitable for cross toolchains.
   30.14 - # Remove these if host=target.
   30.15 ---- binutils-2.15/configure.in.old	2004-07-21 21:37:19.000000000 -0700
   30.16 -+++ binutils-2.15/configure.in	2004-07-21 21:37:34.000000000 -0700
   30.17 -@@ -236,7 +236,7 @@
   30.18 - 
   30.19 - # Some tools are only suitable for building in a "native" situation.
   30.20 - # Remove these if host!=target.  
   30.21 --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   30.22 -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
   30.23 - 
   30.24 - # Similarly, some are only suitable for cross toolchains.
   30.25 - # Remove these if host=target.
    31.1 --- a/patches/binutils/2.15/780-gccpr15247-fix.patch	Mon Jul 28 21:08:01 2008 +0000
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,192 +0,0 @@
    31.4 -See
    31.5 -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247
    31.6 -
    31.7 -Fixes spurious error
    31.8 -/tmp/ccvNi4ou.s: Assembler messages:
    31.9 -/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31]
   31.10 -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1
   31.11 -
   31.12 -when compiling glibc's dosincos.c with gcc-3.4.0
   31.13 -
   31.14 -===================================================================
   31.15 -RCS file: /cvs/src/src/opcodes/sparc-opc.c,v
   31.16 -retrieving revision 1.9
   31.17 -retrieving revision 1.10
   31.18 -diff -u -r1.9 -r1.10
   31.19 ---- src/opcodes/sparc-opc.c	2004/01/18 23:46:32	1.9
   31.20 -+++ src/opcodes/sparc-opc.c	2004/04/20 10:23:51	1.10
   31.21 -@@ -1273,110 +1273,72 @@
   31.22 - #define FM_DF 2		/* v9 */
   31.23 - #define FM_QF 3		/* v9 */
   31.24 - 
   31.25 --#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \
   31.26 --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags, v9 }, \
   31.27 --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags, v9 }
   31.28 --
   31.29 --#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \
   31.30 --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \
   31.31 --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \
   31.32 --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \
   31.33 --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 }
   31.34 -+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \
   31.35 -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags, v9 }, \
   31.36 -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags, v9 }
   31.37 -+
   31.38 -+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \
   31.39 -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \
   31.40 -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \
   31.41 -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \
   31.42 -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 }
   31.43 - 
   31.44 - /* FIXME: use fmovicc/fmovfcc? */ /* v9 */
   31.45 --#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \
   31.46 --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z,f,g", flags | F_FLOAT, v9 }, \
   31.47 --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \
   31.48 --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z,f,g", flags | F_FLOAT, v9 }, \
   31.49 --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \
   31.50 --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \
   31.51 --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 }
   31.52 --
   31.53 --/* v9 */ fmovcc  ("fmovda",	FM_DF, CONDA, FCONDA, 0),
   31.54 --/* v9 */ fmovcc  ("fmovqa",	FM_QF, CONDA, FCONDA, 0),
   31.55 --/* v9 */ fmovcc  ("fmovsa",	FM_SF, CONDA, FCONDA, 0),
   31.56 --/* v9 */ fmovicc ("fmovdcc",	FM_DF, CONDCC, 0),
   31.57 --/* v9 */ fmovicc ("fmovqcc",	FM_QF, CONDCC, 0),
   31.58 --/* v9 */ fmovicc ("fmovscc",	FM_SF, CONDCC, 0),
   31.59 --/* v9 */ fmovicc ("fmovdcs",	FM_DF, CONDCS, 0),
   31.60 --/* v9 */ fmovicc ("fmovqcs",	FM_QF, CONDCS, 0),
   31.61 --/* v9 */ fmovicc ("fmovscs",	FM_SF, CONDCS, 0),
   31.62 --/* v9 */ fmovcc  ("fmovde",	FM_DF, CONDE, FCONDE, 0),
   31.63 --/* v9 */ fmovcc  ("fmovqe",	FM_QF, CONDE, FCONDE, 0),
   31.64 --/* v9 */ fmovcc  ("fmovse",	FM_SF, CONDE, FCONDE, 0),
   31.65 --/* v9 */ fmovcc  ("fmovdg",	FM_DF, CONDG, FCONDG, 0),
   31.66 --/* v9 */ fmovcc  ("fmovqg",	FM_QF, CONDG, FCONDG, 0),
   31.67 --/* v9 */ fmovcc  ("fmovsg",	FM_SF, CONDG, FCONDG, 0),
   31.68 --/* v9 */ fmovcc  ("fmovdge",	FM_DF, CONDGE, FCONDGE, 0),
   31.69 --/* v9 */ fmovcc  ("fmovqge",	FM_QF, CONDGE, FCONDGE, 0),
   31.70 --/* v9 */ fmovcc  ("fmovsge",	FM_SF, CONDGE, FCONDGE, 0),
   31.71 --/* v9 */ fmovicc ("fmovdgeu",	FM_DF, CONDGEU, F_ALIAS),
   31.72 --/* v9 */ fmovicc ("fmovqgeu",	FM_QF, CONDGEU, F_ALIAS),
   31.73 --/* v9 */ fmovicc ("fmovsgeu",	FM_SF, CONDGEU, F_ALIAS),
   31.74 --/* v9 */ fmovicc ("fmovdgu",	FM_DF, CONDGU, 0),
   31.75 --/* v9 */ fmovicc ("fmovqgu",	FM_QF, CONDGU, 0),
   31.76 --/* v9 */ fmovicc ("fmovsgu",	FM_SF, CONDGU, 0),
   31.77 --/* v9 */ fmovcc  ("fmovdl",	FM_DF, CONDL, FCONDL, 0),
   31.78 --/* v9 */ fmovcc  ("fmovql",	FM_QF, CONDL, FCONDL, 0),
   31.79 --/* v9 */ fmovcc  ("fmovsl",	FM_SF, CONDL, FCONDL, 0),
   31.80 --/* v9 */ fmovcc  ("fmovdle",	FM_DF, CONDLE, FCONDLE, 0),
   31.81 --/* v9 */ fmovcc  ("fmovqle",	FM_QF, CONDLE, FCONDLE, 0),
   31.82 --/* v9 */ fmovcc  ("fmovsle",	FM_SF, CONDLE, FCONDLE, 0),
   31.83 --/* v9 */ fmovicc ("fmovdleu",	FM_DF, CONDLEU, 0),
   31.84 --/* v9 */ fmovicc ("fmovqleu",	FM_QF, CONDLEU, 0),
   31.85 --/* v9 */ fmovicc ("fmovsleu",	FM_SF, CONDLEU, 0),
   31.86 --/* v9 */ fmovfcc ("fmovdlg",	FM_DF, FCONDLG, 0),
   31.87 --/* v9 */ fmovfcc ("fmovqlg",	FM_QF, FCONDLG, 0),
   31.88 --/* v9 */ fmovfcc ("fmovslg",	FM_SF, FCONDLG, 0),
   31.89 --/* v9 */ fmovicc ("fmovdlu",	FM_DF, CONDLU, F_ALIAS),
   31.90 --/* v9 */ fmovicc ("fmovqlu",	FM_QF, CONDLU, F_ALIAS),
   31.91 --/* v9 */ fmovicc ("fmovslu",	FM_SF, CONDLU, F_ALIAS),
   31.92 --/* v9 */ fmovcc  ("fmovdn",	FM_DF, CONDN, FCONDN, 0),
   31.93 --/* v9 */ fmovcc  ("fmovqn",	FM_QF, CONDN, FCONDN, 0),
   31.94 --/* v9 */ fmovcc  ("fmovsn",	FM_SF, CONDN, FCONDN, 0),
   31.95 --/* v9 */ fmovcc  ("fmovdne",	FM_DF, CONDNE, FCONDNE, 0),
   31.96 --/* v9 */ fmovcc  ("fmovqne",	FM_QF, CONDNE, FCONDNE, 0),
   31.97 --/* v9 */ fmovcc  ("fmovsne",	FM_SF, CONDNE, FCONDNE, 0),
   31.98 --/* v9 */ fmovicc ("fmovdneg",	FM_DF, CONDNEG, 0),
   31.99 --/* v9 */ fmovicc ("fmovqneg",	FM_QF, CONDNEG, 0),
  31.100 --/* v9 */ fmovicc ("fmovsneg",	FM_SF, CONDNEG, 0),
  31.101 --/* v9 */ fmovcc  ("fmovdnz",	FM_DF, CONDNZ, FCONDNZ, F_ALIAS),
  31.102 --/* v9 */ fmovcc  ("fmovqnz",	FM_QF, CONDNZ, FCONDNZ, F_ALIAS),
  31.103 --/* v9 */ fmovcc  ("fmovsnz",	FM_SF, CONDNZ, FCONDNZ, F_ALIAS),
  31.104 --/* v9 */ fmovfcc ("fmovdo",	FM_DF, FCONDO, 0),
  31.105 --/* v9 */ fmovfcc ("fmovqo",	FM_QF, FCONDO, 0),
  31.106 --/* v9 */ fmovfcc ("fmovso",	FM_SF, FCONDO, 0),
  31.107 --/* v9 */ fmovicc ("fmovdpos",	FM_DF, CONDPOS, 0),
  31.108 --/* v9 */ fmovicc ("fmovqpos",	FM_QF, CONDPOS, 0),
  31.109 --/* v9 */ fmovicc ("fmovspos",	FM_SF, CONDPOS, 0),
  31.110 --/* v9 */ fmovfcc ("fmovdu",	FM_DF, FCONDU, 0),
  31.111 --/* v9 */ fmovfcc ("fmovqu",	FM_QF, FCONDU, 0),
  31.112 --/* v9 */ fmovfcc ("fmovsu",	FM_SF, FCONDU, 0),
  31.113 --/* v9 */ fmovfcc ("fmovdue",	FM_DF, FCONDUE, 0),
  31.114 --/* v9 */ fmovfcc ("fmovque",	FM_QF, FCONDUE, 0),
  31.115 --/* v9 */ fmovfcc ("fmovsue",	FM_SF, FCONDUE, 0),
  31.116 --/* v9 */ fmovfcc ("fmovdug",	FM_DF, FCONDUG, 0),
  31.117 --/* v9 */ fmovfcc ("fmovqug",	FM_QF, FCONDUG, 0),
  31.118 --/* v9 */ fmovfcc ("fmovsug",	FM_SF, FCONDUG, 0),
  31.119 --/* v9 */ fmovfcc ("fmovduge",	FM_DF, FCONDUGE, 0),
  31.120 --/* v9 */ fmovfcc ("fmovquge",	FM_QF, FCONDUGE, 0),
  31.121 --/* v9 */ fmovfcc ("fmovsuge",	FM_SF, FCONDUGE, 0),
  31.122 --/* v9 */ fmovfcc ("fmovdul",	FM_DF, FCONDUL, 0),
  31.123 --/* v9 */ fmovfcc ("fmovqul",	FM_QF, FCONDUL, 0),
  31.124 --/* v9 */ fmovfcc ("fmovsul",	FM_SF, FCONDUL, 0),
  31.125 --/* v9 */ fmovfcc ("fmovdule",	FM_DF, FCONDULE, 0),
  31.126 --/* v9 */ fmovfcc ("fmovqule",	FM_QF, FCONDULE, 0),
  31.127 --/* v9 */ fmovfcc ("fmovsule",	FM_SF, FCONDULE, 0),
  31.128 --/* v9 */ fmovicc ("fmovdvc",	FM_DF, CONDVC, 0),
  31.129 --/* v9 */ fmovicc ("fmovqvc",	FM_QF, CONDVC, 0),
  31.130 --/* v9 */ fmovicc ("fmovsvc",	FM_SF, CONDVC, 0),
  31.131 --/* v9 */ fmovicc ("fmovdvs",	FM_DF, CONDVS, 0),
  31.132 --/* v9 */ fmovicc ("fmovqvs",	FM_QF, CONDVS, 0),
  31.133 --/* v9 */ fmovicc ("fmovsvs",	FM_SF, CONDVS, 0),
  31.134 --/* v9 */ fmovcc  ("fmovdz",	FM_DF, CONDZ, FCONDZ, F_ALIAS),
  31.135 --/* v9 */ fmovcc  ("fmovqz",	FM_QF, CONDZ, FCONDZ, F_ALIAS),
  31.136 --/* v9 */ fmovcc  ("fmovsz",	FM_SF, CONDZ, FCONDZ, F_ALIAS),
  31.137 --
  31.138 -+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \
  31.139 -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0),  "z," args, flags | F_FLOAT, v9 }, \
  31.140 -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \
  31.141 -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0),  F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0),  "Z," args, flags | F_FLOAT, v9 }, \
  31.142 -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \
  31.143 -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \
  31.144 -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 }
  31.145 -+
  31.146 -+#define fmovicc(suffix, cond, flags) /* v9 */ \
  31.147 -+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags),		\
  31.148 -+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags),		\
  31.149 -+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags)
  31.150 -+
  31.151 -+#define fmovfcc(suffix, fcond, flags) /* v9 */ \
  31.152 -+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags),		\
  31.153 -+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags),		\
  31.154 -+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags)
  31.155 -+
  31.156 -+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \
  31.157 -+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags),	\
  31.158 -+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags),	\
  31.159 -+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags)
  31.160 -+
  31.161 -+/* v9 */ fmovcc  ("a", CONDA, FCONDA, 0),
  31.162 -+/* v9 */ fmovicc ("cc", CONDCC, 0),
  31.163 -+/* v9 */ fmovicc ("cs", CONDCS, 0),
  31.164 -+/* v9 */ fmovcc  ("e", CONDE, FCONDE, 0),
  31.165 -+/* v9 */ fmovcc  ("g", CONDG, FCONDG, 0),
  31.166 -+/* v9 */ fmovcc  ("ge", CONDGE, FCONDGE, 0),
  31.167 -+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS),
  31.168 -+/* v9 */ fmovicc ("gu", CONDGU, 0),
  31.169 -+/* v9 */ fmovcc  ("l", CONDL, FCONDL, 0),
  31.170 -+/* v9 */ fmovcc  ("le", CONDLE, FCONDLE, 0),
  31.171 -+/* v9 */ fmovicc ("leu", CONDLEU, 0),
  31.172 -+/* v9 */ fmovfcc ("lg", FCONDLG, 0),
  31.173 -+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS),
  31.174 -+/* v9 */ fmovcc  ("n", CONDN, FCONDN, 0),
  31.175 -+/* v9 */ fmovcc  ("ne", CONDNE, FCONDNE, 0),
  31.176 -+/* v9 */ fmovicc ("neg", CONDNEG, 0),
  31.177 -+/* v9 */ fmovcc  ("nz", CONDNZ, FCONDNZ, F_ALIAS),
  31.178 -+/* v9 */ fmovfcc ("o", FCONDO, 0),
  31.179 -+/* v9 */ fmovicc ("pos", CONDPOS, 0),
  31.180 -+/* v9 */ fmovfcc ("u", FCONDU, 0),
  31.181 -+/* v9 */ fmovfcc ("ue", FCONDUE, 0),
  31.182 -+/* v9 */ fmovfcc ("ug", FCONDUG, 0),
  31.183 -+/* v9 */ fmovfcc ("uge", FCONDUGE, 0),
  31.184 -+/* v9 */ fmovfcc ("ul", FCONDUL, 0),
  31.185 -+/* v9 */ fmovfcc ("ule", FCONDULE, 0),
  31.186 -+/* v9 */ fmovicc ("vc", CONDVC, 0),
  31.187 -+/* v9 */ fmovicc ("vs", CONDVS, 0),
  31.188 -+/* v9 */ fmovcc  ("z", CONDZ, FCONDZ, F_ALIAS),
  31.189 -+
  31.190 -+#undef fmoviccx /* v9 */
  31.191 -+#undef fmovfccx /* v9 */
  31.192 -+#undef fmovccx /* v9 */
  31.193 - #undef fmovicc /* v9 */
  31.194 - #undef fmovfcc /* v9 */
  31.195 - #undef fmovcc /* v9 */
    32.1 --- a/patches/binutils/2.15/790-ld-callahan.patch	Mon Jul 28 21:08:01 2008 +0000
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,677 +0,0 @@
    32.4 -Signed-off-by: dank@kegel.com
    32.5 -Fixes ld speed issue. 
    32.6 -See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html
    32.7 -See thread "Re: optimizations for 3x speedup in ld",
    32.8 -http://sources.redhat.com/ml/binutils/2005-03/msg00847.html
    32.9 -
   32.10 -Wildcard section matching enhancement, backported from the binutils CVS tree.
   32.11 -Here's the CVS log comment from the original change to ldlang.c:
   32.12 -
   32.13 -revision 1.177
   32.14 -date: 2005/04/06 15:33:02;  author: jakub;  state: Exp;  lines: +438 -51
   32.15 -2005-04-06  Jakub Jelinek  <jakub@redhat.com>
   32.16 -
   32.17 -        * ldlang.c: Formatting.
   32.18 -        (walk_wild_consider_section): Remember return value from wildcardp.
   32.19 -        (is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen.
   32.20 -        (wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen.
   32.21 -
   32.22 -2005-04-06  Robert O'Callahan  <rocallahan@novell.com>
   32.23 -
   32.24 -        * ld.h (lean_section_userdata_type): Remove.
   32.25 -        (fat_section_userdata_type): Remove file field.
   32.26 -        (SECTION_USERDATA_SIZE): Remove.
   32.27 -        * ldlang.c (init_os): Eliminate initialization of unused
   32.28 -        lean_section_userdata_type.
   32.29 -
   32.30 -        * ldlang.h (callback_t, walk_wild_section_handler_t): New
   32.31 -        typedefs.
   32.32 -        (struct lang_wild_statement_struct): Add walk_wild_section_handler
   32.33 -        and handler_data fields.
   32.34 -        * ldlang.c (callback_t): Removed.
   32.35 -        (walk_wild_consider_section, walk_wild_section_general,
   32.36 -        section_iterator_callback, find_section, is_simple_wild,
   32.37 -        match_simple_wild, walk_wild_section_specs1_wild0,
   32.38 -        walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1,
   32.39 -        walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2,
   32.40 -        wild_spec_can_overlap, analyze_walk_wild_section_handler): New
   32.41 -        functions.
   32.42 -        (lang_add_wild): Call analyze_walk_wild_section_handler.
   32.43 -        (walk_wild_section): Renamed to walk_wild_section_general and
   32.44 -        created a wrapper function.
   32.45 -        (section_iterator_callback_data): New typedef.
   32.46 -
   32.47 -Note that bfd_get_section_by_name_if didn't exist in 2.15, so it was backported
   32.48 -as well.
   32.49 -
   32.50 ---- binutils-2.15/bfd/bfd-in2.h.old	2004-05-17 15:35:56.000000000 -0400
   32.51 -+++ binutils-2.15/bfd/bfd-in2.h	2006-02-09 11:54:45.989940000 -0500
   32.52 -@@ -1425,6 +1425,10 @@
   32.53 - 
   32.54 - asection *bfd_get_section_by_name (bfd *abfd, const char *name);
   32.55 - 
   32.56 -+asection *bfd_get_section_by_name_if (bfd *abfd, const char *name,
   32.57 -+   bfd_boolean (*operation) (bfd *, asection *, void *),
   32.58 -+   void *user_storage);
   32.59 -+
   32.60 - char *bfd_get_unique_section_name
   32.61 -    (bfd *abfd, const char *templat, int *count);
   32.62 - 
   32.63 ---- binutils-2.15/bfd/section.c.old	2003-12-01 01:33:01.000000000 -0500
   32.64 -+++ binutils-2.15/bfd/section.c	2006-01-23 14:16:54.768993000 -0500
   32.65 -@@ -801,6 +801,57 @@
   32.66 - 
   32.67 - /*
   32.68 - FUNCTION
   32.69 -+	bfd_get_section_by_name_if
   32.70 -+
   32.71 -+SYNOPSIS
   32.72 -+	asection *bfd_get_section_by_name_if
   32.73 -+	  (bfd *abfd,
   32.74 -+	   const char *name,
   32.75 -+	   bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
   32.76 -+	   void *obj);
   32.77 -+
   32.78 -+DESCRIPTION
   32.79 -+	Call the provided function @var{func} for each section
   32.80 -+	attached to the BFD @var{abfd} whose name matches @var{name},
   32.81 -+	passing @var{obj} as an argument. The function will be called
   32.82 -+	as if by
   32.83 -+
   32.84 -+|	func (abfd, the_section, obj);
   32.85 -+
   32.86 -+	It returns the first section for which @var{func} returns true,
   32.87 -+	otherwise <<NULL>>.
   32.88 -+
   32.89 -+*/
   32.90 -+
   32.91 -+asection *
   32.92 -+bfd_get_section_by_name_if (bfd *abfd, const char *name,
   32.93 -+			    bfd_boolean (*operation) (bfd *,
   32.94 -+						      asection *,
   32.95 -+						      void *),
   32.96 -+			    void *user_storage)
   32.97 -+{
   32.98 -+  struct section_hash_entry *sh;
   32.99 -+  unsigned long hash;
  32.100 -+
  32.101 -+  sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE);
  32.102 -+  if (sh == NULL)
  32.103 -+    return NULL;
  32.104 -+
  32.105 -+  hash = sh->root.hash;
  32.106 -+  do
  32.107 -+    {
  32.108 -+      if ((*operation) (abfd, &sh->section, user_storage))
  32.109 -+	return &sh->section;
  32.110 -+      sh = (struct section_hash_entry *) sh->root.next;
  32.111 -+    }
  32.112 -+  while (sh != NULL && sh->root.hash == hash
  32.113 -+	 && strcmp (sh->root.string, name) == 0);
  32.114 -+
  32.115 -+  return NULL;
  32.116 -+}
  32.117 -+
  32.118 -+/*
  32.119 -+FUNCTION
  32.120 - 	bfd_get_unique_section_name
  32.121 - 
  32.122 - SYNOPSIS
  32.123 ---- binutils-2.15/ld/ldlang.c.old	2004-05-17 15:36:16.000000000 -0400
  32.124 -+++ binutils-2.15/ld/ldlang.c	2006-01-23 13:40:12.745499000 -0500
  32.125 -@@ -81,9 +81,6 @@
  32.126 - static void lang_record_phdrs (void);
  32.127 - static void lang_do_version_exports_section (void);
  32.128 - 
  32.129 --typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
  32.130 --			    asection *, lang_input_statement_type *, void *);
  32.131 --
  32.132 - /* Exported variables.  */
  32.133 - lang_output_section_statement_type *abs_output_section;
  32.134 - lang_statement_list_type lang_output_section_statement;
  32.135 -@@ -138,21 +135,71 @@
  32.136 - 
  32.137 - /* Generic traversal routines for finding matching sections.  */
  32.138 - 
  32.139 -+/* Try processing a section against a wildcard.  This just calls
  32.140 -+   the callback unless the filename exclusion list is present
  32.141 -+   and excludes the file.  It's hardly ever present so this
  32.142 -+   function is very fast.  */
  32.143 -+
  32.144 -+static void
  32.145 -+walk_wild_consider_section (lang_wild_statement_type *ptr,
  32.146 -+			    lang_input_statement_type *file,
  32.147 -+			    asection *s,
  32.148 -+			    struct wildcard_list *sec,
  32.149 -+			    callback_t callback,
  32.150 -+			    void *data)
  32.151 -+{
  32.152 -+  bfd_boolean skip = FALSE;
  32.153 -+  struct name_list *list_tmp;
  32.154 -+
  32.155 -+  /* Don't process sections from files which were
  32.156 -+     excluded.  */
  32.157 -+  for (list_tmp = sec->spec.exclude_name_list;
  32.158 -+       list_tmp;
  32.159 -+       list_tmp = list_tmp->next)
  32.160 -+    {
  32.161 -+      bfd_boolean is_wildcard = wildcardp (list_tmp->name);
  32.162 -+      if (is_wildcard)
  32.163 -+	skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
  32.164 -+      else
  32.165 -+	skip = strcmp (list_tmp->name, file->filename) == 0;
  32.166 -+
  32.167 -+      /* If this file is part of an archive, and the archive is
  32.168 -+	 excluded, exclude this file.  */
  32.169 -+      if (! skip && file->the_bfd != NULL
  32.170 -+	  && file->the_bfd->my_archive != NULL
  32.171 -+	  && file->the_bfd->my_archive->filename != NULL)
  32.172 -+	{
  32.173 -+	  if (is_wildcard)
  32.174 -+	    skip = fnmatch (list_tmp->name,
  32.175 -+			    file->the_bfd->my_archive->filename,
  32.176 -+			    0) == 0;
  32.177 -+	  else
  32.178 -+	    skip = strcmp (list_tmp->name,
  32.179 -+			   file->the_bfd->my_archive->filename) == 0;
  32.180 -+	}
  32.181 -+
  32.182 -+      if (skip)
  32.183 -+	break;
  32.184 -+    }
  32.185 -+
  32.186 -+  if (!skip)
  32.187 -+    (*callback) (ptr, sec, s, file, data);
  32.188 -+}
  32.189 -+
  32.190 -+/* Lowest common denominator routine that can handle everything correctly,
  32.191 -+   but slowly.  */
  32.192 -+
  32.193 - static void
  32.194 --walk_wild_section (lang_wild_statement_type *ptr,
  32.195 --		   lang_input_statement_type *file,
  32.196 --		   callback_t callback,
  32.197 --		   void *data)
  32.198 -+walk_wild_section_general (lang_wild_statement_type *ptr,
  32.199 -+			   lang_input_statement_type *file,
  32.200 -+			   callback_t callback,
  32.201 -+			   void *data)
  32.202 - {
  32.203 -   asection *s;
  32.204 --
  32.205 --  if (file->just_syms_flag)
  32.206 --    return;
  32.207 -+  struct wildcard_list *sec;
  32.208 - 
  32.209 -   for (s = file->the_bfd->sections; s != NULL; s = s->next)
  32.210 -     {
  32.211 --      struct wildcard_list *sec;
  32.212 --
  32.213 -       sec = ptr->section_list;
  32.214 -       if (sec == NULL)
  32.215 - 	(*callback) (ptr, sec, s, file, data);
  32.216 -@@ -160,39 +207,8 @@
  32.217 -       while (sec != NULL)
  32.218 - 	{
  32.219 - 	  bfd_boolean skip = FALSE;
  32.220 --	  struct name_list *list_tmp;
  32.221 --
  32.222 --	  /* Don't process sections from files which were
  32.223 --	     excluded.  */
  32.224 --	  for (list_tmp = sec->spec.exclude_name_list;
  32.225 --	       list_tmp;
  32.226 --	       list_tmp = list_tmp->next)
  32.227 --	    {
  32.228 --	      if (wildcardp (list_tmp->name))
  32.229 --		skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
  32.230 --	      else
  32.231 --		skip = strcmp (list_tmp->name, file->filename) == 0;
  32.232 --
  32.233 --	      /* If this file is part of an archive, and the archive is
  32.234 --		 excluded, exclude this file.  */
  32.235 --	      if (! skip && file->the_bfd != NULL
  32.236 --		  && file->the_bfd->my_archive != NULL
  32.237 --		  && file->the_bfd->my_archive->filename != NULL)
  32.238 --		{
  32.239 --		  if (wildcardp (list_tmp->name))
  32.240 --		    skip = fnmatch (list_tmp->name,
  32.241 --				    file->the_bfd->my_archive->filename,
  32.242 --				    0) == 0;
  32.243 --		  else
  32.244 --		    skip = strcmp (list_tmp->name,
  32.245 --				   file->the_bfd->my_archive->filename) == 0;
  32.246 --		}
  32.247 --
  32.248 --	      if (skip)
  32.249 --		break;
  32.250 --	    }
  32.251 - 
  32.252 --	  if (!skip && sec->spec.name != NULL)
  32.253 -+	  if (sec->spec.name != NULL)
  32.254 - 	    {
  32.255 - 	      const char *sname = bfd_get_section_name (file->the_bfd, s);
  32.256 - 
  32.257 -@@ -203,13 +219,381 @@
  32.258 - 	    }
  32.259 - 
  32.260 - 	  if (!skip)
  32.261 --	    (*callback) (ptr, sec, s, file, data);
  32.262 -+	    walk_wild_consider_section (ptr, file, s, sec, callback, data);
  32.263 - 
  32.264 - 	  sec = sec->next;
  32.265 - 	}
  32.266 -     }
  32.267 - }
  32.268 - 
  32.269 -+/* Routines to find a single section given its name.  If there's more
  32.270 -+   than one section with that name, we report that.  */
  32.271 -+
  32.272 -+typedef struct
  32.273 -+{
  32.274 -+  asection *found_section;
  32.275 -+  bfd_boolean multiple_sections_found;
  32.276 -+} section_iterator_callback_data;
  32.277 -+
  32.278 -+static bfd_boolean
  32.279 -+section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data)
  32.280 -+{
  32.281 -+  section_iterator_callback_data *d = data;
  32.282 -+
  32.283 -+  if (d->found_section != NULL)
  32.284 -+    {
  32.285 -+      d->multiple_sections_found = TRUE;
  32.286 -+      return TRUE;
  32.287 -+    }
  32.288 -+
  32.289 -+  d->found_section = s;
  32.290 -+  return FALSE;
  32.291 -+}
  32.292 -+
  32.293 -+static asection *
  32.294 -+find_section (lang_input_statement_type *file,
  32.295 -+	      struct wildcard_list *sec,
  32.296 -+	      bfd_boolean *multiple_sections_found)
  32.297 -+{
  32.298 -+  section_iterator_callback_data cb_data = { NULL, FALSE };
  32.299 -+
  32.300 -+  bfd_get_section_by_name_if (file->the_bfd, sec->spec.name, 
  32.301 -+			      section_iterator_callback, &cb_data);
  32.302 -+  *multiple_sections_found = cb_data.multiple_sections_found;
  32.303 -+  return cb_data.found_section;
  32.304 -+}
  32.305 -+
  32.306 -+/* Code for handling simple wildcards without going through fnmatch,
  32.307 -+   which can be expensive because of charset translations etc.  */
  32.308 -+
  32.309 -+/* A simple wild is a literal string followed by a single '*',
  32.310 -+   where the literal part is at least 4 characters long.  */
  32.311 -+
  32.312 -+static bfd_boolean
  32.313 -+is_simple_wild (const char *name)
  32.314 -+{
  32.315 -+  size_t len = strcspn (name, "*?[");
  32.316 -+  return len >= 4 && name[len] == '*' && name[len + 1] == '\0';
  32.317 -+}
  32.318 -+
  32.319 -+static bfd_boolean
  32.320 -+match_simple_wild (const char *pattern, const char *name)
  32.321 -+{
  32.322 -+  /* The first four characters of the pattern are guaranteed valid
  32.323 -+     non-wildcard characters.  So we can go faster.  */
  32.324 -+  if (pattern[0] != name[0] || pattern[1] != name[1]
  32.325 -+      || pattern[2] != name[2] || pattern[3] != name[3])
  32.326 -+    return FALSE;
  32.327 -+
  32.328 -+  pattern += 4;
  32.329 -+  name += 4;
  32.330 -+  while (*pattern != '*')
  32.331 -+    if (*name++ != *pattern++)
  32.332 -+      return FALSE;
  32.333 -+
  32.334 -+  return TRUE;
  32.335 -+}
  32.336 -+
  32.337 -+/* Specialized, optimized routines for handling different kinds of
  32.338 -+   wildcards */
  32.339 -+
  32.340 -+static void
  32.341 -+walk_wild_section_specs1_wild0 (lang_wild_statement_type *ptr,
  32.342 -+				lang_input_statement_type *file,
  32.343 -+				callback_t callback,
  32.344 -+				void *data)
  32.345 -+{
  32.346 -+  /* We can just do a hash lookup for the section with the right name.
  32.347 -+     But if that lookup discovers more than one section with the name
  32.348 -+     (should be rare), we fall back to the general algorithm because
  32.349 -+     we would otherwise have to sort the sections to make sure they
  32.350 -+     get processed in the bfd's order.  */
  32.351 -+  bfd_boolean multiple_sections_found;
  32.352 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
  32.353 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  32.354 -+
  32.355 -+  if (multiple_sections_found)
  32.356 -+    walk_wild_section_general (ptr, file, callback, data);
  32.357 -+  else if (s0)
  32.358 -+    walk_wild_consider_section (ptr, file, s0, sec0, callback, data);
  32.359 -+}
  32.360 -+
  32.361 -+static void
  32.362 -+walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr,
  32.363 -+				lang_input_statement_type *file,
  32.364 -+				callback_t callback,
  32.365 -+				void *data)
  32.366 -+{
  32.367 -+  asection *s;
  32.368 -+  struct wildcard_list *wildsec0 = ptr->handler_data[0];
  32.369 -+
  32.370 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  32.371 -+    {
  32.372 -+      const char *sname = bfd_get_section_name (file->the_bfd, s);
  32.373 -+      bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname);
  32.374 -+
  32.375 -+      if (!skip)
  32.376 -+	walk_wild_consider_section (ptr, file, s, wildsec0, callback, data);
  32.377 -+    }
  32.378 -+}
  32.379 -+
  32.380 -+static void
  32.381 -+walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr,
  32.382 -+				lang_input_statement_type *file,
  32.383 -+				callback_t callback,
  32.384 -+				void *data)
  32.385 -+{
  32.386 -+  asection *s;
  32.387 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
  32.388 -+  struct wildcard_list *wildsec1 = ptr->handler_data[1];
  32.389 -+  bfd_boolean multiple_sections_found;
  32.390 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  32.391 -+
  32.392 -+  if (multiple_sections_found)
  32.393 -+    {
  32.394 -+      walk_wild_section_general (ptr, file, callback, data);
  32.395 -+      return;
  32.396 -+    }
  32.397 -+
  32.398 -+  /* Note that if the section was not found, s0 is NULL and
  32.399 -+     we'll simply never succeed the s == s0 test below.  */
  32.400 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  32.401 -+    {
  32.402 -+      /* Recall that in this code path, a section cannot satisfy more
  32.403 -+	 than one spec, so if s == s0 then it cannot match
  32.404 -+	 wildspec1.  */
  32.405 -+      if (s == s0)
  32.406 -+	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  32.407 -+      else
  32.408 -+	{
  32.409 -+	  const char *sname = bfd_get_section_name (file->the_bfd, s);
  32.410 -+	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
  32.411 -+
  32.412 -+	  if (!skip)
  32.413 -+	    walk_wild_consider_section (ptr, file, s, wildsec1, callback,
  32.414 -+					data);
  32.415 -+	}
  32.416 -+    }
  32.417 -+}
  32.418 -+
  32.419 -+static void
  32.420 -+walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr,
  32.421 -+				lang_input_statement_type *file,
  32.422 -+				callback_t callback,
  32.423 -+				void *data)
  32.424 -+{
  32.425 -+  asection *s;
  32.426 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
  32.427 -+  struct wildcard_list *wildsec1 = ptr->handler_data[1];
  32.428 -+  struct wildcard_list *wildsec2 = ptr->handler_data[2];
  32.429 -+  bfd_boolean multiple_sections_found;
  32.430 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found);
  32.431 -+
  32.432 -+  if (multiple_sections_found)
  32.433 -+    {
  32.434 -+      walk_wild_section_general (ptr, file, callback, data);
  32.435 -+      return;
  32.436 -+    }
  32.437 -+
  32.438 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  32.439 -+    {
  32.440 -+      if (s == s0)
  32.441 -+	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  32.442 -+      else
  32.443 -+	{
  32.444 -+	  const char *sname = bfd_get_section_name (file->the_bfd, s);
  32.445 -+	  bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
  32.446 -+
  32.447 -+	  if (!skip)
  32.448 -+	    walk_wild_consider_section (ptr, file, s, wildsec1, callback, data);
  32.449 -+	  else
  32.450 -+	    {
  32.451 -+	      skip = !match_simple_wild (wildsec2->spec.name, sname);
  32.452 -+	      if (!skip)
  32.453 -+		walk_wild_consider_section (ptr, file, s, wildsec2, callback,
  32.454 -+					    data);
  32.455 -+	    }
  32.456 -+	}
  32.457 -+    }
  32.458 -+}
  32.459 -+
  32.460 -+static void
  32.461 -+walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr,
  32.462 -+				lang_input_statement_type *file,
  32.463 -+				callback_t callback,
  32.464 -+				void *data)
  32.465 -+{
  32.466 -+  asection *s;
  32.467 -+  struct wildcard_list *sec0 = ptr->handler_data[0];
  32.468 -+  struct wildcard_list *sec1 = ptr->handler_data[1];
  32.469 -+  struct wildcard_list *wildsec2 = ptr->handler_data[2];
  32.470 -+  struct wildcard_list *wildsec3 = ptr->handler_data[3];
  32.471 -+  bfd_boolean multiple_sections_found;
  32.472 -+  asection *s0 = find_section (file, sec0, &multiple_sections_found), *s1;
  32.473 -+
  32.474 -+  if (multiple_sections_found)
  32.475 -+    {
  32.476 -+      walk_wild_section_general (ptr, file, callback, data);
  32.477 -+      return;
  32.478 -+    }
  32.479 -+
  32.480 -+  s1 = find_section (file, sec1, &multiple_sections_found);
  32.481 -+  if (multiple_sections_found)
  32.482 -+    {
  32.483 -+      walk_wild_section_general (ptr, file, callback, data);
  32.484 -+      return;
  32.485 -+    }
  32.486 -+
  32.487 -+  for (s = file->the_bfd->sections; s != NULL; s = s->next)
  32.488 -+    {
  32.489 -+      if (s == s0)
  32.490 -+	walk_wild_consider_section (ptr, file, s, sec0, callback, data);
  32.491 -+      else
  32.492 -+	if (s == s1)
  32.493 -+	  walk_wild_consider_section (ptr, file, s, sec1, callback, data);
  32.494 -+	else
  32.495 -+	  {
  32.496 -+	    const char *sname = bfd_get_section_name (file->the_bfd, s);
  32.497 -+	    bfd_boolean skip = !match_simple_wild (wildsec2->spec.name,
  32.498 -+						   sname);
  32.499 -+
  32.500 -+	    if (!skip)
  32.501 -+	      walk_wild_consider_section (ptr, file, s, wildsec2, callback,
  32.502 -+					  data);
  32.503 -+	    else
  32.504 -+	      {
  32.505 -+		skip = !match_simple_wild (wildsec3->spec.name, sname);
  32.506 -+		if (!skip)
  32.507 -+		  walk_wild_consider_section (ptr, file, s, wildsec3,
  32.508 -+					      callback, data);
  32.509 -+	      }
  32.510 -+	  }
  32.511 -+    }
  32.512 -+}
  32.513 -+
  32.514 -+static void
  32.515 -+walk_wild_section (lang_wild_statement_type *ptr,
  32.516 -+		   lang_input_statement_type *file,
  32.517 -+		   callback_t callback,
  32.518 -+		   void *data)
  32.519 -+{
  32.520 -+  if (file->just_syms_flag)
  32.521 -+    return;
  32.522 -+
  32.523 -+  (*ptr->walk_wild_section_handler) (ptr, file, callback, data);
  32.524 -+}
  32.525 -+
  32.526 -+/* Returns TRUE when name1 is a wildcard spec that might match
  32.527 -+   something name2 can match.  We're conservative: we return FALSE
  32.528 -+   only if the prefixes of name1 and name2 are different up to the
  32.529 -+   first wildcard character.  */
  32.530 -+
  32.531 -+static bfd_boolean
  32.532 -+wild_spec_can_overlap (const char *name1, const char *name2)
  32.533 -+{
  32.534 -+  size_t prefix1_len = strcspn (name1, "?*[");
  32.535 -+  size_t prefix2_len = strcspn (name2, "?*[");
  32.536 -+  size_t min_prefix_len;
  32.537 -+
  32.538 -+  /* Note that if there is no wildcard character, then we treat the
  32.539 -+     terminating 0 as part of the prefix.  Thus ".text" won't match
  32.540 -+     ".text." or ".text.*", for example.  */
  32.541 -+  if (name1[prefix1_len] == '\0')
  32.542 -+    prefix1_len++;
  32.543 -+  if (name2[prefix2_len] == '\0')
  32.544 -+    prefix2_len++;
  32.545 -+
  32.546 -+  min_prefix_len = prefix1_len < prefix2_len ? prefix1_len : prefix2_len;
  32.547 -+
  32.548 -+  return memcmp (name1, name2, min_prefix_len) == 0;
  32.549 -+}
  32.550 -+
  32.551 -+/* Select specialized code to handle various kinds of wildcard
  32.552 -+   statements.  */
  32.553 -+
  32.554 -+static void
  32.555 -+analyze_walk_wild_section_handler (lang_wild_statement_type *ptr)
  32.556 -+{
  32.557 -+  int sec_count = 0;
  32.558 -+  int wild_name_count = 0;
  32.559 -+  struct wildcard_list *sec;
  32.560 -+  int signature;
  32.561 -+  int data_counter;
  32.562 -+
  32.563 -+  ptr->walk_wild_section_handler = walk_wild_section_general;
  32.564 -+
  32.565 -+  /* Count how many wildcard_specs there are, and how many of those
  32.566 -+     actually use wildcards in the name.  Also, bail out if any of the
  32.567 -+     wildcard names are NULL. (Can this actually happen?
  32.568 -+     walk_wild_section used to test for it.)  And bail out if any
  32.569 -+     of the wildcards are more complex than a simple string
  32.570 -+     ending in a single '*'.  */
  32.571 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  32.572 -+    {
  32.573 -+      ++sec_count;
  32.574 -+      if (sec->spec.name == NULL)
  32.575 -+	return;
  32.576 -+      if (wildcardp (sec->spec.name))
  32.577 -+	{
  32.578 -+	  ++wild_name_count;
  32.579 -+	  if (!is_simple_wild (sec->spec.name))
  32.580 -+	    return;
  32.581 -+	}
  32.582 -+    }
  32.583 -+
  32.584 -+  /* The zero-spec case would be easy to optimize but it doesn't
  32.585 -+     happen in practice.  Likewise, more than 4 specs doesn't
  32.586 -+     happen in practice.  */
  32.587 -+  if (sec_count == 0 || sec_count > 4)
  32.588 -+    return;
  32.589 -+
  32.590 -+  /* Check that no two specs can match the same section.  */
  32.591 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  32.592 -+    {
  32.593 -+      struct wildcard_list *sec2;
  32.594 -+      for (sec2 = sec->next; sec2 != NULL; sec2 = sec2->next)
  32.595 -+	{
  32.596 -+	  if (wild_spec_can_overlap (sec->spec.name, sec2->spec.name))
  32.597 -+	    return;
  32.598 -+	}
  32.599 -+    }
  32.600 -+
  32.601 -+  signature = (sec_count << 8) + wild_name_count;
  32.602 -+  switch (signature)
  32.603 -+    {
  32.604 -+    case 0x0100:
  32.605 -+      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild0;
  32.606 -+      break;
  32.607 -+    case 0x0101:
  32.608 -+      ptr->walk_wild_section_handler = walk_wild_section_specs1_wild1;
  32.609 -+      break;
  32.610 -+    case 0x0201:
  32.611 -+      ptr->walk_wild_section_handler = walk_wild_section_specs2_wild1;
  32.612 -+      break;
  32.613 -+    case 0x0302:
  32.614 -+      ptr->walk_wild_section_handler = walk_wild_section_specs3_wild2;
  32.615 -+      break;
  32.616 -+    case 0x0402:
  32.617 -+      ptr->walk_wild_section_handler = walk_wild_section_specs4_wild2;
  32.618 -+      break;
  32.619 -+    default:
  32.620 -+      return;
  32.621 -+    }
  32.622 -+
  32.623 -+  /* Now fill the data array with pointers to the specs, first the
  32.624 -+     specs with non-wildcard names, then the specs with wildcard
  32.625 -+     names.  It's OK to process the specs in different order from the
  32.626 -+     given order, because we've already determined that no section
  32.627 -+     will match more than one spec.  */
  32.628 -+  data_counter = 0;
  32.629 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  32.630 -+    if (!wildcardp (sec->spec.name))
  32.631 -+      ptr->handler_data[data_counter++] = sec;
  32.632 -+  for (sec = ptr->section_list; sec != NULL; sec = sec->next)
  32.633 -+    if (wildcardp (sec->spec.name))
  32.634 -+      ptr->handler_data[data_counter++] = sec;
  32.635 -+}
  32.636 -+
  32.637 - /* Handle a wild statement for a single file F.  */
  32.638 - 
  32.639 - static void
  32.640 -@@ -4353,6 +4737,7 @@
  32.641 -   new->section_list = section_list;
  32.642 -   new->keep_sections = keep_sections;
  32.643 -   lang_list_init (&new->children);
  32.644 -+  analyze_walk_wild_section_handler (new);
  32.645 - }
  32.646 - 
  32.647 - void
  32.648 ---- binutils-2.15/ld/ldlang.h.old	2004-05-17 15:36:16.000000000 -0400
  32.649 -+++ binutils-2.15/ld/ldlang.h	2006-01-23 13:32:33.653292000 -0500
  32.650 -@@ -295,7 +295,17 @@
  32.651 -   union lang_statement_union *file;
  32.652 - } lang_afile_asection_pair_statement_type;
  32.653 - 
  32.654 --typedef struct lang_wild_statement_struct
  32.655 -+typedef struct lang_wild_statement_struct lang_wild_statement_type;
  32.656 -+
  32.657 -+typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
  32.658 -+			    asection *, lang_input_statement_type *, void *);
  32.659 -+
  32.660 -+typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *,
  32.661 -+					     lang_input_statement_type *,
  32.662 -+					     callback_t callback,
  32.663 -+					     void *data);
  32.664 -+
  32.665 -+struct lang_wild_statement_struct
  32.666 - {
  32.667 -   lang_statement_header_type header;
  32.668 -   const char *filename;
  32.669 -@@ -303,7 +313,10 @@
  32.670 -   struct wildcard_list *section_list;
  32.671 -   bfd_boolean keep_sections;
  32.672 -   lang_statement_list_type children;
  32.673 --} lang_wild_statement_type;
  32.674 -+
  32.675 -+  walk_wild_section_handler_t walk_wild_section_handler;
  32.676 -+  struct wildcard_list *handler_data[4];
  32.677 -+};
  32.678 - 
  32.679 - typedef struct lang_address_statement_struct
  32.680 - {
    33.1 --- a/patches/binutils/2.15/800-ld-stabs-tweak.patch	Mon Jul 28 21:08:01 2008 +0000
    33.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.3 @@ -1,33 +0,0 @@
    33.4 -Signed-off-by: dank@kegel.com
    33.5 -
    33.6 -See http://sourceware.org/ml/binutils/2005-12/msg00270.html
    33.7 -http://sourceware.org/ml/binutils-cvs/2005-12/msg00139.html
    33.8 -
    33.9 -STABS hash table size change, backported from the binutils CVS tree.  Here's
   33.10 -the CVS log comment for the original change:
   33.11 -
   33.12 -revision 1.25
   33.13 -date: 2005/12/29 10:29:23;  author: nickc;  state: Exp;  lines: +2 -3
   33.14 -(_bfd_link_section_stabs): Use bfd_hash_table_init rather than
   33.15 -bfd_hash_table_init_n(...,251) so that the size of the hash table can be
   33.16 -controlled by the user.
   33.17 -
   33.18 -Note that tunable hash table size changes were added after 2.15.  The effect
   33.19 -of this change is to make bfd use its default hash table size for the stabs
   33.20 -hash as well.
   33.21 -
   33.22 -
   33.23 ---- binutils-2.15/bfd/stabs.c.old	2004-05-17 15:36:04.000000000 -0400
   33.24 -+++ binutils-2.15/bfd/stabs.c	2006-02-09 15:21:56.567014000 -0500
   33.25 -@@ -241,9 +241,8 @@
   33.26 - 	goto error_return;
   33.27 -       /* Make sure the first byte is zero.  */
   33.28 -       (void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
   33.29 --      if (! bfd_hash_table_init_n (&sinfo->includes.root,
   33.30 --				   stab_link_includes_newfunc,
   33.31 --				   251))
   33.32 -+      if (! bfd_hash_table_init (&sinfo->includes.root,
   33.33 -+				   stab_link_includes_newfunc))
   33.34 - 	goto error_return;
   33.35 -       sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
   33.36 -       sinfo->stabstr->flags |= SEC_HAS_CONTENTS | SEC_READONLY | SEC_DEBUGGING;
    34.1 --- a/patches/binutils/2.15/810-s390-invalid-insn-format.patch	Mon Jul 28 21:08:01 2008 +0000
    34.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.3 @@ -1,42 +0,0 @@
    34.4 -Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012>
    34.5 -From: "Michael Geiger" <mcgege@gmx.de>
    34.6 -To: <dank@kegel.com>
    34.7 -Subject: Patch for cross compiling s/390 kernel on linux host
    34.8 -Date: Tue, 31 Aug 2004 15:45:41 +0200
    34.9 -
   34.10 -Dear Dan,
   34.11 -
   34.12 -I had big problems compiling a kernel for s/390 on my linux host - I tried
   34.13 -different chains from crosstool-0.28-rc34 and finally succeded with
   34.14 -gcc-3.3.4-glibc-2.3.2 after applying another patch to binutils-2.15
   34.15 -(attached).
   34.16 -All compilations of the different kernel versions I tried stopped with
   34.17 -"Invalid .insn format" somewhere. I checked the recent cvs version of
   34.18 -binutils and applied the latest diff to gas/config/tc-s390.c and that solved
   34.19 -it.
   34.20 -
   34.21 -Greetings
   34.22 -
   34.23 -Michael Geiger
   34.24 -
   34.25 -
   34.26 -diff -u -r1.39 -r1.40
   34.27 ---- src/gas/config/tc-s390.c	2004/05/06 11:01:48	1.39
   34.28 -+++ src/gas/config/tc-s390.c	2004/06/15 12:38:08	1.40
   34.29 -@@ -1596,13 +1596,13 @@
   34.30 -   if (exp.X_op == O_constant)
   34.31 -     {
   34.32 -       if (   (   opformat->oplen == 6
   34.33 --	      && exp.X_add_number >= 0
   34.34 -+	      && (addressT) exp.X_add_number >= 0
   34.35 - 	      && (addressT) exp.X_add_number < (1ULL << 48))
   34.36 - 	  || (   opformat->oplen == 4
   34.37 --	      && exp.X_add_number >= 0
   34.38 -+	      && (addressT) exp.X_add_number >= 0
   34.39 - 	      && (addressT) exp.X_add_number < (1ULL << 32))
   34.40 - 	  || (   opformat->oplen == 2
   34.41 --	      && exp.X_add_number >= 0
   34.42 -+	      && (addressT) exp.X_add_number >= 0
   34.43 - 	      && (addressT) exp.X_add_number < (1ULL << 16)))
   34.44 - 	md_number_to_chars (insn, exp.X_add_number, opformat->oplen);
   34.45 -       else
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/patches/binutils/2.17/130-ld_makefile_patch.patch	Mon Jul 28 21:32:33 2008 +0000
    35.3 @@ -0,0 +1,24 @@
    35.4 +diff -dur binutils-2.17.old/ld/Makefile.am binutils-2.17/ld/Makefile.am
    35.5 +--- binutils-2.17.old/ld/Makefile.am	2006-06-03 06:45:50.000000000 +0200
    35.6 ++++ binutils-2.17/ld/Makefile.am	2007-05-01 18:26:09.000000000 +0200
    35.7 +@@ -20,7 +20,7 @@
    35.8 + # We put the scripts in the directory $(scriptdir)/ldscripts.
    35.9 + # We can't put the scripts in $(datadir) because the SEARCH_DIR
   35.10 + # directives need to be different for native and cross linkers.
   35.11 +-scriptdir = $(tooldir)/lib
   35.12 ++scriptdir = $(libdir)
   35.13 + 
   35.14 + EMUL = @EMUL@
   35.15 + EMULATION_OFILES = @EMULATION_OFILES@
   35.16 +diff -dur binutils-2.17.old/ld/Makefile.in binutils-2.17/ld/Makefile.in
   35.17 +--- binutils-2.17.old/ld/Makefile.in	2006-06-03 06:45:50.000000000 +0200
   35.18 ++++ binutils-2.17/ld/Makefile.in	2007-05-01 18:26:09.000000000 +0200
   35.19 +@@ -269,7 +269,7 @@
   35.20 + # We put the scripts in the directory $(scriptdir)/ldscripts.
   35.21 + # We can't put the scripts in $(datadir) because the SEARCH_DIR
   35.22 + # directives need to be different for native and cross linkers.
   35.23 +-scriptdir = $(tooldir)/lib
   35.24 ++scriptdir = $(libdir)
   35.25 + BASEDIR = $(srcdir)/..
   35.26 + BFDDIR = $(BASEDIR)/bfd
   35.27 + INCDIR = $(BASEDIR)/include
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/patches/binutils/2.17/140-better_file_error.patch	Mon Jul 28 21:32:33 2008 +0000
    36.3 @@ -0,0 +1,17 @@
    36.4 +diff -dur binutils-2.17.old/bfd/opncls.c binutils-2.17/bfd/opncls.c
    36.5 +--- binutils-2.17.old/bfd/opncls.c	2006-03-16 13:20:16.000000000 +0100
    36.6 ++++ binutils-2.17/bfd/opncls.c	2007-05-01 18:26:11.000000000 +0200
    36.7 +@@ -158,6 +158,13 @@
    36.8 + {
    36.9 +   bfd *nbfd;
   36.10 +   const bfd_target *target_vec;
   36.11 ++  struct stat s;
   36.12 ++
   36.13 ++  if (stat (filename, &s) == 0)
   36.14 ++    if (S_ISDIR(s.st_mode)) {
   36.15 ++      bfd_set_error (bfd_error_file_not_recognized);
   36.16 ++      return NULL;
   36.17 ++    }
   36.18 + 
   36.19 +   nbfd = _bfd_new_bfd ();
   36.20 +   if (nbfd == NULL)
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/patches/binutils/2.17/150-check_ldrunpath_length.patch	Mon Jul 28 21:32:33 2008 +0000
    37.3 @@ -0,0 +1,21 @@
    37.4 +diff -dur binutils-2.17.old/ld/emultempl/elf32.em binutils-2.17/ld/emultempl/elf32.em
    37.5 +--- binutils-2.17.old/ld/emultempl/elf32.em	2006-06-12 15:05:04.000000000 +0200
    37.6 ++++ binutils-2.17/ld/emultempl/elf32.em	2007-05-01 18:26:13.000000000 +0200
    37.7 +@@ -970,6 +970,8 @@
    37.8 + 	      && command_line.rpath == NULL)
    37.9 + 	    {
   37.10 + 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
   37.11 ++	      if ((lib_path) && (strlen (lib_path) == 0))