Skip to content
  • Steven Rostedt's avatar
    Makefile: Mute warning for __builtin_return_address(>0) for tracing only · 377ccbb4
    Steven Rostedt authored
    With the latest gcc compilers, they give a warning if
    __builtin_return_address() parameter is greater than 0. That is because if
    it is used by a function called by a top level function (or in the case of
    the kernel, by assembly), it can try to access stack frames outside the
    stack and crash the system.
    
    The tracing system uses __builtin_return_address() of up to 2! But it is
    well aware of the dangers that it may have, and has even added precautions
    to protect against it (see the thunk code in arch/x86/entry/thunk*.S)
    
    Linus originally added KBUILD_CFLAGS that would suppress the warning for the
    entire kernel, as simply adding KBUILD_CFLAGS to the tracing directory
    wouldn't work. The tracing directory plays a bit with the CFLAGS and
    requires a little more logic.
    
    This adds that special logic to only suppress the warning for the tracing
    directory. If it is used anywhere else outside of tracing, the warning will
    still be triggered.
    
    Link: http://lkml.kernel.org/r/20160728223043.51996267@grimm.local.home
    
    
    
    Tested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    377ccbb4