diff options
author | Rob Pike <r@golang.org> | 2009-10-05 21:31:50 -0700 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2009-10-05 21:31:50 -0700 |
commit | 1b34b8b8054d6715afe6af82e185c80de7c671bf (patch) | |
tree | 53060abc21ab061cb091e56f3505675c2bbab0a3 /src/cmd/8l/obj.c | |
parent | 0e077e1ffb2671529af9b027f9ae46c9c5bda9b1 (diff) | |
download | golang-1b34b8b8054d6715afe6af82e185c80de7c671bf.tar.gz |
allow multiple -L options
R=rsc
DELTA=31 (15 added, 3 deleted, 13 changed)
OCL=35364
CL=35364
Diffstat (limited to 'src/cmd/8l/obj.c')
-rw-r--r-- | src/cmd/8l/obj.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/cmd/8l/obj.c b/src/cmd/8l/obj.c index aa197be53..565fe765c 100644 --- a/src/cmd/8l/obj.c +++ b/src/cmd/8l/obj.c @@ -42,6 +42,8 @@ char *noname = "<none>"; char symname[] = SYMDEF; char thechar = '8'; char *thestring = "386"; +char* libdir[16]; // contains "." first, goroot last +int nlibdir = 0; /* * -H0 -T0x40004C -D0x10000000 is garbage unix @@ -113,7 +115,11 @@ main(int argc, char *argv[]) HEADTYPE = atolwhex(EARGF(usage())); break; case 'L': - LIBDIR = EARGF(usage()); + if(nlibdir >= nelem(libdir)-1) { + print("too many -L's: %d\n", nlibdir); + usage(); + } + libdir[nlibdir++] = EARGF(usage()); break; case 'T': INITTEXT = atolwhex(EARGF(usage())); @@ -693,11 +699,11 @@ addlib(char *src, char *obj) if(search) { // try dot, -L "libdir", and then goroot. - snprint(pname, sizeof pname, "./%s", name); - if(access(pname, AEXIST) < 0 && LIBDIR != nil) - snprint(pname, sizeof pname, "%s/%s", LIBDIR, name); - if(access(pname, AEXIST) < 0) - snprint(pname, sizeof pname, "%s/pkg/%s_%s/%s", goroot, goos, goarch, name); + for(i=0; i<nlibdir; i++) { + snprint(pname, sizeof pname, "%s/%s", libdir[i], name); + if(access(pname, AEXIST) >= 0) + break; + } strcpy(name, pname); } cleanname(name); |