Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > media > main-backports > by-pkgid > ec081eb1f0fb87b7640153d3a3340fac > files > 21

mono-doc-2.4.2.2-1mdv2009.1.x86_64.rpm

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

1. About EWS4800
   EWS4800 is 32bit/64bit workstation.

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

2. Compiler

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

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

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

 32bit:
   ELF file has an 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.

 64bit:
   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 <hsaka@mth.biglobe.ne.jp>


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.  Ther reasons for that are not yet
understood.  (HB, paraphrasing message from Hironori SAKAMOTO.)