[comp.sys.ibm.pc] My Problems Linking With MSC C6.0: The Magic Solutions

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!