Merge branch 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 14 Oct 2016 21:26:58 +0000 (14:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 14 Oct 2016 21:26:58 +0000 (14:26 -0700)
Pull kbuild updates from Michal Marek:

 - EXPORT_SYMBOL for asm source by Al Viro.

   This does bring a regression, because genksyms no longer generates
   checksums for these symbols (CONFIG_MODVERSIONS). Nick Piggin is
   working on a patch to fix this.

   Plus, we are talking about functions like strcpy(), which rarely
   change prototypes.

 - Fixes for PPC fallout of the above by Stephen Rothwell and Nick
   Piggin

 - fixdep speedup by Alexey Dobriyan.

 - preparatory work by Nick Piggin to allow architectures to build with
   -ffunction-sections, -fdata-sections and --gc-sections

 - CONFIG_THIN_ARCHIVES support by Stephen Rothwell

 - fix for filenames with colons in the initramfs source by me.

* 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: (22 commits)
  initramfs: Escape colons in depfile
  ppc: there is no clear_pages to export
  powerpc/64: whitelist unresolved modversions CRCs
  kbuild: -ffunction-sections fix for archs with conflicting sections
  kbuild: add arch specific post-link Makefile
  kbuild: allow archs to select link dead code/data elimination
  kbuild: allow architectures to use thin archives instead of ld -r
  kbuild: Regenerate genksyms lexer
  kbuild: genksyms fix for typeof handling
  fixdep: faster CONFIG_ search
  ia64: move exports to definitions
  sparc32: debride memcpy.S a bit
  [sparc] unify 32bit and 64bit string.h
  sparc: move exports to definitions
  ppc: move exports to definitions
  arm: move exports to definitions
  s390: move exports to definitions
  m68k: move exports to definitions
  alpha: move exports to actual definitions
  x86: move exports to actual definitions
  ...

34 files changed:
1  2 
Makefile
arch/Kconfig
arch/arm/lib/delay.c
arch/arm/mach-imx/Makefile
arch/m68k/kernel/Makefile
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/entry_64.S
arch/powerpc/kernel/fpu.S
arch/powerpc/kernel/head_32.S
arch/powerpc/kernel/head_64.S
arch/powerpc/kernel/head_8xx.S
arch/powerpc/kernel/misc_32.S
arch/powerpc/kernel/misc_64.S
arch/powerpc/kernel/pci-common.c
arch/powerpc/kernel/setup_32.c
arch/powerpc/kernel/time.c
arch/powerpc/kernel/vector.S
arch/powerpc/lib/Makefile
arch/powerpc/lib/checksum_32.S
arch/powerpc/lib/copyuser_64.S
arch/powerpc/lib/mem_64.S
arch/s390/kernel/Makefile
arch/x86/entry/entry_32.S
arch/x86/entry/entry_64.S
arch/x86/kernel/Makefile
arch/x86/kernel/head_32.S
arch/x86/kernel/head_64.S
arch/x86/lib/hweight.S
arch/x86/lib/memcpy_64.S
include/asm-generic/vmlinux.lds.h
include/linux/compiler.h
include/linux/export.h
include/linux/init.h

diff --cc Makefile
index 27f97b53e6ebd4e60407d38e13be42a0d2fe7127,83dae63df91a5e15216fb79ff33551cc0f1bb739..fa2c3bd2aef99c18bc779a729f20c251ab5c2db1
+++ b/Makefile
@@@ -621,8 -621,12 +621,13 @@@ include arch/$(SRCARCH)/Makefil
  
  KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
  KBUILD_CFLAGS += $(call cc-disable-warning,maybe-uninitialized,)
 +KBUILD_CFLAGS += $(call cc-disable-warning,frame-address,)
  
+ ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
+ KBUILD_CFLAGS += $(call cc-option,-ffunction-sections,)
+ KBUILD_CFLAGS += $(call cc-option,-fdata-sections,)
+ endif
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
  KBUILD_CFLAGS += -Os
  else
diff --cc arch/Kconfig
index 180ea33164dc45821a78c08043dc95119c1bdb7e,48d1e76a1ee3c40c63d80efd69f59ae6a34d1caf..11d349561ece37a33c7f43eeeeee97a16fe83b55
@@@ -450,15 -461,27 +450,36 @@@ config CC_STACKPROTECTOR_STRON
  
  endchoice
  
+ config THIN_ARCHIVES
+       bool
+       help
+         Select this if the architecture wants to use thin archives
+         instead of ld -r to create the built-in.o files.
+ config LD_DEAD_CODE_DATA_ELIMINATION
+       bool
+       help
+         Select this if the architecture wants to do dead code and
+         data elimination with the linker by compiling with
+         -ffunction-sections -fdata-sections and linking with
+         --gc-sections.
+         This requires that the arch annotates or otherwise protects
+         its external entry points from being discarded. Linker scripts
+         must also merge .text.*, .data.*, and .bss.* correctly into
+         output sections. Care must be taken not to pull in unrelated
+         sections (e.g., '.text.init'). Typically '.' in section names
+         is used to distinguish them from label names / C identifiers.
 +config HAVE_ARCH_WITHIN_STACK_FRAMES
 +      bool
 +      help
 +        An architecture should select this if it can walk the kernel stack
 +        frames to determine if an object is part of either the arguments
 +        or local variables (i.e. that it excludes saved return addresses,
 +        and similar) by implementing an inline arch_within_stack_frames(),
 +        which is used by CONFIG_HARDENED_USERCOPY.
 +
  config HAVE_CONTEXT_TRACKING
        bool
        help
Simple merge
index cab128913e72a710a0f405336b0d814e56935546,8ed8ab56bb78fa2be464677a1d8bd62da93dabdc..737450fe790c37fdb42ec122aa5147ccbadd3cc0
@@@ -32,9 -32,13 +32,8 @@@ endi
  
  ifdef CONFIG_SND_IMX_SOC
  obj-y += ssi-fiq.o
- obj-y += ssi-fiq-ksym.o
  endif
  
 -# i.MX1 based machines
 -obj-$(CONFIG_MACH_SCB9328) += mach-scb9328.o
 -obj-$(CONFIG_MACH_APF9328) += mach-apf9328.o
 -obj-$(CONFIG_MACH_IMX1_DT) += imx1-dt.o
 -
  # i.MX21 based machines
  obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 03756ffdcd71063dd028d7d3825d89d70e47990c,f5156105c5f318402f34a9a31846b475fe469671..93cf7a5846a6f5875534cc43a2a3409357dc482a
@@@ -358,8 -360,7 +360,9 @@@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_
        sync                            /* additional sync needed on g4 */
        isync
        blr
 +_ASM_NOKPROBE_SYMBOL(flush_icache_range)
+ EXPORT_SYMBOL(flush_icache_range)
 +
  /*
   * Flush a particular page from the data cache to RAM.
   * Note: this is necessary because the instruction cache does *not*
index 9f0bed214bcb891d48078cfa094c3c1792a3a0d3,8b526846e72acf5811a5f56010de0e8dd5610a98..4f178671f230ccd799a9089ca4389590e94bc703
@@@ -109,8 -110,8 +110,9 @@@ END_FTR_SECTION_IFSET(CPU_FTR_COHERENT_
        bdnz    2b
        isync
        blr
 -      .previous .text
 +_ASM_NOKPROBE_SYMBOL(flush_icache_range)
+ EXPORT_SYMBOL(flush_icache_range)
 +
  /*
   * Like above, but only do the D-cache.
   *
Simple merge
Simple merge
Simple merge
index bc85bdff4e01a18ed7b241faf2b319b845ac13b6,388ec6477fc4400eace2fc9fc80fecb2e23b058f..0c123f3406cd0b19fc9bd8f08f6b6aeecd7235da
@@@ -6,7 -6,33 +6,8 @@@
  #include <asm/thread_info.h>
  #include <asm/page.h>
  #include <asm/ptrace.h>
+ #include <asm/export.h>
  
 -#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
 -/* void do_load_up_transact_altivec(struct thread_struct *thread)
 - *
 - * This is similar to load_up_altivec but for the transactional version of the
 - * vector regs.  It doesn't mess with the task MSR or valid flags.
 - * Furthermore, VEC laziness is not supported with TM currently.
 - */
 -_GLOBAL(do_load_up_transact_altivec)
 -      mfmsr   r6
 -      oris    r5,r6,MSR_VEC@h
 -      MTMSRD(r5)
 -      isync
 -
 -      li      r4,1
 -      stw     r4,THREAD_USED_VR(r3)
 -
 -      li      r10,THREAD_TRANSACT_VRSTATE+VRSTATE_VSCR
 -      lvx     v0,r10,r3
 -      mtvscr  v0
 -      addi    r10,r3,THREAD_TRANSACT_VRSTATE
 -      REST_32VRS(0,r4,r10)
 -
 -      blr
 -#endif
 -
  /*
   * Load state from memory into VMX registers including VSCR.
   * Assumes the caller has enabled VMX in the MSR.
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 49e6ebac7e73e33b0a03327cb65c95a29afc1c67,94c917af968801c643f396d64f051598f24e4e15..779782f5832476582becc24e5a0f0f5b10ea0b53
@@@ -273,7 -276,8 +276,8 @@@ ENTRY(memcpy_mcsafe_unrolled
  .L_done_memcpy_trap:
        xorq %rax, %rax
        ret
 -ENDPROC(memcpy_mcsafe)
 -EXPORT_SYMBOL_GPL(memcpy_mcsafe)
 +ENDPROC(memcpy_mcsafe_unrolled)
++EXPORT_SYMBOL_GPL(memcpy_mcsafe_unrolled)
  
        .section .fixup, "ax"
        /* Return -EFAULT for any failure */
Simple merge
Simple merge
Simple merge
Simple merge