diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-02-03 06:54:41 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2016-02-03 06:54:41 +0000 |
commit | 06caa02ccf41c3d32fb9e4cb91ebbd2daeda40ce (patch) | |
tree | c9fbab9c042a0361d5e78a65eee1132843133999 | |
parent | e2bd26b72289a01eed0248a80abb5fb3687497d4 (diff) | |
download | gcc-06caa02ccf41c3d32fb9e4cb91ebbd2daeda40ce.zip gcc-06caa02ccf41c3d32fb9e4cb91ebbd2daeda40ce.tar.gz gcc-06caa02ccf41c3d32fb9e4cb91ebbd2daeda40ce.tar.bz2 |
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
-rw-r--r-- | gcc/go/gofrontend/MERGE | 2 | ||||
-rw-r--r-- | gcc/go/gofrontend/types.cc | 5 | ||||
-rw-r--r-- | libgo/runtime/go-callers.c | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 3fb2a3e..4f095c4 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -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. diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index c43d064..0443281 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -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); diff --git a/libgo/runtime/go-callers.c b/libgo/runtime/go-callers.c index b5ab3be..0c1c603 100644 --- a/libgo/runtime/go-callers.c +++ b/libgo/runtime/go-callers.c @@ -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) |