From a647f59c1f80dd575c6e4107618681aea65edbd2 Mon Sep 17 00:00:00 2001 From: Luuk van Dijk Date: Sun, 17 Oct 2010 22:35:55 +0200 Subject: [PATCH] [68]l: proper end of instruction ranges in dwarf. R=rsc CC=golang-dev https://golang.org/cl/2542042 --- src/cmd/ld/dwarf.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/cmd/ld/dwarf.c b/src/cmd/ld/dwarf.c index 1e7c35e47e3..cd9c82e02d5 100644 --- a/src/cmd/ld/dwarf.c +++ b/src/cmd/ld/dwarf.c @@ -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);