Skip to content
Snippets Groups Projects
  1. Jul 31, 2007
  2. Jul 06, 2007
  3. Nov 07, 2006
  4. Sep 15, 2005
  5. Sep 05, 2005
  6. Feb 07, 2005
  7. Feb 06, 2005
    • rtoy's avatar
      Initial support for linkage-tables on PPC/Darwin. This is a · 6a4fd3c3
      rtoy authored
      relatively straightforward port of the sparc version of
      linkage-tables.  Some refinements are probably still needed, as well
      as some testing.
      
      Use boot-2005-02-ppc-linkage.lisp to bootstrap this change from the
      2005-02 snapshot.
      
      * code/ppc-vm.lisp
        o Add appropriate FOREIGN-SYMBOL-ADDRESS-AUX and FIND-FOREIGN-SYMBOL
          functions for linkage-table.
      
      * compiler/generic/new-genesis.lisp
        o Basically do the same as the sparc port for linkage-tables.
        o need to extern-alien-name on the cold linkages since they C names
          depend on the backend conventions.
      
      * compiler/ppc/alloc.lisp
        o Load "undefined_tramp" appropriately for linkage-tables.
      
      * compiler/ppc/c-call.lisp
        o Define new vops (FOREIGN-SYMBOL-CODE-ADDRESS,
          FOREIGN-SYMBOL-DATA-ADDRESS) for linkage-tables so we can access
          correctly.
      
      * compiler/ppc/cell.lisp
        o Load "closure_tramp" appropriately for linkage-tables
        o Load "undefined_tramp" appropriately for linkage-tables
      
      * compiler/ppc/parms.lisp
        o Put the foreign linkage space start at the end of the static space
          to make it easier to bootstrap.  (We need already mapped memory.)
          We can move this later.
        o Correct TARGET-FOREIGN-LINKAGE-ENTRY-SIZE.
        o Add new static-symbol *linkage-table-data*
        o While were at it, add SPARE-9 and SPARE-0 static symbols so we
          have 10 spares.
      
      * lisp/Config.ppc_darwin
        o Add -DLINKAGE_TABLE to CFLAGS/ASFLAGS if we have linkage-table
          support.
      
      * lisp/Darwin-os.c
        o Add os_dlsym to support linkage-tables.  (This nees a little
          refactoring because we just copied the #defines for dlopen modes.)
      
      * lisp/os-common.c
        o The checking of the linkage tables that is done for sparc almost
          works for ppc, but not quite.  Implement one for ppc.
      
      * lisp/ppc-arch.c
        o Add PPC version of arch_make_jump_entry, arch_make_linkage_entry,
          arch_linkage_entry.
      
      * lisp/ppc-assem.S
        o Add lazy_resolve_linkage to support linkage-tables.  This needs
          some more work.
        o Add undefined_foreign_symbol_trap.  This probably needs work, and
          definitely needs testing.
      
      * lisp/ppc-validate.h
        o Define the start of the linkage space and size.
      6a4fd3c3
  8. Jul 07, 2004
    • rtoy's avatar
      Fix more compiler warnings: · 0ac2c885
      rtoy authored
      * backtrace.c, save.c:  fprintf warnings.
      * interrupt.h: Declare build_fake_control_stack_frame and
        interrupt_handle_space_overflow.
      * os-common.c: Include interrupt.h to define
        build_fake_control_stack_frame.
      * parse.c, runprog.c, search.c:  Include some standard system headers
        to get rid of undefined function warnings.
      0ac2c885
    • rtoy's avatar
      Fix more compiler warnings: · 5a1bf534
      rtoy authored
      * alloc.c:  Include gencgc.h to get declaration of alloc().
      * gencgc.c:
        o Include string.h for memset.
        o Initialize some vars that gcc complains might be uninitialized
          (but they're not).
        o scav_fdefn isn't used on sparc, so comment it out.
        o valid_dynamic_space_pointer, maybe_adjust_large_object, and
          preserve_pointer are only used on x86, so comment #ifdef them for
          i386.
      * os-common.c:
        o Fix a few printf warnings.
        o Cast args to bcopy.
      5a1bf534
    • rtoy's avatar
      Changes from Robert Swindells to support NetBSD. · 5d2cd5df
      rtoy authored
      5d2cd5df
  9. May 19, 2004
  10. Jul 19, 2003
    • emarsden's avatar
      · 34b793ce
      emarsden authored
        - fix a signed/unsigned cast bug that was prevented the
          auto-gc-trigger from functioning correctly when using certain
          dynamic-space sizes (for platforms that don't have an internal gc
          trigger).
      
        - added a few #include files to avoid compiler warnings
      
        - changed some #ifdef semantics: DEBUG activates additional
          assertions, and PRINTNOISE activates debugging statements.
      34b793ce
  11. May 30, 2003
    • toy's avatar
      o Oops. It's i386, not x86. · f101ba1a
      toy authored
      o Remove the code in fake_foreign_function_call that was moved to
        build_fake_control_stack_frame
      f101ba1a
  12. May 29, 2003
    • toy's avatar
      Add control-stack checking for Sparc. Based on work from SBCL. · 72f0aa1e
      toy authored
      	* lisp/sunos-os.h (PROTECTION_VIOLATION_SIGNAL): Define it for
      	stack-checking.
      
      	* lisp/solaris-os.c (segv_handler): Add stack-checking support for
      	Solaris.
      
      	* lisp/os.h (os_control_stack_overflow): Give a type name to the
      	zone enums (mostly for the debugger).
      
      	* lisp/os-common.c (guard_zones): Add stack-checking support for
      	Solaris.
      	(os_control_stack_overflow): Add stack-checking support for
      	Solaris.
      
      	* lisp/interrupt.c (build_fake_control_stack_frame): New function
      	for building a stack frame without the foreign call stuff.  Used
      	for stack checking.
      	(interrupt_install_low_level_handler): Only need to install
      	alternate signal stack for x86.
      
      	* lispinit.lisp:
      	(scrub-control-stack): Rename to %scrub-control-stack to match x86
      	version so control stack guard is done.
      
      	* parms.lisp (static-symbols): Added new static symbols for
      	control stack checking.
      72f0aa1e
  13. 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
  14. Oct 24, 2002
  15. 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
  16. 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
  17. Oct 27, 1994
  18. Oct 26, 1994
  19. Oct 25, 1994
  20. Oct 24, 1994
  21. Jan 13, 1993
  22. Jul 28, 1992
  23. Mar 22, 1992
  24. Mar 02, 1992
  25. Feb 16, 1992
  26. May 24, 1991
Loading