RE: New ARI warning Sat Mar 12 01:53:29 UTC 2011

Pierre Muller
2011-03-14T08:20:29Z

> -----Message d'origine-----
> De : gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] De la part de Eli Zaretskii
> Envoyé : dimanche 13 mars 2011 11:24
> À : Pierre Muller
> Cc : gdb-patches@sourceware.org
> Objet : Re: New ARI warning Sat Mar 12 01:53:29 UTC 2011
>
> > From: "Pierre Muller" <pierre.muller@ics-cnrs.unistra.fr>
> > Date: Sun, 13 Mar 2011 09:21:35 +0100
> >
> > This is the consequence of the two new ARI rules I added:
> > http://sourceware.org/ml/gdb-patches/2011-03/msg00654.html
> >
> > As I just introduced these new rules,
> > I felt that it would be cheating to
> > use OBVIOUS rule as we normally do to fix
> > a ARI regression...
> > This is why I will submit shortly two patches
> > to remove all those new warnings.
>
> The rule to detect "()" without a "void" is fine, but why on Earth do
> we need the other rule, about prototypes like this:
>
> int
> foo (bar);
>
> This is a perfectly valid formatting. In your patch, you modify long
> prototypes like this as follows:
>
> extern struct hppa_objfile_private *
> -hppa_init_objfile_priv_data (struct objfile *objfile);
> + hppa_init_objfile_priv_data (struct objfile *objfile);
>
> But that is not a good idea, because if you type TAB in Emacs on the
> line with the function name, Emacs will reindent the name to column
> zero. So I expect this rule to annoy us quite a bit, e.g. if someone
> reindents a large region.
>
> Can you tell why we need this?

See
http://sourceware.org/ml/gdb-patches/2011-03/msg00651.html

This way you will find only the implementation of function foo_function
using grep:

grep "^foo_function" *

I really thought that prototypes,
either in header or in C sources should not be found by that
pattern and that it shouls thus either be on a single line,
or be indented to avoid being on first column.

Notice that the new rule only found a few of these
extern TYPE
long_func_name (with_long_parameters);

Would it be better to reformat those as
extern TYPE long_func_name
(with_long_parameters);
instead of
extern TYPE
long_func_name (with_long_parameters);

I have no preference on that matter,
I would really like to avoid getting both the
prototype and the implementation if I do:

grep "^func_name "

That's the reason of this rule.

Tell us what you think about the alternate
I propose above and what we should do in your opinion.

Pierre Muller
as ARI maintainer.