OSDN Git Service

debug/dwarf: Fix address lookups for different types of lines.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Apr 2012 18:44:26 +0000 (18:44 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Apr 2012 18:44:26 +0000 (18:44 +0000)
This fixes the lookup when, e.g., discriminators force adding
new line arrays.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@186634 138bc75d-0d04-0410-961f-82ee72b054a4

libgo/go/debug/dwarf/line.go

index f9c77cc..52c3b11 100644 (file)
@@ -415,6 +415,10 @@ func (d *Data) addLine(lines []mapLineInfo, lineInfo Line, address uint64, line
        if newLineInfo {
                if len(lines) > 0 {
                        sort.Sort(lines[len(lines)-1].addrs)
+                       p := &lines[len(lines)-1]
+                       if len(p.addrs) > 0 && address > p.addrs[len(p.addrs)-1].pc {
+                               p.addrs = append(p.addrs, oneLineInfo{address, p.addrs[len(p.addrs)-1].line})
+                       }
                }
                lines = append(lines, mapLineInfo{line: lineInfo})
        }