220 lines
5.7 KiB
Groff
220 lines
5.7 KiB
Groff
How to remove cross targets.
|
|
This is the 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.
|
|
|
|
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 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 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.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.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.
|
|
|
|
Thanks.
|
|
|
|
|
|
H.J. Lu
|
|
hjl@gnu.ai.mit.edu
|
|
03/02/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
|