diff options
author | 2004-10-16 05:47:27 +0000 | |
---|---|---|
committer | 2004-10-16 05:47:27 +0000 | |
commit | 411cae945cbab163cce987037ba7489799e4db55 (patch) | |
tree | c51c9ffe4d83fbfa23334a4b997d396a8c2d0f26 /dev-libs/libsigsegv/files | |
parent | version bump, closes #67662. (diff) | |
download | historical-411cae945cbab163cce987037ba7489799e4db55.tar.gz historical-411cae945cbab163cce987037ba7489799e4db55.tar.bz2 historical-411cae945cbab163cce987037ba7489799e4db55.zip |
Added patch and keyword for ~ppc-macos
Diffstat (limited to 'dev-libs/libsigsegv/files')
-rw-r--r-- | dev-libs/libsigsegv/files/libsigsegv-2.1-darwin-7.x.patch | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/dev-libs/libsigsegv/files/libsigsegv-2.1-darwin-7.x.patch b/dev-libs/libsigsegv/files/libsigsegv-2.1-darwin-7.x.patch new file mode 100644 index 000000000000..2637421adb45 --- /dev/null +++ b/dev-libs/libsigsegv/files/libsigsegv-2.1-darwin-7.x.patch @@ -0,0 +1,106 @@ +--- /var/tmp/portage/libsigsegv-2.1/work/libsigsegv-2.1/configure Thu Aug 21 21:27:56 2003 ++++ configure Mon Aug 9 19:54:50 2004 +@@ -10986,9 +10986,9 @@ + + #include <signal.h> + #include "$srcdir/src/fault-macos-powerpc.c" +-void sigsegv_handler (int sig, int code, struct sigcontext *scp) ++void sigsegv_handler (int sig, siginfo_t *sip, struct sigcontext *scp) + { +- void *fault_address = (void *) (get_fault_addr (scp)); ++ void *fault_address = (void *) (get_fault_addr (scp, sip->si_addr)); + } + + int +@@ -11037,6 +11037,7 @@ + #if HAVE_SYS_SIGNAL_H + # include <sys/signal.h> + #endif ++#include <sys/ucontext.h> + #include "$srcdir/src/fault-macos-powerpc.c" + #include <sys/types.h> + #include <sys/mman.h> +@@ -11061,9 +11062,9 @@ + #endif + unsigned long page; + int handler_called = 0; +-void sigsegv_handler (int sig, int code, struct sigcontext *scp) ++void sigsegv_handler (int sig, siginfo_t *sip, struct sigcontext *scp) + { +- void *fault_address = (void *) (get_fault_addr (scp)); ++ void *fault_address = (void *) (get_fault_addr (scp, sip->si_addr)); + handler_called++; + if (handler_called == 10) + exit (4); +@@ -11102,7 +11103,7 @@ + sigemptyset(&action.sa_mask); + + action.sa_handler = (void (*) (int)) &sigsegv_handler; +- action.sa_flags = 0; ++ action.sa_flags = SA_SIGINFO; + + sigaction (SIGSEGV, &action, (struct sigaction *) NULL); + sigaction (SIGBUS, &action, (struct sigaction *) NULL); +--- /var/tmp/portage/libsigsegv-2.1/work/libsigsegv-2.1/src/fault-macos-powerpc.c Mon Sep 30 20:46:54 2002 ++++ fault-macos-powerpc.c Mon Aug 9 19:58:53 2004 +@@ -31,10 +31,11 @@ + #define EXTRACT_DISP(iw) ((short *) &(iw))[1] + + static void * +-get_fault_addr (struct sigcontext *scp) ++get_fault_addr (struct sigcontext *scp,unsigned int *ir) + { +- unsigned int instr = *((unsigned int *) scp->sc_ir); +- unsigned int *regs = &((unsigned int *) scp->sc_regs)[2]; ++ unsigned int instr = *ir; ++ unsigned int *regs = & ((struct ucontext *)scp)->uc_mcontext->ss.r0 ; ++ + int disp = 0; + int tmp; + unsigned int baseA = 0; +@@ -42,6 +43,7 @@ + unsigned int addr; + unsigned int alignmask = 0xFFFFFFFF; + ++ + switch (EXTRACT_OP1 (instr)) + { + case 38: /* stb */ +@@ -56,8 +58,10 @@ + case 36: /* stw */ + case 37: /* stwu */ + tmp = EXTRACT_REGA (instr); ++ ++ + if (tmp > 0) +- baseA = regs[tmp]; ++ baseA = regs[tmp]; + disp = EXTRACT_DISP (instr); + break; + case 31: +@@ -120,5 +124,6 @@ + + addr = (baseA + baseB) + disp; + addr &= alignmask; ++ + return (void *) addr; + } +--- /var/tmp/portage/libsigsegv-2.1/work/libsigsegv-2.1/src/fault-macos-powerpc.h Thu Apr 3 06:56:20 2003 ++++ fault-macos-powerpc.h Mon Aug 9 20:17:16 2004 +@@ -15,12 +15,14 @@ + along with this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + ++#include <sys/ucontext.h> + #include "fault-macos-powerpc.c" + +-#define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp +-#define SIGSEGV_FAULT_ADDRESS (unsigned long) get_fault_addr (scp) ++#define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, struct sigcontext *scp ++#define SIGSEGV_FAULT_ADDRESS (unsigned long) get_fault_addr (scp, sip->si_addr) + #define SIGSEGV_FAULT_CONTEXT scp + #if 0 + #define SIGSEGV_FAULT_STACKPOINTER (&((unsigned int *) scp->sc_regs)[2])[1] + #endif + #define SIGSEGV_FAULT_STACKPOINTER (scp->sc_regs ? ((unsigned int *) scp->sc_regs)[3] : scp->sc_sp) ++#define SIGSEGV_FAULT_ADDRESS_FROM_SIGINFO |