]> Cypherpunks repositories - gostls13.git/commitdiff
8l, ld: Initial adjustments for Plan 9 native compilation of 8l
authorLucio De Re <lucio.dere@gmail.com>
Fri, 3 Jun 2011 17:20:31 +0000 (13:20 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 3 Jun 2011 17:20:31 +0000 (13:20 -0400)
These changes are not particularly invasive and have been tested
as broadly as possible.

8l/l.h:
  - #pragma varargck: added some, removed duplicates.

ld/dwarf.c:
  - As Plan 9 has no NULL, changed all occurrences to nil.
  - Added USED(size); where necessary.
  - Added (void) argument in definition of finddebugruntimepath().
  - Plan 9 compiler was complaining about multiple
        assignments, repeaired by breaking up the commands.
  - Correction: havedynamic = 1; restored.

ld/go.c:
  - Needed USED(file); in two functions.
  - Removed unused assignments flagged by the Plan 9 compiler.

ld/lib.c:
  - Replaced unlink() with remove() which seems available everywhere.
  - Removed USED(c4); and USED(magic) no longer required.
  - Removed code flagged as unused by the Plan 9 compiler.
  - Added attributes to a number of format strings.

R=rsc
CC=golang-dev
https://golang.org/cl/4435047

src/cmd/8l/l.h
src/cmd/ld/dwarf.c
src/cmd/ld/go.c
src/cmd/ld/lib.c

index 8f39ef519df229dff7516c747143b2c36f335220..7e7cd5d63bb7794dc559718de2e160545e81e2cc 100644 (file)
@@ -260,11 +260,15 @@ EXTERN union
 #define        cbuf    u.obuf
 #define        xbuf    u.ibuf
 
-#pragma        varargck        type    "A"     uint
+#pragma        varargck        type    "A"     int
 #pragma        varargck        type    "D"     Adr*
+#pragma        varargck        type    "I"     int
+#pragma        varargck        type    "I"     uchar*
 #pragma        varargck        type    "P"     Prog*
 #pragma        varargck        type    "R"     int
 #pragma        varargck        type    "S"     char*
+#pragma        varargck        type    "Y"     Sym*
+#pragma        varargck        type    "i"     char*
 
 EXTERN int32   HEADR;
 EXTERN int32   HEADTYPE;
@@ -383,11 +387,6 @@ void       deadcode(void);
 #define        WPUT(a) wputl(a)
 #define        VPUT(a) vputl(a)
 
-#pragma        varargck        type    "D"     Adr*
-#pragma        varargck        type    "P"     Prog*
-#pragma        varargck        type    "R"     int
-#pragma        varargck        type    "A"     int
-
 /* Used by ../ld/dwarf.c */
 enum
 {
index de600f55504ab40107a098d037f437b4cd2e4be1..1721def678486a303ee31305518252df6110428d 100644 (file)
@@ -1348,7 +1348,7 @@ synthesizemaptypes(DWDie *die)
                        valtype = defptrto(valtype);
                newrefattr(fld, DW_AT_type, valtype);
                newmemberoffsetattr(fld, hashsize + datavo);
-               newattr(dwhe, DW_AT_byte_size, DW_CLS_CONSTANT, hashsize + datsize, NULL);
+               newattr(dwhe, DW_AT_byte_size, DW_CLS_CONSTANT, hashsize + datsize, nil);
 
                // Construct hash_subtable<hash_entry<K,V>>
                dwhs = newdie(&dwtypes, DW_ABRV_STRUCTTYPE,
@@ -1359,7 +1359,7 @@ synthesizemaptypes(DWDie *die)
                substitutetype(dwhs, "end", defptrto(dwhe));
                substitutetype(dwhs, "entry", dwhe);  // todo: []hash_entry with dynamic size
                newattr(dwhs, DW_AT_byte_size, DW_CLS_CONSTANT,
-                       getattr(hash_subtable, DW_AT_byte_size)->value, NULL);
+                       getattr(hash_subtable, DW_AT_byte_size)->value, nil);
 
                // Construct hash<K,V>
                dwh = newdie(&dwtypes, DW_ABRV_STRUCTTYPE,
@@ -1369,7 +1369,7 @@ synthesizemaptypes(DWDie *die)
                copychildren(dwh, hash);
                substitutetype(dwh, "st", defptrto(dwhs));
                newattr(dwh, DW_AT_byte_size, DW_CLS_CONSTANT,
-                       getattr(hash, DW_AT_byte_size)->value, NULL);
+                       getattr(hash, DW_AT_byte_size)->value, nil);
 
                newrefattr(die, DW_AT_type, defptrto(dwh));
        }
@@ -1401,30 +1401,30 @@ synthesizechantypes(DWDie *die)
                // sudog<T>
                dws = newdie(&dwtypes, DW_ABRV_STRUCTTYPE,
                        mkinternaltypename("sudog",
-                               getattr(elemtype, DW_AT_name)->data, NULL));
+                               getattr(elemtype, DW_AT_name)->data, nil));
                copychildren(dws, sudog);
                substitutetype(dws, "elem", elemtype);
                newattr(dws, DW_AT_byte_size, DW_CLS_CONSTANT,
-                       sudogsize + (elemsize > 8 ? elemsize - 8 : 0), NULL);
+                       sudogsize + (elemsize > 8 ? elemsize - 8 : 0), nil);
 
                // waitq<T>
                dww = newdie(&dwtypes, DW_ABRV_STRUCTTYPE,
-                       mkinternaltypename("waitq", getattr(elemtype, DW_AT_name)->data, NULL));
+                       mkinternaltypename("waitq", getattr(elemtype, DW_AT_name)->data, nil));
                copychildren(dww, waitq);
                substitutetype(dww, "first", defptrto(dws));
                substitutetype(dww, "last",  defptrto(dws));
                newattr(dww, DW_AT_byte_size, DW_CLS_CONSTANT,
-                       getattr(waitq, DW_AT_byte_size)->value, NULL);
+                       getattr(waitq, DW_AT_byte_size)->value, nil);
 
                // hchan<T>
                dwh = newdie(&dwtypes, DW_ABRV_STRUCTTYPE,
-                       mkinternaltypename("hchan", getattr(elemtype, DW_AT_name)->data, NULL));
+                       mkinternaltypename("hchan", getattr(elemtype, DW_AT_name)->data, nil));
                copychildren(dwh, hchan);
                substitutetype(dwh, "recvq", dww);
                substitutetype(dwh, "sendq", dww);
                substitutetype(dwh, "free", defptrto(dws));
                newattr(dwh, DW_AT_byte_size, DW_CLS_CONSTANT,
-                       getattr(hchan, DW_AT_byte_size)->value, NULL);
+                       getattr(hchan, DW_AT_byte_size)->value, nil);
 
                newrefattr(die, DW_AT_type, defptrto(dwh));
        }
@@ -1436,6 +1436,7 @@ defdwsymb(Sym* sym, char *s, int t, vlong v, vlong size, int ver, Sym *gotype)
 {
        DWDie *dv, *dt;
 
+       USED(size);
        if (strncmp(s, "go.string.", 10) == 0)
                return;
 
@@ -1592,7 +1593,7 @@ addhistfile(char *zentry)
 // if the histfile stack contains ..../runtime/runtime_defs.go
 // use that to set gdbscript
 static void
-finddebugruntimepath()
+finddebugruntimepath(void)
 {
        int i, l;
        char *c;
@@ -1841,7 +1842,8 @@ writelines(void)
        char *n, *nn;
 
        unitstart = -1;
-       epc = pc = 0;
+       pc = 0;
+       epc = 0;
        lc = 1;
        llc = 1;
        currfile = -1;
@@ -1903,7 +1905,8 @@ writelines(void)
                                // 4 zeros: the string termination + 3 fields.
                        }
 
-                       epc = pc = s->text->pc;
+                       pc = s->text->pc;
+                       epc = pc;
                        currfile = 1;
                        lc = 1;
                        llc = 1;
@@ -1992,7 +1995,7 @@ writelines(void)
                        newrefattr(dwvar, DW_AT_type, defgotype(a->gotype));
 
                        // push dwvar down dwfunc->child to preserve order
-                       newattr(dwvar, DW_AT_internal_location, DW_CLS_CONSTANT, offs, NULL);
+                       newattr(dwvar, DW_AT_internal_location, DW_CLS_CONSTANT, offs, nil);
                        dwfunc->child = dwvar->link;  // take dwvar out from the top of the list
                        for (dws = &dwfunc->child; *dws != nil; dws = &(*dws)->link)
                                if (offs > getattr(*dws, DW_AT_internal_location)->value)
@@ -2345,7 +2348,11 @@ dwarfemitdebugsections(void)
 
        infoo = cpos();
        writeinfo();
-       gdbscripto = arangeso = pubtypeso = pubnameso = infoe = cpos();
+       infoe = cpos();
+       pubnameso = infoe;
+       pubtypeso = infoe;
+       arangeso = infoe;
+       gdbscripto = infoe;
 
        if (fwdcount > 0) {
                if (debug['v'])
index a19fe460db6c91e660d9de4b99572384c8bca659..05d1cc136c2e32e1ecd9eebde6b60e1ebe274afe 100644 (file)
@@ -415,8 +415,8 @@ loaddynimport(char *file, char *pkg, char *p, int n)
        char *pend, *next, *name, *def, *p0, *lib, *q;
        Sym *s;
 
+       USED(file);
        pend = p + n;
-       p0 = p;
        for(; p<pend; p=next) {
                next = strchr(p, '\n');
                if(next == nil)
@@ -485,8 +485,8 @@ loaddynexport(char *file, char *pkg, char *p, int n)
        char *pend, *next, *local, *elocal, *remote, *p0;
        Sym *s;
 
+       USED(file);
        pend = p + n;
-       p0 = p;
        for(; p<pend; p=next) {
                next = strchr(p, '\n');
                if(next == nil)
index 105d982e4b1f54d0971d2c55399c2338bc44b683..208a84f1d2f38e53d50d493a20ab1b35de7e304c 100644 (file)
@@ -69,7 +69,7 @@ libinit(void)
        // add goroot to the end of the libdir list.
        libdir[nlibdir++] = smprint("%s/pkg/%s_%s", goroot, goos, goarch);
 
-       unlink(outfile);
+       remove(outfile);
        cout = create(outfile, 1, 0775);
        if(cout < 0) {
                diag("cannot create %s", outfile);
@@ -398,9 +398,6 @@ ldobj(Biobuf *f, char *pkg, int64 len, char *pn, int whence)
        eof = Boffset(f) + len;
 
        pn = strdup(pn);
-       
-       USED(c4);
-       USED(magic);
 
        c1 = Bgetc(f);
        c2 = Bgetc(f);
@@ -410,7 +407,7 @@ ldobj(Biobuf *f, char *pkg, int64 len, char *pn, int whence)
        Bungetc(f);
        Bungetc(f);
        Bungetc(f);
-       
+
        magic = c1<<24 | c2<<16 | c3<<8 | c4;
        if(magic == 0x7f454c46) {       // \x7F E L F
                ldelf(f, pkg, len, pn);
@@ -498,7 +495,6 @@ _lookup(char *symb, int v, int creat)
        // not if(h < 0) h = ~h, because gcc 4.3 -O2 miscompiles it.
        h &= 0xffffff;
        h %= NHASH;
-       c = symb[0];
        for(s = hash[h]; s != S; s = s->hash)
                if(memcmp(s->name, symb, l) == 0)
                        return s;
@@ -523,7 +519,7 @@ _lookup(char *symb, int v, int creat)
        s->size = 0;
        hash[h] = s;
        nsymbol++;
-       
+
        s->allsym = allsym;
        allsym = s;
        return s;
@@ -550,7 +546,6 @@ copyhistfrog(char *buf, int nbuf)
 
        p = buf;
        ep = buf + nbuf;
-       i = 0;
        for(i=0; i<histfrogp; i++) {
                p = seprint(p, ep, "%s", histfrog[i]->name+1);
                if(i+1<histfrogp && (p == buf || p[-1] != '/'))