0.8.7.12:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 9 Jan 2004 10:44:55 +0000 (10:44 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 9 Jan 2004 10:44:55 +0000 (10:44 +0000)
Merge patch (Eric Marsden sbcl-devel 2004-01-08) for build on
PPC/Linux
... less fragile than my version, so in it goes

src/runtime/ppc-linux-os.c
tools-for-build/where-is-mcontext.c
version.lisp-expr

index c4a30f6..86c2bae 100644 (file)
@@ -53,7 +53,7 @@ os_context_register_addr(os_context_t *context, int offset)
 #if defined(GLIBC231_STYLE_UCONTEXT)
     return &((context->uc_mcontext.regs)->gpr[offset]);
 #elif defined(GLIBC232_STYLE_UCONTEXT)
-    return &((context->uc_regs->gregs)[offset]);
+    return &((context->uc_mcontext.uc_regs->gregs)[offset]);
 #endif
 }
 
@@ -63,7 +63,7 @@ os_context_pc_addr(os_context_t *context)
 #if defined(GLIBC231_STYLE_UCONTEXT)
     return &((context->uc_mcontext.regs)->nip);
 #elif defined(GLIBC232_STYLE_UCONTEXT)
-    return &((context->uc_regs->gregs)[PT_NIP]);
+    return &((context->uc_mcontext.uc_regs->gregs)[PT_NIP]);
 #endif
 }
 
@@ -73,7 +73,7 @@ os_context_lr_addr(os_context_t *context)
 #if defined(GLIBC231_STYLE_UCONTEXT)
     return &((context->uc_mcontext.regs)->link);
 #elif defined(GLIBC232_STYLE_UCONTEXT)
-    return &((context->uc_regs->gregs)[PT_LNK]);
+    return &((context->uc_mcontext.uc_regs->gregs)[PT_LNK]);
 #endif
 }
 
@@ -83,7 +83,7 @@ os_context_sigmask_addr(os_context_t *context)
 #if defined(GLIBC231_STYLE_UCONTEXT)
     return &context->uc_sigmask;
 #elif defined(GLIBC232_STYLE_UCONTEXT)
-    return &context->uc_oldsigmask;
+    return &context->uc_sigmask;
 #endif
 }
 
@@ -98,7 +98,7 @@ os_context_fp_control(os_context_t *context)
 #if defined(GLIBC231_STYLE_UCONTEXT)
     return context->uc_mcontext.regs->gpr[PT_FPSCR]; 
 #elif defined(GLIBC232_STYLE_UCONTEXT)
-    return context->uc_regs->gregs[PT_FPSCR]; 
+    return context->uc_mcontext.uc_regs->gregs[PT_FPSCR]; 
 #endif
 }
 
index 7754111..cfe6e14 100644 (file)
@@ -38,15 +38,10 @@ int main (int argc, char *argv[]) {
 #ifndef PPC_LINUX_MCONTEXT_H\n\
 #define PPC_LINUX_MCONTEXT_H\n\n");
 
-    switch (offsetof(ucontext_t,uc_mcontext)) {
-    case 192:
+    if (offsetof(ucontext_t,uc_mcontext) > 40) {
        printf("#define GLIBC232_STYLE_UCONTEXT\n\n");
-       break;
-    case 20:
+    } else {
        printf("#define GLIBC231_STYLE_UCONTEXT\n\n");
-       break;
-    default:
-       printf("#error \"Unknown PPC/Linux ucontext layout\"\n\n");
     }
     printf("\
 #endif /* PPC_LINUX_MCONTEXT_H */\n");
index 6248ab0..8654696 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.7.11"
+"0.8.7.12"