This is the third public release of binutils 2.6.0.9 for Linux, which is based on the binutils snapshot, gas-960228. It is a Linux only release and the binary release is only intended for an ELF based system. You also need libc 5.2.18 and gcc 2.7.2 or above. The second public release of binutils 2.6.0.9 has an incomplete binary tar file. The cross assemblers for m68k/linux and m68k/linuxaout are missing. But if you don't use them, you don't have to get the new binary tar file, binutils-2.6.0.9.good.bin.tar.gz. The first public release of binutils 2.6.0.9 has a wrong source code tar file. But the binary tar file is ok. A patch for 2.6.0.9 is provided as binutils-2.6.0.9-2.6.0.9.good.diff.gz. I think I have a good excuse. My computer made me do it :-(. This linker won't search libxxxx.so.x.y.z for -lxxxx. Please make a symbolic link from libxxxx.so to libxxxx.so.x.y.z. Otherwise, you cannot link your binaries with libxxxx.so.x.y.z or your linker will die if there is no libxxxx.a. Due to the bug in modules 1.2.8/1.3.57, modules created by ld in this binutils may not work. Please get the current modules from: http://www.pi.se/blox/modules/ which should work with this version of binutils. The major changes from 2.6.0.2 are: 1. One serious bss bug is fixed in this release. 2. The linker will try to check conflicts in shared libraries caused by DT_NEEDED. Please check it out. 3. The linker no longer checks /etc/ld.so.cache for shared libraries included by DT_NEEDED. Please use -Wl,-rpath-link for any directories other than /lib, /usr/lib and /usr/local/lib where a shared library may be found. XFree86 needs to be fixed for it. For XFree86 3.1.2D or above, please add #define BinUtilsVersion 2608 to your /usr/X11R6/lib/X11/config/site.def or xc/cofig/cf/site.def. 4. If the static a.out library, libfoo.a, is compiled with the same header files, you can convert libfoo.a into the one compatible with ELF. You just need to use the shell script enclosed here to make libfoo.a compatible with ELF by removing the leading underscore in the global symbol names. After converting libfoo.a, you should install it in a directory which will be searched by the ELF linker. You can finnaly link static a.out libraries with ELF after the conversion. 5. A weak alias bug is fixed for libc 5.3.5. 6. The shared library support from Alan Modra lan@spri.levels.unisa.edu.au is finally in. If # configure --enable-shared is used, libbfd and libopcodes will be built as shared libraries. 7. The -Bsymbolic option is finally working right. Thanks, Ian. 8. I also include the cross assembler and cross linker binaries for SunOS and Solaris under Sparc as well as for m68k/ELF and m68k/linuxaout. But you have to configure your cross compiler with # configure --prefix=/usr --local-prefix=/usr/local \ --gxx-include-dir=/usr/include/g++ \ --with-gnu-ld --with-gnu-as \ --host=i486-linux --target=sparc-sun-sunos4.1 for Sparc/SunOS, or # configure --prefix=/usr --local-prefix=/usr/local \ --gxx-include-dir=/usr/include/g++ \ --with-gnu-ld --with-gnu-as \ --host=i486-linux --target=sparc-sun-solaris2 for Sparc/Solaris, or # configure --prefix=/usr --local-prefix=/usr/local \ --gxx-include-dir=/usr/include/g++ \ --with-gnu-ld --with-gnu-as \ --host=i486-linux --target=m68k-linux for m68k/ELF, or # configure --prefix=/usr --local-prefix=/usr/local \ --gxx-include-dir=/usr/include/g++ \ --with-gnu-ld --with-gnu-as \ --host=i486-linux --target=m68k-linuxaout for m68k/a.out to use the cross assembler and linker binaries without any changes. 9. The .plt section bug fix from pirker@eiunix.tuwien.ac.at. 10. Adding the support for linking ELF .o files against the static a.out libraries. If a static a.out library, libfoo.a, was compiled with the same header files, you can convert libfoo.a into the one compatible with ELF. You just need to use the shell script enclosed here to make libfoo.a compatible with ELF by removing the leading underscore in the global symbol names. After converting libfoo.a, you should install it in a directory which will be searched by the ELF linker. 11. Fix the writable text section bug for executables when shared libraries are used. This release contains "encaps" and a modified "objdump" by Ross. They are used to compile the Linux kernel in ELF. The primary ftp sites for the compiler, assembler, linker and C/C++ libraries are tsx-11.mit.edu under pub/linux/packages/GCC and sunsite.unc.edu under pub/Linux/GCC. To install this 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.6.0.9.good.bin.tar.gz | tar tvvf - to see what is in there. The binary file is binutils-2.6.0.9.bin.tar.gz. The source code is binutils-2.6.0.9.good.tar.gz. A diff against 2.6/2.6.0.2 is too big to be included. Please do back up before you remove things. To install, PLEASE DO 1. su root 2. cd / 3. gzip -dc binutils-2.6.0.9.bin.tar.gz | tar xvvf - Now you have the new gas/binutils under /usr/bin and /usr/i486-linuxaout/bin. You have to do /usr/i486-linuxaout/bin/as and /usr/i486-linuxaout/bin/ld -m i386linux if you want to use a.out as and ld directly. If you don't need the cross assemblers/linkers for m68k-linux, m68k-linuxaout, sparc-sun-solaris2 or sparc-sun-sunos4.1, please do 1. su root 2. cd /usr 3. rm -rf m68k-linux m68k-linuxaout sparc-sun-solaris2 sparc-sun-sunos4.1 Thanks. H.J. Lu hjl@gnu.ai.mit.edu 03/06/96 ----- #! /bin/sh # # This is the shell script used to convert a static a.out library # into the one compatible with ELF by removing the leading underscore # in the global symbol names. # # Usage: convert libfoo.a [libbar.a ...] # # H.J. Lu # hjl@gnu.ai.mit.edu cwd=`pwd` prog=$0 usage () { echo Usage: $prog libfoo.a [libbar.a ...] } remove_underscore () { lib=$1 case $lib in lib*.a|*/lib*.a) if [ ! -f $lib ]; then echo $lib does not exist. usage exit -1 fi ;; *) echo $lib is not a static library. usage exit -1 ;; esac case $lib in /*) wd= ;; *) wd=$cwd ;; esac tmpdir=$$$$ cd /tmp rm -rf $tmpdir mkdir $tmpdir cd $tmpdir ar -x $wd/$lib for f in *.o do objcopy --remove-leading-char $f done ar -ucr ../`basename $lib` *.o cd .. rm -rf $tmpdir mv /tmp/$lib $cwd } for l in $* do cd $cwd remove_underscore $l done