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.
Showing
- bootfiles/18d/boot4-cross-foreign-linkage.lisp 291 additions, 0 deletionsbootfiles/18d/boot4-cross-foreign-linkage.lisp
- code/alieneval.lisp 18 additions, 9 deletionscode/alieneval.lisp
- code/debug-int.lisp 7 additions, 4 deletionscode/debug-int.lisp
- code/exports.lisp 14 additions, 2 deletionscode/exports.lisp
- code/foreign-linkage.lisp 85 additions, 0 deletionscode/foreign-linkage.lisp
- code/foreign.lisp 37 additions, 7 deletionscode/foreign.lisp
- code/gc.lisp 39 additions, 1 deletioncode/gc.lisp
- code/load.lisp 25 additions, 6 deletionscode/load.lisp
- code/unix.lisp 4 additions, 2 deletionscode/unix.lisp
- code/x86-vm.lisp 22 additions, 4 deletionscode/x86-vm.lisp
- compiler/debug.lisp 9 additions, 7 deletionscompiler/debug.lisp
- compiler/disassem.lisp 4 additions, 2 deletionscompiler/disassem.lisp
- compiler/dump.lisp 32 additions, 4 deletionscompiler/dump.lisp
- compiler/generic/core.lisp 7 additions, 3 deletionscompiler/generic/core.lisp
- compiler/generic/interr.lisp 4 additions, 2 deletionscompiler/generic/interr.lisp
- compiler/generic/new-genesis.lisp 124 additions, 44 deletionscompiler/generic/new-genesis.lisp
- compiler/saptran.lisp 31 additions, 2 deletionscompiler/saptran.lisp
- compiler/x86/alloc.lisp 5 additions, 4 deletionscompiler/x86/alloc.lisp
- compiler/x86/c-call.lisp 16 additions, 3 deletionscompiler/x86/c-call.lisp
- compiler/x86/macros.lisp 15 additions, 8 deletionscompiler/x86/macros.lisp
Loading
Please register or sign in to comment