Josh Poimboeuf
3f135e57a4
x86/build: Mostly disable '-maccumulate-outgoing-args'
...
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: Josh 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@treble
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-03-30 11:53:04 +02:00
..
basic
fixdep: faster CONFIG_ search
2016-08-24 22:34:19 +02:00
coccinelle
Coccinelle: misc: Add support for devm variant in all modes
2016-12-11 12:08:26 +01:00
dtc
scripts/dtc: Update to upstream version 0931cea3ba20
2017-01-04 10:47:53 -06:00
gcc-plugins
Fixes a typo in sancov plugin, exposed in earlier compiler versions
2017-03-09 18:05:41 -08:00
gdb
Revert "scripts/gdb: add a Radix Tree Parser"
2016-07-15 14:54:27 +09:00
genksyms
kbuild: modversions: add infrastructure for emitting relative CRCs
2017-02-03 08:28:25 -08:00
kconfig
Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2016-12-17 16:30:24 -08:00
ksymoops
mod
objtool, modules: Discard objtool annotation sections for modules
2017-03-01 20:32:25 +01:00
package
Merge branch 'kbuild/rc-fixes' into kbuild/misc
2016-12-11 21:20:34 +01:00
selinux
selinux: use the kernel headers when building scripts/selinux
2016-12-21 10:39:25 -05:00
tracing
ftrace/scripts: Add helper script to bisect function tracing problem functions
2016-09-21 13:56:55 -04:00
.gitignore
KEYS: Reserve an extra certificate symbol for inserting without recompiling
2016-02-26 15:30:20 +00:00
adjust_autoksyms.sh
kbuild: fix scripts/adjust_autoksyms.sh* for the no modules case
2016-12-11 22:30:10 +01:00
analyze_suspend.py
AnalyzeSuspend: fix drag and zoom bug in javascript
2017-02-16 00:52:35 +01:00
asn1_compiler.c
ASN.1: fix open failure check on headername
2016-04-06 14:06:48 +01:00
bloat-o-meter
scripts/bloat-o-meter: compile .NUMBER regex
2016-12-12 18:55:06 -08:00
bootgraph.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
check-lc_ctype.c
DocBook: Use a fixed encoding for output
2015-09-28 01:31:48 -06:00
check_00index.sh
scripts: add a script to check if Documentation/00-INDEX is sane
2016-12-05 14:21:24 -07:00
check_extable.sh
scripts: add check_extable.sh script.
2015-04-13 21:03:02 +09:30
checkincludes.pl
scripts/checkincludes.pl: add exit message for no duplicates found
2017-02-22 16:41:26 -08:00
checkkconfigsymbols.py
checkkconfigsymbols.py: support Kconfig's 'imply' statement
2017-02-03 11:49:06 +01:00
checkpatch.pl
checkpatch: warn when formats use %Z and suggest %z
2017-02-27 18:43:48 -08:00
checkstack.pl
OpenRISC updates for 4.11
2017-02-24 18:37:03 -08:00
checksyscalls.sh
x86/asm/entry: Move the arch/x86/syscalls/ definitions to arch/x86/entry/syscalls/
2015-06-04 07:37:37 +02:00
checkversion.pl
kbuild: don't warn about include/linux/version.h not including itself
2011-04-29 15:38:55 +02:00
cleanfile
cleanpatch
coccicheck
scripts/coccicheck: Update reference for the corresponding documentation
2016-10-11 09:50:43 +02:00
config
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
conmakehash.c
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
const_structs.checkpatch
const_structs.checkpatch: add frequently used from Julia Lawall's list
2016-10-11 15:06:30 -07:00
decode_stacktrace.sh
scripts/decode_stacktrace.sh: Fix address line detection on x86
2016-11-29 14:19:50 +01:00
decodecode
scripts/decodecode: make faulting insn ptr more robust
2013-04-29 15:54:27 -07:00
depmod.sh
depmod: pass -P $CONFIG_SYMBOL_PREFIX
2013-02-22 11:52:31 +01:00
diffconfig
vfs,ext2: remove CONFIG_EXT2_FS_XIP and rename CONFIG_FS_XIP to CONFIG_FS_DAX
2015-02-16 17:56:04 -08:00
docproc.c
docproc: print a comment about autogeneration for rst output
2016-05-14 09:56:56 -06:00
export_report.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
extract-cert.c
KEYS: Remove unnecessary header #inclusions from extract-cert.c
2015-09-25 16:31:45 +01:00
extract-ikconfig
scripts/extract-ikconfig: Support LZ4-compressed images.
2015-04-15 14:01:12 +02:00
extract-module-sig.pl
KEYS: Provide a script to extract a module signature
2015-10-21 15:18:36 +01:00
extract-sys-certs.pl
KEYS: Use the symbol value for list size, updated by scripts/insert-sys-cert
2016-02-26 15:32:05 +00:00
extract-vmlinux
scripts: add extract-vmlinux
2011-08-31 16:12:17 +02:00
extract_xc3028.pl
[media] extract_xc3028.pl: move it to scripts/dir
2016-07-17 14:08:12 -03:00
faddr2line
scripts/faddr2line: Fix "size mismatch" error
2016-10-25 18:40:37 +02:00
gcc-goto.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-ld
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-plugin.sh
gcc-plugins: abort builds cleanly when not supported
2016-08-08 17:49:05 -07:00
gcc-version.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-x86_32-has-stack-protector.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
gcc-x86_64-has-stack-protector.sh
scripts/has-stack-protector: add -fno-PIE
2016-11-09 22:28:05 +01:00
gen_initramfs_list.sh
initramfs: Escape colons in depfile
2016-09-23 10:35:32 +02:00
get_dvb_firmware
[media] doc-rst: move DVB avulse docs to Documentation/media
2016-07-17 14:02:45 -03:00
get_maintainer.pl
get_maintainer: look for arbitrary letter prefixes in sections
2016-12-12 18:55:09 -08:00
gfp-translate
chmod +x scripts/gfp-translate
2012-06-27 12:44:29 -07:00
headerdep.pl
headers.sh
CRIS: Fix headers_install
2014-12-20 00:01:12 +01:00
headers_check.pl
headers_check: don't warn about c++ guards
2016-05-24 14:12:48 +10:00
headers_install.sh
Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-10-14 09:22:26 +02:00
insert-sys-cert.c
KEYS: Reserve an extra certificate symbol for inserting without recompiling
2016-02-26 15:30:20 +00:00
kallsyms.c
kbuild: modversions: add infrastructure for emitting relative CRCs
2017-02-03 08:28:25 -08:00
Kbuild.include
x86/build: Mostly disable '-maccumulate-outgoing-args'
2017-03-30 11:53:04 +02:00
kernel-doc
kernel-doc: Handle returning pointers to pointers
2017-01-26 15:20:10 -07:00
kernel-doc-xml-ref
scripts/kernel-doc: Adding cross-reference links to html documentation.
2015-08-16 22:11:16 -06:00
ld-version.sh
ld-version: Drop the 4th and 5th version components
2016-05-13 14:02:05 +02:00
Lindent
scripts/Lindent: clean up and optimize
2017-02-22 16:41:26 -08:00
link-vmlinux.sh
kbuild: minor improvement for thin archives build
2016-11-29 15:58:57 +01:00
Makefile
GCC plugin infrastructure
2016-06-07 22:57:10 +02:00
Makefile.asm-generic
kbuild: Remove stale asm-generic wrappers
2016-07-07 15:58:45 +02:00
Makefile.build
kbuild: modversions: add infrastructure for emitting relative CRCs
2017-02-03 08:28:25 -08:00
Makefile.clean
Shared library support
2016-06-07 22:57:10 +02:00
Makefile.dtbinst
dtbsinstall: don't move target directory out of the way
2016-01-28 11:40:32 +01:00
Makefile.extrawarn
Kbuild: enable -Wmaybe-uninitialized warnings by default
2016-11-11 08:45:08 -08:00
Makefile.fwinst
kbuild: include $(src)/Makefile rather than $(obj)/Makefile
2015-04-02 16:42:08 +02:00
Makefile.gcc-plugins
powerpc updates for 4.11 part 1.
2017-02-22 10:30:38 -08:00
Makefile.headersinst
kbuild: collect shorthands into scripts/Kbuild.include
2014-11-26 14:36:52 +01:00
Makefile.help
Makefile.host
Shared library support
2016-06-07 22:57:10 +02:00
Makefile.kasan
kasan: turn on -fsanitize-address-use-after-scope
2016-12-12 18:55:09 -08:00
Makefile.lib
Merge branch 'akpm' (patches from Andrew)
2016-08-02 21:08:07 -04:00
Makefile.modbuiltin
Makefile.modinst
modsign: Abort modules_install when signing fails
2015-08-07 16:26:13 +01:00
Makefile.modpost
kbuild: add arch specific post-link Makefile
2016-09-09 10:47:00 +02:00
Makefile.modsign
modsign: lookup lines ending in .ko in .mod files
2014-08-27 21:54:11 +09:30
Makefile.ubsan
Kbuild: enable -Wmaybe-uninitialized warning for "make W=1"
2016-11-11 08:45:08 -08:00
makelst
markup_oops.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mkcompile_h
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
mkmakefile
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
mksysmap
mksysmap: Add h8300 local symbol pattern
2015-06-23 13:35:47 +09:00
mkuboot.sh
mkuboot.sh: Fail if mkimage is missing
2011-01-07 14:31:01 +01:00
mkversion
module-common.lds
There was some breakage with the changes for jump labels in the 4.11 merge
2017-03-07 09:37:28 -08:00
namespace.pl
kallsyms: add support for relative offsets in kallsyms address table
2016-03-15 16:55:16 -07:00
objdiff
scripts: objdiff: support directories for the augument of record command
2014-06-10 14:59:33 +02:00
patch-kernel
kbuild: trivial - remove trailing spaces
2014-04-30 17:34:32 +02:00
pnmtologo.c
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
profile2linkerlist.pl
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00
prune-kernel
scripts: add "prune-kernel" script to clean up old kernel images
2016-02-09 10:09:52 -08:00
recordmcount.c
recordmcount: arm: Implement make_nop
2016-11-14 16:43:00 -05:00
recordmcount.h
recordmcount: Fix endianness handling bug for nop_mcount
2015-11-03 10:45:26 -05:00
recordmcount.pl
scripts/spelling.txt: add "swith" pattern and fix typo instances
2017-02-27 18:43:46 -08:00
setlocalversion
kbuild: setlocalversion: print error to STDERR
2016-06-20 17:37:45 +02:00
show_delta
kbuild: trivial - remove trailing empty lines
2014-06-10 00:04:06 +02:00
sign-file.c
sign-file: fix build error in sign-file.c with libressl
2017-02-10 12:43:47 +11:00
sortextable.c
powerpc: Build-time sort the exception table
2016-11-14 11:11:51 +11:00
sortextable.h
scripts/sortextable: suppress warning: `relocs_size' may be used uninitialized
2014-10-14 02:18:23 +02:00
spelling.txt
scripts/spelling.txt: add "overide" pattern and fix typo instances
2017-03-09 17:01:09 -08:00
stackdelta
scripts: add stackdelta script
2015-08-28 17:04:40 +02:00
stackusage
scripts: add stackusage script
2015-08-28 17:04:40 +02:00
tags.sh
scripts/tags.sh: include arch/Kconfig* for tags generation
2017-02-22 16:41:26 -08:00
unifdef.c
unifdef: update to upstream version 2.5
2011-01-22 15:50:59 +01:00
ver_linux
ver_linux: rename ver_linux.awk to ver_linux
2016-08-31 13:59:31 +02:00
xen-hypercalls.sh
xen: build infrastructure for generating hypercall depending symbols
2015-03-16 14:49:13 +00:00
xz_wrap.sh
kbuild: Make scripts executable
2014-08-20 16:03:45 +02:00