]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Merge tag 'clang-lto-v5.12-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 23 Feb 2021 23:13:45 +0000 (15:13 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 23 Feb 2021 23:13:45 +0000 (15:13 -0800)
Pull more clang LTO updates from Kees Cook:
 "Clang LTO x86 enablement.

  Full disclosure: while this has _not_ been in linux-next (since it
  initially looked like the objtool dependencies weren't going to make
  v5.12), it has been under daily build and runtime testing by Sami for
  quite some time. These x86 portions have been discussed on lkml, with
  Peter, Josh, and others helping nail things down.

  The bulk of the changes are to get objtool working happily. The rest
  of the x86 enablement is very small.

  Summary:

   - Generate __mcount_loc in objtool (Peter Zijlstra)

   - Support running objtool against vmlinux.o (Sami Tolvanen)

   - Clang LTO enablement for x86 (Sami Tolvanen)"

Link: https://lore.kernel.org/lkml/20201013003203.4168817-26-samitolvanen@google.com/
Link: https://lore.kernel.org/lkml/cover.1611263461.git.jpoimboe@redhat.com/
* tag 'clang-lto-v5.12-rc1-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  kbuild: lto: force rebuilds when switching CONFIG_LTO
  x86, build: allow LTO to be selected
  x86, cpu: disable LTO for cpu.c
  x86, vdso: disable LTO only for vDSO
  kbuild: lto: postpone objtool
  objtool: Split noinstr validation from --vmlinux
  x86, build: use objtool mcount
  tracing: add support for objtool mcount
  objtool: Don't autodetect vmlinux.o
  objtool: Fix __mcount_loc generation with Clang's assembler
  objtool: Add a pass for generating __mcount_loc

12 files changed:
1  2 
Makefile
arch/x86/Kconfig
arch/x86/Makefile
arch/x86/power/Makefile
kernel/trace/Kconfig
scripts/Makefile.lib
tools/objtool/builtin-check.c
tools/objtool/check.c
tools/objtool/include/objtool/builtin.h
tools/objtool/include/objtool/check.h
tools/objtool/include/objtool/objtool.h
tools/objtool/objtool.c

diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index f47951e19c9d38f37454521de225e96f5d3022a3,b84cdc72b51f1b398d7dc230bdf0304d717c8449..c3a85d8f6c5c45a95a44551d613a35db3b20b6b1
  
  #include <subcmd/parse-options.h>
  #include <string.h>
 -#include "builtin.h"
 -#include "objtool.h"
 +#include <objtool/builtin.h>
 +#include <objtool/objtool.h>
  
- bool no_fp, no_unreachable, retpoline, module, backtrace, uaccess, stats, validate_dup, vmlinux;
+ bool no_fp, no_unreachable, retpoline, module, backtrace, uaccess, stats, validate_dup, vmlinux, mcount, noinstr;
  
  static const char * const check_usage[] = {
        "objtool check [<options>] file.o",
index 331a763d87756b6b4510f4b1b568030afbeec251,85993e606782b3e161dd8188da76a7399c9f4cdc..080a3d6cbd75dc3c4ab66778e1c1efac9a2b4ca7
@@@ -3048,11 -3015,22 +3136,18 @@@ int check(struct objtool_file *file
                goto out;
        warnings += ret;
  
+       if (mcount) {
+               ret = create_mcount_loc_sections(file);
+               if (ret < 0)
+                       goto out;
+               warnings += ret;
+       }
  out:
 -      if (ret < 0) {
 -              /*
 -               *  Fatal error.  The binary is corrupt or otherwise broken in
 -               *  some way, or objtool itself is broken.  Fail the kernel
 -               *  build.
 -               */
 -              return ret;
 -      }
 -
 +      /*
 +       *  For now, don't fail the kernel build on fatal warnings.  These
 +       *  errors are still fairly common due to the growing matrix of
 +       *  supported toolchains and their recent pace of change.
 +       */
        return 0;
  }
Simple merge
Simple merge