um: Support kcov
This adds support for kcov to UML. There is a small problem where UML will randomly segfault during boot; this is because current_thread_info() occasionally returns an invalid (non-NULL) pointer and we try to dereference it in __sanitizer_cov_trace_pc(). I consider this a bug in UML itself and this patch merely exposes it. [v2: disable instrumentation in UML-specific code] Cc: Quentin Casasnovas <quentin.casasnovas@oracle.com> Cc: Richard Weinberger <richard@nod.at> Cc: Thomas Meyer <thomas@m3y3r.de> Cc: user-mode-linux-devel <user-mode-linux-devel@lists.sourceforge.net> Cc: Dmitry Vyukov <dvyukov@google.com> Signed-off-by: Vegard Nossum <vegard.nossum@oracle.com> Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
8e99bc7046
commit
915eed20e4
|
@ -1,6 +1,7 @@
|
||||||
config UML
|
config UML
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
select ARCH_HAS_KCOV
|
||||||
select HAVE_ARCH_AUDITSYSCALL
|
select HAVE_ARCH_AUDITSYSCALL
|
||||||
select HAVE_ARCH_SECCOMP_FILTER
|
select HAVE_ARCH_SECCOMP_FILTER
|
||||||
select HAVE_UID16
|
select HAVE_UID16
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
# Licensed under the GPL
|
# Licensed under the GPL
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Don't instrument UML-specific code; without this, we may crash when
|
||||||
|
# accessing the instrumentation buffer for the first time from the
|
||||||
|
# kernel.
|
||||||
|
KCOV_INSTRUMENT := n
|
||||||
|
|
||||||
CPPFLAGS_vmlinux.lds := -DSTART=$(LDS_START) \
|
CPPFLAGS_vmlinux.lds := -DSTART=$(LDS_START) \
|
||||||
-DELF_ARCH=$(LDS_ELF_ARCH) \
|
-DELF_ARCH=$(LDS_ELF_ARCH) \
|
||||||
-DELF_FORMAT=$(LDS_ELF_FORMAT) \
|
-DELF_FORMAT=$(LDS_ELF_FORMAT) \
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
# Licensed under the GPL
|
# Licensed under the GPL
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Don't instrument UML-specific code
|
||||||
|
KCOV_INSTRUMENT := n
|
||||||
|
|
||||||
obj-y = aio.o execvp.o file.o helper.o irq.o main.o mem.o process.o \
|
obj-y = aio.o execvp.o file.o helper.o irq.o main.o mem.o process.o \
|
||||||
registers.o sigio.o signal.o start_up.o time.o tty.o \
|
registers.o sigio.o signal.o start_up.o time.o tty.o \
|
||||||
umid.o user_syms.o util.o drivers/ skas/
|
umid.o user_syms.o util.o drivers/ skas/
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
# Building vDSO images for x86.
|
# Building vDSO images for x86.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
|
||||||
|
KCOV_INSTRUMENT := n
|
||||||
|
|
||||||
VDSO64-y := y
|
VDSO64-y := y
|
||||||
|
|
||||||
vdso-install-$(VDSO64-y) += vdso.so
|
vdso-install-$(VDSO64-y) += vdso.so
|
||||||
|
|
Loading…
Reference in New Issue