mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-22 22:49:52 +08:00
76 lines
1.8 KiB
Plaintext
76 lines
1.8 KiB
Plaintext
|
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>
|
||
|
|