]> Cypherpunks repositories - gostls13.git/commitdiff
6l, 8l: make etext accurate; introduce rodata, erodata.
authorRuss Cox <rsc@golang.org>
Tue, 14 Sep 2010 15:13:04 +0000 (11:13 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 14 Sep 2010 15:13:04 +0000 (11:13 -0400)
Makes binaries work with 6cov again.

R=ken2
CC=golang-dev
https://golang.org/cl/2192041

src/cmd/6l/span.c
src/cmd/8l/span.c

index 2da3656f1071654e24068da17ec6f3f8da0df1fa..f18398a23a25ab82215b21847a8e99ad70bbcfd5 100644 (file)
@@ -45,6 +45,9 @@ span(void)
        Sym *s;
 
        xdefine("etext", STEXT, 0L);
+       xdefine("rodata", SRODATA, 0L);
+       xdefine("erodata", SRODATA, 0L);
+
        idat = INITDAT;
        for(p = firstp; p != P; p = p->link) {
                if(p->as == ATEXT)
@@ -122,11 +125,13 @@ loop:
                textsize = c;
                goto loop;
        }
+       xdefine("etext", STEXT, c);
        
        /*
         * allocate read-only data to the text segment.
         */
        c = rnd(c, 8);
+       xdefine("rodata", SRODATA, c);
        for(i=0; i<NHASH; i++)
        for(s = hash[i]; s != S; s = s->link) {
                if(s->type != SRODATA)
@@ -137,6 +142,7 @@ loop:
                s->value = c;
                c += v;
        }
+       xdefine("erodata", SRODATA, c);
 
        if(INITRND) {
                INITDAT = rnd(c, INITRND);
@@ -146,7 +152,6 @@ loop:
                }
        }
 
-       xdefine("etext", STEXT, c);
        if(debug['v'])
                Bprint(&bso, "etext = %llux\n", c);
        Bflush(&bso);
index 3bc18adb6d230b9ecdd762c55b887dc7d25080d5..373ab8a9c6a31222c4587a743f7ce427778cc6f2 100644 (file)
@@ -40,6 +40,9 @@ span(void)
        Sym *s;
 
        xdefine("etext", STEXT, 0L);
+       xdefine("rodata", SRODATA, 0L);
+       xdefine("erodata", SRODATA, 0L);
+
        idat = INITDAT;
        for(p = firstp; p != P; p = p->link) {
                if(p->as == ATEXT)
@@ -107,11 +110,13 @@ start:
                textsize = c;
                n++;
        }while(again);
+       xdefine("etext", STEXT, c);
        
        /*
         * allocate read-only data to the text segment.
         */
        c = rnd(c, 8);
+       xdefine("rodata", SRODATA, c);
        for(i=0; i<NHASH; i++)
        for(s = hash[i]; s != S; s = s->link) {
                if(s->type != SRODATA)
@@ -122,6 +127,7 @@ start:
                s->value = c;
                c += v;
        }
+       xdefine("erodata", SRODATA, c);
 
        if(INITRND) {
                INITDAT = rnd(c+textpad, INITRND);
@@ -131,7 +137,6 @@ start:
                }
        }
 
-       xdefine("etext", STEXT, c);
        if(debug['v'])
                Bprint(&bso, "etext = %lux\n", c);
        Bflush(&bso);