aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/ld/data.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2012-02-07 16:46:33 -0500
committerRuss Cox <rsc@golang.org>2012-02-07 16:46:33 -0500
commite3755434b8790288a1d48ae3ebf9f4e49c881849 (patch)
tree808cb138d20a3bcac7d95702de005cfeb2dee5e2 /src/cmd/ld/data.c
parent2cc58e93d6f663af52bcdd4974d319ebe843f764 (diff)
downloadgo-e3755434b8790288a1d48ae3ebf9f4e49c881849.tar.xz
5l, 6l, 8l: implement -X flag
R=golang-dev, iant CC=golang-dev https://golang.org/cl/5643050
Diffstat (limited to 'src/cmd/ld/data.c')
-rw-r--r--src/cmd/ld/data.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c
index d34d23c770..b5f1b99312 100644
--- a/src/cmd/ld/data.c
+++ b/src/cmd/ld/data.c
@@ -589,6 +589,25 @@ strnput(char *s, int n)
}
}
+void
+addstrdata(char *name, char *value)
+{
+ Sym *s, *sp;
+ char *p;
+
+ p = smprint("%s.str", name);
+ sp = lookup(p, 0);
+ free(p);
+ addstring(sp, value);
+
+ s = lookup(name, 0);
+ s->dupok = 1;
+ addaddr(s, sp);
+ adduint32(s, strlen(value));
+ if(PtrSize == 8)
+ adduint32(s, 0); // round struct to pointer width
+}
+
vlong
addstring(Sym *s, char *str)
{