GC on EWS4800
-------------

1. About EWS4800

EWS4800 is a 32/64-bit workstation.

    Vendor: NEC Corporation
    OS: UX/4800 R9.* - R13.* (SystemV R4.2)
    CPU: R4000, R4400, R10000 (MIPS)

2. Compiler

32-bit:
  Use ANSI C compiler.
    CC = /usr/abiccs/bin/cc

64-bit:
  Use the 64-bit ANSI C compiler.
    CC = /usr/ccs64/bin/cc
    AR = /usr/ccs64/bin/ar

3. ELF file format
  *** Caution: The following information is empirical. ***

32-bit:
  ELF file has a unique format. (See a.out(4) and end(3C).)

    &_start
       :      text segment
    &etext
    DATASTART
       :      data segment (initialized)
    &edata
    DATASTART2
       :      data segment (uninitialized)
    &end

  Here, DATASTART and DATASTART2 are macros of GC, and are defined as
  the following equations. (See include/private/gcconfig.h.)
  The algorithm for DATASTART is similar with the function
  GC_SysVGetDataStart() in os_dep.c.

    DATASTART  = ((&etext + 0x3ffff) & ~0x3ffff) + (&etext & 0xffff)

   Dynamically linked:
    DATASTART2 = (&_gp + 0x8000 + 0x3ffff) & ~0x3ffff

   Statically linked:
    DATASTART2 = &edata

  GC has to check addresses both between DATASTART and &edata, and
  between DATASTART2 and &end. If a program accesses between &etext
  and DATASTART, or between &edata and DATASTART2, the segmentation
  error occurs and the program stops.

  If a program is statically linked, there is not a gap between
  &edata and DATASTART2. The global symbol &_DYNAMIC_LINKING is used
  for the detection.

64-bit:
  ELF file has a simple format. (See end(3C).)

    _ftext
       :      text segment
    _etext
    _fdata = DATASTART
       :      data segment (initialized)
    _edata
    _fbss
       :      data segment (uninitialized)
    _end = DATAEND

--
Hironori SAKAMOTO


When using the new "configure; make" build process, please
run configure with the --disable-shared option.  "Make check" does not
yet pass with dynamic libraries.  The reasons for that are not yet
understood.  (HB, paraphrasing message from Hironori SAKAMOTO.)