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
4 changed files with 12 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
config UML
|
||||
bool
|
||||
default y
|
||||
select ARCH_HAS_KCOV
|
||||
select HAVE_ARCH_AUDITSYSCALL
|
||||
select HAVE_ARCH_SECCOMP_FILTER
|
||||
select HAVE_UID16
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
# 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) \
|
||||
-DELF_ARCH=$(LDS_ELF_ARCH) \
|
||||
-DELF_FORMAT=$(LDS_ELF_FORMAT) \
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
# 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 \
|
||||
registers.o sigio.o signal.o start_up.o time.o tty.o \
|
||||
umid.o user_syms.o util.o drivers/ skas/
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
# Building vDSO images for x86.
|
||||
#
|
||||
|
||||
# Prevents link failures: __sanitizer_cov_trace_pc() is not linked in.
|
||||
KCOV_INSTRUMENT := n
|
||||
|
||||
VDSO64-y := y
|
||||
|
||||
vdso-install-$(VDSO64-y) += vdso.so
|
||||
|
|
Loading…
Reference in a new issue