summaryrefslogtreecommitdiff
path: root/src/cmd/ld/lib.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2013-07-11 22:52:48 -0400
committerRuss Cox <rsc@golang.org>2013-07-11 22:52:48 -0400
commit57fbfd5cf83bba1e773ef4b6f93506ee53a606de (patch)
treee520ef12c41a2920914b862a538552b1c9d10ccb /src/cmd/ld/lib.c
parent7706ce42feadc8cea189117f369a38e0f5a03648 (diff)
downloadgo-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.c11
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;