]> Cypherpunks repositories - gostls13.git/commitdiff
[68]l: proper end of instruction ranges in dwarf.
authorLuuk van Dijk <lvd@golang.org>
Sun, 17 Oct 2010 20:35:55 +0000 (22:35 +0200)
committerLuuk van Dijk <lvd@golang.org>
Sun, 17 Oct 2010 20:35:55 +0000 (22:35 +0200)
R=rsc
CC=golang-dev
https://golang.org/cl/2542042

src/cmd/ld/dwarf.c

index 1e7c35e47e3446c1f49da2a3dbef9d36c0007db1..cd9c82e02d576ea4bb561e805bc1f05f61858f22 100644 (file)
@@ -667,7 +667,7 @@ flushunit(vlong pc, vlong unitstart)
 static void
 writelines(void)
 {
-       Prog *p, *q;
+       Prog *q;
        Sym *s;
        char *unitname;
        vlong unitstart;
@@ -676,7 +676,6 @@ writelines(void)
        int i;
        Linehist *lh;
 
-       q = nil;
        unitstart = -1;
        epc = pc = 0;
        lc = 1;
@@ -741,20 +740,18 @@ writelines(void)
                if (!s->reachable)
                        continue;
 
-               p = s->text;
-
                if (unitstart < 0) {
-                       diag("reachable code before seeing any history: %P", p);
+                       diag("reachable code before seeing any history: %P", s->text);
                        continue;
                }
 
                dwinfo->child = newdie(dwinfo->child, DW_ABRV_FUNCTION);
                newattr(dwinfo->child, DW_AT_name, DW_CLS_STRING, strlen(s->name), s->name);
-               newattr(dwinfo->child, DW_AT_low_pc, DW_CLS_ADDRESS, s->text->pc, 0);
-               newattr(dwinfo->child, DW_AT_high_pc, DW_CLS_ADDRESS, s->text->pc + s->size, 0);
+               newattr(dwinfo->child, DW_AT_low_pc, DW_CLS_ADDRESS, s->value, 0);
+               epc = s->value + s->size;
+               newattr(dwinfo->child, DW_AT_high_pc, DW_CLS_ADDRESS, epc, 0);
 
-               for(q = p; q != P && (q == p || q->as != ATEXT); q = q->link) {
-                       epc = q->pc;
+               for(q = s->text; q != P; q = q->link) {
                        lh = searchhist(q->line);
                        if (lh == nil) {
                                diag("corrupt history or bad absolute line: %P", q);