URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [boehm-gc/] [doc/] [README.ews4800] - Rev 721
Compare with Previous | Blame | View Log
GC on EWS4800-------------1. About EWS4800EWS4800 is 32bit/64bit workstation.Vender: NEC CorporationOS: UX/4800 R9.* - R13.* (SystemV R4.2)CPU: R4000, R4400, R10000 (MIPS)2. Compiler32bit:Use ANSI C compiler.CC = /usr/abiccs/bin/cc64bit:Use 64bit ANSI C compiler.CC = /usr/ccs64/bin/ccAR = /usr/ccs64/bin/ar3. 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&etextDATASTART: data segment (initialized)&edataDATASTART2: data segment (uninitialized)&endHere, DATASTART and DATASTART2 are macros of GC, and are defined asthe following equations. (See include/private/gcconfig.h.)The algorithm for DATASTART is similar with the functionGC_SysVGetDataStart() in os_dep.c.DATASTART = ((&etext + 0x3ffff) & ~0x3ffff) + (&etext & 0xffff)Dynamically linked:DATASTART2 = (&_gp + 0x8000 + 0x3ffff) & ~0x3ffffStatically linked:DATASTART2 = &edataGC has to check addresses both between DATASTART and &edata, andbetween DATASTART2 and &end. If a program accesses between &etextand DATASTART, or between &edata and DATASTART2, the segmentationerror 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 usedfor 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>When using the new "configure; make" build process, pleaserun configure with the --disable-shared option. "Make check" does notyet pass with dynamic libraries. Ther reasons for that are not yetunderstood. (HB, paraphrasing message from Hironori SAKAMOTO.)
