diff options
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.dpatch | 65 |
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 | |||
| 6 | dir= | ||
| 7 | if [ $# -eq 3 -a "$2" = '-d' ]; then | ||
| 8 | pdir="-d $3" | ||
| 9 | dir="$3/" | ||
| 10 | elif [ $# -ne 1 ]; then | ||
| 11 | echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" | ||
| 12 | exit 1 | ||
| 13 | fi | ||
| 14 | case "$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 | ||
| 26 | esac | ||
| 27 | exit 0 | ||
| 28 | |||
| 29 | --- | ||
| 30 | libjava/sysdep/generic/backtrace.h | 17 +++++++++++++++++ | ||
| 31 | 1 file changed, 17 insertions(+) | ||
| 32 | |||
| 33 | Index: 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 | ||
