summaryrefslogtreecommitdiff
path: root/libc/debian/patches/no-unwind.patch
blob: dad314fe51a25c395b0c0c0acd32909b25558fea (plain)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Description: hide _Unwind_RaiseException

 We don't use it, we use one from libgcc_s, but if
 libc is linked in before libgcc_s, like here:

 Dynamic Section:
  NEEDED               libstdc++.so.6
  NEEDED               libm.so.2
  NEEDED               libc.so.1
  NEEDED               libgcc_s.so.1
  INIT                 0x00000000004008b0

  We will have problems. Maybe there are other cases
  when _Unwind_RaiseException from libc is used.
  Visible effect of it: application crashes after any throw().

  With libgcc_s's _Unwind_RaiseException:

  (gdb) bt
    #0  0xfffffd7dc217ceaa in _lwp_kill () from /home/packaging/illumos/illumos-packaging/libc/debian/tmp/lib/x86_64-illumos/libc.so.1
    #1  0xfffffd7dc2173d09 in thr_kill (tid=<optimized out>, sig=sig@entry=6) at ../port/threads/thr.c:2163
    #2  0xfffffd7dc2119b49 in raise (sig=sig@entry=6) at ../port/gen/raise.c:46
    #3  0xfffffd7dc20f5938 in abort () at ../port/gen/abort.c:76
    #4  0xfffffd7fe8860c51 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #5  0xfffffd7fe885ddf9 in ?? () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #6  0xfffffd7fe885de61 in std::terminate() () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #7  0xfffffd7fe885e0fe in __cxa_rethrow () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #8  0xfffffd7fe8860c14 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #9  0xfffffd7fe885ddf9 in ?? () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #10 0xfffffd7fe885de61 in std::terminate() () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #11 0xfffffd7fe885e0a1 in __cxa_throw () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #12 0x0000000000400aee in main ()

  With libc's _Unwind_RaiseException:
  
  (gdb) bt
    #0  0x0000000000224e6d in ?? ()
    #1  0xfffffd7ffeebb6b7 in _Unwind_RaiseException_Body (exception_object=0x600f50, entry_ctx=0xfffffd7fffdfed40, phase=1) at ../amd64/unwind/unwind.c:301
    #2  0xfffffd7ffeebb892 in _Unwind_RaiseException (exception_object=0x600f50) at ../amd64/unwind/unwind.c:358
    #3  0xfffffd7ffea1072d in _Unwind_Resume_or_Rethrow () from /lib/x86_64-illumos/libgcc_s.so.1
    #4  0xfffffd7fe885e0f1 in __cxa_rethrow () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #5  0xfffffd7fe8860c14 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #6  0xfffffd7fe885ddf9 in ?? () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #7  0xfffffd7fe885ce69 in ?? () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #8  0xfffffd7fe885d609 in __gxx_personality_v0 () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #9  0xfffffd7ffeebb7cc in _Unwind_RaiseException_Body (exception_object=0x600f50, entry_ctx=0xfffffd7fffdff400, phase=6) at ../amd64/unwind/unwind.c:329
    #10 0xfffffd7ffeebb892 in _Unwind_RaiseException (exception_object=0x600f50) at ../amd64/unwind/unwind.c:358
    #11 0xfffffd7fe885e094 in __cxa_throw () from /usr/lib/x86_64-illumos/libstdc++.so.6
    #12 0x0000000000400aee in main ()


Index: b/usr/src/lib/libc/port/mapfile-vers
===================================================================
--- a/usr/src/lib/libc/port/mapfile-vers
+++ b/usr/src/lib/libc/port/mapfile-vers
@@ -980,17 +980,6 @@ $if amd64
 	_UA_FORCE_UNWIND;
 	_UA_HANDLER_FRAME;
 	_UA_SEARCH_PHASE;
-	_Unwind_DeleteException;
-	_Unwind_ForcedUnwind;
-	_Unwind_GetCFA;
-	_Unwind_GetGR;
-	_Unwind_GetIP;
-	_Unwind_GetLanguageSpecificData;
-	_Unwind_GetRegionStart;
-	_Unwind_RaiseException;
-	_Unwind_Resume;
-	_Unwind_SetGR;
-	_Unwind_SetIP;
 $endif
 } SUNW_1.21.3;