cramer@optilink.UUCP (Clayton Cramer) (06/09/90)
This stuff bit me -- it may bite you. I hope this save you some time. I upgraded from MSC C5.1 to 6.0, and my existing code would no longer link. The following errors appeared: 1. L4047 (a message whining that more than one segment appeared in an overlaid module); 2. Gobs of fix-up overflow errors. On my third or fourth try at talking to Microsoft Technical Support, I talked to someone who correctly identified the L4047 warning message, and what it meant. He told me that the 8087 emulator library generates multiple segments, and while that isn't really a problem, the linker doesn't know to ignore it for the Microsoft supplied libraries. The second message was considerably more...interesting. I had replaced the standard __chkstk function (for reasons too gory and complicated to go into) with one that I wrote. I made two mistakes in my chkstk function that didn't cause any problems with the MSC 5.1 linker, but didn't work with the linker that comes 6.0. The first error was that the new label __aFchkstk was declared after the .DATA macro, and so was shown in the wrong segment. The other problem is that I used the .MODEL LARGE macro, which caused the code to go in a segment named chkstk_TEXT, rather than in the default segment _TEXT. This was fixed with .MODEL COMPACT. -- Clayton E. Cramer {pyramid,pixar,tekbspa}!optilink!cramer Pipe bomb: appropriate technology for living lightly on Mother Earth. :-) ---------------------------------------------------------------------------- Disclaimer? You must be kidding! No company would hold opinions like mine!