Hi, Frank >Those in turn >might be represented with almost the normal mf_xform_decls(), while >letting __builtin_alloca() remain. How can we just remain __builtin_alloca() only for variable-length array? Mudflap changes expand_builtin_alloca function.
I think it is enough for apply mudflap in Linux Kernel. Janboe Ye 2009/7/16 Frank Ch. Eigler <f...@redhat.com>: > >> Janboe Ye <yuan-bo...@motorola.com> writes: > >>> normally gcc will use expand_builtin_alloca to handle variable array. >>> But mudflap will force this function to return immediately to invoke >>> alloca explicit. >>> >>> Is there some way to still use expand_builtin_alloca without changing >>> gcc source code? > > I don't think so. > > > Ian Lance Taylor <i...@google.com> writes: > >> mudflap can't check accesses to memory allocated using alloca unless >> it overrides __builtin_alloca. > > It can't currently. But instead of redirecting the call to a > heap-based alloca() wannabe in libmudflap/mf-hooks1.c, perhaps > mudflap could instrument alloca() by generating code like this > instead: > > __builtin_alloca(N) --> GIMPLE_TRY_FINALLY( try { > ptr = __builtin_alloca(N) > __mf_register(ptr ...) > ptr; > } finally (attached to the function scope) { > __mf_unregister(ptr ...) > } > > Or perhaps not, if alloca() can be used in loops in way that > prevents clean nesting of the try/finally. > > OTOH, I believe the original poster's case came from gcc-synthesized > alloca's, coming from variable-length array allocation. Those in turn > might be represented with almost the normal mf_xform_decls(), while > letting __builtin_alloca() remain. > > Either of these requires gcc changes though. > > >> [...] Although, of course, you could simply not use mudflap for the >> code in question. > > The original poster's purpose is specifically to build bits of the > linux kernel with mudflap instrumentation. > > > - FChE >