[comp.unix.questions] Problems with ld

root@vanvleck.MATH.WISC.EDU (Admin) (09/11/87)

We (the programmers for the University of Wisconsin/Madison Math department) are
trying to bring up Cayley on our AT&T 3B15.  Cayley is a program that helps
solve problems in group theory; it consists of about 2000 object files,
all but a few in FORTRAN 77, the rest in C.  We can compile each of the pieces
but haven't been able to get ld to link them.  

ld can't handle an argument list that contains 2000 file names, so we've
collected the object files into 16 or 17 libraries.  Unfortunately, ld tells
us that it can't read the .data section of one of our libraries, despite the
fact that, as far as we can tell, it's OK.  

It seems to us that might be overflowing tables in ld; is this plausible?
If so, what can we do?  Someone who has brought Cayley up on other systems
told us he got ld to work by modifing it to read its argument list from a file.
Could we get a copy of such an ld?  Are there any other pieces of information
that might help to get ld to handle this big a job?

University of Wisconsin - Math Dept

root@vanvleck.MATH.WISC.EDU (David Roy Askey ) (09/11/87)

We (the programmers for the University of Wisconsin/Madison Math department) are
trying to bring up Cayley on our AT&T 3B15.  Cayley is a program that helps
solve problems in group theory; it consists of about 2000 object files,
all but a few in FORTRAN 77, the rest in C.  We can compile each of the pieces
but haven't been able to get ld to link them.  

ld can't handle an argument list that contains 2000 file names, so we've
collected the object files into 16 or 17 libraries.  Unfortunately, ld tells
us that it can't read the .data section of one of our libraries, despite the
fact that, as far as we can tell, it's OK.  

It seems to us that might be overflowing tables in ld; is this plausible?
If so, what can we do?  Someone who has brought Cayley up on other systems
told us he got ld to work by modifing it to read its argument list from a file.
Could we get a copy of such an ld?  Are there any other pieces of information
that might help to get ld to handle this big a job?

wjc@ho7cad.UUCP (09/12/87)

In article <1@vanvleck.MATH.WISC.EDU> root@vanvleck.MATH.WISC.EDU (Admin) writes:
>
>   ld can't handle an argument list that contains 2000 file names, so we've
>   ...
>
>   It seems to us that might be overflowing tables in ld; is this plausible?
>   If so, what can we do?  Someone who has brought Cayley up on other systems
>   told us he got ld to work by modifing it to read its argument list from a file.
>   Could we get a copy of such an ld?  Are there any other pieces of information
>   that might help to get ld to handle this big a job?
>
>   University of Wisconsin - Math Dept
>

I haven't monkeyed with this  too much (and not  at all on a 3b15 that
you said you're on), but the version of "ld" that reads arguments from
a file is probably called  "ld" on your system  (small joke).  Really,
though,  the standard SVR2 "ld" can  use something  called an "ifile".
The  "ifiles"  (anything not  an archive or   an object)  contain "ld"
directives.  Among other things, generally anything that you could put
on the "ld" command line qualifies as a directive.  E.g.,

	ld -x -y a.o b.o c.a

is the same as

	ld eye.file

where "eye.file" contains:

	-x
	-y
	a.o
	b.o
	c.a

I don't know if  this is going to solve  your problem with overflowing
tables, though.  (That  doesn't mean  "I  doubt it";  it just means  I
dunno.)  Another possibility (somewhat  more effort) is to do  several
loads hierarchically.   The  early ld's generate  relocatable  outputs
which  are part of the  next load.  The hope  is  that you resolve and
submerge some of the symbols along the way.

	Bill Carpenter
	(AT&T gateways)!ho5cad!wjc
	HO 1L-410, (201)949-8392

ray@dsiramd.nz (Ray Brownrigg) (09/14/87)

In article <1@vanvleck.MATH.WISC.EDU> root@vanvleck.MATH.WISC.EDU (Admin) writes:
>
>collected the object files into 16 or 17 libraries.  Unfortunately, ld tells
>us that it can't read the .data section of one of our libraries, despite the
>fact that, as far as we can tell, it's OK.  
>
>It seems to us that might be overflowing tables in ld; is this plausible?

It might be that the problem is a ulimit problem. When loading S on a
3B2 system, a similar problem occurs if the users ulimit has not been
expanded beyond the default 1 megabyte. The unstripped S executive is 
about 2Mb.
-- 
Ray Brownrigg		UUCP: {utai!calgary,uunet}!vuwcomp!dsiramd!ray
Applied Maths Div, DSIR		ACSnet:	ray@dsiramd.nz[@munnari]
PO Box 1335			System:	OLIVETTI/AT&T 3B2/400B+, System V R3.0
Wellington, New Zealand			"UNX -rules -OK"

dca@toylnd.UUCP (09/14/87)

> We (the programmers for the University of Wisconsin/Madison Math department) are
> trying to bring up Cayley on our AT&T 3B15.  Cayley is a program that helps
> solve problems in group theory; it consists of about 2000 object files,
> all but a few in FORTRAN 77, the rest in C.  We can compile each of the pieces
> but haven't been able to get ld to link them.  
> 
> ld can't handle an argument list that contains 2000 file names, so we've
> collected the object files into 16 or 17 libraries.  Unfortunately, ld tells
> us that it can't read the .data section of one of our libraries, despite the
> fact that, as far as we can tell, it's OK.  
> 
I'm a little confused why you took this approach to a solution.  If the
loader you have supports pre-linking it is usually vastly preferable to
using libraries to link together large subsystems.  In libraries, you still
have to do all the work as if you were relinking the entire module even when
you change a single bit of code.  If you use prelinks you only have to re-link
the required pre-link and then relink the prelinks together which is usually
less time consuming.  Mind you I don't have a 3b15 (I have a 3b1) and I
haven't tried prelinks using 'ld' but from my manual that if you just divide
your object modules (hopefully in some semi-logical fashion) and link
them into a prelink by using the -r option you should then be able to
link the prelinks together to make a complete system.  It's possible
linking the resulting prelinks could also be less stressful on 'ld' in
terms of memory since it is not having to worry about references internal
to the prelinks, only externals.

Just a thought.

David Albrecht