diff options
Diffstat (limited to 'gc/doc/README.ews4800')
| -rw-r--r-- | gc/doc/README.ews4800 | 75 | 
1 files changed, 75 insertions, 0 deletions
| diff --git a/gc/doc/README.ews4800 b/gc/doc/README.ews4800 new file mode 100644 index 0000000..bced243 --- /dev/null +++ b/gc/doc/README.ews4800 @@ -0,0 +1,75 @@ +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> + | 
