[PATCH] [PATCH] [gdb] adds several headers to the include list
Manoj Gupta
manojgupta@google.com
Tue Jul 26 23:45:01 GMT 2022
On Fri, Jul 22, 2022 at 12:26 PM Simon Marchi <simark@simark.ca> wrote:
>
> > 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.
>
> I do agree that including unneeded headers is also annoying.
In large projects like Chromium, headers bloat can significantly increase
build times
and is not easy to find out the extraneous ones.
That said, iwyu is a great tool if it can be made to work.
Simon
>
> [1] https://github.com/include-what-you-use/include-what-you-use
>
More information about the Gdb-patches
mailing list