Merged in a bunch of patches that I got as reaction to the 3.99 release.
See the ChangeLog for details
diff --git a/signal.c b/signal.c
index 39db0b0..23cb4c8 100644
--- a/signal.c
+++ b/signal.c
@@ -48,7 +48,9 @@
#endif /* SVR4 */
#ifdef LINUX
+#ifndef __GLIBC__
#include <linux/ptrace.h>
+#endif
#ifdef HAVE_ASM_SIGCONTEXT_H
#include <asm/sigcontext.h>
#ifdef SPARC
@@ -85,7 +87,7 @@
};
#else /* !I386 */
#ifdef M68K
-struct sigcontext_struct
+struct sigcontext
{
unsigned long sc_mask;
unsigned long sc_usp;
@@ -216,7 +218,7 @@
return signalent[sig];
#ifdef SIGRTMIN
} else if (sig >= __SIGRTMIN && sig <= __SIGRTMAX) {
- sprintf(buf, "SIGRT_%d", sig - __SIGRTMIN);
+ sprintf(buf, "SIGRT_%ld", (long)(sig - __SIGRTMIN));
return buf;
#endif /* SIGRTMIN */
} else {
@@ -336,7 +338,7 @@
char buf[1024];
char *s;
int i;
- int signalled, blocked, ignored, caught;
+ unsigned int signalled, blocked, ignored, caught;
/* This is incredibly costly but it's worth it. */
sprintf(sname, "/proc/%d/stat", tcp->pid);
@@ -357,7 +359,7 @@
break;
}
}
- if (sscanf(s, "%d%d%d%d",
+ if (sscanf(s, "%u%u%u%u",
&signalled, &blocked, &ignored, &caught) != 4) {
fprintf(stderr, "/proc/pid/stat format error\n");
return 1;
@@ -561,6 +563,11 @@
unsigned long sa_flags;
void (*sa_restorer)(void);
};
+#define SA_HANDLER __sa_handler
+#endif /* LINUX */
+
+#ifndef SA_HANDLER
+#define SA_HANDLER sa_handler
#endif
int
@@ -589,7 +596,7 @@
else if (umove(tcp, addr, &sa) < 0)
tprintf("{...}");
else {
- switch ((long) sa.__sa_handler) {
+ switch ((long) sa.SA_HANDLER) {
case (long) SIG_ERR:
tprintf("{SIG_ERR}");
break;
@@ -612,7 +619,7 @@
kill(tcp->pid, SIGSTOP);
}
#endif /* !SVR4 */
- tprintf("{%#lx, ", (long) sa.__sa_handler);
+ tprintf("{%#lx, ", (long) sa.SA_HANDLER);
long_to_sigset(sa.sa_mask, &sigset);
printsigmask(&sigset, 0);
tprintf(", ");
@@ -723,7 +730,7 @@
#else /* !POWERPC */
#ifdef M68K
long usp;
- struct sigcontext_struct sc;
+ struct sigcontext sc;
if (entering(tcp)) {
tcp->u_arg[0] = 0;