1
0
mirror of https://github.com/golang/go synced 2024-11-12 03:50:21 -07:00

cmd/ld: give acid a fighting chance at unwinding the stack

Acid can't produce a stack trace without .frame symbols.

Of course, it can only unwind through linear stacks but
this is still better than nothing. (I wrote an acid func
to do the full unwind a long time ago but lost it and
haven't worked up the courage to write it again).

Note that these will only be present in the native symbol
table for Plan 9 binaries.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/72450045
This commit is contained in:
Anthony Martin 2014-03-12 18:10:31 -07:00
parent 15068b6df7
commit b67979320a

View File

@ -1341,6 +1341,9 @@ genasmsym(void (*put)(LSym*, char*, int, vlong, vlong, int, LSym*))
for(s = ctxt->textp; s != nil; s = s->next) {
put(s, s->name, 'T', s->value, s->size, s->version, s->gotype);
// NOTE(ality): acid can't produce a stack trace without .frame symbols
put(nil, ".frame", 'm', s->locals+PtrSize, 0, 0, 0);
for(a=s->autom; a; a=a->link) {
// Emit a or p according to actual offset, even if label is wrong.
// This avoids negative offsets, which cannot be encoded.