Skip to content
Snippets Groups Projects
  1. Jul 30, 2007
  2. Jul 25, 2007
    • cshapiro's avatar
      Use sa_sigaction signal handlers on Linux. The glibc definition of · 342beebb
      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.
      342beebb
  3. Jul 15, 2007
  4. Jul 13, 2007
  5. Nov 07, 2006
  6. Mar 17, 2006
    • rtoy's avatar
      lisp/Linux-os.c: · 7575e738
      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.
      7575e738
  7. Sep 15, 2005
  8. Apr 24, 2005
  9. Dec 24, 2004
    • rtoy's avatar
      From Helmut Eller, cmucl-imp, 2004-10-05: · 627128ba
      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  :) .
      627128ba
  10. Oct 19, 2004
  11. Sep 11, 2004
    • rtoy's avatar
      Port of SBCL's float-accuracy compilation policy. Intended to make · 571091c7
      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.
      571091c7
  12. Jul 08, 2004
  13. Jun 07, 2004
  14. May 20, 2004
  15. May 19, 2004
  16. Mar 23, 2003
    • gerd's avatar
      Optional control stack checking. This is controlled by the · 670d643f
      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.
      670d643f
  17. Aug 28, 2002
    • pmai's avatar
      A number of smallish changes to the new linkage-table code: · cf055d22
      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.
      cf055d22
    • moore's avatar
      · d31f5d1a
      moore authored
      Fix foregin object braindamage noted by Pierre Mai.
      d31f5d1a
  18. Aug 27, 2002
    • moore's avatar
      · bf84be07
      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.
      bf84be07
  19. Oct 24, 2000
    • dtc's avatar
      o Add the command line switch -dynamic-space-size for setting the size · a7070998
      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.
      a7070998
  20. Aug 27, 2000
  21. Jan 19, 2000
    • dtc's avatar
      Have os_validate pass the MAP_NORESERVE flag to mmap. This allows · 274a7d48
      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.
      274a7d48
  22. Nov 29, 1999
  23. Aug 25, 1999
  24. Feb 22, 1999
  25. Feb 20, 1999
    • pw's avatar
      Changes for Linux running on Alpha. · 25b808fb
      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.
      25b808fb
  26. Feb 02, 1999
  27. May 01, 1998
  28. Nov 25, 1997
  29. Jun 07, 1997
  30. Jan 21, 1997
Loading