File       : README
Author     : Z.W. Hendrikse
Date       : 11 October 1999
Last change: 17 November 2000
Version    : 1.4

What can I find here:
---------------------
Source for Dynamite dynamic loader, operational for Linux 
and Solaris. 

Build:
------
Use gnu make.
Type make in this directory (where the README is).

Use:
----
  Pass the following options on the compiler's commandline during the
  final linking of your executable:

  Solaris:
  -Wl,-I,/path/to/dynamic/loader/dynld.so

  Linux:
  -Wl,-dynamic-linker,/path/to/dynamic/loader/dynld.so -rdynamic
  If the system you have uses glibc2.1 or newer, you need a local copy
  of glibc2.0, since the checkpointer currently does not support glibc2.1.
  You then need to pass one more option while linking:
  -L/path/to/glibc2.0/libraries
  This extra option does not need to be used when the system is still
  using glibc2.0 or libc5.x.
  See also DYNAMITE_LD_LIBRARY_PATH below.


Environment variables:
----------------------
DPVM_CKPTDIR a directory where the checkpoint-file can be stored.
             Make sure this directory exists.
             If it is not defined, the checkpoint-file will be stored
             in the "ckpt" subdirectory of users home directory ($HOME/ckpt/).

DYNAMITE_LD_LIBRARY_PATH pointing to a local copy of glibc2.0, if the
                         system you have uses glibc2.1 or newer (see "Use"
                         above).
                         This environment variable does not need to be
                         set when the system is still using glibc2.0 or
                         libc5.x.

Source code documentation:
--------------------------
The documentation may be found in the html-directory.
Browse loading the document html/index.html.
This documentation has been generated using doc++:

doc++ -d html doc.c

(see also http://www.zib.de/Visual/software/doc++/)

Directory structure:
--------------------
./boot1.[ch]    `Main' module of dynamic loader
./ckpt.[ch]     All routines specific to checkpointing
./Config.mk     Platform dependencies and configuration options, such
                as DEBUG mode compiling are put here, included in 
                Makefile
./Makefile      The top level GNU Makefile
./Version.mk    Contains version information, obsolete!
./config.h      header file included by boot1.c, ckpt.c, readelflib1.c
./dlib.c        Former libdl.c, which has now been integrated into the
                dynamic loader to avoid problems under glibc2.x and
                Solaris.
./doc.c         Generate doc++ html pages from here, still somewhat
                buggy
./hash.[ch]     Various symbol table handling functions
./link.h        GNU libc 2.0 specific fixes
./linuxelf.h    FIXME: what kind of specific things go in here?
./readelflib1.c Load an ELF sharable library into memory
./vsprintf.c    This module contains a.o. _dl_fdprintf
./libdl         source code of libdl.so (obsolete, see dlib.c above)
./m68k          Motorola 68000 dependent code, _not_ supported

./i386          Linux dependent code
      /Makefile     Makefile for this directory 
      /elfinterp.c  processor-specific relocation handling code
      /resolve.S    helper routines needed to run an ELF image
      /string.h     string functions (string.h) as inline functions
      /syscall.h    enable syscalls in the absence of the C-library
      /sysdep.h     assembly language/system dependencies

./sparc         Sparc dependent code
       /Makefile    Makefile for this directory
       /elfinterp.c processor-specific relocation handling code
       /sdiv.S      Apparently generated automatically (unused)
       /syscall.h   enable syscalls in the absence of the C-library
       /udiv.S      unsigned division
       /urem.S      unsigned reminder
       /DEFS.h      Sun specific assembly support macros
       /div.S       division (unused)
       /resolve.S   helper routines needed to run an ELF image
       /string.h    string functions (string.h) as inline functions
       /sysdep.h    assembly language/system dependencies
       /umul.S      unsigned multiply (unused)


Preprocessor defines:
---------------------
DEBUG           Give additional (debug) run-time output 
SAN_DEBUG       Give additional sanitise-related (debug) run-time output
DL_DEBUG        Give additional dynamic library (debug) info
MAP_ANONYMOUS   System might support this, does _not_ need to be set
USE_CACHE       FIXME!
USE_CONTEXT     Once used to (quickly) fix restart under Solaris
                FIXME: Obsolete now?
IBCS_COMPATIBLE Intel Binary Compatibility Specification: _cannot_ be
                used for this (checkpointing) dynamic loader
                (no support in syscall assembly stubs, syscall.h)

Compiled-in defaults:
---------------------
DEFAULT_CHECKPOINT_FILENAME     name of checkpoint-file _not_ using PVM
DEBUG_OUTPUT_FILE_PREFIX        place where checkpoint debug file output
                                will go to: .$USER will be appended



Zeger Hendrikse
2000-11-22