• J
    x86/build: Mostly disable '-maccumulate-outgoing-args' · 3f135e57
    Josh Poimboeuf 提交于
    The GCC '-maccumulate-outgoing-args' flag is enabled for most configs,
    mostly because of issues which are no longer relevant.  For most
    configs, and with most recent versions of GCC, it's no longer needed.
    
    Clarify which cases need it, and only enable it for those cases.  Also
    produce a compile-time error for the ftrace graph + mcount + '-Os' case,
    which will otherwise cause runtime failures.
    
    The main benefit of '-maccumulate-outgoing-args' is that it prevents an
    ugly prologue for functions which have aligned stacks.  But removing the
    option also has some benefits: more readable argument saves, smaller
    text size, and (presumably) slightly improved performance.
    
    Here are the object size savings for 32-bit and 64-bit defconfig
    kernels:
    
          text	   data	    bss	     dec	    hex	filename
      10006710	3543328	1773568	15323606	 e9d1d6	vmlinux.x86-32.before
       9706358	3547424	1773568	15027350	 e54c96	vmlinux.x86-32.after
    
          text	   data	    bss	     dec	    hex	filename
      10652105	4537576	 843776	16033457	 f4a6b1	vmlinux.x86-64.before
      10639629	4537576	 843776	16020981	 f475f5	vmlinux.x86-64.after
    
    That comes out to a 3% text size improvement on x86-32 and a 0.1% text
    size improvement on x86-64.
    Signed-off-by: NJosh Poimboeuf <jpoimboe@redhat.com>
    Cc: Andrew Lutomirski <luto@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170316193133.zrj6gug53766m6nn@trebleSigned-off-by: NIngo Molnar <mingo@kernel.org>
    3f135e57
ftrace.c 24.4 KB