[cmucl-commit] [git] CMU Common Lisp branch master updated. snapshot-2011-12-27-gaa96ed2
Raymond Toy
rtoy at common-lisp.net
Wed Jan 4 17:24:54 UTC 2012
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via aa96ed2c3a137c91d1dc5b093c216dab9098f684 (commit)
via 746b693fcaf68942e81f54827f0567d2024fa2f2 (commit)
via fafec7a74c93e625837de704c17becfa21ec7929 (commit)
via 1c272796c2f8e55ed70efee07ab35eb123e15361 (commit)
via e5614137527de543e2db8a36acd2bd98d590bf4f (commit)
via 7219aff9de80f64693e962be53d6448a5006da17 (commit)
via d5c4bf02e10c67057084836549647879584d29bb (commit)
via 2a93478cc3f27b51eab5cf03a369c3be3198ecd7 (commit)
via 7760d6b885f7f40759bca5e9b0b9d77439c96a94 (commit)
via 7a6b43385b08db8414dbef6ebeea1a546fc07d54 (commit)
via 1f129c07172f4cb20e7b5bb5f81b751835cdf55d (commit)
via 926c825e22595b1a84bc8b506002cef5116a1156 (commit)
via 22a7242216b409ea56b0a5c511d92f2b4ce971ad (commit)
via 9de92cad019d1644556a9cc6e5108cf08f9dd4b7 (commit)
via 3cbda6ca17f8c0a0d5af99cbb4e7b79a9900bc09 (commit)
via ff6c7800a9daad265e8179497ccaca578d405ed9 (commit)
via b815e78622eaeef8487fb0f4d084c18f279b8e52 (commit)
from 771b7ee43d15c24563557b102ec15f466ece13cb (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit aa96ed2c3a137c91d1dc5b093c216dab9098f684
Author: Raymond Toy <rtoy at google.com>
Date: Wed Jan 4 09:19:58 2012 -0800
Get rid of more compiler warnings on Linux by making HANDLER_ARGS
match the sa_sigaction argument types. Adjust code appropriately to
use os_context_t appropriately too.
diff --git a/src/lisp/Linux-os.c b/src/lisp/Linux-os.c
index 20731e2..6c8f10f 100644
--- a/src/lisp/Linux-os.c
+++ b/src/lisp/Linux-os.c
@@ -406,18 +406,19 @@ sigsegv_handler_tramp(void)
void
sigsegv_handler(HANDLER_ARGS)
{
- int fault_addr = context->uc_mcontext.cr2;
+ os_context_t *os_context = (os_context_t *) context;
+ int fault_addr = os_context->uc_mcontext.cr2;
#ifdef RED_ZONE_HIT
- if (os_control_stack_overflow((void *) fault_addr, context))
+ if (os_control_stack_overflow((void *) fault_addr, os_context))
return;
#endif
if (gc_write_barrier(code->si_addr))
return;
#if defined(__x86_64)
- DPRINTF(0, (stderr, "sigsegv: rip: %p\n", context->uc_mcontext.gregs[REG_RIP]));
+ DPRINTF(0, (stderr, "sigsegv: rip: %p\n", os_context->uc_mcontext.gregs[REG_RIP]));
#else
- DPRINTF(0, (stderr, "sigsegv: eip: %x\n", context->uc_mcontext.gregs[REG_EIP]));
+ DPRINTF(0, (stderr, "sigsegv: eip: %x\n", os_context->uc_mcontext.gregs[REG_EIP]));
#endif
#ifdef RED_ZONE_HIT
@@ -427,13 +428,13 @@ sigsegv_handler(HANDLER_ARGS)
to the other stack. */
tramp_signal = signal;
tramp_code = *code;
- tramp_context = *context;
- SC_PC(context) = (unsigned long) sigsegv_handler_tramp;
+ tramp_context = *os_context;
+ SC_PC(os_context) = (unsigned long) sigsegv_handler_tramp;
return;
}
#endif
- sigsegv_handle_now(signal, code, context);
+ sigsegv_handle_now(signal, code, os_context);
}
#else
static void
diff --git a/src/lisp/Linux-os.h b/src/lisp/Linux-os.h
index 06acf3b..b00e454 100644
--- a/src/lisp/Linux-os.h
+++ b/src/lisp/Linux-os.h
@@ -44,7 +44,7 @@ typedef int os_vm_prot_t; /* like hpux */
void restore_fpu(ucontext_t *);
-#define HANDLER_ARGS int signal, siginfo_t *code, ucontext_t *context
+#define HANDLER_ARGS int signal, siginfo_t *code, void *context
#define CODE(code) ((code) ? code->si_code : 0)
#define RESTORE_FPU(context) restore_fpu(context)
diff --git a/src/lisp/interrupt.c b/src/lisp/interrupt.c
index 39a2d87..de17cee 100644
--- a/src/lisp/interrupt.c
+++ b/src/lisp/interrupt.c
@@ -406,7 +406,7 @@ interrupt_install_low_level_handler(int signal, void handler(HANDLER_ARGS))
{
struct sigaction sa;
- sa.sa_sigaction = handler;
+ sa.sa_sigaction = (void (*)(HANDLER_ARGS)) handler;
sigemptyset(&sa.sa_mask);
FILLBLOCKSET(&sa.sa_mask);
sa.sa_flags = SA_RESTART | SA_SIGINFO;
@@ -461,12 +461,12 @@ install_handler(int signal, void handler(HANDLER_ARGS))
if (interrupt_low_level_handlers[signal] == 0) {
if (handler == (void (*)(HANDLER_ARGS)) SIG_DFL
|| handler == (void (*)(HANDLER_ARGS)) SIG_IGN)
- sa.sa_sigaction = handler;
+ sa.sa_sigaction = (void (*)(HANDLER_ARGS)) handler;
else if (sigismember(&new, signal))
- sa.sa_sigaction = maybe_now_maybe_later;
+ sa.sa_sigaction = (void (*)(HANDLER_ARGS)) maybe_now_maybe_later;
else
- sa.sa_sigaction = interrupt_handle_now_handler;
-
+ sa.sa_sigaction = (void (*)(HANDLER_ARGS)) interrupt_handle_now_handler;
+
sigemptyset(&sa.sa_mask);
FILLBLOCKSET(&sa.sa_mask);
sa.sa_flags = SA_SIGINFO | SA_RESTART;
diff --git a/src/lisp/x86-arch.c b/src/lisp/x86-arch.c
index 474fb87..2932b13 100644
--- a/src/lisp/x86-arch.c
+++ b/src/lisp/x86-arch.c
@@ -278,11 +278,11 @@ void
sigtrap_handler(HANDLER_ARGS)
{
unsigned int trap;
-
+ os_context_t* os_context = (os_context_t *) context;
#if 0
fprintf(stderr, "x86sigtrap: %8x %x\n",
- SC_PC(context), *(unsigned char *) (SC_PC(context) - 1));
- fprintf(stderr, "sigtrap(%d %d %x)\n", signal, CODE(code), context);
+ SC_PC(os_os_context), *(unsigned char *) (SC_PC(os_context) - 1));
+ fprintf(stderr, "sigtrap(%d %d %x)\n", signal, CODE(code), os_context);
#endif
if (single_stepping && (signal == SIGTRAP)) {
@@ -292,7 +292,7 @@ sigtrap_handler(HANDLER_ARGS)
#ifdef SC_EFLAGS
/* Disable single-stepping */
- SC_EFLAGS(context) ^= 0x100;
+ SC_EFLAGS(os_context) ^= 0x100;
#else
/* Un-install single step helper instructions. */
*(single_stepping - 3) = single_step_save1;
@@ -304,7 +304,7 @@ sigtrap_handler(HANDLER_ARGS)
/*
* Re-install the breakpoint if possible.
*/
- if ((int) SC_PC(context) == (int) single_stepping + 1)
+ if ((int) SC_PC(os_context) == (int) single_stepping + 1)
fprintf(stderr, "* Breakpoint not re-install\n");
else {
char *ptr = (char *) single_stepping;
@@ -318,9 +318,9 @@ sigtrap_handler(HANDLER_ARGS)
}
/* This is just for info in case monitor wants to print an approx */
- current_control_stack_pointer = (unsigned long *) SC_SP(context);
+ current_control_stack_pointer = (unsigned long *) SC_SP(os_context);
- RESTORE_FPU(context);
+ RESTORE_FPU(os_context);
/*
* On entry %eip points just after the INT3 byte and aims at the
@@ -329,13 +329,13 @@ sigtrap_handler(HANDLER_ARGS)
* arguments to follow.
*/
- trap = *(unsigned char *) SC_PC(context);
+ trap = *(unsigned char *) SC_PC(os_context);
switch (trap) {
case trap_PendingInterrupt:
DPRINTF(0, (stderr, "<trap Pending Interrupt.>\n"));
- arch_skip_instruction(context);
- interrupt_handle_pending(context);
+ arch_skip_instruction(os_context);
+ interrupt_handle_pending(os_context);
break;
case trap_Halt:
@@ -345,59 +345,59 @@ sigtrap_handler(HANDLER_ARGS)
fpu_save(fpu_state);
#endif
- fake_foreign_function_call(context);
+ fake_foreign_function_call(os_context);
lose("%%primitive halt called; the party is over.\n");
- undo_fake_foreign_function_call(context);
+ undo_fake_foreign_function_call(os_context);
#ifndef __linux__
fpu_restore(fpu_state);
#endif
- arch_skip_instruction(context);
+ arch_skip_instruction(os_context);
break;
}
case trap_Error:
case trap_Cerror:
DPRINTF(0, (stderr, "<trap Error %x>\n", CODE(code)));
- interrupt_internal_error(signal, code, context, CODE(code) == trap_Cerror);
+ interrupt_internal_error(signal, code, os_context, CODE(code) == trap_Cerror);
break;
case trap_Breakpoint:
#if 0
fprintf(stderr, "*C break\n");
#endif
- SC_PC(context) -= 1;
+ SC_PC(os_context) -= 1;
- handle_breakpoint(signal, CODE(code), context);
+ handle_breakpoint(signal, CODE(code), os_context);
#if 0
fprintf(stderr, "*C break return\n");
#endif
break;
case trap_FunctionEndBreakpoint:
- SC_PC(context) -= 1;
- SC_PC(context) =
- (int) handle_function_end_breakpoint(signal, CODE(code), context);
+ SC_PC(os_context) -= 1;
+ SC_PC(os_context) =
+ (int) handle_function_end_breakpoint(signal, CODE(code), os_context);
break;
#ifdef trap_DynamicSpaceOverflowWarning
case trap_DynamicSpaceOverflowWarning:
interrupt_handle_space_overflow(SymbolFunction
(DYNAMIC_SPACE_OVERFLOW_WARNING_HIT),
- context);
+ os_context);
break;
#endif
#ifdef trap_DynamicSpaceOverflowError
case trap_DynamicSpaceOverflowError:
interrupt_handle_space_overflow(SymbolFunction
(DYNAMIC_SPACE_OVERFLOW_ERROR_HIT),
- context);
+ os_context);
break;
#endif
default:
DPRINTF(0,
(stderr, "[C--trap default %d %d %p]\n", signal, CODE(code),
- context));
- interrupt_handle_now(signal, code, context);
+ os_context));
+ interrupt_handle_now(signal, code, os_context);
break;
}
}
commit 746b693fcaf68942e81f54827f0567d2024fa2f2
Merge: fafec7a 771b7ee
Author: Raymond Toy <rtoy at google.com>
Date: Wed Jan 4 08:38:06 2012 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit fafec7a74c93e625837de704c17becfa21ec7929
Merge: 1c27279 f187450
Author: Raymond Toy <rtoy at google.com>
Date: Thu Dec 22 14:35:11 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 1c272796c2f8e55ed70efee07ab35eb123e15361
Merge: e561413 43c8a82
Author: Raymond Toy <rtoy at google.com>
Date: Thu Dec 22 08:26:23 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit e5614137527de543e2db8a36acd2bd98d590bf4f
Merge: 7219aff 2326ebc
Author: Raymond Toy <rtoy at google.com>
Date: Wed Dec 21 08:58:30 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 7219aff9de80f64693e962be53d6448a5006da17
Merge: d5c4bf0 d56fecd
Author: Raymond Toy <rtoy at google.com>
Date: Fri Dec 16 08:53:11 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit d5c4bf02e10c67057084836549647879584d29bb
Merge: 2a93478 71e768a
Author: Raymond Toy <rtoy at google.com>
Date: Thu Dec 8 10:28:15 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 2a93478cc3f27b51eab5cf03a369c3be3198ecd7
Author: Raymond Toy <rtoy at google.com>
Date: Thu Dec 8 09:55:36 2011 -0800
Fix ticket:50
Catch the case of " " and signal an error so that we can print such
pathnames using the #P(...) syntax. Also catch the case where the
directory includes an explicit directory separator, "/", which would
not be printed readably either.
Update the pot file too.
diff --git a/src/code/filesys.lisp b/src/code/filesys.lisp
index ab2f564..308b8b5 100644
--- a/src/code/filesys.lisp
+++ b/src/code/filesys.lisp
@@ -488,7 +488,14 @@
(error (intl:gettext ":BACK cannot be represented in namestrings.")))
((member :wild-inferiors)
(pieces "**/"))
- ((or simple-string pattern (eql :wild))
+ (simple-string
+ (when (zerop (length dir))
+ (error (intl:gettext "Cannot represent \"\" in namestrings.")))
+ (when (string-equal dir "/")
+ (error (intl:gettext "Cannot represent an explicit directory separator in namestrings.")))
+ (pieces (unparse-unix-piece dir))
+ (pieces "/"))
+ ((or pattern (eql :wild))
(pieces (unparse-unix-piece dir))
(pieces "/"))
(t
diff --git a/src/i18n/locale/cmucl.pot b/src/i18n/locale/cmucl.pot
index 92ace3d..a1087ca 100644
--- a/src/i18n/locale/cmucl.pot
+++ b/src/i18n/locale/cmucl.pot
@@ -9026,7 +9026,15 @@ msgid ""
"Convert String to octets using the specified External-format. The\n"
" string is bounded by Start (defaulting to 0) and End (defaulting to\n"
" the end of the string. If Buffer is given, the octets are stored\n"
-" there. If not, a new buffer is created."
+" there. If not, a new buffer is created. Buffer-start specifies\n"
+" where in the buffer the first octet will be placed.\n"
+"\n"
+" Three values are returned: The buffer, the number of valid octets\n"
+" written, and the number of characters converted. Note that the\n"
+" actual number of octets written may be greater than the returned\n"
+" value, These represent the partial octets of the next character to\n"
+" be converted, but there was not enough room to hold the complete set\n"
+" of octets."
msgstr ""
#: src/code/extfmts.lisp
@@ -9807,6 +9815,14 @@ msgid ":BACK cannot be represented in namestrings."
msgstr ""
#: src/code/filesys.lisp
+msgid "Cannot represent \"\" in namestrings."
+msgstr ""
+
+#: src/code/filesys.lisp
+msgid "Cannot represent an explicit directory separator in namestrings."
+msgstr ""
+
+#: src/code/filesys.lisp
msgid "Cannot specify a directory separator in a pathname name: ~S"
msgstr ""
commit 7760d6b885f7f40759bca5e9b0b9d77439c96a94
Merge: 7a6b433 576ae2a
Author: Raymond Toy <rtoy at google.com>
Date: Fri Dec 2 08:40:57 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 7a6b43385b08db8414dbef6ebeea1a546fc07d54
Merge: 1f129c0 eea8746
Author: Raymond Toy <rtoy at google.com>
Date: Mon Nov 21 08:39:45 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 1f129c07172f4cb20e7b5bb5f81b751835cdf55d
Merge: 926c825 44ca897
Author: Raymond Toy <rtoy at google.com>
Date: Thu Nov 17 09:19:43 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 926c825e22595b1a84bc8b506002cef5116a1156
Merge: 22a7242 17c9b81
Author: Raymond Toy <rtoy at google.com>
Date: Mon Nov 7 08:57:40 2011 -0800
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 22a7242216b409ea56b0a5c511d92f2b4ce971ad
Merge: 9de92ca 77e3035
Author: Raymond Toy <rtoy at google.com>
Date: Thu Nov 3 11:22:18 2011 -0700
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 9de92cad019d1644556a9cc6e5108cf08f9dd4b7
Merge: 3cbda6c df24c18
Author: Raymond Toy <rtoy at google.com>
Date: Mon Oct 31 08:42:37 2011 -0700
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit 3cbda6ca17f8c0a0d5af99cbb4e7b79a9900bc09
Merge: ff6c780 938269e
Author: Raymond Toy <rtoy at google.com>
Date: Tue Oct 25 09:07:08 2011 -0700
Merge branch 'master' of git://common-lisp.net/projects/cmucl/cmucl
commit ff6c7800a9daad265e8179497ccaca578d405ed9
Merge: b815e78 7243adb
Author: Raymond Toy <rtoy at google.com>
Date: Fri Oct 21 09:35:16 2011 -0700
Merge branch 'master' of ssh://rtoy.dyndns.org/Volumes/share2/src/clnet/cmucl/dev/src
commit b815e78622eaeef8487fb0f4d084c18f279b8e52
Author: Raymond Toy <rtoy at google.com>
Date: Fri Oct 21 09:28:16 2011 -0700
Fix (format t "a~0&b"): No newline should be printed.
diff --git a/code/format.lisp b/code/format.lisp
index b8a9e76..704ec34 100644
--- a/code/format.lisp
+++ b/code/format.lisp
@@ -1999,9 +1999,10 @@
(if params
(expand-bind-defaults ((count 1)) params
`(progn
- (fresh-line stream)
- (dotimes (i (1- ,count))
- (terpri stream))))
+ (when (plusp ,count)
+ (fresh-line stream)
+ (dotimes (i (1- ,count))
+ (terpri stream)))))
'(fresh-line stream)))
(def-format-interpreter #\& (colonp atsignp params)
@@ -2010,9 +2011,10 @@
:complaint
(intl:gettext "Cannot specify either colon or atsign for this directive.")))
(interpret-bind-defaults ((count 1)) params
- (fresh-line stream)
- (dotimes (i (1- count))
- (terpri stream))))
+ (when (plusp count)
+ (fresh-line stream)
+ (dotimes (i (1- count))
+ (terpri stream)))))
(def-format-directive #\| (colonp atsignp params)
(when (or colonp atsignp)
-----------------------------------------------------------------------
Summary of changes:
src/lisp/Linux-os.c | 15 ++++++++-------
src/lisp/Linux-os.h | 2 +-
src/lisp/interrupt.c | 10 +++++-----
src/lisp/x86-arch.c | 46 +++++++++++++++++++++++-----------------------
4 files changed, 37 insertions(+), 36 deletions(-)
hooks/post-receive
--
CMU Common Lisp
More information about the cmucl-commit
mailing list