[mingw32-libsigsegv/f13/master] Initial Import (#641726)

Paolo Bonzini bonzini at fedoraproject.org
Wed Oct 13 15:37:48 UTC 2010


commit a3b675424e3310deb064c435d1d7000bcbcc9c62
Author: Paolo Bonzini <pbonzini at redhat.com>
Date:   Wed Oct 13 17:37:40 2010 +0200

    Initial Import (#641726)

 .gitignore                   |    1 +
 libsigsegv-2.6-mystack.patch |  112 ++++++++++++++++++++++++++++++++++++++++++
 mingw32-libsigsegv.spec      |   66 +++++++++++++++++++++++++
 sources                      |    1 +
 4 files changed, 180 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..1515a68 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/libsigsegv-2.6.tar.gz
diff --git a/libsigsegv-2.6-mystack.patch b/libsigsegv-2.6-mystack.patch
new file mode 100644
index 0000000..d69f558
--- /dev/null
+++ b/libsigsegv-2.6-mystack.patch
@@ -0,0 +1,112 @@
+From 4f14ef87b2fba9718c1a88b9ed9ca7ba111d60da Mon Sep 17 00:00:00 2001
+From: Paolo Bonzini <pbonzini at redhat.com>
+Date: Tue, 22 Sep 2009 08:10:43 +0000
+Subject: Fix crash of stackoverflow2 on x86_64-linux.
+
+---
+diff --git a/src/sigsegv.h.in b/src/sigsegv.h.in
+index 85f337d..6b8e4c7 100644
+--- a/src/sigsegv.h.in
++++ b/src/sigsegv.h.in
+@@ -121,9 +121,11 @@ typedef void (*stackoverflow_handler_t) (int emergency, stackoverflow_context_t
+ /*
+  * Installs a stack overflow handler.
+  * The extra_stack argument is a pointer to a pre-allocated area used as a
+- * stack for executing the handler. It is typically allocated by use of
+- * `alloca' during `main'. Its size should be sufficiently large.
+- * The following code determines an appropriate size:
++ * stack for executing the handler. It typically comes from a static variable
++ * or from heap-allocated memoty; placing it on the main stack may fail on
++ * some operating systems.
++ * Its size, passed in extra_stack_size, should be sufficiently large.  The
++ * following code determines an appropriate size:
+  *   #include <signal.h>
+  *   #ifndef SIGSTKSZ         / * glibc defines SIGSTKSZ for this purpose * /
+  *   # define SIGSTKSZ 16384  / * on most platforms, 16 KB are sufficient * /
+diff --git a/tests/stackoverflow1.c b/tests/stackoverflow1.c
+index 0970e79..23eff58 100644
+--- a/tests/stackoverflow1.c
++++ b/tests/stackoverflow1.c
+@@ -88,12 +88,13 @@ recurse (volatile int n)
+   return *recurse_1 (n, &n);
+ }
+ 
++/* glibc says: Users should use SIGSTKSZ as the size of user-supplied
++   buffers.  */
++char mystack[2 * SIGSTKSZ];
++
+ int
+ main ()
+ {
+-  /* glibc says: Users should use SIGSTKSZ as the size of user-supplied
+-     buffers.  */
+-  char mystack[SIGSTKSZ];
+   sigset_t emptyset;
+ 
+ #if HAVE_SETRLIMIT && defined RLIMIT_STACK
+diff --git a/tests/stackoverflow2.c b/tests/stackoverflow2.c
+index 2475bf2..4a07c66 100644
+--- a/tests/stackoverflow2.c
++++ b/tests/stackoverflow2.c
+@@ -109,12 +109,13 @@ recurse (volatile int n)
+   return *recurse_1 (n, &n);
+ }
+ 
++/* glibc says: Users should use SIGSTKSZ as the size of user-supplied
++   buffers.  */
++char mystack[2 * SIGSTKSZ];
++
+ int
+ main ()
+ {
+-  /* glibc says: Users should use SIGSTKSZ as the size of user-supplied
+-     buffers.  */
+-  char mystack[SIGSTKSZ];
+   sigset_t emptyset;
+   void *p;
+ 
+--
+cgit v0.8.2.1
+diff -up libsigsegv-2.6/m4/sigaltstack-longjmp.m4.stack2 libsigsegv-2.6/m4/sigaltstack-longjmp.m4
+--- libsigsegv-2.6/m4/sigaltstack-longjmp.m4.stack2	2008-08-24 15:40:16.000000000 -0500
++++ libsigsegv-2.6/m4/sigaltstack-longjmp.m4	2009-09-22 13:26:07.552664938 -0500
+@@ -51,9 +51,9 @@ int recurse (volatile int n)
+   int sum = 0;
+   return *recurse_1 (n, &sum);
+ }
++char mystack[2 * SIGSTKSZ];
+ int main ()
+ {
+-  char mystack[SIGSTKSZ];
+   stack_t altstack;
+   struct sigaction action;
+   sigset_t emptyset;
+diff -up libsigsegv-2.6/m4/sigaltstack.m4.stack2 libsigsegv-2.6/m4/sigaltstack.m4
+--- libsigsegv-2.6/m4/sigaltstack.m4.stack2	2008-08-24 15:41:10.000000000 -0500
++++ libsigsegv-2.6/m4/sigaltstack.m4	2009-09-22 13:25:47.462666140 -0500
+@@ -71,9 +71,10 @@ int recurse (volatile int n)
+   int sum = 0;
+   return *recurse_1 (n, &sum);
+ }
++char mystack[2 * SIGSTKSZ];
++
+ int main ()
+ {
+-  char mystack[SIGSTKSZ];
+   stack_t altstack;
+   struct sigaction action;
+ #if defined HAVE_SETRLIMIT && defined RLIMIT_STACK
+diff -up libsigsegv-2.6/m4/sigaltstack-siglongjmp.m4.stack2 libsigsegv-2.6/m4/sigaltstack-siglongjmp.m4
+--- libsigsegv-2.6/m4/sigaltstack-siglongjmp.m4.stack2	2008-08-24 15:40:49.000000000 -0500
++++ libsigsegv-2.6/m4/sigaltstack-siglongjmp.m4	2009-09-22 13:26:43.994665249 -0500
+@@ -49,9 +49,9 @@ int recurse (volatile int n)
+   int sum = 0;
+   return *recurse_1 (n, &sum);
+ }
++char mystack[2 * SIGSTKSZ];
+ int main ()
+ {
+-  char mystack[SIGSTKSZ];
+   stack_t altstack;
+   struct sigaction action;
+ #ifdef __BEOS__
diff --git a/mingw32-libsigsegv.spec b/mingw32-libsigsegv.spec
new file mode 100644
index 0000000..853b9b1
--- /dev/null
+++ b/mingw32-libsigsegv.spec
@@ -0,0 +1,66 @@
+%global __strip %{_mingw32_strip}
+%global __objdump %{_mingw32_objdump}
+%global _use_internal_dependency_generator 0
+%global __find_requires %{_mingw32_findrequires}
+%global __find_provides %{_mingw32_findprovides}
+
+Summary: MinGW library for handling page faults in user mode
+Name:    mingw32-libsigsegv
+Version: 2.6
+Release: 1%{?dist}
+
+License: GPLv2+
+URL:     http://libsigsegv.sourceforge.net/
+Source0: http://ftp.gnu.org/gnu/libsigsegv/libsigsegv-%{version}.tar.gz
+Group:   System Environment/Libraries
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+## upstream patches
+# based on:
+# http://git.savannah.gnu.org/cgit/libsigsegv.git/patch/?id=4f14ef87b2fba9718c1a88b9ed9ca7ba111d60da
+# http://git.savannah.gnu.org/cgit/libsigsegv.git/patch/?id=54b612e978e26a52b5706272dabf84ed9d895fa7
+Patch100: libsigsegv-2.6-mystack.patch
+
+BuildArch:      noarch
+BuildRequires:  autoconf automake libtool
+BuildRequires:  mingw32-filesystem >= 56
+BuildRequires:  mingw32-binutils
+BuildRequires:  mingw32-gcc
+
+
+%description
+MinGW library for handling memory faults and stack overflows in user mode.
+
+%prep
+%setup -q -n libsigsegv-%{version}
+
+%patch100 -p1 -b .mystack
+autoreconf
+
+
+%build
+%{_mingw32_configure} --disable-static --enable-shared
+make %{?_smp_mflags}
+
+
+%install
+rm -rf %{buildroot} 
+make install DESTDIR=%{buildroot}
+
+
+%clean
+rm -rf %{buildroot} 
+
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS COPYING NEWS README
+%{_mingw32_bindir}/libsigsegv-0.dll
+%{_mingw32_libdir}/libsigsegv.la
+%{_mingw32_libdir}/libsigsegv.dll.a
+%{_mingw32_includedir}/*.h
+
+
+%changelog
+* Sat Oct 9 2010 Paolo Bonzini <pbonzini at redhat.com> - 2.6-1
+- Created.
diff --git a/sources b/sources
index e69de29..ea8ffe7 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+7e24993730649d13c6eabc28bd24de35  libsigsegv-2.6.tar.gz


More information about the scm-commits mailing list