diff options
author | Russ Cox <rsc@golang.org> | 2013-07-18 10:12:28 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2013-07-18 10:12:28 -0400 |
commit | 08ce3c313376b6d600c08b977103d6c51350b3f6 (patch) | |
tree | e23fb56b03dc63d9f4564173e89c36d08a7e686c /src/cmd/addr2line | |
parent | d7b4a09ca8037d91a5a89ea0e9ab36cef37cef74 (diff) | |
download | go-08ce3c313376b6d600c08b977103d6c51350b3f6.tar.gz go-08ce3c313376b6d600c08b977103d6c51350b3f6.zip |
libmach: update for Go 1.2 pcln table
The change to addr2line makes it easy to test by hand.
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/11485044
Diffstat (limited to 'src/cmd/addr2line')
-rw-r--r-- | src/cmd/addr2line/main.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cmd/addr2line/main.c b/src/cmd/addr2line/main.c index 9faadc27bb..54c4d90b5c 100644 --- a/src/cmd/addr2line/main.c +++ b/src/cmd/addr2line/main.c @@ -31,7 +31,7 @@ void main(int argc, char **argv) { int fd; - char *p; + char *p, *q; uvlong pc; Symbol s; Fhdr fhdr; @@ -67,6 +67,17 @@ main(int argc, char **argv) if(p == nil) break; p[Blinelen(&bin)-1] = '\0'; + q = strchr(p, ':'); + if(q != nil) { + // reverse: translate file:line to pc + *q++ = '\0'; + pc = file2pc(p, atoi(q)); + if(pc == ~(uvlong)0) + Bprint(&bout, "!%r\n"); + else + Bprint(&bout, "0x%llux\n", pc); + continue; + } pc = strtoull(p, 0, 16); if(!findsym(pc, CTEXT, &s)) s.name = "??"; |