Bruno Haible <br...@clisp.org> writes: > When you wrote to <bug-libsigsegv-antis...@antispam.gnu.org> you didn't remove > the "antispam" words from the address.
Jep normally I copy&paste from the website and don't loko at the result but expect it to just work >> Now I'm wondering of software depending on libsigsegv won't work on s390 >> or maybe the correct page is still enough information for dependencies >> like clisp to work -- in that case a "fix" would be rather easy. > > clisp (and probably other software too) will compile and work also when > the installed <sigsegv.h> file does not define HAVE_SIGSEGV_RECOVERY or > HAVE_STACK_OVERFLOW_RECOVERY. But the functionality will be a bit degraded. > For clisp, it means that generational GC will not be compiled into clisp > if HAVE_SIGSEGV_RECOVERY is not defined, and endless recursions may cause > a crash if HAVE_STACK_OVERFLOW_RECOVERY is not defined. OK that'll "work" untill we (maybe) get a better kernel. I guess it's preferred to just accepting a inexact address? Considering how to best build a fixed package. The 2 patches I'd consider attached. I'd prefer the first one at the moment. Regards Christoph
--- libsigsegv-2.9.orig/configure.ac +++ libsigsegv-2.9/configure.ac @@ -869,6 +872,9 @@ AC_CACHE_CHECK([if the system supports catching stack overflow], ;; esac fi + case "$host_cpu" in + *s390*) sv_cv_have_stack_overflow_recovery=no ;; + esac if test $sv_cv_have_stack_overflow_recovery = maybe; then if test -n "$CFG_FAULT"; then AC_EGREP_CPP([xyzzy], [
--- a/m4/fault.m4 +++ b/m4/fault.m4 @@ -51,7 +51,7 @@ void sigsegv_handler ($5) handler_called++; if (handler_called == 10) exit (4); - if (fault_address != (void*)(page + 0x678)) + if (fault_address != (void*)(page + 0x678) && fault_address != (void*)(page)) exit (3); if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0) exit (2); diff --git a/tests/sigsegv1.c b/tests/sigsegv1.c index ce00642..4bbe4da 100644 --- a/tests/sigsegv1.c +++ b/tests/sigsegv1.c @@ -37,7 +37,7 @@ handler (void *fault_address, int serious) handler_called++; if (handler_called > 10) abort (); - if (fault_address != (void *)(page + 0x678)) + if (fault_address != (void *)(page + 0x678) && fault_address != page) abort (); if (mprotect ((void *) page, 0x4000, PROT_READ_WRITE) == 0) return 1; diff --git a/tests/sigsegv3.c b/tests/sigsegv3.c index 1ea0ec4..da03f64 100644 --- a/tests/sigsegv3.c +++ b/tests/sigsegv3.c @@ -56,7 +56,7 @@ handler (void *fault_address, int serious) handler_called++; if (handler_called > 10) abort (); - if (fault_address != (void *)(page + 0x678 + 8 * pass)) + if (fault_address != (void *)(page + 0x678 + 8 * pass) && fault_address != page) abort (); pass++; printf ("Stack overflow %d caught.\n", pass);
-- 9FED 5C6C E206 B70A 5857 70CA 9655 22B9 D49A E731 Debian Developer | Lisp Hacker | CaCert Assurer A. Because it breaks the logical sequence of discussion Q. Why is top posting bad?
_______________________________________________ pkg-common-lisp-devel mailing list pkg-common-lisp-devel@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/pkg-common-lisp-devel