diff options
author | Ori Bernstein <ori@eigenstate.org> | 2013-01-22 10:55:40 -0500 |
---|---|---|
committer | Ori Bernstein <ori@eigenstate.org> | 2013-01-22 10:55:40 -0500 |
commit | 7ff626d1c51afb52e48183e39d6086103ea1ea2f (patch) | |
tree | 6478f42b480b3af4cff25714fd9a93d33561e709 | |
parent | ec403cbfcb3bf3c814469fb9f686c2ece04b3258 (diff) | |
download | mc-7ff626d1c51afb52e48183e39d6086103ea1ea2f.tar.gz |
Rename things in the platform configuration header.
-rw-r--r-- | 6/isel.c | 2 | ||||
-rw-r--r-- | 6/platform.h | 4 | ||||
-rw-r--r-- | 6/simp.c | 15 |
3 files changed, 15 insertions, 6 deletions
@@ -784,7 +784,7 @@ static void writeasm(FILE *fd, Isel *s, Func *fn) { size_t i, j; - if (fn->isexport || !strcmp(fn->name, Fprefix "main")) + if (fn->isexport || !strcmp(fn->name, Symprefix "main")) fprintf(fd, ".globl %s\n", fn->name); fprintf(fd, "%s:\n", fn->name); for (j = 0; j < s->cfg->nbb; j++) { diff --git a/6/platform.h b/6/platform.h index 78ddd32..75c03ad 100644 --- a/6/platform.h +++ b/6/platform.h @@ -1,9 +1,9 @@ #if defined(__APPLE__) && defined(__MACH__) /* for OSX */ # define Asmcmd "as -g -o %s %s" -# define Fprefix "_" +# define Symprefix "_" #else /* Default to linux */ # define Asmcmd "as -g -o %s %s" -# define Fprefix "" +# define Symprefix "" #endif @@ -111,6 +111,8 @@ static Node *mul(Node *a, Node *b) return n; } +/* takes the address of a node, possibly converting it to + * a pointer to the base type 'bt' */ static Node *addr(Node *a, Type *bt) { Node *n; @@ -187,12 +189,17 @@ static int isconstfn(Node *s) return s->decl.isconst && decltype(s)->type == Tyfunc; } +/* For x86, the assembly names are generated as follows: + * local symbols: .name + * un-namespaced symbols: <symprefix>name + * namespaced symbols: <symprefix>namespace$name + */ static char *asmname(Node *n) { char *s; int len; - len = strlen(Fprefix); + len = strlen(Symprefix); if (n->name.ns) len += strlen(n->name.ns) + 1; /* +1 for separator */ len += strlen(n->name.name) + 1; @@ -200,9 +207,11 @@ static char *asmname(Node *n) s = xalloc(len + 1); s[0] = '\0'; if (n->name.ns) - snprintf(s, len, "%s%s$%s", Fprefix, n->name.ns, n->name.name); + snprintf(s, len, "%s%s$%s", Symprefix, n->name.ns, n->name.name); + else if (n->name.name[0] == '.') + snprintf(s, len, "%s", n->name.name); else - snprintf(s, len, "%s%s", Fprefix, n->name.name); + snprintf(s, len, "%s%s", Symprefix, n->name.name); return s; } |