Blame doc/README.ews4800

Packit d28291
GC on EWS4800
Packit d28291
-------------
Packit d28291
Packit d28291
1. About EWS4800
Packit d28291
Packit d28291
 EWS4800 is a 32/64-bit workstation.
Packit d28291
Packit d28291
     Vendor: NEC Corporation
Packit d28291
     OS: UX/4800 R9.* - R13.* (SystemV R4.2)
Packit d28291
     CPU: R4000, R4400, R10000 (MIPS)
Packit d28291
Packit d28291
2. Compiler
Packit d28291
Packit d28291
 32-bit:
Packit d28291
   Use ANSI C compiler.
Packit d28291
     CC = /usr/abiccs/bin/cc
Packit d28291
Packit d28291
 64-bit:
Packit d28291
   Use the 64-bit ANSI C compiler.
Packit d28291
     CC = /usr/ccs64/bin/cc
Packit d28291
     AR = /usr/ccs64/bin/ar
Packit d28291
Packit d28291
3. ELF file format
Packit d28291
   *** Caution: The following information is empirical. ***
Packit d28291
Packit d28291
 32-bit:
Packit d28291
   ELF file has an unique format. (See a.out(4) and end(3C).)
Packit d28291
Packit d28291
     &_start
Packit d28291
        :      text segment
Packit d28291
     &etext
Packit d28291
     DATASTART
Packit d28291
        :      data segment (initialized)
Packit d28291
     &edata
Packit d28291
     DATASTART2
Packit d28291
        :      data segment (uninitialized)
Packit d28291
     &end
Packit d28291
Packit d28291
   Here, DATASTART and DATASTART2 are macros of GC, and are defined as
Packit d28291
   the following equations. (See include/private/gcconfig.h.)
Packit d28291
   The algorithm for DATASTART is similar with the function
Packit d28291
   GC_SysVGetDataStart() in os_dep.c.
Packit d28291
Packit d28291
     DATASTART  = ((&etext + 0x3ffff) & ~0x3ffff) + (&etext & 0xffff)
Packit d28291
Packit d28291
    Dynamically linked:
Packit d28291
     DATASTART2 = (&_gp + 0x8000 + 0x3ffff) & ~0x3ffff
Packit d28291
Packit d28291
    Statically linked:
Packit d28291
     DATASTART2 = &edata
Packit d28291
Packit d28291
   GC has to check addresses both between DATASTART and &edata, and
Packit d28291
   between DATASTART2 and &end. If a program accesses between &etext
Packit d28291
   and DATASTART, or between &edata and DATASTART2, the segmentation
Packit d28291
   error occurs and the program stops.
Packit d28291
Packit d28291
   If a program is statically linked, there is not a gap between
Packit d28291
   &edata and DATASTART2. The global symbol &_DYNAMIC_LINKING is used
Packit d28291
   for the detection.
Packit d28291
Packit d28291
 64-bit:
Packit d28291
   ELF file has a simple format. (See end(3C).)
Packit d28291
Packit d28291
     _ftext
Packit d28291
        :      text segment
Packit d28291
     _etext
Packit d28291
     _fdata = DATASTART
Packit d28291
        :      data segment (initialized)
Packit d28291
     _edata
Packit d28291
     _fbss
Packit d28291
        :      data segment (uninitialized)
Packit d28291
     _end = DATAEND
Packit d28291
Packit d28291
--
Packit d28291
Hironori SAKAMOTO
Packit d28291
Packit d28291
Packit d28291
When using the new "configure; make" build process, please
Packit d28291
run configure with the --disable-shared option.  "Make check" does not
Packit d28291
yet pass with dynamic libraries.  The reasons for that are not yet
Packit d28291
understood.  (HB, paraphrasing message from Hironori SAKAMOTO.)