objtool: Mark non-standard object files and directories
Code which runs outside the kernel's normal mode of operation often does unusual things which can cause a static analysis tool like objtool to emit false positive warnings: - boot image - vdso image - relocation - realmode - efi - head - purgatory - modpost Set OBJECT_FILES_NON_STANDARD for their related files and directories, which will tell objtool to skip checking them. It's ok to skip them because they don't affect runtime stack traces. Also skip the following code which does the right thing with respect to frame pointers, but is too "special" to be validated by a tool: - entry - mcount Also skip the test_nx module because it modifies its exception handling table at runtime, which objtool can't understand. Fortunately it's just a test module so it doesn't matter much. Currently objtool is the only user of OBJECT_FILES_NON_STANDARD, but it might eventually be useful for other tools. Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@kernel.org> Cc: Arnaldo Carvalho de Melo <acme@kernel.org> Cc: Bernd Petrovitsch <bernd@petrovitsch.priv.at> Cc: Borislav Petkov <bp@alien8.de> Cc: Chris J Arges <chris.j.arges@canonical.com> Cc: Jiri Slaby <jslaby@suse.cz> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Michal Marek <mmarek@suse.cz> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Pedro Alves <palves@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: live-patching@vger.kernel.org Link: http://lkml.kernel.org/r/366c080e3844e8a5b6a0327dc7e8c2b90ca3baeb.1456719558.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
319e305ca4
commit
c0dd671686
|
@ -9,7 +9,8 @@
|
||||||
# Changed by many, many contributors over the years.
|
# Changed by many, many contributors over the years.
|
||||||
#
|
#
|
||||||
|
|
||||||
KASAN_SANITIZE := n
|
KASAN_SANITIZE := n
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
# If you want to preset the SVGA mode, uncomment the next line and
|
# If you want to preset the SVGA mode, uncomment the next line and
|
||||||
# set SVGA_MODE to whatever number you want.
|
# set SVGA_MODE to whatever number you want.
|
||||||
|
|
|
@ -16,7 +16,8 @@
|
||||||
# (see scripts/Makefile.lib size_append)
|
# (see scripts/Makefile.lib size_append)
|
||||||
# compressed vmlinux.bin.all + u32 size of vmlinux.bin.all
|
# compressed vmlinux.bin.all + u32 size of vmlinux.bin.all
|
||||||
|
|
||||||
KASAN_SANITIZE := n
|
KASAN_SANITIZE := n
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
|
targets := vmlinux vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma \
|
||||||
vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4
|
vmlinux.bin.xz vmlinux.bin.lzo vmlinux.bin.lz4
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
#
|
#
|
||||||
# Makefile for the x86 low level entry code
|
# Makefile for the x86 low level entry code
|
||||||
#
|
#
|
||||||
|
|
||||||
|
OBJECT_FILES_NON_STANDARD_entry_$(BITS).o := y
|
||||||
|
OBJECT_FILES_NON_STANDARD_entry_64_compat.o := y
|
||||||
|
|
||||||
obj-y := entry_$(BITS).o thunk_$(BITS).o syscall_$(BITS).o
|
obj-y := entry_$(BITS).o thunk_$(BITS).o syscall_$(BITS).o
|
||||||
obj-y += common.o
|
obj-y += common.o
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
KBUILD_CFLAGS += $(DISABLE_LTO)
|
KBUILD_CFLAGS += $(DISABLE_LTO)
|
||||||
KASAN_SANITIZE := n
|
KASAN_SANITIZE := n
|
||||||
UBSAN_SANITIZE := n
|
UBSAN_SANITIZE := n
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
VDSO64-$(CONFIG_X86_64) := y
|
VDSO64-$(CONFIG_X86_64) := y
|
||||||
VDSOX32-$(CONFIG_X86_X32_ABI) := y
|
VDSOX32-$(CONFIG_X86_X32_ABI) := y
|
||||||
|
@ -16,6 +17,7 @@ vobjs-y := vdso-note.o vclock_gettime.o vgetcpu.o
|
||||||
|
|
||||||
# files to link into kernel
|
# files to link into kernel
|
||||||
obj-y += vma.o
|
obj-y += vma.o
|
||||||
|
OBJECT_FILES_NON_STANDARD_vma.o := n
|
||||||
|
|
||||||
# vDSO images to build
|
# vDSO images to build
|
||||||
vdso_img-$(VDSO64-y) += 64
|
vdso_img-$(VDSO64-y) += 64
|
||||||
|
|
|
@ -16,9 +16,14 @@ CFLAGS_REMOVE_ftrace.o = -pg
|
||||||
CFLAGS_REMOVE_early_printk.o = -pg
|
CFLAGS_REMOVE_early_printk.o = -pg
|
||||||
endif
|
endif
|
||||||
|
|
||||||
KASAN_SANITIZE_head$(BITS).o := n
|
KASAN_SANITIZE_head$(BITS).o := n
|
||||||
KASAN_SANITIZE_dumpstack.o := n
|
KASAN_SANITIZE_dumpstack.o := n
|
||||||
KASAN_SANITIZE_dumpstack_$(BITS).o := n
|
KASAN_SANITIZE_dumpstack_$(BITS).o := n
|
||||||
|
|
||||||
|
OBJECT_FILES_NON_STANDARD_head_$(BITS).o := y
|
||||||
|
OBJECT_FILES_NON_STANDARD_relocate_kernel_$(BITS).o := y
|
||||||
|
OBJECT_FILES_NON_STANDARD_mcount_$(BITS).o := y
|
||||||
|
OBJECT_FILES_NON_STANDARD_test_nx.o := y
|
||||||
|
|
||||||
CFLAGS_irq.o := -I$(src)/../include/asm/trace
|
CFLAGS_irq.o := -I$(src)/../include/asm/trace
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD_efi_thunk_$(BITS).o := y
|
||||||
|
|
||||||
obj-$(CONFIG_EFI) += quirks.o efi.o efi_$(BITS).o efi_stub_$(BITS).o
|
obj-$(CONFIG_EFI) += quirks.o efi.o efi_$(BITS).o efi_stub_$(BITS).o
|
||||||
obj-$(CONFIG_ACPI_BGRT) += efi-bgrt.o
|
obj-$(CONFIG_ACPI_BGRT) += efi-bgrt.o
|
||||||
obj-$(CONFIG_EARLY_PRINTK_EFI) += early_printk.o
|
obj-$(CONFIG_EARLY_PRINTK_EFI) += early_printk.o
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o
|
purgatory-y := purgatory.o stack.o setup-x86_$(BITS).o sha256.o entry64.o string.o
|
||||||
|
|
||||||
targets += $(purgatory-y)
|
targets += $(purgatory-y)
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
# for more details.
|
# for more details.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
KASAN_SANITIZE := n
|
KASAN_SANITIZE := n
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
subdir- := rm
|
subdir- := rm
|
||||||
|
|
||||||
obj-y += init.o
|
obj-y += init.o
|
||||||
|
|
|
@ -6,7 +6,8 @@
|
||||||
# for more details.
|
# for more details.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
KASAN_SANITIZE := n
|
KASAN_SANITIZE := n
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
always := realmode.bin realmode.relocs
|
always := realmode.bin realmode.relocs
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ KBUILD_CFLAGS := $(cflags-y) -DDISABLE_BRANCH_PROFILING \
|
||||||
GCOV_PROFILE := n
|
GCOV_PROFILE := n
|
||||||
KASAN_SANITIZE := n
|
KASAN_SANITIZE := n
|
||||||
UBSAN_SANITIZE := n
|
UBSAN_SANITIZE := n
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
lib-y := efi-stub-helper.o
|
lib-y := efi-stub-helper.o
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
OBJECT_FILES_NON_STANDARD := y
|
||||||
|
|
||||||
hostprogs-y := modpost mk_elfconfig
|
hostprogs-y := modpost mk_elfconfig
|
||||||
always := $(hostprogs-y) empty.o
|
always := $(hostprogs-y) empty.o
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue