This is the beta release of binutils 2.6.0.12 for Linux, which is based on the binutils snapshot, gas-960228. It is a Linux only release. This release is only intended for an ELF based system. You also need libc 5.2.18 and gcc 2.7.2 or above. Please test this as much as you can. I want to release it to public next week, if everything goes well. The change from 2.6.0.11 is: 1. The FreeBSD/ELF support is added. There are no visible changes for Linux. 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 alan@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, m68k/ELF and m68k/linuxaout as well as alpha running Linux. 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, or # configure --prefix=/usr --local-prefix=/usr/local \ --gxx-include-dir=/usr/include/g++ \ --with-gnu-ld --with-gnu-as \ --host=i486-linux --target=alpha-linux for alpha/Linux 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/C library are tsx-11.mit.edu under pub/linux/packages/GCC and sunsite.unc.edu under pub/Linux/GCC. The beta directory is in private/tofu under the GCC directory. 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.12.bin.tar.gz | tar tvvf - to see what is in there. The binary file is binutils-2.6.0.12.bin.tar.gz. The source code is binutils-2.6.0.12.tar.gz. A diff against 2.6 is too big to be included. binutils-2.6.0.11-2.6.0.12.diff.gz is provided for binutils 2.6.0.11. Please do back up before you remove things. To install, PLEASE DO 1. su root 2. cd / 3. gzip -dc binutils-2.6.0.12.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, sparc-sun-sunos4.1 nor alpha-linux, please do 1. su root 2. cd /usr 3. rm -rf m68k-linux m68k-linuxaout sparc-sun-solaris2 sparc-sun-sunos4.1 alpha-linux Thanks. H.J. Lu hjl@gnu.ai.mit.edu 04/05/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