]>
Commit | Line | Data |
---|---|---|
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 |