[comp.sys.mac.programmer] Aztec C bug.

earleh@eleazar.dartmouth.edu (Earle R. Horton) (04/11/89)

     The application startup code supplied with Aztec C v 3.6c in
crt0.o violates at least two of the compatibility guidelines in
TechNote 212, "The Joy of Being 32-Bit Clean."

     Specifically:

     a)  It loads the address of the start of application code into a
         data register, masks out the high byte, and then uses the
         result as an address, which will not be valid under 32-bit
         operating systems.  The code should check for the presence
         of StripAddress before doing this, and use it if present.

     b)  It reads resources from the application directly by "walking"
         the resource map.  This is bad because TN 212 implies that Apple
         may change the format of resource files in the future.  Resource
         manager calls (e.g. GetResource) should be used to access the
         contents of resource files.

     c)  It writes to memory imbedded in the middle of its code.  This
         is risky in terms of possible future memory protection systems
         implemented by Apple.  (Hi, Tim.)

     I found this out when I was debugging one of my programs compiled
with Aztec C.  I don't have the library source license, so I wrote my
own crt0.asm to fix it.  This is a crucial piece of code to the
development system, and I am shocked that it is in such a primitive
state.  Aztec has been a real good development system so far, and I am
assuming that this is an anomaly.

     If you have Aztec C, and you care whether programs you compile
today will run under future 32-bit operating systems, then please
submit a bug report to Manx.  If enough of us complain, they might
just fix it.

Earle R. Horton

Graduate Student.  Programmer.  God to my cats.