Xref: utzoo comp.sys.apollo:8086 gnu.gcc.help:454 Path: utzoo!utgpu!watserv1!watmath!uunet!mcsun!tuvie!mike From: mike@vlsivie.tuwien.ac.at (Michael K. Gschwind) Newsgroups: comp.sys.apollo,gnu.gcc.help Subject: gcc on Apollo Message-ID: <2320@tuvie.UUCP> Date: 15 Feb 91 14:04:52 GMT Sender: news@tuvie.UUCP Followup-To: comp.sys.apollo Distribution: gnu,world Organization: Vienna University of Technology Lines: 39 We just compiled sicstus Prolog for the Apollo with both /bin/cc and gcc. While gcc offers some things which are A Good Thing for compiling Prolog interpreters (like allocating global variables to registers), the size command exposed a problem: % size //hal/usr/local/lib/sicstus0.7*/E*/sp* gcc: text(r) data(r/w) bss(r/w) //hal/usr/local/lib/sicstus0.7-P3/Emulator/sp: 292 + 127736 + 1104 = 129882 cc: text(r) data(r/w) bss(r/w) //hal/usr/local/lib/sicstus0.7/Emulator/sp: 168752 + 8616 + 1080 = 251862 Sizes per se (the sum of all sizes) are absolutely uninteresting, but while cc allocates the program image to the read-only text section, gas stores the stuff in in the r/w data section. Which - I think - means that the image is not shareable (except if Apollo uses fancy copy-on-write strategies - does anybody know this ?). Also, this can lead to inadvertant program corruption: main() { *((long *)main) - 0; } executes without protection violation - yuck !! Has anybody found a workaround for this problem? Any hints will be appreciated. bye, mike Michael K. Gschwind, Institute for VLSI-Design, Vienna University of Technology mike@vlsivie.tuwien.ac.at 1-2-3-4 kick the lawsuits out the door mike@vlsivie.uucp 5-6-7-8 innovate don't litigate e182202@awituw01.bitnet 9-A-B-C interfaces should be free Voice: (++43).1.58801 8144 D-E-F-O look and feel has got to go! Fax: (++43).1.569697 Brought to you by Super Global Mega Corp .com