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;
|