diff options
author | Russ Cox <rsc@golang.org> | 2013-07-11 22:52:48 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2013-07-11 22:52:48 -0400 |
commit | 57fbfd5cf83bba1e773ef4b6f93506ee53a606de (patch) | |
tree | e520ef12c41a2920914b862a538552b1c9d10ccb /src/cmd/ld/lib.c | |
parent | 7706ce42feadc8cea189117f369a38e0f5a03648 (diff) | |
download | go-57fbfd5cf83bba1e773ef4b6f93506ee53a606de.tar.gz |
cmd/ld: place read-only data in non-executable segment
R=golang-dev, dave, r
CC=golang-dev, nigeltao
https://codereview.appspot.com/10713043
Diffstat (limited to 'src/cmd/ld/lib.c')
-rw-r--r-- | src/cmd/ld/lib.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/cmd/ld/lib.c b/src/cmd/ld/lib.c index d9e3af4c0..18943d5f3 100644 --- a/src/cmd/ld/lib.c +++ b/src/cmd/ld/lib.c @@ -36,6 +36,13 @@ #include <ar.h> +enum +{ + // Whether to assume that the external linker is "gold" + // (http://sourceware.org/ml/binutils/2008-03/msg00162.html). + AssumeGoldLinker = 0, +}; + int iconv(Fmt*); char symname[] = SYMDEF; @@ -676,6 +683,10 @@ hostlink(void) } if(HEADTYPE == Hdarwin) argv[argc++] = "-Wl,-no_pie,-pagezero_size,4000000"; + + if(iself && AssumeGoldLinker) + argv[argc++] = "-Wl,--rosegment"; + argv[argc++] = "-o"; argv[argc++] = outfile; |