1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
The fix for #832 was incomplete. Since we strip libgo.so, filename is
always NULL. This caused the unwinder to continue through
runtime_mstart which caused the same issue.
--- gcc-8.5.0/libgo/runtime/go-callers.c.old 2023-01-01 17:56:27.302982459 -0600
+++ gcc-8.5.0/libgo/runtime/go-callers.c 2023-01-01 17:58:00.612903483 -0600
@@ -118,27 +118,11 @@
if (function != NULL)
{
if (__builtin_strcmp (function, "makecontext") == 0
- || __builtin_strcmp (function, "libucontext_makecontext") == 0)
+ || __builtin_strcmp (function, "libucontext_makecontext") == 0
+ || __builtin_strcmp (function, "runtime_mstart") == 0
+ || __builtin_strcmp (function, "runtime.kickoff") == 0
+ || __builtin_strcmp (function, "runtime.main") == 0)
return 1;
- if (filename != NULL)
- {
- const char *p;
-
- p = strrchr (filename, '/');
- if (p == NULL)
- p = filename;
- if (__builtin_strcmp (p, "/proc.c") == 0)
- {
- if (__builtin_strcmp (function, "runtime_mstart") == 0)
- return 1;
- }
- else if (__builtin_strcmp (p, "/proc.go") == 0)
- {
- if (__builtin_strcmp (function, "runtime.kickoff") == 0
- || __builtin_strcmp (function, "runtime.main") == 0)
- return 1;
- }
- }
}
return arg->index >= arg->max;
|