EXTERN int nerrors;
EXTERN int32 nhunk;
EXTERN int ninclude;
+EXTERN int32 nsymb;
EXTERN Gen nullgen;
EXTERN char* outfile;
EXTERN int pass;
EXTERN int32 pc;
EXTERN int peekc;
EXTERN int sym;
-EXTERN char symb[NSYMB];
+EXTERN char* symb;
EXTERN int thechar;
EXTERN char* thestring;
EXTERN int32 thunk;
void* alloc(int32);
void* allocn(void*, int32, int32);
+void ensuresymb(int32);
void errorexit(void);
void pushio(void);
void newio(void);
thechar = '5';
thestring = "arm";
+
+ ensuresymb(NSYMB);
memset(debug, 0, sizeof(debug));
cinit();
outfile = 0;
EXTERN int nerrors;
EXTERN int32 nhunk;
EXTERN int ninclude;
+EXTERN int32 nsymb;
EXTERN Gen nullgen;
EXTERN char* outfile;
EXTERN int pass;
EXTERN int32 pc;
EXTERN int peekc;
EXTERN int sym;
-EXTERN char symb[NSYMB];
+EXTERN char* symb;
EXTERN int thechar;
EXTERN char* thestring;
EXTERN int32 thunk;
void* alloc(int32);
void* allocn(void*, int32, int32);
+void ensuresymb(int32);
void errorexit(void);
void pushio(void);
void newio(void);
thechar = '6';
thestring = "amd64";
+ ensuresymb(NSYMB);
memset(debug, 0, sizeof(debug));
cinit();
outfile = 0;
EXTERN int nerrors;
EXTERN int32 nhunk;
EXTERN int ninclude;
+EXTERN int32 nsymb;
EXTERN Gen nullgen;
EXTERN char* outfile;
EXTERN int pass;
EXTERN int32 pc;
EXTERN int peekc;
EXTERN int sym;
-EXTERN char symb[NSYMB];
+EXTERN char* symb;
EXTERN int thechar;
EXTERN char* thestring;
EXTERN int32 thunk;
void* alloc(int32);
void* allocn(void*, int32, int32);
+void ensuresymb(int32);
void errorexit(void);
void pushio(void);
void newio(void);
thechar = '8';
thestring = "386";
+
+ ensuresymb(NSYMB);
memset(debug, 0, sizeof(debug));
cinit();
outfile = 0;
EXTERN int ninclude;
EXTERN Node* nodproto;
EXTERN Node* nodcast;
+EXTERN int32 nsymb;
EXTERN Biobuf outbuf;
EXTERN Biobuf diagbuf;
EXTERN char* outfile;
EXTERN int32 stkoff;
EXTERN Type* strf;
EXTERN Type* strl;
-EXTERN char symb[NSYMB];
+EXTERN char* symb;
EXTERN Sym* symstring;
EXTERN int taggen;
EXTERN Type* tfield;
*/
void* allocn(void*, int32, int32);
void* alloc(int32);
+void ensuresymb(int32);
void cinit(void);
int compile(char*, char**, int);
void errorexit(void);
char *defs[50], *p;
int nproc, nout, i, c, ndef;
+ ensuresymb(NSYMB);
memset(debug, 0, sizeof(debug));
tinit();
cinit();
Sym*
slookup(char *s)
{
-
+ ensuresymb(strlen(s));
strcpy(symb, s);
return lookup();
}
if((uchar)symb[0] == 0xc2 && (uchar)symb[1] == 0xb7) {
// turn leading · into ""·
- memmove(symb+2, symb, strlen(symb)+1);
+ h = strlen(symb);
+ ensuresymb(h+2);
+ memmove(symb+2, symb, h+1);
symb[0] = '"';
symb[1] = '"';
}
memset((char*)p+n, 0, d);
return p;
}
+
+void
+ensuresymb(int32 n)
+{
+ if(symb == nil) {
+ symb = alloc(NSYMB+1);
+ nsymb = NSYMB;
+ }
+
+ if(n > nsymb) {
+ symb = allocn(symb, nsymb, n+1-nsymb);
+ nsymb = n;
+ }
+}
return p;
}
+void
+ensuresymb(int32 n)
+{
+ if(symb == nil) {
+ symb = alloc(NSYMB+1);
+ nsymb = NSYMB;
+ }
+
+ if(n > nsymb) {
+ symb = allocn(symb, nsymb, n+1-nsymb);
+ nsymb = n;
+ }
+}
+
void
setinclude(char *p)
{
Sym*
slookup(char *s)
{
-
+ ensuresymb(strlen(s));
strcpy(symb, s);
return lookup();
}
if((uchar)symb[0] == 0xc2 && (uchar)symb[1] == 0xb7) {
// turn leading · into ""·
- memmove(symb+2, symb, strlen(symb)+1);
+ h = strlen(symb);
+ ensuresymb(h+2);
+ memmove(symb+2, symb, h+1);
symb[0] = '"';
symb[1] = '"';
}
char *p;
int32 l;
+ ensuresymb(strlen(cp));
strcpy(symb, cp);
p = strchr(symb, '=');
if(p) {
for(i=0; i<ninclude; i++) {
if(i == 0 && c0 == '>')
continue;
+ ensuresymb(strlen(include[i])+strlen(str)+2);
strcpy(symb, include[i]);
strcat(symb, "/");
if(strcmp(symb, "./") == 0)