Subject: Re: ar
To: None <>
From: ITOH Yasufumi <>
List: tech-toolchain
Date: 12/14/1999 12:39:58
In article <> writes:

> On Mon, 13 Dec 1999, ITOH Yasufumi wrote:
> :  1. ar produces Berkeley file format
> :  2. ar produces SysV ("/" at the end of file names) file format
> System V filenames have many other differences.  However, the binutils based
> ar(1) is supposed to produce System V compliant archives on ELF systems.  
> It does, on alpha, so this is likely an arch-specific bug (i386, sparc?).
> (In fact, binutils ar(1) originally could not produce 4.4BSD archives, only
> "truncated" V7 archives.  I wrote the code for 4.4BSD writing support.)

Oh, I misunderstood.

	% ar cq foo.a aout.o

produces Berkeley format archive and "__.SYMDEF" table;

	% ar cq bar.a elf.o

produces SysV format archive and "/" table.  Right?

	i386% /usr/bin/ar cq foo6.a m68kaout.o
	i386% /usr/bin/ar cq bar6.a m68kelf.o

and (here, no symbol table in foo6.a or bar6.a)

	i386% ranlib-aout.m68k foo6.a
	i386% ranlib-elf.m68k bar6.a

then both of "foo6.a" and "bar6.a" is in Berkeley format and have
"__.SYMDEF" symbol tables (my confusion is from here).  Then again

	i386% ranlib-elf.m68k bar6.a

creates SysV format and "/" table.
What about this?

By the way,
	% rm foo.a
	% ar cq foo.a elf.o aout.o
creates weird archive, the member elf.o is in SysV format and aout.o
is in that of Berkeley's.  Then,
	% ranlib foo.a
makes the aout.o member to SysV format.  Then,
	% ar d foo.a elf.o
makes a SysV random archive which contains a.out member(s) only.

	% rm foo.a
	% ar cq foo.a elf.o aout.o
	% ar d foo.a elf.o
creates a Berkeley format archive with "/" table. :-)

I'm rather doubtful about the quality of binutils. :-)
ITOH, Yasufumi <>