aboutsummaryrefslogtreecommitdiff
path: root/src/cmd
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2014-12-17 12:13:47 -0500
committerAustin Clements <austin@google.com>2014-12-22 22:47:05 +0000
commit326ceeabc46db98cccfbde80fde562c0fb3325c3 (patch)
tree1ce2402dc28583e057bf767d33616708f98129ed /src/cmd
parent6c78443b3e13c43ea887f6b73099e0c1297327c5 (diff)
downloadgo-326ceeabc46db98cccfbde80fde562c0fb3325c3.tar.xz
cmd/ld: add a text generation pass
This will be used by ppc64 to add call stubs to the .text section. ARM needs a similar pass to generate veneers for arm->thumb transitions. Change-Id: Iaee74036e60643a56fab15b564718f359c5910eb Reviewed-on: https://go-review.googlesource.com/2004 Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/cmd')
-rw-r--r--src/cmd/5l/asm.c5
-rw-r--r--src/cmd/6l/asm.c5
-rw-r--r--src/cmd/8l/asm.c5
-rw-r--r--src/cmd/9l/asm.c5
-rw-r--r--src/cmd/ld/lib.h1
-rw-r--r--src/cmd/ld/pobj.c1
6 files changed, 22 insertions, 0 deletions
diff --git a/src/cmd/5l/asm.c b/src/cmd/5l/asm.c
index 9c1c04e2d4..017d3f4357 100644
--- a/src/cmd/5l/asm.c
+++ b/src/cmd/5l/asm.c
@@ -69,6 +69,11 @@ static void addpltsym(Link*, LSym*);
static void addgotsym(Link*, LSym*);
static void addgotsyminternal(Link*, LSym*);
+void
+gentext(void)
+{
+}
+
// Preserve highest 8 bits of a, and do addition to lower 24-bit
// of a and b; used to adjust ARM branch intruction's target
static int32
diff --git a/src/cmd/6l/asm.c b/src/cmd/6l/asm.c
index 18b5aa3119..41c9cc84c6 100644
--- a/src/cmd/6l/asm.c
+++ b/src/cmd/6l/asm.c
@@ -74,6 +74,11 @@ static void addpltsym(LSym*);
static void addgotsym(LSym*);
void
+gentext(void)
+{
+}
+
+void
adddynrela(LSym *rela, LSym *s, Reloc *r)
{
addaddrplus(ctxt, rela, s, r->off);
diff --git a/src/cmd/8l/asm.c b/src/cmd/8l/asm.c
index 98c0424037..8b91c0971a 100644
--- a/src/cmd/8l/asm.c
+++ b/src/cmd/8l/asm.c
@@ -70,6 +70,11 @@ static void addpltsym(Link*, LSym*);
static void addgotsym(Link*, LSym*);
void
+gentext(void)
+{
+}
+
+void
adddynrela(LSym *rela, LSym *s, Reloc *r)
{
USED(rela);
diff --git a/src/cmd/9l/asm.c b/src/cmd/9l/asm.c
index f9e2810ade..7814edd525 100644
--- a/src/cmd/9l/asm.c
+++ b/src/cmd/9l/asm.c
@@ -66,6 +66,11 @@ needlib(char *name)
int nelfsym = 1;
void
+gentext(void)
+{
+}
+
+void
adddynrela(LSym *rel, LSym *s, Reloc *r)
{
// TODO(minux)
diff --git a/src/cmd/ld/lib.h b/src/cmd/ld/lib.h
index 067ffa0bcc..17483e0b4c 100644
--- a/src/cmd/ld/lib.h
+++ b/src/cmd/ld/lib.h
@@ -227,6 +227,7 @@ vlong entryvalue(void);
void errorexit(void);
void follow(void);
void genasmsym(void (*put)(LSym*, char*, int, vlong, vlong, int, LSym*));
+void gentext(void);
void growdatsize(vlong *datsizep, LSym *s);
char* headstr(int v);
int headtype(char *name);
diff --git a/src/cmd/ld/pobj.c b/src/cmd/ld/pobj.c
index 63460df30a..b86ddfe0fe 100644
--- a/src/cmd/ld/pobj.c
+++ b/src/cmd/ld/pobj.c
@@ -184,6 +184,7 @@ main(int argc, char *argv[])
if(HEADTYPE == Hwindows)
dope();
addexport();
+ gentext(); // trampolines, call stubs, etc.
textaddress();
pclntab();
symtab();