WARNING: This release does not support Linux/PPC. Please don't use it on Linux/PPC. This should be final release for binutils 2.9.1.0.x based on binutils 2.9.1. I am planning to release to public this weekend. Please test it as much as you can. Thanks. This is the beta release of binutils 2.9.1.0.22b for Linux, which is based on binutils 2.9.1 plus Linux/ARM support, some x86 assembler changes, some PPC bug fixes, some alpha bug fixes and an exception frame optimization bug fix. Due to the exception frame optimization bug fix, it is highly recommended that you recompile all your C++ codes. Otherwise, exception handling may not work right when an exception is thrown. Since I no longer have machine running libc 5, starting from this release, there will be no pre-compiled binaries for libc 5. There was some problem on Linux/alpha. The binaries generated by the new binituls may not run correctly on Linux/alpha. It turned out it was a bug in the alpha dynamic linker in glibc 2.0.6. The current glibc 2.1 and glibc 2.0.7 should be ok. This release should work on linux/x86/alpha. There are some ELF bug fixes. But I don't know if it fixes all the bugs reported on linux/sparc, Linux/MIPS and linux/PPC. I'd like to hear reports on them. I'd like to release it to public soon. Please test it as much as you can. Please report any bugs related to binutils 2.9.1.0.22b to hjl@lucon.org. Changes from binutils 2.9.1.0.21: 1. Add Pentium III support. 2. Add IBM 370 suppport. 3. Fix the weak undefined symbol handling. Changes from binutils 2.9.1.0.20: 1. Ada demangle support. 2. Don't merge weak undefined symols with definitions from a shared object when building shared object. Only for ELF. 3. Fix a 16bit x86 gas bug. Changes from binutils 2.9.1.0.19a: 1. Enable ld for Solaris/x86. 2. Fix an ELF/i386 bfd/linker bug. 3. Fix a BFD bug. 4. Fix the ELF aligment. 5. Fix an AMD 3DNow! bug. 6. Fix ELF/x86 8/16-bit relocation bug. 7. Add --redefine-sym=old_form=new_form to objcopy. 8. Update cplus-dem.c from the egcs snapshot. 9. Support new Pentium II instructions. 10. Add --demangle/--no-demangle to ld. Changes from binutils 2.9.1.0.21: 1. A PPC DWARF2 EH patch for gas. Changes from binutils 2.9.1.0.19: 1. Allow '.' in the middle of a symbol name for the versioning script. Changes from binutils 2.9.1.0.17: 1. An ELF bug fix. Changes from binutils 2.9.1.0.16: 1. Some Linux/Sparc64 patches. 2. A shared library linking patch. 3. Update cplus-dem.c from egcs 1.1.1 release. Changes from binutils 2.9.1.0.15: 1. Update cplus-dem.c from egcs 1.1.1 prerelease. 2. Fix ARM bugs. 3. Fix MIPS/ELF bugs. 4. Fix an objdump bug. Changes from binutils 2.9.1.0.14: 1. Update the program header handling bug fix from the binutils snapshot. 2. Added AMD 3DNow! support to disassembler. Changes from binutils 2.9.1.0.13: 1. An ELF bug fix for program header handling. 2. Added AMD 3DNow! support. 3. Add some vxworks suppport. 4. Fix ld on none-linux platforms. Changes from binutils 2.9.1.0.12: 1. An ELF/alpha bug fix for creating large shared libraries. 2. An ELF/PPC bug fix. Changes from binutils 2.9.1.0.11: 1. Use the real fix from Ian for the exception frame optimization bug. Changes from binutils 2.9.1.0.10: 1. Fix an exception frame optimization bug. Changes from binutils 2.9.1.0.9: 1. Fix another -Bsymbolic bug for Linux/alpha. Changes from binutils 2.9.1.0.7: 1. Fix -Bsymbolic for Linux/alpha. 2. Fix a 16bit x86 gas bug. Changes from binutils 2.9.1.0.6: 1. Fix various ARM bugs. Changes from binutils 2.9.1.0.5: 1. A MIPS assembler ".align" bug is fixed. 2. bfd.h, bfd.h and bfdlink.h are included in the binary package. Changes from binutils 2.9.1.0.4: 1. 2 x86 16bit mode assembler bugs, "ret" and "movb $35,0x4(%di)", are fixed. IMPORTANT: The .plt format that the Alpha was using was not thread safe. So I changed it. The new format is *not* binary compatible with the old, thus you must use glibc 2.0.4 to get an ld.so that can understand it. Note that the new ld.so knows how to deal with the old .plt format, so old libraries will still work, but they should be relinked eventually for performance reasons. The file list: 1. binutils-2.9.1.0.22b.tar.gz. Source code. 2. binutils-2.9.1.0.21-2.9.1.0.22b.diff.gz. Patch against the previous beta source code. 3. binutils-2.9.1.0.22b-glibc.x86.tar.gz. Precompiled Linux/x86 binaries for libc 6 (glibc 2.0.7 1998-12-11 or above). 4. binutils-2.9.1.0.22b-alpha.tar.gz. Precompiled Linux/alpha binaries for glibc 2.0.7 1998-12-11 or above. 5. binutils.spec. A RPM spec file for RedHat 5.2. The primary ftp sites for the Linux binutils are: 1. ftp://ftp.varesearch.com/pub/support/hjl/binutils 2. ftp://ftp.kernel.org/pub/linux/devel/gcc 3. ftp://tsx-11.mit.edu/pub/linux/packages/GCC 4. ftp://sunsite.unc.edu/pub/Linux/GCC The beta directory is in private/tofu under the GCC directory. To install the binary package, please follow the procedure very closely. Please backup/save all the files you are instructed to delete and you should do gzip -dc binutils-2.9.1.0.22b-glibc.x86.tar.gz | tar tvvf - or gzip -dc binutils-2.9.1.0.22b-alpha.tar.gz | tar tvvf - to see what is in there. Please do back up before you remove things. To install for libc 6 (glibc 2.0.5c or above), PLEASE DO 1. su root 2. cd / 3. rm -f /usr/bin/encaps /usr/bin/nm 4. gzip -dc binutils-2.9.1.0.22b-glibc.x86.tar.gz | tar xvvf - 5. ldconfig Now you have the new gas/binutils under /usr/bin and /usr/ix86-linuxaout/bin. You have to use /usr/ix86-linuxaout/bin/as and /usr/ix86-linuxaout/bin/ld -m i386linux if you want to use a.out as and ld directly. To install for alpha, PLEASE DO 1. su root 2. cd / 3. gzip -dc binutils-2.9.1.0.22b-alpha.tar.gz | tar xvvf - 4. ldconfig I have changed the target names for Linux/x86 and Linux/x86 (a.out) to ix86-linux and ix86-linuxaout respectively. The precompiled binaries are installed under /usr/ix86-linux and /usr/ix86-linuxaout. You should make appropriate symbolic links if you have a different name for the Linux/x86 target, like i586-unknown-linux. The target name for Linux/alpha is alpha-linux. The precompiled alpha binaries are installed under /usr/alpha-linux. You should make appropriate symbolic links if you have a different name for the Linux/alpha target, like alpha-redhat-linux. If you have an old linux library in the a.out format and you cannot obtain the newer version in the ELF format for whatever reason, you can try "objcopy --remove-leading-char" on the a.out library and see if it can link with your code in ELF. Thanks. H.J. Lu hjl@lucon.org 02/26/99