From: Ian Lance Taylor Date: Thu, 17 Apr 2014 03:28:53 +0000 (-0700) Subject: cmd/ld: don't pass -rdynamic to external linker if -static is used X-Git-Tag: go1.3beta1~29 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=827aab07b80cd8ad26548a6fa234b7d038537d33;p=gostls13.git cmd/ld: don't pass -rdynamic to external linker if -static is used Fixes #7800. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/87790051 --- diff --git a/src/cmd/ld/lib.c b/src/cmd/ld/lib.c index 78b8cf2bad..29de54e3cf 100644 --- a/src/cmd/ld/lib.c +++ b/src/cmd/ld/lib.c @@ -654,6 +654,20 @@ hostlink(void) if(*p == '\0') break; argv[argc++] = p; + + // clang, unlike GCC, passes -rdynamic to the linker + // even when linking with -static, causing a linker + // error when using GNU ld. So take out -rdynamic if + // we added it. We do it in this order, rather than + // only adding -rdynamic later, so that -extldflags + // can override -rdynamic without using -static. + if(iself && strncmp(p, "-static", 7) == 0 && (p[7]==' ' || p[7]=='\0')) { + for(i=0; i