Re: [PATCH] BUG preserve registers

Andrew Morton
2002-02-10T05:30:16Z

Linus Torvalds wrote:
>
> On Sat, 9 Feb 2002, Andrew Morton wrote:
> >
> > This is due to BUG() calls in inline functions in headers. The biggest
> > culprit is dget(), in dcache.h. This causes the full path of the header file
> > to be expanded into each and every compilation unit which includes
> > dcache.h.
>
> Hmm. Which brings up another issue: can somebody come up with an idea of
> how to make the thing not use the whole pathname, but only the basename
> relative to the top-of-tree?

This is the cue for Keith to pop up and say "fixed in kbuild 2.5".

The preprocessor is simply pasting together its -I argument and the
string from the #include statement. There doesn't seem to be a way
of getting it to just emit "include/linux/dcache.h" or "drivers/char/serial.c".

__BASE_FILE__ seems to have been supported for a sufficiently long time. It
will just give us "dcache.h". I think that's OK. We don't get full path
info for the .c files either, and I'm not aware of that causing problems - if
there's a BUG() at inode.c:1234 we seem to be able to work out which inode.c
to look at.

__BASE_FILE__ is already used a bit in spinlock.h, so I think I'll
go with that. But I'll also take a look at all the inlined BUGs.

>
> Note that the correct thing to do may be to un-inline a lot of things.
> We've done that before, simply because it often improves performance.
>
> What ends up happening is that some function starts out really small, and
> then later on people add logic and debug code to it, and suddenly it's not
> really appropriate to inline any more.

I noticed :)

-