From 424c9964a00665d81e312dd47ce477c95fc0abf7 Mon Sep 17 00:00:00 2001
From: rtoy <rtoy>
Date: Wed, 17 Dec 2008 12:42:30 +0000
Subject: [PATCH] Fix tracing on Darwin.  The jmp instruction at the beginning
 of function_end_breakpoint_guts needs to be two bytes long but the assembler
 was using a five byte version.

---
 lisp/x86-assem.S | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/lisp/x86-assem.S b/lisp/x86-assem.S
index f322cc747..f5107b9a7 100644
--- a/lisp/x86-assem.S
+++ b/lisp/x86-assem.S
@@ -1,6 +1,6 @@
 ### x86-assem.S -*- Mode: Asm; -*-
 /**
- * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-assem.S,v 1.30 2008/11/12 15:04:25 rtoy Exp $
+ * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-assem.S,v 1.31 2008/12/17 12:42:30 rtoy Exp $
  *
  * Authors:	Paul F. Werkowski <pw@snoopy.mv.com>
  *		Douglas T. Crosher
@@ -273,7 +273,20 @@ ENDFUNC(closure_tramp)
  */
 FUNCDEF(function_end_breakpoint_guts)
 	/* Multiple Value return */
+#ifndef DARWIN
 	jmp	multiple_value_return
+#else
+	/* 
+	 * Darwin's assembler is too stupid to make the above
+	 * instruction a two-byte instruction and I (rtoy) am too
+	 * stupid to figure out how to get Darwin's assembler
+	 * to do it either.  Hence hardwire
+	 * the instruction explicitly.  This jmp instruction MUST be a two-byte
+	 * instruction for this to work correctly!
+	 */
+	.byte	0xeb
+	.byte	0x14
+#endif	
 	/* Single value return: The eventual return will now use the
 	   multiple values return convention but with a return values
 	   count of one. */
-- 
GitLab