summaryrefslogtreecommitdiff
path: root/graphics/asymptote/gc/doc/README.ews4800
blob: 83e8b1e07bd5dc47a4012cf12cac6f02a8948024 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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.)