Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!watcgl!kdmoen From: kdmoen@watcgl.UUCP Newsgroups: comp.sys.mac Subject: Moving Code Segments and the Sumacc C compiler Message-ID: <2303@watcgl.waterloo.edu> Date: Tue, 10-Nov-87 22:59:16 EST Article-I.D.: watcgl.2303 Posted: Tue Nov 10 22:59:16 1987 Date-Received: Fri, 13-Nov-87 04:28:27 EST References: <7486@dartvax.UUCP> <7508@dartvax.UUCP> <21522@ucbvax.BERKELEY.EDU> Reply-To: kdmoen@watcgl.waterloo.edu (Doug Moen) Organization: U. of Waterloo, Ontario Lines: 30 Keywords: C compiler gripe Thanks to all of the wonderful people who have written to tell me that unloaded code segments can move around in memory while a Mac application is running. I would like to clarify one point that might have been lost in the flurry of followup postings. In his original article, David Phillip Oster (oster@dewey.soe.berkeley.edu.UUCP) writes: >The authors of the compiler seem to be unaware that on a Macintosh >executable code can move while the program is running. Unlike all Macintosh >compilers, they generate position _dependent_ code, and have a funky >loader scheme to resolve non-relocatable references at program load >time. Eventually, the code moves, and all that position dependent code >points at never-neverland. > >Conclusion: >Don't use sumacc C. Because of its authors' poor understanding of the >Macintosh execution time environment, the sumacc C compiler generates >incorrect code. This is only true if you are writing desk accessories. If you are writing an *application*, then the sumacc compiler+rmaker will create a single segment, which can be arbitrarily large, and which does not move around during execution. In other words, it is perfectly safe to use Sumacc for writing applications. -- Doug Moen University of Waterloo Computer Graphics Lab UUCP: {ihnp4,watmath}!watcgl!kdmoen INTERNET: kdmoen@cgl.waterloo.edu