diff options
| author | Richard Purdie <richard@openedhand.com> | 2006-05-22 22:08:31 +0000 |
|---|---|---|
| committer | Richard Purdie <richard@openedhand.com> | 2006-05-22 22:08:31 +0000 |
| commit | fe23e86ac15b7fd744323cf77053cea63b6107c5 (patch) | |
| tree | 9f2a080423973ea3e48935b966e113cc10ba5fb7 | |
| parent | dc9a1956a543ee0576cdda85af634e1d49d87d7c (diff) | |
| download | poky-fe23e86ac15b7fd744323cf77053cea63b6107c5.tar.gz | |
Add binutils 2.16
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@398 311d38ba-8fff-0310-9ca6-ca027cbcb966
7 files changed, 1154 insertions, 0 deletions
diff --git a/openembedded/packages/binutils/binutils-2.16/binutils-100_cflags_for_build.patch b/openembedded/packages/binutils/binutils-2.16/binutils-100_cflags_for_build.patch new file mode 100644 index 0000000000..08e7049945 --- /dev/null +++ b/openembedded/packages/binutils/binutils-2.16/binutils-100_cflags_for_build.patch | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | --- binutils-2.16/binutils/Makefile.am.old 2005-06-05 16:59:47.000000000 +0100 | ||
| 2 | +++ binutils-2.16/binutils/Makefile.am 2005-06-05 17:00:39.000000000 +0100 | ||
| 3 | @@ -219,20 +219,20 @@ | ||
| 4 | ./sysinfo$(EXEEXT_FOR_BUILD) -d <$(srcdir)/sysroff.info >sysroff.h | ||
| 5 | |||
| 6 | sysinfo$(EXEEXT_FOR_BUILD): sysinfo.o syslex.o | ||
| 7 | - $(CC_FOR_BUILD) $(CFLAGS) $(LDFLAGS) -o $@ sysinfo.o syslex.o | ||
| 8 | + $(CC_FOR_BUILD) $(CFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) -o $@ sysinfo.o syslex.o | ||
| 9 | |||
| 10 | syslex.o: | ||
| 11 | if [ -r syslex.c ]; then \ | ||
| 12 | - $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS) syslex.c ; \ | ||
| 13 | + $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) syslex.c ; \ | ||
| 14 | else \ | ||
| 15 | - $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS) $(srcdir)/syslex.c ;\ | ||
| 16 | + $(CC_FOR_BUILD) -c -I. -I$(srcdir) $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/syslex.c ;\ | ||
| 17 | fi | ||
| 18 | |||
| 19 | sysinfo.o: | ||
| 20 | if [ -r sysinfo.c ]; then \ | ||
| 21 | - $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS) sysinfo.c ; \ | ||
| 22 | + $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) sysinfo.c ; \ | ||
| 23 | else \ | ||
| 24 | - $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS) $(srcdir)/sysinfo.c ; \ | ||
| 25 | + $(CC_FOR_BUILD) -c -I. $(AM_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/sysinfo.c ; \ | ||
| 26 | fi | ||
| 27 | |||
| 28 | # We need these for parallel make. | ||
diff --git a/openembedded/packages/binutils/binutils-2.16/binutils-2.16-linux-uclibc.patch b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-linux-uclibc.patch new file mode 100644 index 0000000000..2f727a5b5a --- /dev/null +++ b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-linux-uclibc.patch | |||
| @@ -0,0 +1,700 @@ | |||
| 1 | # This patch adds 'linux-uclibc' to all cases which otherwise only | ||
| 2 | # fire for 'linux' - most of the time the 'linux-gnu*' cases. This | ||
| 3 | # ensures that by default *-*-linux-uclibc is handled in the same way | ||
| 4 | # as *-*-linux-gnu | ||
| 5 | # | ||
| 6 | --- binutils-2.16/bfd/config.bfd.orig 2005-09-06 19:58:39.153670708 -0700 | ||
| 7 | +++ binutils-2.16/bfd/config.bfd 2005-09-06 20:03:14.959026045 -0700 | ||
| 8 | @@ -140,7 +140,7 @@ | ||
| 9 | targ_defvec=ecoffalpha_little_vec | ||
| 10 | targ_selvecs=bfd_elf64_alpha_vec | ||
| 11 | ;; | ||
| 12 | - alpha*-*-linux-gnu* | alpha*-*-elf*) | ||
| 13 | + alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*) | ||
| 14 | targ_defvec=bfd_elf64_alpha_vec | ||
| 15 | targ_selvecs=ecoffalpha_little_vec | ||
| 16 | ;; | ||
| 17 | @@ -150,7 +150,7 @@ | ||
| 18 | alpha*-*-*) | ||
| 19 | targ_defvec=ecoffalpha_little_vec | ||
| 20 | ;; | ||
| 21 | - ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) | ||
| 22 | + ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) | ||
| 23 | targ_defvec=bfd_elf64_ia64_little_vec | ||
| 24 | targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec" | ||
| 25 | ;; | ||
| 26 | @@ -227,7 +227,7 @@ | ||
| 27 | targ_defvec=bfd_elf32_littlearm_vec | ||
| 28 | targ_selvecs=bfd_elf32_bigarm_vec | ||
| 29 | ;; | ||
| 30 | - armeb-*-elf | arm*b-*-linux-gnu*) | ||
| 31 | + armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*) | ||
| 32 | targ_defvec=bfd_elf32_bigarm_vec | ||
| 33 | targ_selvecs=bfd_elf32_littlearm_vec | ||
| 34 | ;; | ||
| 35 | @@ -235,7 +235,7 @@ | ||
| 36 | targ_defvec=bfd_elf32_littlearm_vec | ||
| 37 | targ_selvecs=bfd_elf32_bigarm_vec | ||
| 38 | ;; | ||
| 39 | - arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \ | ||
| 40 | + arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \ | ||
| 41 | arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \ | ||
| 42 | arm*-*-eabi* ) | ||
| 43 | targ_defvec=bfd_elf32_littlearm_vec | ||
| 44 | @@ -385,7 +385,7 @@ | ||
| 45 | ;; | ||
| 46 | |||
| 47 | #ifdef BFD64 | ||
| 48 | - hppa*64*-*-linux-gnu*) | ||
| 49 | + hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*) | ||
| 50 | targ_defvec=bfd_elf64_hppa_linux_vec | ||
| 51 | targ_selvecs=bfd_elf64_hppa_vec | ||
| 52 | ;; | ||
| 53 | @@ -396,7 +396,7 @@ | ||
| 54 | ;; | ||
| 55 | #endif | ||
| 56 | |||
| 57 | - hppa*-*-linux-gnu*) | ||
| 58 | + hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*) | ||
| 59 | targ_defvec=bfd_elf32_hppa_linux_vec | ||
| 60 | targ_selvecs=bfd_elf32_hppa_vec | ||
| 61 | ;; | ||
| 62 | @@ -529,7 +529,7 @@ | ||
| 63 | targ_selvecs=bfd_elf32_i386_vec | ||
| 64 | targ_underscore=yes | ||
| 65 | ;; | ||
| 66 | - i[3-7]86-*-linux-gnu*) | ||
| 67 | + i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) | ||
| 68 | targ_defvec=bfd_elf32_i386_vec | ||
| 69 | targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec" | ||
| 70 | targ64_selvecs=bfd_elf64_x86_64_vec | ||
| 71 | @@ -543,7 +543,7 @@ | ||
| 72 | targ_defvec=bfd_elf64_x86_64_vec | ||
| 73 | targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec" | ||
| 74 | ;; | ||
| 75 | - x86_64-*-linux-gnu*) | ||
| 76 | + x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) | ||
| 77 | targ_defvec=bfd_elf64_x86_64_vec | ||
| 78 | targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec" | ||
| 79 | ;; | ||
| 80 | @@ -719,7 +719,7 @@ | ||
| 81 | targ_selvecs=bfd_elf32_m68k_vec | ||
| 82 | targ_underscore=yes | ||
| 83 | ;; | ||
| 84 | - m68*-*-linux-gnu*) | ||
| 85 | + m68*-*-linux-gnu* | m68*-*-linux-uclibc*) | ||
| 86 | targ_defvec=bfd_elf32_m68k_vec | ||
| 87 | targ_selvecs=m68klinux_vec | ||
| 88 | ;; | ||
| 89 | @@ -1005,7 +1005,7 @@ | ||
| 90 | ;; | ||
| 91 | #endif | ||
| 92 | powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \ | ||
| 93 | - powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \ | ||
| 94 | + powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | powerpc-*-rtems* | \ | ||
| 95 | powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*) | ||
| 96 | targ_defvec=bfd_elf32_powerpc_vec | ||
| 97 | targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec" | ||
| 98 | @@ -1042,7 +1042,7 @@ | ||
| 99 | targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" | ||
| 100 | ;; | ||
| 101 | powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \ | ||
| 102 | - powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\ | ||
| 103 | + powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* | powerpcle-*-vxworks* |\ | ||
| 104 | powerpcle-*-rtems*) | ||
| 105 | targ_defvec=bfd_elf32_powerpcle_vec | ||
| 106 | targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" | ||
| 107 | @@ -1213,7 +1213,7 @@ | ||
| 108 | targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec" | ||
| 109 | targ_underscore=yes | ||
| 110 | ;; | ||
| 111 | - sparc-*-linux-gnu*) | ||
| 112 | + sparc-*-linux-gnu* | sparc-*-linux-uclibc*) | ||
| 113 | targ_defvec=bfd_elf32_sparc_vec | ||
| 114 | targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec" | ||
| 115 | ;; | ||
| 116 | @@ -1260,7 +1260,7 @@ | ||
| 117 | targ_defvec=sunos_big_vec | ||
| 118 | targ_underscore=yes | ||
| 119 | ;; | ||
| 120 | - sparc64-*-linux-gnu*) | ||
| 121 | + sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) | ||
| 122 | targ_defvec=bfd_elf64_sparc_vec | ||
| 123 | targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec" | ||
| 124 | ;; | ||
| 125 | @@ -1329,7 +1329,7 @@ | ||
| 126 | targ_underscore=yes | ||
| 127 | ;; | ||
| 128 | |||
| 129 | - vax-*-linux-gnu*) | ||
| 130 | + vax-*-linux-gnu* | vax-*-linux-uclibc*) | ||
| 131 | targ_defvec=bfd_elf32_vax_vec | ||
| 132 | ;; | ||
| 133 | |||
| 134 | --- binutils-2.16/bfd/configure.in.orig 2005-09-06 20:25:48.848220921 -0700 | ||
| 135 | +++ binutils-2.16/bfd/configure.in 2005-09-06 20:26:58.628611924 -0700 | ||
| 136 | @@ -163,7 +163,7 @@ | ||
| 137 | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) | ||
| 138 | COREFILE='' | ||
| 139 | ;; | ||
| 140 | - alpha*-*-linux-gnu*) | ||
| 141 | + alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) | ||
| 142 | COREFILE=trad-core.lo | ||
| 143 | TRAD_HEADER='"hosts/alphalinux.h"' | ||
| 144 | ;; | ||
| 145 | @@ -248,7 +248,7 @@ | ||
| 146 | TRAD_HEADER='"hosts/i386mach3.h"' | ||
| 147 | ;; | ||
| 148 | changequote(,)dnl | ||
| 149 | - i[3-7]86-*-linux-gnu*) | ||
| 150 | + i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) | ||
| 151 | changequote([,])dnl | ||
| 152 | COREFILE=trad-core.lo | ||
| 153 | TRAD_HEADER='"hosts/i386linux.h"' | ||
| 154 | @@ -289,7 +289,7 @@ | ||
| 155 | COREFILE=trad-core.lo | ||
| 156 | TRAD_HEADER='"hosts/hp300bsd.h"' | ||
| 157 | ;; | ||
| 158 | - m68*-*-linux-gnu*) | ||
| 159 | + m68*-*-linux-gnu* | m68*-*-linux-uclibc*) | ||
| 160 | COREFILE=trad-core.lo | ||
| 161 | TRAD_HEADER='"hosts/m68klinux.h"' | ||
| 162 | ;; | ||
| 163 | @@ -375,7 +375,7 @@ | ||
| 164 | COREFILE=trad-core.lo | ||
| 165 | TRAD_HEADER='"hosts/vaxult2.h"' | ||
| 166 | ;; | ||
| 167 | - vax-*-linux-gnu*) | ||
| 168 | + vax-*-linux-gnu* | vax-*-linux-uclibc*) | ||
| 169 | COREFILE=trad-core.lo | ||
| 170 | TRAD_HEADER='"hosts/vaxlinux.h"' | ||
| 171 | ;; | ||
| 172 | --- binutils-2.16/bfd/configure.orig 2005-09-06 20:03:14.991028059 -0700 | ||
| 173 | +++ binutils-2.16/bfd/configure 2005-09-06 20:04:48.512913020 -0700 | ||
| 174 | @@ -3572,7 +3572,7 @@ | ||
| 175 | ;; | ||
| 176 | |||
| 177 | # This must be Linux ELF. | ||
| 178 | -linux-gnu*) | ||
| 179 | +linux-gnu* | linux-uclibc*) | ||
| 180 | case $host_cpu in | ||
| 181 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 182 | lt_cv_deplibs_check_method=pass_all ;; | ||
| 183 | @@ -9918,7 +9918,7 @@ | ||
| 184 | alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) | ||
| 185 | COREFILE='' | ||
| 186 | ;; | ||
| 187 | - alpha*-*-linux-gnu*) | ||
| 188 | + alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) | ||
| 189 | COREFILE=trad-core.lo | ||
| 190 | TRAD_HEADER='"hosts/alphalinux.h"' | ||
| 191 | ;; | ||
| 192 | @@ -9982,7 +9982,7 @@ | ||
| 193 | COREFILE=trad-core.lo | ||
| 194 | TRAD_HEADER='"hosts/i386mach3.h"' | ||
| 195 | ;; | ||
| 196 | - i[3-7]86-*-linux-gnu*) | ||
| 197 | + i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) | ||
| 198 | COREFILE=trad-core.lo | ||
| 199 | TRAD_HEADER='"hosts/i386linux.h"' | ||
| 200 | ;; | ||
| 201 | @@ -10020,7 +10020,7 @@ | ||
| 202 | COREFILE=trad-core.lo | ||
| 203 | TRAD_HEADER='"hosts/hp300bsd.h"' | ||
| 204 | ;; | ||
| 205 | - m68*-*-linux-gnu*) | ||
| 206 | + m68*-*-linux-gnu* | m68*-*-linux-uclibc*) | ||
| 207 | COREFILE=trad-core.lo | ||
| 208 | TRAD_HEADER='"hosts/m68klinux.h"' | ||
| 209 | ;; | ||
| 210 | @@ -10154,7 +10154,7 @@ | ||
| 211 | COREFILE=trad-core.lo | ||
| 212 | TRAD_HEADER='"hosts/vaxult2.h"' | ||
| 213 | ;; | ||
| 214 | - vax-*-linux-gnu*) | ||
| 215 | + vax-*-linux-gnu* | vax-*-linux-uclibc*) | ||
| 216 | COREFILE=trad-core.lo | ||
| 217 | TRAD_HEADER='"hosts/vaxlinux.h"' | ||
| 218 | ;; | ||
| 219 | --- binutils-2.16/binutils/configure.orig 2005-09-06 20:26:58.676614945 -0700 | ||
| 220 | +++ binutils-2.16/binutils/configure 2005-09-06 20:27:21.230034142 -0700 | ||
| 221 | @@ -1564,7 +1564,7 @@ | ||
| 222 | ;; | ||
| 223 | |||
| 224 | # This must be Linux ELF. | ||
| 225 | -linux-gnu*) | ||
| 226 | +linux-gnu* | linux-uclibc*) | ||
| 227 | case $host_cpu in | ||
| 228 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 229 | lt_cv_deplibs_check_method=pass_all ;; | ||
| 230 | --- binutils-2.16/configure.in.orig 2005-09-06 20:31:11.872547560 -0700 | ||
| 231 | +++ binutils-2.16/configure.in 2005-09-06 20:31:47.322778302 -0700 | ||
| 232 | @@ -346,7 +346,7 @@ | ||
| 233 | ;; | ||
| 234 | "") | ||
| 235 | case "${target}" in | ||
| 236 | - *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) | ||
| 237 | + *-*-linux*-gnu | *-*-linux*-uclibc | *-*-gnu* | *-*-k*bsd*-gnu) | ||
| 238 | # Enable libmudflap by default in GNU and friends. | ||
| 239 | ;; | ||
| 240 | *-*-freebsd*) | ||
| 241 | --- binutils-2.16/configure.orig 2005-09-06 20:30:00.120032459 -0700 | ||
| 242 | +++ binutils-2.16/configure 2005-09-06 20:31:11.832545043 -0700 | ||
| 243 | @@ -1142,7 +1142,7 @@ | ||
| 244 | ;; | ||
| 245 | "") | ||
| 246 | case "${target}" in | ||
| 247 | - *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) | ||
| 248 | + *-*-linux*-gnu | *-*-linux*-uclibc | *-*-gnu* | *-*-k*bsd*-gnu) | ||
| 249 | # Enable libmudflap by default in GNU and friends. | ||
| 250 | ;; | ||
| 251 | *-*-freebsd*) | ||
| 252 | --- binutils-2.16/gas/configure.in.orig 2005-09-06 20:32:36.993903909 -0700 | ||
| 253 | +++ binutils-2.16/gas/configure.in 2005-09-06 20:32:55.667078938 -0700 | ||
| 254 | @@ -161,7 +161,7 @@ | ||
| 255 | AC_DEFINE(AIX_WEAK_SUPPORT, 1, | ||
| 256 | [Define if using AIX 5.2 value for C_WEAKEXT.]) | ||
| 257 | ;; | ||
| 258 | - ppc-*-linux-gnu*) | ||
| 259 | + ppc-*-linux-gnu* | ppc-*-linux-uclibc*) | ||
| 260 | case "$endian" in | ||
| 261 | big) ;; | ||
| 262 | *) AC_MSG_ERROR(GNU/Linux must be configured big endian) ;; | ||
| 263 | --- binutils-2.16/gas/configure.orig 2005-09-06 20:31:55.247276960 -0700 | ||
| 264 | +++ binutils-2.16/gas/configure 2005-09-06 20:32:36.961901896 -0700 | ||
| 265 | @@ -3409,7 +3409,7 @@ | ||
| 266 | ;; | ||
| 267 | |||
| 268 | # This must be Linux ELF. | ||
| 269 | -linux-gnu*) | ||
| 270 | +linux-gnu* | linux-uclibc*) | ||
| 271 | case $host_cpu in | ||
| 272 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 273 | lt_cv_deplibs_check_method=pass_all ;; | ||
| 274 | @@ -4462,7 +4462,7 @@ | ||
| 275 | _ACEOF | ||
| 276 | |||
| 277 | ;; | ||
| 278 | - ppc-*-linux-gnu*) | ||
| 279 | + ppc-*-linux-gnu* | ppc-*-linux-uclibc*) | ||
| 280 | case "$endian" in | ||
| 281 | big) ;; | ||
| 282 | *) { { echo "$as_me:$LINENO: error: GNU/Linux must be configured big endian" >&5 | ||
| 283 | --- binutils-2.16/gas/configure.tgt.orig 2005-09-06 20:32:55.695080700 -0700 | ||
| 284 | +++ binutils-2.16/gas/configure.tgt 2005-09-06 20:35:59.482645723 -0700 | ||
| 285 | @@ -100,7 +100,7 @@ | ||
| 286 | alpha-*-*vms*) fmt=evax ;; | ||
| 287 | alpha-*-osf*) fmt=ecoff ;; | ||
| 288 | alpha-*-linuxecoff*) fmt=ecoff ;; | ||
| 289 | - alpha-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 290 | + alpha-*-linux-gnu* | alpha-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 291 | alpha-*-netbsd*) fmt=elf em=nbsd ;; | ||
| 292 | alpha-*-openbsd*) fmt=elf em=obsd ;; | ||
| 293 | |||
| 294 | @@ -116,7 +116,7 @@ | ||
| 295 | arm-*-conix*) fmt=elf ;; | ||
| 296 | arm-*-linux*aout*) fmt=aout em=linux ;; | ||
| 297 | arm-*-linux-gnueabi*) fmt=elf em=armlinuxeabi ;; | ||
| 298 | - arm-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 299 | + arm-*-linux-gnu* | arm-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 300 | arm-*-uclinux*) fmt=elf em=linux ;; | ||
| 301 | arm-*-netbsdelf*) fmt=elf em=nbsd ;; | ||
| 302 | arm-*-*n*bsd*) fmt=aout em=nbsd ;; | ||
| 303 | @@ -128,7 +128,7 @@ | ||
| 304 | |||
| 305 | avr-*-*) fmt=elf ;; | ||
| 306 | |||
| 307 | - cris-*-linux-gnu* | crisv32-*-linux-gnu*) | ||
| 308 | + cris-*-linux-gnu* | crisv32-*-linux-gnu* | cris-*-linux-uclibc* | crisv32-*-linux-uclibc*) | ||
| 309 | fmt=multi bfd_gas=yes em=linux ;; | ||
| 310 | cris-*-* | crisv32-*-*) fmt=multi bfd_gas=yes ;; | ||
| 311 | |||
| 312 | @@ -192,7 +192,7 @@ | ||
| 313 | i386-*-linux*aout*) fmt=aout em=linux ;; | ||
| 314 | i386-*-linux*oldld) fmt=aout em=linux ;; | ||
| 315 | i386-*-linux*coff*) fmt=coff em=linux ;; | ||
| 316 | - i386-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 317 | + i386-*-linux-gnu* | i386-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 318 | i386-*-lynxos*) fmt=elf em=lynx bfd_gas=yes ;; | ||
| 319 | i386-*-sysv[45]*) fmt=elf ;; | ||
| 320 | i386-*-solaris*) fmt=elf ;; | ||
| 321 | @@ -238,7 +238,7 @@ | ||
| 322 | |||
| 323 | ia64-*-elf*) fmt=elf ;; | ||
| 324 | ia64-*-aix*) fmt=elf em=ia64aix ;; | ||
| 325 | - ia64-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 326 | + ia64-*-linux-gnu* | ia64-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 327 | ia64-*-hpux*) fmt=elf em=hpux ;; | ||
| 328 | ia64-*-netbsd*) fmt=elf em=nbsd ;; | ||
| 329 | |||
| 330 | @@ -265,7 +265,7 @@ | ||
| 331 | m68k-*-rtems*) fmt=elf ;; | ||
| 332 | m68k-*-hpux*) fmt=hp300 em=hp300 ;; | ||
| 333 | m68k-*-linux*aout*) fmt=aout em=linux ;; | ||
| 334 | - m68k-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 335 | + m68k-*-linux-gnu* | m68k-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 336 | m68k-*-uclinux*) fmt=elf ;; | ||
| 337 | m68k-*-gnu*) fmt=elf ;; | ||
| 338 | m68k-*-netbsdelf*) fmt=elf em=nbsd ;; | ||
| 339 | @@ -332,7 +332,7 @@ | ||
| 340 | ppc-*-beos*) fmt=coff ;; | ||
| 341 | ppc-*-*n*bsd* | ppc-*-elf*) fmt=elf ;; | ||
| 342 | ppc-*-eabi* | ppc-*-sysv4*) fmt=elf ;; | ||
| 343 | - ppc-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 344 | + ppc-*-linux-gnu* | ppc-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 345 | ppc-*-solaris*) fmt=elf ;; | ||
| 346 | ppc-*-rtems*) fmt=elf ;; | ||
| 347 | ppc-*-macos*) fmt=coff em=macos ;; | ||
| 348 | @@ -340,7 +340,7 @@ | ||
| 349 | ppc-*-kaos*) fmt=elf ;; | ||
| 350 | ppc-*-lynxos*) fmt=elf em=lynx bfd_gas=yes ;; | ||
| 351 | |||
| 352 | - s390-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 353 | + s390-*-linux-gnu* | s390-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 354 | s390-*-tpf*) fmt=elf ;; | ||
| 355 | |||
| 356 | sh*-*-linux*) fmt=elf em=linux | ||
| 357 | @@ -369,7 +369,7 @@ | ||
| 358 | sparc-*-aout | sparc*-*-vxworks*) fmt=aout em=sparcaout ;; | ||
| 359 | sparc-*-coff) fmt=coff ;; | ||
| 360 | sparc-*-linux*aout*) fmt=aout em=linux ;; | ||
| 361 | - sparc-*-linux-gnu*) fmt=elf em=linux ;; | ||
| 362 | + sparc-*-linux-gnu* | sparc-*-linux-uclibc*) fmt=elf em=linux ;; | ||
| 363 | sparc-fujitsu-none) fmt=aout ;; | ||
| 364 | sparc-*-elf) fmt=elf ;; | ||
| 365 | sparc-*-sysv4*) fmt=elf ;; | ||
| 366 | @@ -398,7 +398,7 @@ | ||
| 367 | vax-*-netbsdelf*) fmt=elf em=nbsd ;; | ||
| 368 | vax-*-netbsd*) fmt=aout em=nbsd ;; | ||
| 369 | vax-*-bsd* | vax-*-ultrix*) fmt=aout ;; | ||
| 370 | - vax-*-linux-gnu*) fmt=elf em=linux bfd_gas=yes ;; | ||
| 371 | + vax-*-linux-gnu* | vax-*-linux-uclibc*) fmt=elf em=linux bfd_gas=yes ;; | ||
| 372 | |||
| 373 | w65-*-*) fmt=coff ;; | ||
| 374 | |||
| 375 | --- binutils-2.16/gprof/configure.orig 2005-09-06 20:36:04.850983531 -0700 | ||
| 376 | +++ binutils-2.16/gprof/configure 2005-09-06 20:36:26.344336022 -0700 | ||
| 377 | @@ -3407,7 +3407,7 @@ | ||
| 378 | ;; | ||
| 379 | |||
| 380 | # This must be Linux ELF. | ||
| 381 | -linux-gnu*) | ||
| 382 | +linux-gnu* | linux-uclibc*) | ||
| 383 | case $host_cpu in | ||
| 384 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 385 | lt_cv_deplibs_check_method=pass_all ;; | ||
| 386 | --- binutils-2.16/ld/configure.host.orig 2005-09-06 20:37:46.085353808 -0700 | ||
| 387 | +++ binutils-2.16/ld/configure.host 2005-09-06 20:40:03.381993341 -0700 | ||
| 388 | @@ -83,7 +83,7 @@ | ||
| 389 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,ld\[^ \]\*,ld-linux,g"` | ||
| 390 | ;; | ||
| 391 | |||
| 392 | -arm*-*-linux-gnu*) | ||
| 393 | +arm*-*-linux-gnu* | arm*-*-linux-uclibc*) | ||
| 394 | HOSTING_CRT0='-p '`echo "$HOSTING_CRT0" | sed -e "s,ld\[^ \]\*,ld-linux,g"` | ||
| 395 | ;; | ||
| 396 | |||
| 397 | @@ -141,7 +141,7 @@ | ||
| 398 | HOSTING_LIBS="$HOSTING_LIBS"' -lcygwin -L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32 `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi`' | ||
| 399 | ;; | ||
| 400 | |||
| 401 | -ia64-*-linux-gnu*) | ||
| 402 | +ia64-*-linux-gnu* | ia64-*-linux-uclibc*) | ||
| 403 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,ld\[^ \]*\*,ld-linux-ia64,g"` | ||
| 404 | ;; | ||
| 405 | |||
| 406 | @@ -155,11 +155,11 @@ | ||
| 407 | HOSTING_LIBS='-L/usr/lib32 '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o ; else ${CC} -print-file-name=crtend.o; fi` /usr/lib32/crtn.o -init __do_global_ctors -fini __do_global_dtors' | ||
| 408 | ;; | ||
| 409 | |||
| 410 | -mips*-*-linux-gnu*) | ||
| 411 | +mips*-*-linux-gnu* | mips*-*-linux-uclibc*) | ||
| 412 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"` | ||
| 413 | ;; | ||
| 414 | |||
| 415 | -m68*-*-linux-gnu*) | ||
| 416 | +m68*-*-linux-gnu* | m68*-*-linux-uclibc*) | ||
| 417 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"` | ||
| 418 | ;; | ||
| 419 | |||
| 420 | @@ -183,19 +183,19 @@ | ||
| 421 | HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi`' | ||
| 422 | ;; | ||
| 423 | |||
| 424 | -powerpc64*-*-linux-gnu*) | ||
| 425 | +powerpc64*-*-linux-gnu* | powerpc64*-*-linux-uclibc*) | ||
| 426 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib64/ld64.so.1,"` | ||
| 427 | ;; | ||
| 428 | |||
| 429 | -powerpc*-*-linux-gnu*) | ||
| 430 | +powerpc*-*-linux-gnu* | powerpc*-*-linux-uclibc*) | ||
| 431 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"` | ||
| 432 | ;; | ||
| 433 | |||
| 434 | -s390x-*-linux-gnu*) | ||
| 435 | +s390x-*-linux-gnu* | s390x-*-linux-uclibc*) | ||
| 436 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld64.so.1,"` | ||
| 437 | ;; | ||
| 438 | |||
| 439 | -s390-*-linux-gnu*) | ||
| 440 | +s390-*-linux-gnu* | s390-*-linux-uclibc*) | ||
| 441 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"` | ||
| 442 | ;; | ||
| 443 | |||
| 444 | @@ -209,15 +209,15 @@ | ||
| 445 | HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else ${CC} -print-file-name=crtn.o; fi`' | ||
| 446 | ;; | ||
| 447 | |||
| 448 | -sparc-*-linux-gnu*) | ||
| 449 | +sparc-*-linux-gnu* | sparc-*-linux-uclibc*) | ||
| 450 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld-linux.so.2,"` | ||
| 451 | ;; | ||
| 452 | |||
| 453 | -sparc64-*-linux-gnu*) | ||
| 454 | +sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) | ||
| 455 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib64/ld-linux.so.2,"` | ||
| 456 | ;; | ||
| 457 | |||
| 458 | -x86_64-*-linux-gnu*) | ||
| 459 | +x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) | ||
| 460 | HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib64/ld-linux-x86-64.so.2,"` | ||
| 461 | ;; | ||
| 462 | |||
| 463 | --- binutils-2.16/ld/configure.orig 2005-09-06 20:37:34.700637413 -0700 | ||
| 464 | +++ binutils-2.16/ld/configure 2005-09-06 20:37:46.013349277 -0700 | ||
| 465 | @@ -1568,7 +1568,7 @@ | ||
| 466 | ;; | ||
| 467 | |||
| 468 | # This must be Linux ELF. | ||
| 469 | -linux-gnu*) | ||
| 470 | +linux-gnu* | linux-uclibc*) | ||
| 471 | case $host_cpu in | ||
| 472 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 473 | lt_cv_deplibs_check_method=pass_all ;; | ||
| 474 | --- binutils-2.16/ld/configure.tgt.orig 2005-09-06 20:40:03.413995355 -0700 | ||
| 475 | +++ binutils-2.16/ld/configure.tgt 2005-09-06 20:45:48.111685813 -0700 | ||
| 476 | @@ -30,7 +30,7 @@ | ||
| 477 | cris-*-*aout*) targ_emul=crisaout | ||
| 478 | targ_extra_emuls="criself crislinux" | ||
| 479 | targ_extra_libpath=$targ_extra_emuls ;; | ||
| 480 | -cris-*-linux-gnu* | cris-*-linux-gnu*) | ||
| 481 | +cris-*-linux-gnu* | cris-*-linux-gnu* | cris-*-linux-uclibc* | cris-*-linux-uclibc*) | ||
| 482 | targ_emul=crislinux ;; | ||
| 483 | cris-*-* | crisv32-*-*) targ_emul=criself | ||
| 484 | targ_extra_emuls="crisaout crislinux" | ||
| 485 | @@ -62,14 +62,14 @@ | ||
| 486 | tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'` | ||
| 487 | tdir_sun4=sparc-sun-sunos4 | ||
| 488 | ;; | ||
| 489 | -sparc64-*-linux-gnu*) targ_emul=elf64_sparc | ||
| 490 | +sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) targ_emul=elf64_sparc | ||
| 491 | targ_extra_emuls="elf32_sparc sparclinux sun4" | ||
| 492 | targ_extra_libpath=elf32_sparc | ||
| 493 | tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'` | ||
| 494 | tdir_sparclinux=${tdir_elf32_sparc}aout | ||
| 495 | tdir_sun4=sparc-sun-sunos4 | ||
| 496 | ;; | ||
| 497 | -sparc*-*-linux-gnu*) targ_emul=elf32_sparc | ||
| 498 | +sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) targ_emul=elf32_sparc | ||
| 499 | targ_extra_emuls="sparclinux elf64_sparc sun4" | ||
| 500 | targ_extra_libpath=elf64_sparc | ||
| 501 | tdir_sparclinux=${targ_alias}aout | ||
| 502 | @@ -119,8 +119,8 @@ | ||
| 503 | ia64-*-aix*) targ_emul=elf64_aix ;; | ||
| 504 | m32r*le-*-elf*) targ_emul=m32rlelf ;; | ||
| 505 | m32r*-*-elf*) targ_emul=m32relf ;; | ||
| 506 | -m32r*le-*-linux-gnu*) targ_emul=m32rlelf_linux ;; | ||
| 507 | -m32r*-*-linux-gnu*) targ_emul=m32relf_linux ;; | ||
| 508 | +m32r*le-*-linux-gnu* | m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;; | ||
| 509 | +m32r*-*-linux-gnu* | m32r*-*-linux-uclibc*) targ_emul=m32relf_linux ;; | ||
| 510 | m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf | ||
| 511 | targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;; | ||
| 512 | m68hc12-*-*|m6812-*-*) targ_emul=m68hc12elf | ||
| 513 | @@ -131,7 +131,7 @@ | ||
| 514 | m68*-apple-aux*) targ_emul=m68kaux ;; | ||
| 515 | maxq-*-coff) targ_emul=maxqcoff;; | ||
| 516 | *-tandem-none) targ_emul=st2000 ;; | ||
| 517 | -i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;; | ||
| 518 | +i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;; | ||
| 519 | i[3-7]86-*-nto-qnx*) targ_emul=i386nto ;; | ||
| 520 | i[3-7]86-*-vsta) targ_emul=vsta ;; | ||
| 521 | i[3-7]86-go32-rtems*) targ_emul=i386go32 ;; | ||
| 522 | @@ -155,14 +155,14 @@ | ||
| 523 | tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'` | ||
| 524 | ;; | ||
| 525 | i[3-7]86-*-linux*oldld) targ_emul=i386linux; targ_extra_emuls=elf_i386 ;; | ||
| 526 | -i[3-7]86-*-linux-gnu*) targ_emul=elf_i386 | ||
| 527 | +i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) targ_emul=elf_i386 | ||
| 528 | targ_extra_emuls=i386linux | ||
| 529 | if test x${want64} = xtrue; then | ||
| 530 | targ_extra_emuls="$targ_extra_emuls elf_x86_64" | ||
| 531 | fi | ||
| 532 | tdir_i386linux=${targ_alias}aout | ||
| 533 | ;; | ||
| 534 | -x86_64-*-linux-gnu*) targ_emul=elf_x86_64 | ||
| 535 | +x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) targ_emul=elf_x86_64 | ||
| 536 | targ_extra_emuls="elf_i386 i386linux" | ||
| 537 | targ_extra_libpath=elf_i386 | ||
| 538 | tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'` | ||
| 539 | @@ -262,13 +262,14 @@ | ||
| 540 | arm-*-kaos*) targ_emul=armelf ;; | ||
| 541 | arm9e-*-elf) targ_emul=armelf ;; | ||
| 542 | arm*b-*-linux-gnueabi) targ_emul=armelfb_linux_eabi ;; | ||
| 543 | -arm*b-*-linux-gnu*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;; | ||
| 544 | +arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;; | ||
| 545 | arm*-*-linux-gnueabi) targ_emul=armelf_linux_eabi ;; | ||
| 546 | -arm*-*-linux-gnu*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; | ||
| 547 | +arm*-*-linux-gnu* | arm*-*-linux-uclibc*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; | ||
| 548 | arm*-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; | ||
| 549 | arm-*-vxworks) targ_emul=armelf_vxworks ;; | ||
| 550 | arm*-*-conix*) targ_emul=armelf ;; | ||
| 551 | -thumb-*-linux-gnu* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; | ||
| 552 | +thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; | ||
| 553 | +thumbb-*-linux-gnu* | thumbb-*-linux-uclibc* | thumbb-*-uclinux*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;; | ||
| 554 | strongarm-*-coff) targ_emul=armcoff ;; | ||
| 555 | strongarm-*-elf) targ_emul=armelf ;; | ||
| 556 | strongarm-*-kaos*) targ_emul=armelf ;; | ||
| 557 | @@ -372,7 +373,7 @@ | ||
| 558 | targ_extra_emuls=m68kelf | ||
| 559 | tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'` | ||
| 560 | ;; | ||
| 561 | -m68k-*-linux-gnu*) targ_emul=m68kelf | ||
| 562 | +m68k-*-linux-gnu* | m68k-*-linux-uclibc*) targ_emul=m68kelf | ||
| 563 | targ_extra_emuls=m68klinux | ||
| 564 | tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'` | ||
| 565 | ;; | ||
| 566 | @@ -388,9 +389,9 @@ | ||
| 567 | m68*-*-psos*) targ_emul=m68kpsos ;; | ||
| 568 | m68*-*-rtemscoff*) targ_emul=m68kcoff ;; | ||
| 569 | m68*-*-rtems*) targ_emul=m68kelf ;; | ||
| 570 | -hppa*64*-*-linux-gnu*) targ_emul=hppa64linux ;; | ||
| 571 | +hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*) targ_emul=hppa64linux ;; | ||
| 572 | hppa*64*-*) targ_emul=elf64hppa ;; | ||
| 573 | -hppa*-*-linux-gnu*) targ_emul=hppalinux ;; | ||
| 574 | +hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*) targ_emul=hppalinux ;; | ||
| 575 | hppa*-*-*elf*) targ_emul=hppaelf ;; | ||
| 576 | hppa*-*-lites*) targ_emul=hppaelf ;; | ||
| 577 | hppa*-*-netbsd*) targ_emul=hppanbsd ;; | ||
| 578 | @@ -402,7 +403,7 @@ | ||
| 579 | vax-*-netbsdaout* | vax-*-netbsd*) | ||
| 580 | targ_emul=vaxnbsd | ||
| 581 | targ_extra_emuls=elf32vax ;; | ||
| 582 | -vax-*-linux-gnu*) targ_emul=elf32vax ;; | ||
| 583 | +vax-*-linux-gnu* | vax-*-linux-uclibc*) targ_emul=elf32vax ;; | ||
| 584 | mips*-*-pe) targ_emul=mipspe ; | ||
| 585 | targ_extra_ofiles="deffilep.o pe-dll.o" ;; | ||
| 586 | mips*-dec-ultrix*) targ_emul=mipslit ;; | ||
| 587 | @@ -436,18 +437,18 @@ | ||
| 588 | mips*-*-vxworks*) targ_emul=elf32ebmip | ||
| 589 | targ_extra_emuls="elf32elmip" ;; | ||
| 590 | mips*-*-windiss) targ_emul=elf32mipswindiss ;; | ||
| 591 | -mips64*el-*-linux-gnu*) targ_emul=elf32ltsmipn32 | ||
| 592 | +mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*) targ_emul=elf32ltsmipn32 | ||
| 593 | targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip" | ||
| 594 | targ_extra_libpath="elf32ltsmip elf64ltsmip" | ||
| 595 | ;; | ||
| 596 | -mips64*-*-linux-gnu*) targ_emul=elf32btsmipn32 | ||
| 597 | +mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*) targ_emul=elf32btsmipn32 | ||
| 598 | targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip" | ||
| 599 | targ_extra_libpath="elf32btsmip elf64btsmip" | ||
| 600 | ;; | ||
| 601 | -mips*el-*-linux-gnu*) targ_emul=elf32ltsmip | ||
| 602 | +mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*) targ_emul=elf32ltsmip | ||
| 603 | targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip" | ||
| 604 | ;; | ||
| 605 | -mips*-*-linux-gnu*) targ_emul=elf32btsmip | ||
| 606 | +mips*-*-linux-gnu* | mips*-*-linux-uclibc*) targ_emul=elf32btsmip | ||
| 607 | targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip" | ||
| 608 | ;; | ||
| 609 | mips*-*-lnews*) targ_emul=mipslnews ;; | ||
| 610 | @@ -467,7 +468,7 @@ | ||
| 611 | alpha*-*-linuxecoff*) targ_emul=alpha targ_extra_emuls=elf64alpha | ||
| 612 | tdir_elf64alpha=`echo ${targ_alias} | sed -e 's/ecoff//'` | ||
| 613 | ;; | ||
| 614 | -alpha*-*-linux-gnu*) targ_emul=elf64alpha targ_extra_emuls=alpha | ||
| 615 | +alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) targ_emul=elf64alpha targ_extra_emuls=alpha | ||
| 616 | tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'` | ||
| 617 | ;; | ||
| 618 | alpha*-*-osf*) targ_emul=alpha ;; | ||
| 619 | --- binutils-2.16/ld/emultempl/elf32.em.orig 2005-09-06 20:45:48.247694371 -0700 | ||
| 620 | +++ binutils-2.16/ld/emultempl/elf32.em 2005-09-06 20:46:39.158898011 -0700 | ||
| 621 | @@ -65,7 +65,7 @@ | ||
| 622 | |||
| 623 | if [ "x${USE_LIBPATH}" = xyes ] ; then | ||
| 624 | case ${target} in | ||
| 625 | - *-*-linux-gnu*) | ||
| 626 | + *-*-linux-gnu* | *-*-linux-uclibc*) | ||
| 627 | cat >>e${EMULATION_NAME}.c <<EOF | ||
| 628 | #ifdef HAVE_GLOB | ||
| 629 | #include <glob.h> | ||
| 630 | @@ -350,7 +350,7 @@ | ||
| 631 | |||
| 632 | EOF | ||
| 633 | case ${target} in | ||
| 634 | - *-*-linux-gnu*) | ||
| 635 | + *-*-linux-gnu* | *-*-linux-uclibc*) | ||
| 636 | cat >>e${EMULATION_NAME}.c <<EOF | ||
| 637 | { | ||
| 638 | struct bfd_link_needed_list *l; | ||
| 639 | @@ -522,7 +522,7 @@ | ||
| 640 | |||
| 641 | EOF | ||
| 642 | case ${target} in | ||
| 643 | - *-*-linux-gnu*) | ||
| 644 | + *-*-linux-gnu* | *-*-linux-uclibc*) | ||
| 645 | cat >>e${EMULATION_NAME}.c <<EOF | ||
| 646 | /* For a native linker, check the file /etc/ld.so.conf for directories | ||
| 647 | in which we may find shared libraries. /etc/ld.so.conf is really | ||
| 648 | @@ -932,7 +932,7 @@ | ||
| 649 | EOF | ||
| 650 | if [ "x${USE_LIBPATH}" = xyes ] ; then | ||
| 651 | case ${target} in | ||
| 652 | - *-*-linux-gnu*) | ||
| 653 | + *-*-linux-gnu* | *-*-linux-uclibc*) | ||
| 654 | cat >>e${EMULATION_NAME}.c <<EOF | ||
| 655 | if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force)) | ||
| 656 | break; | ||
| 657 | --- binutils-2.16/libtool.m4.orig 2005-09-06 20:46:55.131903129 -0700 | ||
| 658 | +++ binutils-2.16/libtool.m4 2005-09-06 20:47:07.364672889 -0700 | ||
| 659 | @@ -634,7 +634,7 @@ | ||
| 660 | ;; | ||
| 661 | |||
| 662 | # This must be Linux ELF. | ||
| 663 | -linux-gnu*) | ||
| 664 | +linux-gnu* | linux-uclibc*) | ||
| 665 | case $host_cpu in | ||
| 666 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 667 | lt_cv_deplibs_check_method=pass_all ;; | ||
| 668 | --- binutils-2.16/ltconfig.orig 2005-09-06 20:47:13.965088227 -0700 | ||
| 669 | +++ binutils-2.16/ltconfig 2005-09-06 20:49:12.944575134 -0700 | ||
| 670 | @@ -1247,7 +1247,7 @@ | ||
| 671 | ;; | ||
| 672 | |||
| 673 | # This must be Linux ELF. | ||
| 674 | -linux-gnu*) | ||
| 675 | +linux-gnu* | linux-uclibc*) | ||
| 676 | version_type=linux | ||
| 677 | need_lib_prefix=no | ||
| 678 | need_version=no | ||
| 679 | --- binutils-2.16/ltmain.sh.orig 2005-09-06 20:49:12.980577399 -0700 | ||
| 680 | +++ binutils-2.16/ltmain.sh 2005-09-06 20:50:15.180491393 -0700 | ||
| 681 | @@ -2600,7 +2600,7 @@ | ||
| 682 | versuffix="$major.$revision" | ||
| 683 | ;; | ||
| 684 | |||
| 685 | - linux) | ||
| 686 | + linux | linux-uclibc) | ||
| 687 | major=.`expr $current - $age` | ||
| 688 | versuffix="$major.$age.$revision" | ||
| 689 | ;; | ||
| 690 | --- binutils-2.16/opcodes/configure.orig 2005-09-06 20:50:15.220493910 -0700 | ||
| 691 | +++ binutils-2.16/opcodes/configure 2005-09-06 20:50:38.053930728 -0700 | ||
| 692 | @@ -3576,7 +3576,7 @@ | ||
| 693 | ;; | ||
| 694 | |||
| 695 | # This must be Linux ELF. | ||
| 696 | -linux-gnu*) | ||
| 697 | +linux-gnu* | linux-uclibc*) | ||
| 698 | case $host_cpu in | ||
| 699 | alpha* | mips* | hppa* | i*86 | powerpc* | sparc* | ia64* ) | ||
| 700 | lt_cv_deplibs_check_method=pass_all ;; | ||
diff --git a/openembedded/packages/binutils/binutils-2.16/binutils-2.16-objcopy-rename-errorcode.patch b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-objcopy-rename-errorcode.patch new file mode 100644 index 0000000000..e4372de88f --- /dev/null +++ b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-objcopy-rename-errorcode.patch | |||
| @@ -0,0 +1,29 @@ | |||
| 1 | # strip (and objcopy) fail to set the error code if there is no | ||
| 2 | # output file name and the rename of the stripped (or copied) file | ||
| 3 | # fails, yet the command fails to do anything. This fixes both | ||
| 4 | # objcopy and strip. | ||
| 5 | # | ||
| 6 | #Signed-off-by: John Bowler <jbowler@acm.org> | ||
| 7 | |||
| 8 | --- binutils-2.16/binutils/objcopy.c.orig 2006-01-31 11:15:38.797318519 -0800 | ||
| 9 | +++ binutils-2.16/binutils/objcopy.c 2006-01-31 11:15:40.463318516 -0800 | ||
| 10 | @@ -2434,7 +2434,8 @@ strip_main (int argc, char *argv[]) | ||
| 11 | if (preserve_dates) | ||
| 12 | set_times (tmpname, &statbuf); | ||
| 13 | if (output_file == NULL) | ||
| 14 | - smart_rename (tmpname, argv[i], preserve_dates); | ||
| 15 | + if (smart_rename (tmpname, argv[i], preserve_dates)) | ||
| 16 | + hold_status = 1; | ||
| 17 | status = hold_status; | ||
| 18 | } | ||
| 19 | else | ||
| 20 | @@ -3013,7 +3014,8 @@ copy_main (int argc, char *argv[]) | ||
| 21 | { | ||
| 22 | if (preserve_dates) | ||
| 23 | set_times (tmpname, &statbuf); | ||
| 24 | - smart_rename (tmpname, input_filename, preserve_dates); | ||
| 25 | + if (smart_rename (tmpname, input_filename, preserve_dates)) | ||
| 26 | + status = 1; | ||
| 27 | } | ||
| 28 | else | ||
| 29 | unlink (tmpname); | ||
diff --git a/openembedded/packages/binutils/binutils-2.16/binutils-2.16-thumb-glue.patch b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-thumb-glue.patch new file mode 100644 index 0000000000..59d8035f7d --- /dev/null +++ b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-thumb-glue.patch | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | # The ARM->Thumb glue uses an ldr of the target function address, this | ||
| 2 | # simply doesn't work for PIC code, changed to use 4 word PIC glue | ||
| 3 | # | ||
| 4 | --- binutils-2.16/.pc/binutils-2.16-thumb-glue.patch/bfd/elf32-arm.c 2005-09-18 03:52:15.465165051 -0700 | ||
| 5 | +++ binutils-2.16/bfd/elf32-arm.c 2005-09-18 03:52:33.546302825 -0700 | ||
| 6 | @@ -1493,19 +1493,20 @@ | ||
| 7 | return myh; | ||
| 8 | } | ||
| 9 | |||
| 10 | -/* ARM->Thumb glue: | ||
| 11 | +/* ARM->Thumb glue (PIC version): | ||
| 12 | |||
| 13 | .arm | ||
| 14 | __func_from_arm: | ||
| 15 | ldr r12, __func_addr | ||
| 16 | + add r12, r12, pc @ pc is __func_addr, so r12 is func | ||
| 17 | bx r12 | ||
| 18 | __func_addr: | ||
| 19 | - .word func @ behave as if you saw a ARM_32 reloc. */ | ||
| 20 | + .word func-.+1 @ offset to actual function, low bit set */ | ||
| 21 | |||
| 22 | -#define ARM2THUMB_GLUE_SIZE 12 | ||
| 23 | -static const insn32 a2t1_ldr_insn = 0xe59fc000; | ||
| 24 | -static const insn32 a2t2_bx_r12_insn = 0xe12fff1c; | ||
| 25 | -static const insn32 a2t3_func_addr_insn = 0x00000001; | ||
| 26 | +#define ARM2THUMB_GLUE_SIZE 16 | ||
| 27 | +static const insn32 a2t1_ldr_insn = 0xe59fc004; | ||
| 28 | +static const insn32 a2t2_add_r12_insn = 0xe08fc00c; | ||
| 29 | +static const insn32 a2t3_bx_r12_insn = 0xe12fff1c; | ||
| 30 | |||
| 31 | /* Thumb->ARM: Thumb->(non-interworking aware) ARM | ||
| 32 | |||
| 33 | @@ -2187,6 +2188,8 @@ | ||
| 34 | |||
| 35 | if ((my_offset & 0x01) == 0x01) | ||
| 36 | { | ||
| 37 | + long int ret_offset; | ||
| 38 | + | ||
| 39 | if (sym_sec != NULL | ||
| 40 | && sym_sec->owner != NULL | ||
| 41 | && !INTERWORK_FLAG (sym_sec->owner)) | ||
| 42 | @@ -2203,12 +2206,31 @@ | ||
| 43 | bfd_put_32 (output_bfd, (bfd_vma) a2t1_ldr_insn, | ||
| 44 | s->contents + my_offset); | ||
| 45 | |||
| 46 | - bfd_put_32 (output_bfd, (bfd_vma) a2t2_bx_r12_insn, | ||
| 47 | + bfd_put_32 (output_bfd, (bfd_vma) a2t2_add_r12_insn, | ||
| 48 | s->contents + my_offset + 4); | ||
| 49 | |||
| 50 | - /* It's a thumb address. Add the low order bit. */ | ||
| 51 | - bfd_put_32 (output_bfd, val | a2t3_func_addr_insn, | ||
| 52 | + bfd_put_32 (output_bfd, (bfd_vma) a2t3_bx_r12_insn, | ||
| 53 | s->contents + my_offset + 8); | ||
| 54 | + | ||
| 55 | + /* Calculate the offset to the actual function. */ | ||
| 56 | + ret_offset = | ||
| 57 | + /* Address of destination of the stub. */ | ||
| 58 | + ((bfd_signed_vma) val) | ||
| 59 | + - ((bfd_signed_vma) | ||
| 60 | + /* Offset from the start of the current section | ||
| 61 | + to the start of the stubs. */ | ||
| 62 | + (s->output_offset | ||
| 63 | + /* Offset of the start of this stub from the start of the stubs. */ | ||
| 64 | + + my_offset | ||
| 65 | + /* Address of the start of the current section. */ | ||
| 66 | + + s->output_section->vma) | ||
| 67 | + /* The word is 12 bytes into the stub. */ | ||
| 68 | + + 12 | ||
| 69 | + /* The destination is a thumb function so the bottom bit must be set. */ | ||
| 70 | + - 1); | ||
| 71 | + | ||
| 72 | + bfd_put_32 (output_bfd, (bfd_vma) ret_offset, | ||
| 73 | + s->contents + my_offset + 12); | ||
| 74 | } | ||
| 75 | |||
| 76 | BFD_ASSERT (my_offset <= globals->arm_glue_size); | ||
diff --git a/openembedded/packages/binutils/binutils-2.16/binutils-2.16-thumb-trampoline.patch b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-thumb-trampoline.patch new file mode 100644 index 0000000000..a4f90a7254 --- /dev/null +++ b/openembedded/packages/binutils/binutils-2.16/binutils-2.16-thumb-trampoline.patch | |||
| @@ -0,0 +1,292 @@ | |||
| 1 | --- binutils-2.16/.pc/binutils-2.16-thumb-trampoline.patch/bfd/elf32-arm.c 2005-05-02 12:43:06.000000000 -0700 | ||
| 2 | +++ binutils-2.16/bfd/elf32-arm.c 2005-09-19 22:58:49.834931044 -0700 | ||
| 3 | @@ -24,6 +24,8 @@ | ||
| 4 | #include "libbfd.h" | ||
| 5 | #include "elf-bfd.h" | ||
| 6 | |||
| 7 | +#define NOTE_DEBUG 0 | ||
| 8 | + | ||
| 9 | #ifndef NUM_ELEM | ||
| 10 | #define NUM_ELEM(a) (sizeof (a) / (sizeof (a)[0])) | ||
| 11 | #endif | ||
| 12 | @@ -1127,6 +1129,10 @@ | ||
| 13 | used, we need to record the index into .got.plt instead of | ||
| 14 | recomputing it from the PLT offset. */ | ||
| 15 | bfd_signed_vma plt_got_offset; | ||
| 16 | + | ||
| 17 | + /* This is used to sanity check that the Thumb trampoline space | ||
| 18 | + really was allocated. */ | ||
| 19 | + int accomodate_trampoline; | ||
| 20 | }; | ||
| 21 | |||
| 22 | /* Traverse an arm ELF linker hash table. */ | ||
| 23 | @@ -1219,9 +1225,15 @@ | ||
| 24 | table, string)); | ||
| 25 | if (ret != NULL) | ||
| 26 | { | ||
| 27 | +#if NOTE_DEBUG | ||
| 28 | + _bfd_error_handler( | ||
| 29 | + _("NOTE: %x(%s): New hash entry (plt refcount %d)"), | ||
| 30 | + ret, string, ret->root.plt.refcount); | ||
| 31 | +#endif | ||
| 32 | ret->relocs_copied = NULL; | ||
| 33 | ret->plt_thumb_refcount = 0; | ||
| 34 | ret->plt_got_offset = -1; | ||
| 35 | + ret->accomodate_trampoline = 0; | ||
| 36 | } | ||
| 37 | |||
| 38 | return (struct bfd_hash_entry *) ret; | ||
| 39 | @@ -1335,16 +1347,38 @@ | ||
| 40 | eind->relocs_copied = NULL; | ||
| 41 | } | ||
| 42 | |||
| 43 | - /* If the direct symbol already has an associated PLT entry, the | ||
| 44 | - indirect symbol should not. If it doesn't, swap refcount information | ||
| 45 | - from the indirect symbol. */ | ||
| 46 | - if (edir->plt_thumb_refcount == 0) | ||
| 47 | + if (ind->root.type == bfd_link_hash_indirect) | ||
| 48 | { | ||
| 49 | - edir->plt_thumb_refcount = eind->plt_thumb_refcount; | ||
| 50 | - eind->plt_thumb_refcount = 0; | ||
| 51 | + bfd_signed_vma tmp; | ||
| 52 | + bfd_signed_vma lowest_valid = bed->can_refcount; | ||
| 53 | + | ||
| 54 | + /* If the direct symbol already has an associated PLT entry, the | ||
| 55 | + indirect symbol should not. If it doesn't, swap refcount information | ||
| 56 | + from the indirect symbol. */ | ||
| 57 | +#if NOTE_DEBUG | ||
| 58 | + _bfd_error_handler(_("NOTE: %x(%s,%d,%d) <== %x(%s,%d,%d)"), | ||
| 59 | + dir, dir->root.root.string, dir->plt.refcount, edir->plt_thumb_refcount, | ||
| 60 | + ind, ind->root.root.string, ind->plt.refcount, eind->plt_thumb_refcount); | ||
| 61 | +#endif | ||
| 62 | + | ||
| 63 | + /* Copy over the global and procedure linkage table refcount entries. | ||
| 64 | + These may have been already set up by a check_relocs routine. This | ||
| 65 | + code duplicates that for the plt refcount in elf.c | ||
| 66 | + _bfd_elf_link_hash_copy_indirect */ | ||
| 67 | + tmp = dir->plt.refcount; | ||
| 68 | + /* this obfuscated test evaluates to bed->can_refcount && plt.refcount == 0 | ||
| 69 | + * || plt.refcount < 0. | ||
| 70 | + */ | ||
| 71 | + if (tmp < lowest_valid) | ||
| 72 | + { | ||
| 73 | + tmp = edir->plt_thumb_refcount; | ||
| 74 | + edir->plt_thumb_refcount = eind->plt_thumb_refcount; | ||
| 75 | + eind->plt_thumb_refcount = tmp; | ||
| 76 | + BFD_ASSERT(eind->accomodate_trampoline == 0); | ||
| 77 | + } | ||
| 78 | + else | ||
| 79 | + BFD_ASSERT (eind->plt_thumb_refcount == 0); | ||
| 80 | } | ||
| 81 | - else | ||
| 82 | - BFD_ASSERT (eind->plt_thumb_refcount == 0); | ||
| 83 | |||
| 84 | _bfd_elf_link_hash_copy_indirect (bed, dir, ind); | ||
| 85 | } | ||
| 86 | @@ -2060,7 +2094,7 @@ | ||
| 87 | (*_bfd_error_handler) | ||
| 88 | (_("%B(%s): warning: interworking not enabled.\n" | ||
| 89 | " first occurrence: %B: thumb call to arm"), | ||
| 90 | - sym_sec->owner, input_bfd, name); | ||
| 91 | + sym_sec->owner, name, input_bfd); | ||
| 92 | |||
| 93 | return FALSE; | ||
| 94 | } | ||
| 95 | @@ -2165,7 +2199,7 @@ | ||
| 96 | (*_bfd_error_handler) | ||
| 97 | (_("%B(%s): warning: interworking not enabled.\n" | ||
| 98 | " first occurrence: %B: arm call to thumb"), | ||
| 99 | - sym_sec->owner, input_bfd, name); | ||
| 100 | + sym_sec->owner, name, input_bfd); | ||
| 101 | } | ||
| 102 | |||
| 103 | --my_offset; | ||
| 104 | @@ -2481,7 +2515,7 @@ | ||
| 105 | instruction instead ? */ | ||
| 106 | if (sym_flags != STT_ARM_TFUNC) | ||
| 107 | (*_bfd_error_handler) | ||
| 108 | - (_("\%B: Warning: Arm BLX instruction targets Arm function '%s'."), | ||
| 109 | + (_("%B: Warning: Arm BLX instruction targets Arm function '%s'."), | ||
| 110 | input_bfd, | ||
| 111 | h ? h->root.root.string : "(local)"); | ||
| 112 | } | ||
| 113 | @@ -2697,6 +2731,20 @@ | ||
| 114 | /* Handle calls via the PLT. */ | ||
| 115 | if (h != NULL && splt != NULL && h->plt.offset != (bfd_vma) -1) | ||
| 116 | { | ||
| 117 | + struct elf32_arm_link_hash_entry *eh; | ||
| 118 | + eh = (struct elf32_arm_link_hash_entry *) h; | ||
| 119 | + if (!eh->accomodate_trampoline) | ||
| 120 | + { | ||
| 121 | + /* %B of output_bfd crashes here, so %x is used instead */ | ||
| 122 | + _bfd_error_handler( | ||
| 123 | + _("ERROR: %B: %x(%s): missing thumb trampoline, refcount(thumb %d, plt %d) in %x at %x+%x+%x"), | ||
| 124 | + input_bfd, h, h->root.root.string, eh->plt_thumb_refcount, | ||
| 125 | + h->plt.refcount, output_bfd, splt->output_section->vma, | ||
| 126 | + splt->output_offset, h->plt.offset); | ||
| 127 | + /* The relocation would point to garbage, it gets skipped... */ | ||
| 128 | + return bfd_reloc_dangerous; | ||
| 129 | + } | ||
| 130 | + | ||
| 131 | value = (splt->output_section->vma | ||
| 132 | + splt->output_offset | ||
| 133 | + h->plt.offset); | ||
| 134 | @@ -3525,8 +3573,9 @@ | ||
| 135 | { | ||
| 136 | _bfd_error_handler | ||
| 137 | (_("ERROR: Source object %B has EABI version %d, but target %B has EABI version %d"), | ||
| 138 | - ibfd, obfd, | ||
| 139 | + ibfd, | ||
| 140 | (in_flags & EF_ARM_EABIMASK) >> 24, | ||
| 141 | + obfd, | ||
| 142 | (out_flags & EF_ARM_EABIMASK) >> 24); | ||
| 143 | return FALSE; | ||
| 144 | } | ||
| 145 | @@ -3538,8 +3587,9 @@ | ||
| 146 | { | ||
| 147 | _bfd_error_handler | ||
| 148 | (_("ERROR: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"), | ||
| 149 | - ibfd, obfd, | ||
| 150 | + ibfd, | ||
| 151 | in_flags & EF_ARM_APCS_26 ? 26 : 32, | ||
| 152 | + obfd, | ||
| 153 | out_flags & EF_ARM_APCS_26 ? 26 : 32); | ||
| 154 | flags_compatible = FALSE; | ||
| 155 | } | ||
| 156 | @@ -3903,10 +3953,18 @@ | ||
| 157 | eh = (struct elf32_arm_link_hash_entry *) h; | ||
| 158 | |||
| 159 | if (h->plt.refcount > 0) | ||
| 160 | + h->plt.refcount -= 1; | ||
| 161 | + | ||
| 162 | + if (ELF32_R_TYPE (rel->r_info) == R_ARM_THM_PC22) | ||
| 163 | { | ||
| 164 | - h->plt.refcount -= 1; | ||
| 165 | - if (ELF32_R_TYPE (rel->r_info) == R_ARM_THM_PC22) | ||
| 166 | - eh->plt_thumb_refcount--; | ||
| 167 | + BFD_ASSERT (eh->plt_thumb_refcount > 0); | ||
| 168 | + eh->plt_thumb_refcount--; | ||
| 169 | + BFD_ASSERT (eh->accomodate_trampoline == 0); | ||
| 170 | +#if NOTE_DEBUG | ||
| 171 | + _bfd_error_handler( | ||
| 172 | + _("NOTE: %B: %x(%s): Thumb refcount decremented to %d (plt refcount %d)"), | ||
| 173 | + abfd, h, h->root.root.string, eh->plt_thumb_refcount, h->plt.refcount); | ||
| 174 | +#endif | ||
| 175 | } | ||
| 176 | |||
| 177 | if (r_type == R_ARM_ABS32 | ||
| 178 | @@ -3994,6 +4052,10 @@ | ||
| 179 | h = sym_hashes[r_symndx - symtab_hdr->sh_info]; | ||
| 180 | |||
| 181 | eh = (struct elf32_arm_link_hash_entry *) h; | ||
| 182 | +#if NOTE_DEBUG | ||
| 183 | + if (h != NULL) | ||
| 184 | + _bfd_error_handler(_("NOTE: %B: %x(%s): verify relocation"), abfd, h, h->root.root.string); | ||
| 185 | +#endif | ||
| 186 | |||
| 187 | switch (r_type) | ||
| 188 | { | ||
| 189 | @@ -4078,10 +4140,30 @@ | ||
| 190 | |||
| 191 | /* If we create a PLT entry, this relocation will reference | ||
| 192 | it, even if it's an ABS32 relocation. */ | ||
| 193 | - h->plt.refcount += 1; | ||
| 194 | + if (h->plt.refcount >= 0) | ||
| 195 | + h->plt.refcount += 1; | ||
| 196 | + else | ||
| 197 | + { | ||
| 198 | + /* This happens, I suspect it happens with glue code because, | ||
| 199 | + * somehow, the backend data had can_refcount==0. Expert required... | ||
| 200 | + */ | ||
| 201 | + _bfd_error_handler( | ||
| 202 | + _("WARNING: %B: %x(%s): PLT refcount was %d (set to 1)"), | ||
| 203 | + abfd, h, h->root.root.string, h->plt.refcount); | ||
| 204 | + h->plt.refcount = 1; | ||
| 205 | + } | ||
| 206 | |||
| 207 | if (r_type == R_ARM_THM_PC22) | ||
| 208 | - eh->plt_thumb_refcount += 1; | ||
| 209 | + { | ||
| 210 | + eh->plt_thumb_refcount += 1; | ||
| 211 | + BFD_ASSERT (eh->plt_thumb_refcount <= h->plt.refcount); | ||
| 212 | + BFD_ASSERT (eh->accomodate_trampoline == 0); | ||
| 213 | +#if NOTE_DEBUG | ||
| 214 | + _bfd_error_handler( | ||
| 215 | + _("NOTE: %B: %x(%s): Thumb refcount incremented to %d (plt refcount %d)"), | ||
| 216 | + abfd, h, h->root.root.string, eh->plt_thumb_refcount, h->plt.refcount); | ||
| 217 | +#endif | ||
| 218 | + } | ||
| 219 | } | ||
| 220 | |||
| 221 | /* If we are creating a shared library or relocatable executable, | ||
| 222 | @@ -4376,8 +4458,15 @@ | ||
| 223 | object, or if all references were garbage collected. In | ||
| 224 | such a case, we don't actually need to build a procedure | ||
| 225 | linkage table, and we can just do a PC24 reloc instead. */ | ||
| 226 | +#if NOTE_DEBUG | ||
| 227 | + _bfd_error_handler( | ||
| 228 | + _("NOTE: %x(%s): Thumb refcount zeroed (plt refcount %d, thumb %d) (%s)"), | ||
| 229 | + h, h->root.root.string, h->plt.refcount, eh->plt_thumb_refcount, | ||
| 230 | + SYMBOL_CALLS_LOCAL (info, h) ? "local call" : "invisible"); | ||
| 231 | +#endif | ||
| 232 | h->plt.offset = (bfd_vma) -1; | ||
| 233 | eh->plt_thumb_refcount = 0; | ||
| 234 | + BFD_ASSERT (eh->accomodate_trampoline == 0); | ||
| 235 | h->needs_plt = 0; | ||
| 236 | } | ||
| 237 | |||
| 238 | @@ -4390,8 +4479,14 @@ | ||
| 239 | in check_relocs. We can't decide accurately between function | ||
| 240 | and non-function syms in check-relocs; Objects loaded later in | ||
| 241 | the link may change h->type. So fix it now. */ | ||
| 242 | +#if NOTE_DEBUG | ||
| 243 | + _bfd_error_handler( | ||
| 244 | + _("NOTE: %x(%s): Thumb refcount zeroed (%d, plt refcount %d)"), | ||
| 245 | + h, h->root.root.string, eh->plt_thumb_refcount, h->plt.refcount); | ||
| 246 | +#endif | ||
| 247 | h->plt.offset = (bfd_vma) -1; | ||
| 248 | eh->plt_thumb_refcount = 0; | ||
| 249 | + BFD_ASSERT (eh->accomodate_trampoline == 0); | ||
| 250 | } | ||
| 251 | |||
| 252 | /* If this is a weak symbol, and there is a real definition, the | ||
| 253 | @@ -4521,8 +4616,14 @@ | ||
| 254 | for it. */ | ||
| 255 | if (!htab->symbian_p && eh->plt_thumb_refcount > 0) | ||
| 256 | { | ||
| 257 | +#if NOTE_DEBUG | ||
| 258 | + _bfd_error_handler(_("NOTE: %x(%s): Thumb trampoline created at %x"), | ||
| 259 | + h, h->root.root.string, h->plt.offset); | ||
| 260 | +#endif | ||
| 261 | h->plt.offset += PLT_THUMB_STUB_SIZE; | ||
| 262 | s->size += PLT_THUMB_STUB_SIZE; | ||
| 263 | + BFD_ASSERT (eh->accomodate_trampoline == 0); | ||
| 264 | + eh->accomodate_trampoline = 1; | ||
| 265 | } | ||
| 266 | |||
| 267 | /* If this symbol is not defined in a regular file, and we are | ||
| 268 | @@ -5014,10 +5115,20 @@ | ||
| 269 | |||
| 270 | if (eh->plt_thumb_refcount > 0) | ||
| 271 | { | ||
| 272 | - bfd_put_16 (output_bfd, elf32_arm_plt_thumb_stub[0], | ||
| 273 | - splt->contents + h->plt.offset - 4); | ||
| 274 | - bfd_put_16 (output_bfd, elf32_arm_plt_thumb_stub[1], | ||
| 275 | - splt->contents + h->plt.offset - 2); | ||
| 276 | + if (eh->accomodate_trampoline == 1) | ||
| 277 | + { | ||
| 278 | + bfd_put_16 (output_bfd, elf32_arm_plt_thumb_stub[0], | ||
| 279 | + splt->contents + h->plt.offset - 4); | ||
| 280 | + bfd_put_16 (output_bfd, elf32_arm_plt_thumb_stub[1], | ||
| 281 | + splt->contents + h->plt.offset - 2); | ||
| 282 | + } | ||
| 283 | + else | ||
| 284 | + { | ||
| 285 | + (*_bfd_error_handler) ( | ||
| 286 | + _("%B: no space for THUMB trampoline at %x[%x]"), | ||
| 287 | + output_bfd, h->plt.offset, got_offset); | ||
| 288 | + return FALSE; | ||
| 289 | + } | ||
| 290 | } | ||
| 291 | |||
| 292 | bfd_put_32 (output_bfd, elf32_arm_plt_entry[0] | ((got_displacement & 0x0ff00000) >> 20), | ||
diff --git a/openembedded/packages/binutils/binutils-cross_2.16.bb b/openembedded/packages/binutils/binutils-cross_2.16.bb new file mode 100644 index 0000000000..df0f17b1ef --- /dev/null +++ b/openembedded/packages/binutils/binutils-cross_2.16.bb | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/binutils-${PV}" | ||
| 2 | include binutils_${PV}.bb | ||
| 3 | include binutils-cross.inc | ||
diff --git a/openembedded/packages/binutils/binutils_2.16.bb b/openembedded/packages/binutils/binutils_2.16.bb new file mode 100644 index 0000000000..5b936dcc66 --- /dev/null +++ b/openembedded/packages/binutils/binutils_2.16.bb | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | DESCRIPTION = "A GNU collection of binary utilities" | ||
| 2 | HOMEPAGE = "http://www.gnu.org/software/binutils/" | ||
| 3 | SECTION = "devel" | ||
| 4 | LICENSE = "GPL" | ||
| 5 | MAINTAINER = "Gerald Britton <gbritton@doomcom.org>" | ||
| 6 | PR = "r7" | ||
| 7 | |||
| 8 | SRC_URI = \ | ||
| 9 | "http://ftp.gnu.org/gnu/binutils/binutils-${PV}.tar.bz2 \ | ||
| 10 | file://ld_makefile.patch;patch=1 \ | ||
| 11 | file://better_file_error.patch;patch=1 \ | ||
| 12 | file://signed_char_fix.patch;patch=1 \ | ||
| 13 | file://binutils-2.16-objcopy-rename-errorcode.patch;patch=1 \ | ||
| 14 | file://binutils-100_cflags_for_build.patch;patch=1" | ||
| 15 | |||
| 16 | # uclibc patches | ||
| 17 | SRC_URI += "file://binutils-2.16-linux-uclibc.patch;patch=1" | ||
| 18 | |||
| 19 | # thumb support patches | ||
| 20 | SRC_URI += "file://binutils-2.16-thumb-trampoline.patch;patch=1" | ||
| 21 | SRC_URI += "file://binutils-2.16-thumb-glue.patch;patch=1" | ||
| 22 | |||
| 23 | S = "${WORKDIR}/binutils-${PV}" | ||
| 24 | B = "${S}/build.${HOST_SYS}.${TARGET_SYS}" | ||
| 25 | |||
| 26 | include binutils.inc | ||
