mirror of
https://github.com/golang/go
synced 2024-11-25 08:07:57 -07:00
cmd/nm: don't add filename elements for m symbols
The compilers used to generate only one 'm' symbol to record the stack frame size for each function. In cmd/nm, the 'm' and 'f' symbols are handled in the same switch case with a special exception for the symbol described above called ".frame". Now that the compilers emit additional 'm' symbols for precise garbage collection of the stack, the current logic is incorrect. cmd/nm will attempt to interpret these new 'm' symbols as 'f' symbols and add them to the file name index table. This fails with an out-of-memory condition when zenter encounters an 'm' symbol with a very large value (usually the .args symbol indicating a variadic NOSPLIT function). R=iant CC=dave, gobot, golang-dev, rsc https://golang.org/cl/7962045
This commit is contained in:
parent
1b9e36356b
commit
272687ec24
@ -275,11 +275,13 @@ psym(Sym *s, void* p)
|
||||
return;
|
||||
break;
|
||||
case 'm':
|
||||
if(!aflag || uflag || gflag)
|
||||
return;
|
||||
break;
|
||||
case 'f': /* we only see a 'z' when the following is true*/
|
||||
if(!aflag || uflag || gflag)
|
||||
return;
|
||||
if (strcmp(s->name, ".frame"))
|
||||
zenter(s);
|
||||
zenter(s);
|
||||
break;
|
||||
case 'a':
|
||||
case 'p':
|
||||
|
Loading…
Reference in New Issue
Block a user