- Jul 30, 2007
-
-
cshapiro authored
quoted include with an include of the system signal.h where needed.
-
- Jul 25, 2007
-
-
cshapiro authored
sigset_t is different from the one used in the Linux kernel. This means that we cannot make assignments of sigset_t objects without corrupting memory. To work around this problem we update uc_sigmask differently on Linux than on other systems. Also, remove x87 control word updates since the x87 is setup correctly inside call_into_lisp.
-
- Jul 15, 2007
-
-
cshapiro authored
-
- Jul 13, 2007
- Nov 07, 2006
-
-
cshapiro authored
reg_NARGS macro on these targets and use SC_REG to replace open-coded assignments to platform specific sigcontext members in interrupt.c and os-common.c. This code could be simplified further by merging the x86 and AMD64 cases into the general case.
-
- Mar 17, 2006
-
-
rtoy authored
o Add function get_h_errno to extract h_errno. code/internet.lisp: o On Linux, call the get_h_errno function to get h_errno instead of calling __h_errno_location ourselves since that's not part of the public API.
-
- Sep 15, 2005
-
-
rtoy authored
.indent.pro.
-
- Apr 24, 2005
-
-
rtoy authored
can't allocate at the desired address, produce an error message and die gracefully. From James Y Knight, cmucl-imp, 2005/03/11
-
- Dec 24, 2004
-
-
rtoy authored
on Linux/x86, the Lisp signal handler for SIGSEGV overwrites the beginning of the control stack. For SIGSEGV we use an extra signal stack and when the signal isn't handled by the GC or by the stack overflow handler we call eventually call_into_lisp. call_into_lisp tests whether the current stack pointer points to the normal control stack. But the test fails because we use the extra signal stack, so call_into_lisp just sets the stack pointer to the beginning of the normal control stack. This is not much fun for debugging because the backtrace is truncated and it's also no longer possible to throw to the top-level-catcher because its frame was overwritten. I tried to fix that with the patch below. The idea is to switch back to the normal stack before calling the Lisp handler. The patch may not be very elegant but it is at least short :) .
-
- Oct 19, 2004
-
-
cwang authored
-
- Sep 11, 2004
-
-
rtoy authored
double-float-epsilon actually be epsilon on x86. No effect on other ports. The default precision is now 53-bit (double-float) instead of 64-bit (80-bit floats). However, to preserve C expectations, all calls to C have the precision set to 64-bit. This slows down calls to C, but we try to make syscalls and such fast by not changing precision for the call. By default ext:float-accuracy is 3. Use boot7.lisp to bootstrap.
-
- Jul 08, 2004
-
-
rtoy authored
conversions to pointers from ints. Correct the return type of sigsegv_handle_now.
-
- Jun 07, 2004
-
-
rtoy authored
weren't caused by a write-protected heap. Requested by Lynn Quam.
-
- May 20, 2004
-
-
cwang authored
-
- May 19, 2004
-
-
cwang authored
-
- Mar 23, 2003
-
-
gerd authored
feature :stack-checking because it's not implemented for other systems/architectures yet. It is currently known to work on FreeBSD 4.8-RC/x86 and Debian 2.2.20/x86. * bootfiles/18e/boot3.lisp: New boot file, well, only a description of the boot procedure since no boot file is needed. * lisp/x86-validate.h (SIGNAL_STACK_START, SIGNAL_STACK_SIZE) [__FreeBSD__, __linux__]: New defines. (CONTROL_STACK_SIZE) {__FreeBSD__, __linux__]: Adjust for signal stack. * lisp/validate.c (validate) [RED_ZONE_HIT]: Call os_guard_control_stack. Some cleanup. * lisp/os.h (BOTH_ZONES, YELLOW_ZONE, RED_ZONE): New enums. Add function prototypes. * lisp/interrupt.c (interrupt_install_low_level_handler) [RED_ZONE_HIT]: Deliver protection violations on a dedicated signal stack. * lisp/os-common.c (os_stack_grows_down_1, os_stack_grows_down): New functions. (guard_zones, control_stack_zone, os_guard_control_stack) (os_control_stack_overflow) [RED_ZONE_HIT]: New functions. (os_control_stack_overflow) [!RED_ZONE_HIT]: Dummy function. * lisp/Linux-os.c (sigsegv_handler) [RED_ZONE_HIT]: Handle control stack overflows. * lisp/FreeBSD-os.c: General cleansing. (sigbus_handler) [RED_ZONE_HIT]: Handle control stack overflows. * lisp/FreeBSD-os.h (PROTECTION_VIOLATION_SIGNAL): New define. * lisp/Linux-os.h (PROTECTION_VIOLATION_SIGNAL): New define. * compiler/x86/system.lisp (lisp::%scrub-control-stack): Change defknown from sys:scrub-control-stack. (%scrub-control-stack): Rename VOP. * code/lispinit.lisp (os-guard-control-stack) [#+stack-checking]: Define alien os_guard_control_stack. (%scrub-control-stack) [#+x86]: New function. (scrub-control-stack) [#+x86]: Call %scrub-control-stack, call os-guard-control-stack if #+stack-checking. * code/interr.lisp (yellow-zone-hit, red-zone-hit) [#+stack-checking]: New functions. * code/error.lisp (stack-overflow) [#+stack-checking]: New condition. * compiler/generic/new-genesis.lisp (finish-symbols) [#+stack-checking]: Add symbols for control stack checking. * compiler/x86/parms.lisp (static-symbols): Likewise.
-
- Aug 28, 2002
-
-
pmai authored
o Conditionalized some code that is only used in linkage-table builds on :linkage-table and LINKAGE_TABLE respectively. o Modernized undefined_ff_tramp based on recent changes, and renamed it to undefined_foreign_symbol_trap, because it really isn't a trampoline. o Conditionalized a stray puts(...,dlerror()) in Linux-os.c on DEBUG o Installed an error reporter for UNDEFINED_FOREIGN_SYMBOL_ERROR, which for now signals a simple-program-error. We might want to introduced a new condition UNDEFINED-FOREIGN-SYMBOL or something, which could also be used by the old foreign linkage code.
-
moore authored
Fix foregin object braindamage noted by Pierre Mai.
-
- Aug 27, 2002
-
-
moore authored
On x86 FreeBSD and Linux, change the way foreign symbol addresses are resolved. They now go through a table -- effectively a new space in the core file. Function references are resolved lazily, data references are resolved on startup and when a .so is loaded. The end result is that cores can be dumped that contain references to symbols in shared libraries. Also, the dependence of the core on addresses in the Lisp runtime is broken. The linkage table feature is controlled by :linkage-table and LINKAGE_TABLE in C runtime. Several foreign symbols are now Lisp static symbols, so a cross compile is required whether or not the new stuff is used. I've checked in boot4-cross-foreign-linkage.lisp that builds the compiler for linkage table; do whatever you usually do for the non-linkage table case:) Seriously, lets start a discussion on standardizing "cross compilation," not to mention the general build procedure.
-
- Oct 24, 2000
-
-
dtc authored
of the dynamic space. DYNAMIC_SPACE_SIZE now defines the maximum size, and when defined DEFAULT_DYNAMIC_SPACE_SIZE gives the default. o Increase the maximum dynamic space size for Linux x86 to 1.625GB, with the default remaining at 512MB. o Define the default dynamic space size for FreeBSD x86 to also be 512MB, with a maximum of 2GB.
-
- Aug 27, 2000
-
-
dtc authored
-
- Jan 19, 2000
-
-
dtc authored
users with low swap plus memory to run without enabling the non-standard and perhaps undesirable overcommit_memory option. With this change the current scheme of splitting mmap operations into smaller pieces to bypass the kernel checks is no longer necessary, and this code has been cleaned up.
-
- Nov 29, 1999
-
-
dtc authored
-
- Aug 25, 1999
-
-
dtc authored
table size by 25%, and move to a fixed layout of the page flags to better support future atomic operations for threaded code.
-
- Feb 22, 1999
-
-
dtc authored
-
- Feb 20, 1999
-
-
pw authored
From: Julian Dolby <dolby@csag-226-8.UCSD.EDU> Enclosed below are diffs against the cvs repository as of Feb 12; aside from minor changes like using different include files (e.g. validate.h instead of x86-validate.h in Linux-os.c) and adding alpha-linux specifics unix-glibc2.lisp, there are two code changes. The first is to signal handling. I had to put the POSIX-SIGS ifdefs into places used by alpha but not by x86, and I ifdef'ed out most of the linux #define kludges for signals for alpha linux, since alpha linux uses OSF/1 signals rather than linux ones. The second is that the trick of or'ing 2 into the reg_ALLOC address to cause faults does not work on alpha linux since the kernel traps and handles the unaligned access; I did not find a way to change that kernel behavior, so I changed the code to or (1<<63) into the address to cause a seg fault, and then check, in the seg fault handler, to see if the high-order address bits are set. One change I made is to the memory layout (lisp/alpha-validate.h and compiler/alpha/parms.lisp); that change is not needed to make lisp run on alpha linux, but is there because I wanted more heap space.
-
- Feb 02, 1999
-
-
dtc authored
recent libraries are reported to no long provide __setfpucw.
-
- May 01, 1998
-
-
dtc authored
support for glibc2.
-
- Nov 25, 1997
-
-
dtc authored
-
- Jun 07, 1997
-
-
pw authored
-
- Jan 21, 1997
-
-
ram authored
-