summaryrefslogtreecommitdiffstats
path: root/meta/packages/gcc/gcc-4.3.1/debian/libjava-sjlj.dpatch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/gcc/gcc-4.3.1/debian/libjava-sjlj.dpatch')
-rw-r--r--meta/packages/gcc/gcc-4.3.1/debian/libjava-sjlj.dpatch65
1 files changed, 65 insertions, 0 deletions
diff --git a/meta/packages/gcc/gcc-4.3.1/debian/libjava-sjlj.dpatch b/meta/packages/gcc/gcc-4.3.1/debian/libjava-sjlj.dpatch
new file mode 100644
index 0000000000..95b4673b3f
--- /dev/null
+++ b/meta/packages/gcc/gcc-4.3.1/debian/libjava-sjlj.dpatch
@@ -0,0 +1,65 @@
1#! /bin/sh -e
2
3# DP: Don't try to use _Unwind_Backtrace on SJLJ targets.
4# DP: See bug #387875, #388505, GCC PR 29206.
5
6dir=
7if [ $# -eq 3 -a "$2" = '-d' ]; then
8 pdir="-d $3"
9 dir="$3/"
10elif [ $# -ne 1 ]; then
11 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
12 exit 1
13fi
14case "$1" in
15 -patch)
16 patch $pdir -f --no-backup-if-mismatch -p1 < $0
17 #cd ${dir}gcc && autoconf
18 ;;
19 -unpatch)
20 patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
21 #rm ${dir}gcc/configure
22 ;;
23 *)
24 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
25 exit 1
26esac
27exit 0
28
29---
30 libjava/sysdep/generic/backtrace.h | 17 +++++++++++++++++
31 1 file changed, 17 insertions(+)
32
33Index: src/libjava/sysdep/generic/backtrace.h
34===================================================================
35--- src.orig/libjava/sysdep/generic/backtrace.h 2006-11-06 14:00:32.000000000 -0500
36+++ src/libjava/sysdep/generic/backtrace.h 2006-11-06 14:04:38.000000000 -0500
37@@ -13,6 +13,20 @@ details. */
38
39 #include <java-stack.h>
40
41+#ifdef SJLJ_EXCEPTIONS
42+
43+#undef _Unwind_GetIPInfo
44+#define _Unwind_GetIPInfo(ctx,ip_before_insn) \
45+ (abort (), (void) (ctx), *ip_before_insn = 1, 0)
46+
47+#undef _Unwind_GetRegionStart
48+#define _Unwind_GetRegionStart(ctx) \
49+ (abort (), (void) (ctx), 0)
50+
51+#undef _Unwind_Backtrace
52+#define _Unwind_Backtrace(trace_fn,state_ptr) \
53+ (fallback_backtrace (trace_fn, state_ptr))
54+
55 /* Unwind through the call stack calling TRACE_FN with STATE for every stack
56 frame. Returns the reason why the unwinding was stopped. */
57 _Unwind_Reason_Code
58@@ -20,4 +34,7 @@ fallback_backtrace (_Unwind_Trace_Fn, _J
59 {
60 return _URC_NO_REASON;
61 }
62+
63+#endif /* SJLJ_EXCEPTIONS */
64+
65 #endif