diff options
| author | Kai Backman <kaib@golang.org> | 2010-02-03 22:31:38 -0800 |
|---|---|---|
| committer | Kai Backman <kaib@golang.org> | 2010-02-03 22:31:38 -0800 |
| commit | f3d2f3eb13763301d160f24a024ecd3250ceafd8 (patch) | |
| tree | 7df11cafd4d2bf11cabf9e9866d3abd0cd1de42f /src/cmd/ld/lib.c | |
| parent | 44ef2dd81d436072a9813451a58cf64e61bef2ad (diff) | |
| download | golang-f3d2f3eb13763301d160f24a024ecd3250ceafd8.tar.gz | |
search for runtime.a in the package path instead of hardcoding
the location. remove last remnants of broken -l flag.
R=rsc
CC=golang-dev
http://codereview.appspot.com/201042
Diffstat (limited to 'src/cmd/ld/lib.c')
| -rw-r--r-- | src/cmd/ld/lib.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/src/cmd/ld/lib.c b/src/cmd/ld/lib.c index df0b1a748..a11ab9038 100644 --- a/src/cmd/ld/lib.c +++ b/src/cmd/ld/lib.c @@ -35,8 +35,8 @@ int iconv(Fmt*); char symname[] = SYMDEF; -char* libdir[16] = { "." }; -int nlibdir = 1; +char* libdir[16]; +int nlibdir = 0; int cout = -1; char* goroot; @@ -180,6 +180,11 @@ addlibpath(char *srcref, char *objref, char *file, char *pkg) for(i=0; i<libraryp; i++) if(strcmp(file, library[i].file) == 0) return; + + if(debug['v']) + Bprint(&bso, "%5.2f addlibpath: srcref: %s objref: %s file: %s pkg: %s\n", + cputime(), srcref, objref, file, pkg); + if(libraryp == nlibrary){ nlibrary = 50 + 2*libraryp; library = realloc(library, sizeof library[0] * nlibrary); @@ -207,15 +212,24 @@ addlibpath(char *srcref, char *objref, char *file, char *pkg) void loadlib(void) { - int i; + char pname[1024]; + int i, found; int32 h; Sym *s; char *a; - i = strlen(goroot)+strlen(goarch)+strlen(goos)+20; - a = mal(i); - snprint(a, i, "%s/pkg/%s_%s/runtime.a", goroot, goos, goarch); - addlibpath("internal", "internal", a, "runtime"); + found = 0; + for(i=0; i<nlibdir; i++) { + snprint(pname, sizeof pname, "%s/runtime.a", libdir[i]); + if(debug['v']) + Bprint(&bso, "searching for runtime.a in %s\n", pname); + if(access(pname, AEXIST) >= 0) { + addlibpath("internal", "internal", pname, "runtime"); + found = 1; + break; + } + } + if(!found) Bprint(&bso, "warning: unable to find runtime.a\n"); loop: xrefresolv = 0; |
