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