On Sun, Aug 09, 2009 at 08:38:31PM +0200, Marc Balmer wrote:
ddb's trace command should produce the function name.
I think it's obvious that it can't when the function has been
inlined. This is not something that can be fixed in ddb,
it's a gcc feature which can be disabled, this is what __noinline is
for.
The problem with __noinline is that it's gcc-specific. As some peoples
compiles NetBSD with a compiler which is not gcc, this has to be
encapsulated
in a macro so the __noinline can be easily removed when not supported
(or not needed).
Making the symbol global also prevents gcc from inlining the function.
But this is a side effect of the current GNU toolchain implementation,
I don't think it's safe to rely on this side effect to prevent
inlining where we don't want it.