Related articles |
---|
Bug Report: Tasking/Intermetrics/Whitesmiths Linker for Zilog Z-x80 wrain@fc.net (John Reinhagen) (1997-03-05) |
From: | John Reinhagen <wrain@fc.net> |
Newsgroups: | comp.bugs.misc,comp.compilers |
Date: | 5 Mar 1997 21:34:09 -0500 |
Organization: | Compilers Central |
Keywords: | linker, 8080, errors |
If you have a 1995 version of the Whitesmiths linker for the Zilog Zx80
processor family, you may be suffering from a very annoying bug.
Whitesmiths was acquired by Intermetrics, which was in turn acquired by
Tasking, so you may have bought the linker under any of these names.
When the linker sees a symbol in the text segment which begins with
"e", it points it to the end of the text segment, no matter what. If
the symbol begins with "b", it points it to the beginning of text. This
is an especially insidious error because it messes up the processing of
_e_rror-handling interrupts, including the _e_xternal/status interrupt,
if you name them in the obvious way.
The linker doesn't touch C identifiers, which all start with an
underscore, but it plays heck with assembly language! I spent a good
long while trying to debug my error handlers before I looked at the map
file and found the problem. I changed the spelling of the affected
interrupts and everything worked fine.
Tasking is assuming the attitude that the linker is unsupported, so
they do not intend to do anything about the problem. I have compiled
and linked several test programs with names spanning the alphadecimal
gamut and beyond, and "b", "B", "e" and "E" seem to be the only problem
characters. I'd feel better if they would look into the matter and
confirm that the problem is not more extensive, but they've given me the
brushoff.
I hope nobody else has had as tough a time with this bug as I've had.
It cost me some serious development time; I post this warning in the
hope that it saves someone else the grief.
JCR
[Sounds like they never expected anyone to link other than C code, and
someone thought he was clever with the "begin" and "end" symbols used
by debuggers and maybe malloc. -John]
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.