]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/ld: add tmpdir flag to preserve temp files
authorRuss Cox <rsc@golang.org>
Sun, 10 Mar 2013 16:50:44 +0000 (12:50 -0400)
committerRuss Cox <rsc@golang.org>
Sun, 10 Mar 2013 16:50:44 +0000 (12:50 -0400)
R=ken2
CC=golang-dev
https://golang.org/cl/7497044

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

index 58ac77052d9d1a0523cff2e4faefadaf4673a744..d25fefebbabe2e01d3d3ae3c92145178c0e7d1ea 100644 (file)
@@ -123,6 +123,7 @@ main(int argc, char *argv[])
        flagstr("r", "dir1:dir2:...: set ELF dynamic linker search path", &rpath);
        flagcount("race", "enable race detector", &flag_race);
        flagcount("s", "disable symbol table", &debug['s']);
+       flagstr("tmpdir", "leave temporary files in this directory", &tmpdir);
        flagcount("u", "reject unsafe packages", &debug['u']);
        flagcount("v", "print link trace", &debug['v']);
        flagcount("w", "disable DWARF generation", &debug['w']);
index cf54b2b4f591ff4af7a25c39988f9bdc81fff889..3a1f862eda9bc147cfe98e4e8967b3a069081e0e 100644 (file)
@@ -117,10 +117,11 @@ main(int argc, char *argv[])
        flagstr("r", "dir1:dir2:...: set ELF dynamic linker search path", &rpath);
        flagcount("race", "enable race detector", &flag_race);
        flagcount("s", "disable symbol table", &debug['s']);
+       flagcount("shared", "generate shared object", &flag_shared);
+       flagstr("tmpdir", "leave temporary files in this directory", &tmpdir);
        flagcount("u", "reject unsafe packages", &debug['u']);
        flagcount("v", "print link trace", &debug['v']);
        flagcount("w", "disable DWARF generation", &debug['w']);
-       flagcount("shared", "generate shared object", &flag_shared);
        
        flagparse(&argc, &argv, usage);
        
index c0c479559952165c86ceb84916a5b3e7d40e76e8..f926652a6e034202a02cfb57ccdf7d4c03041d3a 100644 (file)
@@ -123,6 +123,7 @@ main(int argc, char *argv[])
        flagcount("race", "enable race detector", &flag_race);
        flagcount("s", "disable symbol table", &debug['s']);
        flagcount("n", "dump symbol table", &debug['n']);
+       flagstr("tmpdir", "leave temporary files in this directory", &tmpdir);
        flagcount("u", "reject unsafe packages", &debug['u']);
        flagcount("v", "print link trace", &debug['v']);
        flagcount("w", "disable DWARF generation", &debug['w']);
index 2ca1d3e0da5b97fb7b97349e21bd24a384292a7f..5a5cbd0a1509d56afd5327a3f28f8f319237e936 100644 (file)
@@ -557,8 +557,6 @@ hostobjs(void)
        }
 }
 
-static char *tmpdir;
-
 static void
 rmtemp(void)
 {
@@ -574,10 +572,11 @@ hostlinksetup(void)
                return;
 
        // create temporary directory and arrange cleanup
-       // TODO: Add flag to specify tempdir, which is then not cleaned up.
-       tmpdir = mktempdir();
-       atexit(rmtemp);
-       
+       if(tmpdir == nil) {
+               tmpdir = mktempdir();
+               atexit(rmtemp);
+       }
+
        // change our output to temporary object file
        close(cout);
        p = smprint("%s/go.o", tmpdir);
index 4cb52c6ba465b6b8c2aea93bad1904259ff99739..6b4f4d704472dc0eeff8b49021c266000556b42c 100644 (file)
@@ -148,6 +148,7 @@ EXTERN      int     flag_race;
 EXTERN int flag_shared;
 EXTERN char*   tracksym;
 EXTERN char*   interpreter;
+EXTERN char*   tmpdir;
 
 enum
 {
@@ -166,8 +167,7 @@ enum
 
 EXTERN Segment segtext;
 EXTERN Segment segdata;
-EXTERN Segment segsym;
-EXTERN Segment segdwarf;
+EXTERN Segment segdwarf;
 
 void   addlib(char *src, char *obj);
 void   addlibpath(char *srcref, char *objref, char *file, char *pkg);