* Build fix on Leopard (10.5) thanks to Sidney Markowitz
* Finally remove obsolete G5 sigcontext fix as 10.2 is totally old
(values
(or (gethash extern table)
(gethash (concatenate 'base-string
(values
(or (gethash extern table)
(gethash (concatenate 'base-string
- #!+(and darwin (or x86 x86-64)) "_ldso_stub__"
- #!-(and darwin (or x86 x86-64)) "ldso_stub__"
+ #!+(and darwin (or x86 x86-64 ppc)) "_ldso_stub__"
+ #!-(and darwin (or x86 x86-64 ppc)) "ldso_stub__"
extern) table)))))
(defun find-foreign-symbol-address (name)
extern) table)))))
(defun find-foreign-symbol-address (name)
if (!maybe_gc(context)) {
interrupt_handle_now(signal, siginfo, context);
}
if (!maybe_gc(context)) {
interrupt_handle_now(signal, siginfo, context);
}
-#if defined(LISP_FEATURE_DARWIN)
- /* Work around G5 bug; fix courtesy gbyers */
- DARWIN_FIX_CONTEXT(context);
-#endif
if (!cheneygc_handle_wp_violation(context, addr))
if (!handle_guard_page_triggered(context, addr))
interrupt_handle_now(signal, info, context);
if (!cheneygc_handle_wp_violation(context, addr))
if (!handle_guard_page_triggered(context, addr))
interrupt_handle_now(signal, info, context);
- /* Work around G5 bug; fix courtesy gbyers */
- DARWIN_FIX_CONTEXT(context);
if(!maybe_defer_handler(interrupt_handle_now,data,signal,info,context))
interrupt_handle_now(signal, info, context);
if(!maybe_defer_handler(interrupt_handle_now,data,signal,info,context))
interrupt_handle_now(signal, info, context);
-
-#ifdef LISP_FEATURE_DARWIN
- DARWIN_FIX_CONTEXT(context);
-#endif
if(!maybe_defer_handler(low_level_interrupt_handle_now,data,
signal,info,context))
low_level_interrupt_handle_now(signal, info, context);
if(!maybe_defer_handler(low_level_interrupt_handle_now,data,
signal,info,context))
low_level_interrupt_handle_now(signal, info, context);
-
-#ifdef LISP_FEATURE_DARWIN
- DARWIN_FIX_CONTEXT(context);
-#endif
os_restore_fp_control(context);
#endif
interrupt_handle_now(signal, info, context);
os_restore_fp_control(context);
#endif
interrupt_handle_now(signal, info, context);
-#ifdef LISP_FEATURE_DARWIN
- DARWIN_FIX_CONTEXT(context);
-#endif
}
/* manipulate the signal context and stack such that when the handler
}
/* manipulate the signal context and stack such that when the handler
if (allocation_trap_p(context)) {
handle_allocation_trap(context);
arch_skip_instruction(context);
if (allocation_trap_p(context)) {
handle_allocation_trap(context);
arch_skip_instruction(context);
-#ifdef LISP_FEATURE_DARWIN
- DARWIN_FIX_CONTEXT(context);
-#endif
/* twllei reg_ZERO,N will always trap if reg_ZERO = 0 */
int trap = code & 0x1f;
handle_trap(context,trap);
/* twllei reg_ZERO,N will always trap if reg_ZERO = 0 */
int trap = code & 0x1f;
handle_trap(context,trap);
-
-#ifdef LISP_FEATURE_DARWIN
- DARWIN_FIX_CONTEXT(context);
-#endif
return;
}
if (((code >> 26) == 3) && (((code >> 21) & 31) == 24)) {
interrupt_internal_error(context, 0);
return;
}
if (((code >> 26) == 3) && (((code >> 21) & 31) == 24)) {
interrupt_internal_error(context, 0);
-#ifdef LISP_FEATURE_DARWIN
- DARWIN_FIX_CONTEXT(context);
-#endif
return;
}
interrupt_handle_now(signal, (siginfo_t *)code, context);
return;
}
interrupt_handle_now(signal, (siginfo_t *)code, context);
-#ifdef LISP_FEATURE_DARWIN
- /* Work around G5 bug */
- DARWIN_FIX_CONTEXT(context);
-#endif
os_context_register_t *
os_context_register_addr(os_context_t *context, int offset)
{
os_context_register_t *
os_context_register_addr(os_context_t *context, int offset)
{
- ppc_saved_state_t *state = &context->uc_mcontext->ss;
+ ppc_ss_struct_t *state = &context->uc_mcontext->PPC_DARWIN_REGIFY(ss);
- return (os_context_register_t *) &state->r0;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r0);
- return (os_context_register_t *) &state->r1;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r1);
- return (os_context_register_t *) &state->r2;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r2);
- return (os_context_register_t *) &state->r3;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r3);
- return (os_context_register_t *) &state->r4;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r4);
- return (os_context_register_t *) &state->r5;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r5);
- return (os_context_register_t *) &state->r6;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r6);
- return (os_context_register_t *) &state->r7;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r7);
- return (os_context_register_t *) &state->r8;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r8);
- return (os_context_register_t *) &state->r9;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r9);
- return (os_context_register_t *) &state->r10;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r10);
- return (os_context_register_t *) &state->r11;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r11);
- return (os_context_register_t *) &state->r12;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r12);
- return (os_context_register_t *) &state->r13;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r13);
- return (os_context_register_t *) &state->r14;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r14);
- return (os_context_register_t *) &state->r15;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r15);
- return (os_context_register_t *) &state->r16;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r16);
- return (os_context_register_t *) &state->r17;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r17);
- return (os_context_register_t *) &state->r18;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r18);
- return (os_context_register_t *) &state->r19;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r19);
- return (os_context_register_t *) &state->r20;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r20);
- return (os_context_register_t *) &state->r21;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r21);
- return (os_context_register_t *) &state->r22;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r22);
- return (os_context_register_t *) &state->r23;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r23);
- return (os_context_register_t *) &state->r24;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r24);
- return (os_context_register_t *) &state->r25;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r25);
- return (os_context_register_t *) &state->r26;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r26);
- return (os_context_register_t *) &state->r27;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r27);
- return (os_context_register_t *) &state->r28;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r28);
- return (os_context_register_t *) &state->r29;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r29);
- return (os_context_register_t *) &state->r30;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r30);
- return (os_context_register_t *) &state->r31;
+ return (os_context_register_t *) &state->PPC_DARWIN_REGIFY(r31);
- return (os_context_register_t *) &context->uc_mcontext->es.dar;
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(es).PPC_DARWIN_REGIFY(dar);
- return (os_context_register_t *) &context->uc_mcontext->es.dsisr;
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(es).PPC_DARWIN_REGIFY(dsisr);
default:
lose("bad offset to os_context_register_addr");
}
default:
lose("bad offset to os_context_register_addr");
}
os_context_register_t *
os_context_lr_addr(os_context_t *context)
{
os_context_register_t *
os_context_lr_addr(os_context_t *context)
{
- return (os_context_register_t *) &context->uc_mcontext->ss.lr;
+ return (os_context_register_t *) &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(lr);
}
os_context_register_t *
os_context_pc_addr(os_context_t *context)
{
}
os_context_register_t *
os_context_pc_addr(os_context_t *context)
{
- return &context->uc_mcontext->ss.srr0;
+ return &context->uc_mcontext->PPC_DARWIN_REGIFY(ss).PPC_DARWIN_REGIFY(srr0);
{
return (os_context_t *) *void_context;
}
{
return (os_context_t *) *void_context;
}
+/* As of XCode 3.0, the field names for the thread state have changed
+ * and now are prepended with __. Use some #define hackery to deal
+ * with this. MAC_OS_X_VERSION_10_5 seems to be a good test to see if
+ * we need the new style field names.
+ */
+#if MAC_OS_X_VERSION_10_5
+
+#define PPC_DARWIN_REGIFY(foo) __ ## foo
+
+typedef ppc_thread_state_t ppc_ss_struct_t;
+
+#else
+
+#define PPC_DARWIN_REGIFY(foo) foo
+
+typedef ppc_saved_state_t ppc_ss_struct_t;
+
+#endif /* MAC_OS_X_VERSION_10_5 */
-#define DARWIN_FIX_CONTEXT(c) (c->uc_mcontext->ss.xer)^=0x80;
#endif /* _PPC_DARWIN_OS_H */
#endif /* _PPC_DARWIN_OS_H */
#else
#define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->ss.stem
#endif
#else
#define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->ss.stem
#endif
-#define DARWIN_FIX_CONTEXT(context)
#endif /* _X86_64_DARWIN_OS_H */
#endif /* _X86_64_DARWIN_OS_H */
void set_data_desc_size(data_desc_t* desc, unsigned long size);
void set_data_desc_addr(data_desc_t* desc, void* addr);
void set_data_desc_size(data_desc_t* desc, unsigned long size);
void set_data_desc_addr(data_desc_t* desc, void* addr);
-#define DARWIN_FIX_CONTEXT(context)
-
/* As of XCode 3.0, the field names for the thread state have changed
* and now are prepended with __. Use some #define hackery to deal
* with this. MAC_OS_X_VERSION_10_5 seems to be a good test to see if
/* As of XCode 3.0, the field names for the thread state have changed
* and now are prepended with __. Use some #define hackery to deal
* with this. MAC_OS_X_VERSION_10_5 seems to be a good test to see if
#!+(and darwin ppc) "
#define LDSO_STUBIFY(fct) @\\
.text @\\
#!+(and darwin ppc) "
#define LDSO_STUBIFY(fct) @\\
.text @\\
-.globl ldso_stub___ ## fct @\\
-ldso_stub___ ## fct: @\\
+.globl _ldso_stub___ ## fct @\\
+_ldso_stub___ ## fct: @\\
b ldso_stub__ ## fct ## stub @\\
.symbol_stub ldso_stub__ ## fct ## stub: @\\
.indirect_symbol _ ## fct @\\
b ldso_stub__ ## fct ## stub @\\
.symbol_stub ldso_stub__ ## fct ## stub: @\\
.indirect_symbol _ ## fct @\\
;;; 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".)
;;; 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".)