summaryrefslogtreecommitdiff
path: root/system/gcc/342-gccgo-more-unwinding.patch
blob: 7f059b4dcef08614de1e8a54a94370fd81e2ee62 (plain) (blame)
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;