compiler, runtime: mark stub methods, ignore them in runtime.Caller.
This fixes the long-standing bug in which the testing package misreports the file/line of an error. Reviewed-on: https://go-review.googlesource.com/19179 From-SVN: r233098
This commit is contained in:
parent
e2bd26b722
commit
06caa02ccf
3 changed files with 6 additions and 3 deletions
|
@ -1,4 +1,4 @@
|
|||
a408bef550251926c28673818db2c64302faac1d
|
||||
c70e74c116d08c6f2e787551eb1366983815c032
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -9632,13 +9632,14 @@ Type::build_stub_methods(Gogo* gogo, const Type* type, const Methods* methods,
|
|||
package = NULL;
|
||||
else
|
||||
package = type->named_type()->named_object()->package();
|
||||
std::string stub_name = name + "$stub";
|
||||
Named_object* stub;
|
||||
if (package != NULL)
|
||||
stub = Named_object::make_function_declaration(name, package,
|
||||
stub = Named_object::make_function_declaration(stub_name, package,
|
||||
stub_type, location);
|
||||
else
|
||||
{
|
||||
stub = gogo->start_function(name, stub_type, false,
|
||||
stub = gogo->start_function(stub_name, stub_type, false,
|
||||
fntype->location());
|
||||
Type::build_one_stub_method(gogo, m, buf, stub_params,
|
||||
fntype->is_varargs(), location);
|
||||
|
|
|
@ -74,6 +74,8 @@ callback (void *data, uintptr_t pc, const char *filename, int lineno,
|
|||
p = __builtin_strrchr (function, '$');
|
||||
if (p != NULL && __builtin_strcmp(p, "$recover") == 0)
|
||||
return 0;
|
||||
if (p != NULL && __builtin_strncmp(p, "$stub", 5) == 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (arg->skip > 0)
|
||||
|
|
Loading…
Add table
Reference in a new issue