Can lint help an ANSI-C programmer?
Richard A. O'Keefe
ok at goanna.cs.rmit.oz.au
Sun Jun 3 16:19:21 AEST 1990
In article <ZUHN.90Jun2145646 at umn-cs.cs.umn.edu>, zuhn at umn-cs.cs.umn.edu (Zoo) writes:
> >>>>> On 31 May 90 11:25:42 GMT, ok at goanna.cs.rmit.oz.au (Richard A. O'Keefe) said:
> RAOK> How is an ANSI C compiler, with just one file to look at,
> RAOK> going to notice that you've defined two functions with the
> RAOK> same name in different files? Yes, the linker will catch
> RAOK> that one, but the linker won't tell you which lines the
> RAOK> definitions are on, and lint will.
> Then fix your linker... I use GNU ld and it does just what you say
> the linker won't do. You don't need lint to catch this.
Will you kindly tell me how I can fix the linker on an Encore Multimax
*without source*? Obviously a linker _could_ do this, what I said and
meant is that the linkers I have to use _won't_. I learned programming
on a B6700, and have never understood why other binders are less capable.
But they are. If GNU ld runs on Encores, I would like to hear about it
(they use COFF, even under their "BSD" version, and there are extensions
to deal with sharing and other parallel-related features).
What's more, even GNU ld can't report line number information that isn't
_there_, and the default behaviour of cc at any rate on this system is
_not_ to produce line number information. I tested this by doing
cc -c last.c
aoutdump -l last.o
which found no line number information in last.o.
Obviously, a C compiler *could* do what the Burroughs Fortran, Algol,
Cobol, ESPOL, PL/I, and so on compilers did back in the 60s and leave
*complete* symbol table information and complete line number information
in object files as a matter of course, and linkers *could* act like the
Burroughs "Binder" and check that all the references to a symbol were
type-consistent. It would even be possible to have a language-specific
means of checking interfile consistency despite the limitations of a
linker, as Simula 67 had in the 60s and as Ada has at this day. But there
is nothing in X3.159 to *force* any of this.
I note that my posting listed a number of other things that lint could
do for you which Zuhn has not listed Gcc/Gld as currently doing; I'll
stipulate that there is no reason in principle why they _couldn't_.
I'll also point out that by the time you have a compiler/linker system
that _does_ do these intermodule checks, what you'll have will _be_ lint
in everything but name.
--
"A 7th class of programs, correct in every way, is believed to exist by a
few computer scientists. However, no example could be found to include here."
More information about the Comp.lang.c
mailing list