]> Cypherpunks repositories - gostls13.git/commitdiff
search for runtime.a in the package path instead of hardcoding
authorKai Backman <kaib@golang.org>
Thu, 4 Feb 2010 06:31:38 +0000 (22:31 -0800)
committerKai Backman <kaib@golang.org>
Thu, 4 Feb 2010 06:31:38 +0000 (22:31 -0800)
the location. remove last remnants of broken -l flag.

R=rsc
CC=golang-dev
https://golang.org/cl/201042

src/cmd/5l/obj.c
src/cmd/6l/obj.c
src/cmd/8l/obj.c
src/cmd/ld/lib.c

index caa13ae71345bd3e2df28e68429331257fa6e2ee..5dbd7655c5c60aa23b4578b76fe49502eea6846c 100644 (file)
@@ -104,7 +104,9 @@ main(int argc, char *argv[])
        ARGBEGIN {
        default:
                c = ARGC();
-               if(c >= 0 && c < sizeof(debug))
+               if(c == 'l')
+                       usage();
+               if(c >= 0 && c < sizeof(debug))
                        debug[c]++;
                break;
        case 'o':
@@ -136,7 +138,6 @@ main(int argc, char *argv[])
                break;
        case 'u':       /* produce dynamically loadable module */
                dlm = 1;
-               debug['l']++;
                if(argv[1] != nil && argv[1][0] != '-' && !isobjfile(argv[1]))
                        readundefs(ARGF(), SIMPORT);
                break;
@@ -259,9 +260,7 @@ main(int argc, char *argv[])
        lastp = firstp;
 
        addlibpath("command line", "command line", argv[0], "main");
-
-       if(!debug['l'])
-               loadlib();
+       loadlib();
 
        // mark some functions that are only referenced after linker code editing
        // TODO(kaib): this doesn't work, the prog can't be found in runtime
index edae1c618cd65af60413300e3babec38e732220d..537ef9e9aa7c5ef41a4c84f0ab1fa7fdd6c90413 100644 (file)
@@ -100,7 +100,9 @@ main(int argc, char *argv[])
        ARGBEGIN {
        default:
                c = ARGC();
-               if(c >= 0 && c < sizeof(debug))
+               if(c == 'l')
+                       usage();
+               if(c >= 0 && c < sizeof(debug))
                        debug[c]++;
                break;
        case 'o': /* output to (next arg) */
@@ -131,7 +133,6 @@ main(int argc, char *argv[])
                break;
        case 'u':       /* produce dynamically loadable module */
                dlm = 1;
-               debug['l']++;
                if(argv[1] != nil && argv[1][0] != '-' && !isobjfile(argv[1]))
                        readundefs(ARGF(), SIMPORT);
                break;
@@ -347,9 +348,7 @@ main(int argc, char *argv[])
        lastp = firstp;
 
        addlibpath("command line", "command line", argv[0], "main");
-
-       if(!debug['l'])
-               loadlib();
+       loadlib();
 
        deadcode();
 
index 7b8e7f2eca15aa7917d2971234caaf73161c1034..6ab48622cd5f8bdd09011986f30d90b6fc5d79e1 100644 (file)
@@ -105,7 +105,9 @@ main(int argc, char *argv[])
        ARGBEGIN {
        default:
                c = ARGC();
-               if(c >= 0 && c < sizeof(debug))
+               if(c == 'l')
+                       usage();
+               if(c >= 0 && c < sizeof(debug))
                        debug[c]++;
                break;
        case 'o': /* output to (next arg) */
@@ -137,7 +139,6 @@ main(int argc, char *argv[])
                break;
        case 'u':       /* produce dynamically loadable module */
                dlm = 1;
-               debug['l']++;
                if(argv[1] != nil && argv[1][0] != '-' && !isobjfile(argv[1]))
                        readundefs(ARGF(), SIMPORT);
                break;
@@ -385,9 +386,7 @@ main(int argc, char *argv[])
        lastp = firstp;
 
        addlibpath("command line", "command line", argv[0], "main");
-
-       if(!debug['l'])
-               loadlib();
+       loadlib();
 
        deadcode();
 
index df0b1a7487efd272c655de3a22a755eba09838a4..a11ab90381781b1f95eb64b813167ed00c3ea299 100644 (file)
@@ -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;