linux-xiaomi-chiron/tools/testing/selftests
David Matlack cdc979dae2 KVM: selftests: Link selftests directly with lib object files
The linker does obey strong/weak symbols when linking static libraries,
it simply resolves an undefined symbol to the first-encountered symbol.
This means that defining __weak arch-generic functions and then defining
arch-specific strong functions to override them in libkvm will not
always work.

More specifically, if we have:

lib/generic.c:

  void __weak foo(void)
  {
          pr_info("weak\n");
  }

  void bar(void)
  {
          foo();
  }

lib/x86_64/arch.c:

  void foo(void)
  {
          pr_info("strong\n");
  }

And a selftest that calls bar(), it will print "weak". Now if you make
generic.o explicitly depend on arch.o (e.g. add function to arch.c that
is called directly from generic.c) it will print "strong". In other
words, it seems that the linker is free to throw out arch.o when linking
because generic.o does not explicitly depend on it, which causes the
linker to lose the strong symbol.

One solution is to link libkvm.a with --whole-archive so that the linker
doesn't throw away object files it thinks are unnecessary. However that
is a bit difficult to plumb since we are using the common selftests
makefile rules. An easier solution is to drop libkvm.a just link
selftests with all the .o files that were originally in libkvm.a.

Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: David Matlack <dmatlack@google.com>
Message-Id: <20220520233249.3776001-9-dmatlack@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-06-09 10:52:25 -04:00
..
alsa selftests: alsa: Handle pkg-config failure more gracefully 2022-05-31 18:02:18 +02:00
arm64 kselftest/arm64: signal: Skip SVE signal test if not enough VLs supported 2022-06-02 20:29:17 +01:00
bpf selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read 2022-05-27 07:57:25 -07:00
breakpoints
capabilities
cgroup Two followon fixes for the post-5.19 series "Use pageblock_order for cma 2022-05-27 11:40:49 -07:00
clone3 selftests: fixup build warnings in pidfd / clone3 tests 2022-02-04 13:07:07 -07:00
core selftests/core: remove ARRAY_SIZE define from close_range_test.c 2021-12-10 17:50:38 -07:00
cpu-hotplug
cpufreq selftests: cpufreq: Write test output to stdout as well 2022-01-25 13:20:03 -07:00
damon selftets/damon/sysfs: test existence and permission of avail_operations 2022-05-13 07:20:06 -07:00
dma dma-mapping: benchmark: extract a common header file for map_benchmark definition 2022-03-10 07:41:14 +01:00
dmabuf-heaps
drivers S390: 2022-05-26 14:20:14 -07:00
efivarfs
exec linux-kselftest-next-5.18-rc1 2022-03-23 12:53:00 -07:00
filesystems Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
firmware selftests: firmware: Add firmware upload selftests 2022-04-29 16:49:36 +02:00
fpu
ftrace Cleanups and fixes 2022-05-30 11:01:50 -07:00
futex selftests: futex: Add the uapi headers include variable 2022-02-23 17:20:32 -07:00
gpio gpio updates for v5.17 2022-01-11 12:31:35 -08:00
ia64
intel_pstate
ipc
ir kselftests/ir : Improve readability of modprobe error message 2022-05-16 13:34:19 -06:00
kcmp
kexec selftests/kexec: Enable secureboot tests for PowerPC 2022-01-05 11:44:57 -05:00
kmod
kselftest selftests/kselftest/runner.sh: Pass optional command parameters in environment 2022-02-23 17:14:36 -07:00
kvm KVM: selftests: Link selftests directly with lib object files 2022-06-09 10:52:25 -04:00
landlock selftests/landlock: Add 11 new test suites dedicated to file reparenting 2022-05-23 13:27:59 +02:00
lib
livepatch livepatch: Skip livepatch tests if ftrace cannot be configured 2022-02-23 16:42:00 +01:00
lkdtm selftests/lkdtm: Add configs for stackleak and "after free" tests 2022-05-17 14:37:05 -07:00
locking
media_tests
membarrier
memfd selftests/memfd: clean up mapping in mfd_fail_write 2022-02-26 09:51:17 -08:00
memory-hotplug mm/memory_hotplug: remove CONFIG_MEMORY_HOTPLUG_SPARSE 2021-11-06 13:30:42 -07:00
mincore selftests: skip mincore.check_file_mmap when fs lacks needed support 2022-01-27 16:40:45 -07:00
mount selftests/mount: remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mount_setattr tests: fix idmapped mount_setattr test 2022-02-11 09:08:20 +01:00
move_mount_set_group selftests/move_mount_set_group remove unneeded conversion to bool 2021-12-10 16:46:01 -07:00
mqueue selftests: mqueue: drop duplicate min definition 2022-04-19 19:28:47 -06:00
nci selftests: nci: replace unsigned int with int 2021-09-16 13:55:51 +01:00
net net/ipv6: Expand and rename accept_unsolicited_na to accept_untracked_na 2022-05-31 11:36:57 +02:00
netfilter selftests: netfilter: add fib expression forward test case 2022-04-11 12:10:09 +02:00
nsfs
ntb
openat2 selftests: openat2: Skip testcases that fail with EOPNOTSUPP 2022-01-27 16:31:07 -07:00
perf_events selftests/perf_events: Test modification of perf_event_attr::sig_data 2022-02-02 13:11:40 +01:00
pid_namespace selftests: fix header dependency for pid_namespace selftests 2022-04-04 13:32:31 -06:00
pidfd selftests: fix an unused variable warning in pidfd selftest 2022-04-04 13:32:53 -06:00
powerpc selftests/powerpc/pmu: fix spelling mistake "mis-match" -> "mismatch" 2022-05-22 15:59:54 +10:00
prctl
proc selftests/proc: fix array_size.cocci warning 2022-04-04 13:27:21 -06:00
pstore
ptp testptp: add option to shift clock by nanoseconds 2022-02-22 17:03:40 -08:00
ptrace
rcutorture Merge branches 'docs.2022.04.20a', 'fixes.2022.04.20a', 'nocb.2022.04.11b', 'rcu-tasks.2022.04.11b', 'srcu.2022.05.03a', 'torture.2022.04.11b', 'torture-tasks.2022.04.20a' and 'torturescript.2022.04.20a' into HEAD 2022-05-03 10:21:40 -07:00
resctrl selftests/resctrl: Fix null pointer dereference on open failed 2022-04-26 09:20:00 -06:00
rlimits
rseq RISC-V Patches for the 5.18 Merge Window, Part 1 2022-03-25 10:11:38 -07:00
rtc selftests/rtc: continuously read RTC in a loop for 30s 2022-02-25 17:00:51 -07:00
safesetid
sched kselftests/sched: cleanup the child processes 2021-10-05 15:51:43 +02:00
seccomp selftests/seccomp: Fix spelling mistake "Coud" -> "Could" 2022-05-04 13:31:21 -07:00
sgx selftests/sgx: Treat CC as one argument 2022-02-17 11:55:17 -08:00
sigaltstack
size
sparc64 selftests/sparc64: remove ARRAY_SIZE define from adi-test 2021-12-10 17:51:15 -07:00
splice
static_keys
sync
syscall_user_dispatch
sysctl selftests/sysctl: add sysctl macro test 2022-05-03 10:15:07 +02:00
tc-testing selftests: tc-testing: Increase timeout in tdc config file 2022-03-14 10:27:52 +00:00
timens selftests/timens: remove ARRAY_SIZE define from individual tests 2021-12-10 17:51:20 -07:00
timers selftests: timers: Remove unneeded semicolon 2021-12-10 16:46:00 -07:00
tmpfs
tpm2 selftests: tpm: add async space test with noneexisting handle 2022-03-08 10:33:17 +02:00
uevent
user
user_events user_events: Add self-test for validator boundaries 2022-02-10 22:38:08 -05:00
vDSO selftests/vDSO: fix array_size.cocci warning 2022-04-04 13:27:11 -06:00
vm Yang Shi has improved the behaviour of khugepaged collapsing of readonly 2022-05-26 12:32:41 -07:00
watchdog
wireguard wireguard: selftests: set panic_on_warn=1 from cmdline 2022-05-04 17:49:57 -07:00
x86 selftests/x86/corrupt_xstate_header: Use provided __cpuid_count() macro 2022-04-25 15:13:03 -06:00
zram selftests/zram: Adapt the situation that /dev/zram0 is being used 2022-01-27 10:59:02 -07:00
.gitignore selftests: add kselftest_install to .gitignore 2022-03-03 15:16:57 -07:00
gen_kselftest_tar.sh
kselftest.h selftests: Provide local define of __cpuid_count() 2022-04-25 15:12:36 -06:00
kselftest_deps.sh
kselftest_harness.h selftests/harness: Pass variant to teardown 2022-04-04 13:37:48 -06:00
kselftest_install.sh
kselftest_module.h
lib.mk kbuild: Make $(LLVM) more flexible 2022-03-31 12:03:46 +09:00
Makefile S390: 2022-05-26 14:20:14 -07:00
run_kselftest.sh