This is the mail archive of the
mailing list for the GDB project.
Re: Proposal: convert function definitions to prototyped form
On Jun 3, 6:58am, Eli Zaretskii wrote:
> So with a script, we will always need a verification tool that can be
> trusted to find any potential bugs introduced by reformatting.
That's why I wrote check-decls (see
) which takes the result of comparing (via diff -u) the original
sources with the protoized sources and produces a C source file in
which the portions from the protoized sources are used to construct
prototypes and the portions from the original sources are used to
construct (potentially?) corresponding function definitions. We can
then invoke the C compiler (gcc -c -Wall) on the result and see what
kinds of warnings and errors are produced.
E.g, in an earlier (than the one I posted) version of fix-decls,
I hadn't yet handled comma separated parameter lists and so the
foo (a, b, c)
char *b, *c;
was getting transformed into
foo (int a, int b, char *b, *c)
This type of mistake would've been quickly caught by check-decls +
gcc. (As it was, I caught it myself because I was looking for it.)
Also, since my fix-decls script merely looks for patterns which
appear to be function definitions, it was finding
in find_overload_match() in valops.c and turning this into
if (int overload_debug)
(Note that the ``if'' is at the beginning of the line in this function.)
I found this one when I did a test build, but check-decls + the C
compiler would have caught this one too. (fix-decls was quickly
changed so that it no longer gets tripped up by this code.) Also, note
that check-decls would've caught this mistake even if the the
construct in question had appeared in some #if 0'd code whereas doing
a build wouldn't have.
I think it could still happen that something might slip by that won't
work in the real code, but now that I've written check-decls, I think
it is much, much less likely.