summaryrefslogtreecommitdiff
path: root/debian/patches/libjava-armel-unwind.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/libjava-armel-unwind.diff')
-rw-r--r--debian/patches/libjava-armel-unwind.diff19
1 files changed, 19 insertions, 0 deletions
diff --git a/debian/patches/libjava-armel-unwind.diff b/debian/patches/libjava-armel-unwind.diff
new file mode 100644
index 0000000..12c78b3
--- /dev/null
+++ b/debian/patches/libjava-armel-unwind.diff
@@ -0,0 +1,19 @@
+# DP: On armel, apply kludge to fix unwinder infinitely looping 'til it runs out
+# DP: of memory (http://gcc.gnu.org/ml/java/2008-06/msg00010.html).
+
+---
+ libjava/stacktrace.cc | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+--- a/src/libjava/stacktrace.cc
++++ b/src/libjava/stacktrace.cc
+@@ -115,6 +115,9 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr)
+ // Check if the trace buffer needs to be extended.
+ if (pos == state->length)
+ {
++ // http://gcc.gnu.org/ml/java/2008-06/msg00010.html
++ return _URC_END_OF_STACK;
++
+ int newLength = state->length * 2;
+ void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame));
+ memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame));