[LWN Logo]

From: hjl@lucon.org (H.J. Lu)
Subject: binutils 2.9.1.0.4 is released.
Date: Thu,  7 May 1998 11:37:40 GMT

-----BEGIN PGP SIGNED MESSAGE-----


This is the public release of binutils 2.9.1.0.4 for Linux, which is
based on binutils 2.9.1 plus Linux/ARM support and some x86 assembler
changes.

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.

Please report any bugs related to binutils 2.9.1.0.4 to hjl@lucon.org.

Changes from binutils 2.8.1.0.23:

1. Update from binutils 2.9.1.
2. "push $4096" for x86 works now.
3. For x86, don't emit operand size prefix if there is no ambiguity.
4. Add "xlatb" for x86.
5. There are some major x86 assembler changes with operand size suffix.
   Some x86 assembler performence bugs are fixed. The Linux kernel and
   applications may run faster when assembled the new x86 assembler on
   x86. Please double check them on x86. gcc/egcs should be fine. But
   the Linux kernel does have some invalid x86 assembly code. In
   arch/i386/lib/locks.S, there was

	btl     %dl, SYMBOL_NAME(smp_invalidate_needed)

   It is not valid. The register should be either 16-bit or 32-bit.
   8-bit is not allowed. Previously, gas would silently turn

	call sys_call_table(,%eax,4)
   into
	call *sys_call_table(,%eax,4)

   Now, it is flagged as an error. There are asm codes like that in the
   Linux kernel. They should be fixed. If you have any x86 assembler
   problem, please let me know.
6. Fix the address for x86's lgdt/lidt.
7. An x86 assembler/disassembler bug related to popa/pusha is fixed.
8. Martynas Kunigelis <kunimart@pit.ktu.lt>'s 16-bit gas code was
   added.
9. Fix a Sparc/ELF bfd bug.
10. Some ARM/ELF gas changes.
11. An ELF linker bug which loads the incompatible needed shared library
   is 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.4.tar.gz. Source code.
2. binutils-2.9.1-2.9.1.0.4.diff.gz. Patch against binutils 2.9.1.
3. binutils-2.9.1.0.4-libc5.x86.tar.gz. Precompiled Linux/x86 binaries
   source code.
4. binutils-2.9.1.0.4-libc5.x86.tar.gz. Precompiled Linux/x86 binaries
   for libc 5.
5. binutils-2.9.1.0.4-glibc.x86.tar.gz. Precompiled Linux/x86 binaries
   for libc 6 (glibc 2.0.6 or above).

The primary ftp sites for the compiler/C library:

1. ftp://tsx-11.mit.edu/pub/linux/packages/GCC
2. ftp://sunsite.unc.edu/pub/Linux/GCC

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.4-libc5.x86.tar.gz | tar tvvf -
or
	gzip -dc binutils-2.9.1.0.4-glibc.x86.tar.gz | tar tvvf -
or
	gzip -dc binutils-2.9.1.0.4-alpha.tar.gz | tar tvvf -
 
to see what is in there.
 
Please do back up before you remove things.

To install for libc 5, PLEASE DO
 
1. su root
2. cd /
3. rm -f /usr/bin/encaps /usr/bin/nm
4. gzip -dc binutils-2.9.1.0.4-libc5.x86.tar.gz | tar xvvf -
5. ldconfig
 
To install for libc 6 (glibc 2.0.6 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.4-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.
 
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.

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. For Sybase client libraries,
I did

# cd sybase/lib
# for f in *.a
do
  objcopy --remove-leading-char $f
done

It seems to compile/link fine with libc 5.4.2x. But I don't know
if it really works or not. The resulting binaries should work
if the libc ABI used by the old library is unchanged in the new
libc.

According to Bruce Milner <Bruce.Milner@genetics.utah.edu>:

Just a quick note about your example using objcopy for
sybase. The sybase a.out libraries "are" dependent on a changed
feature of the libc ABI.
 
The ctype macros changed to a byte order independent format
(little endian). In order to use the sybase libraries, one needs to
rename the the ctype table variables in the sybase library files
and link in an old version of the libc's "C-ctype.o ctype-info.o"
files.

thain@sunquest.sunquest.com put a ELF'ized version of these
libraries on 

ftp://mudshark.sunquest.com/pub/ctlib-linux-elf


Thanks.


H.J. Lu
hjl@lucon.org
05/05/98



- -- 
This article has been digitally signed by the moderator, using PGP.
http://www.iki.fi/mjr/cola-public-key.asc has PGP key for validating signature.
Send submissions for comp.os.linux.announce to: linux-announce@news.ornl.gov
PLEASE remember a short description of the software and the LOCATION.
This group is archived at http://www.iki.fi/mjr/linux/cola.html

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: latin1

iQCVAgUBNVGdBFrUI/eHXJZ5AQEt0gP/c7WLNHFOT1424I23E3MlmjNQJD/E2Q25
F8aTxIWka2V2wsXrF2iTC4UFA9Vi4uHQdEZmu+Vsp/xR1jPig7hZw+n/mr7t3IjX
PkLuIrTdGLBFNVFc72lVDRDw3WNRximBjzHyLT+TjPU42weB2N6jiAoKpUxAn6K/
ALNPljelCLk=
=99dk
-----END PGP SIGNATURE-----