51488
|
1 GC on EWS4800
|
|
2 -------------
|
|
3
|
|
4 1. About EWS4800
|
|
5 EWS4800 is 32bit/64bit workstation.
|
|
6
|
|
7 Vender: NEC Corporation
|
|
8 OS: UX/4800 R9.* - R13.* (SystemV R4.2)
|
|
9 CPU: R4000, R4400, R10000 (MIPS)
|
|
10
|
|
11 2. Compiler
|
|
12
|
|
13 32bit:
|
|
14 Use ANSI C compiler.
|
|
15 CC = /usr/abiccs/bin/cc
|
|
16
|
|
17 64bit:
|
|
18 Use 64bit ANSI C compiler.
|
|
19 CC = /usr/ccs64/bin/cc
|
|
20 AR = /usr/ccs64/bin/ar
|
|
21
|
|
22 3. ELF file format
|
|
23 *** Caution: The following infomation is empirical. ***
|
|
24
|
|
25 32bit:
|
|
26 ELF file has an unique format. (See a.out(4) and end(3C).)
|
|
27
|
|
28 &_start
|
|
29 : text segment
|
|
30 &etext
|
|
31 DATASTART
|
|
32 : data segment (initialized)
|
|
33 &edata
|
|
34 DATASTART2
|
|
35 : data segment (uninitialized)
|
|
36 &end
|
|
37
|
|
38 Here, DATASTART and DATASTART2 are macros of GC, and are defined as
|
|
39 the following equations. (See include/private/gcconfig.h.)
|
|
40 The algorithm for DATASTART is similar with the function
|
|
41 GC_SysVGetDataStart() in os_dep.c.
|
|
42
|
|
43 DATASTART = ((&etext + 0x3ffff) & ~0x3ffff) + (&etext & 0xffff)
|
|
44
|
|
45 Dynamically linked:
|
|
46 DATASTART2 = (&_gp + 0x8000 + 0x3ffff) & ~0x3ffff
|
|
47
|
|
48 Statically linked:
|
|
49 DATASTART2 = &edata
|
|
50
|
|
51 GC has to check addresses both between DATASTART and &edata, and
|
|
52 between DATASTART2 and &end. If a program accesses between &etext
|
|
53 and DATASTART, or between &edata and DATASTART2, the segmentation
|
|
54 error occurs and the program stops.
|
|
55
|
|
56 If a program is statically linked, there is not a gap between
|
|
57 &edata and DATASTART2. The global symbol &_DYNAMIC_LINKING is used
|
|
58 for the detection.
|
|
59
|
|
60 64bit:
|
|
61 ELF file has a simple format. (See end(3C).)
|
|
62
|
|
63 _ftext
|
|
64 : text segment
|
|
65 _etext
|
|
66 _fdata = DATASTART
|
|
67 : data segment (initialized)
|
|
68 _edata
|
|
69 _fbss
|
|
70 : data segment (uninitialized)
|
|
71 _end = DATAEND
|
|
72
|
|
73 --
|
|
74 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
|
|
75
|
|
76
|
|
77 When using the new "configure; make" build process, please
|
|
78 run configure with the --disable-shared option. "Make check" does not
|
|
79 yet pass with dynamic libraries. Ther reasons for that are not yet
|
|
80 understood. (HB, paraphrasing message from Hironori SAKAMOTO.)
|
|
81
|