[PATCH] [PATCH] [gdb] adds several headers to the include list
Simon Marchi
simark@simark.ca
Fri Jul 22 19:26:52 GMT 2022
> On Thu, Jul 21, 2022 at 10:41 AM Pedro Alves <pedro@palves.net <mailto:pedro@palves.net>> wrote:
>
> > diff --git a/gdb/value.c b/gdb/value.c
> > index 022fca91a42..c9bec678d95 100644
> > --- a/gdb/value.c
> > +++ b/gdb/value.c
> > @@ -40,6 +40,9 @@
> > #include "cp-abi.h"
> > #include "user-regs.h"
> > #include <algorithm>
> > +#include <iterator>
> > +#include <utility>
> > +#include <vector>
>
> It seems to me that <vector> should have beeen included in the header (value.h):
>
> $ grep std::vector value.h
> std::vector<value_ref_ptr> *val_chain,
> extern std::vector<value_ref_ptr> value_release_to_mark
>
> This looks like a pervasive thing in the gdb codebase.
> I just quickly grepped for '#include <vector>' for files that have a "std::vector" in the gdb codebase .
>
> There are 200+ files that use std::vector but do not include <vector> i.e. they rely on a transitive include through other headers.
>
> Thanks,
> Manoj
Indeed, ideally every file would include what it uses. I don't know
about you, but I don't see that as a big problem though. The worst that
can happen is that you need to fix some includes when shuffling things.
I don't think that a file relying on a transitive include can lead to
some wrong behavior.
I think the opposite is more annoying though, files including headers
they no longer need to. Let's say foo.c unnecessarily includes
breakpoint.h, then when changing breakpoint.h, foo.c will unnecessarily
get re-built. I sometimes run some files through include-what-you-use
[1] and remove the includes it tells me are unnecessary.
Unfortunately, it only works for main source files, it won't tell you
that foo.h unnecessarily includes bar.h. It might be possible to get it
to work by trying to compile foo.h as a main source file, but that's not
really possible in our context, with how things are done currently.
Simon
[1] https://github.com/include-what-you-use/include-what-you-use
More information about the Gdb-patches
mailing list