]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/ld: refine test for history stack pop (fix Windows build)
authorRuss Cox <rsc@golang.org>
Thu, 18 Jul 2013 15:40:59 +0000 (11:40 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 18 Jul 2013 15:40:59 +0000 (11:40 -0400)
This should fix the Windows build, or at least
what's breaking it at the moment.

Fixes #5904.

TBR=golang-dev
CC=golang-dev
https://golang.org/cl/11519044

src/cmd/ld/lib.c

index d7f469810133a5cb2067325538399b08ddf30d13..1594526a86e3b85eea467b764e63442a96da08d0 100644 (file)
@@ -2112,10 +2112,20 @@ savehist(int32 line, int32 off)
        Sym *file;
        Hist *h;
 
-       tmp[0] = '\0';
-       copyhistfrog(tmp, sizeof tmp);
-
-       if(tmp[0]) {
+       // NOTE(rsc): We used to do the copyhistfrog first and this
+       // condition was if(tmp[0] != '\0') to check for an empty string,
+       // implying that histfrogp == 0, implying that this is a history pop.
+       // However, on Windows in the misc/cgo test, the linker is
+       // presented with an ANAME corresponding to an empty string,
+       // that ANAME ends up being the only histfrog, and thus we have
+       // a situation where histfrogp > 0 (not a pop) but the path we find
+       // is the empty string. Really that shouldn't happen, but it doesn't
+       // seem to be bothering anyone yet, and it's easier to fix the condition
+       // to test histfrogp than to track down where that empty string is
+       // coming from. Probably it is coming from go tool pack's P command.
+       if(histfrogp > 0) {
+               tmp[0] = '\0';
+               copyhistfrog(tmp, sizeof tmp);
                file = lookup(tmp, HistVersion);
                if(file->type != SFILEPATH) {
                        file->value = ++nhistfile;