linux/tools
Sean Christopherson 6b6f71484b KVM: selftests: Implement memcmp(), memcpy(), and memset() for guest use
Implement memcmp(), memcpy(), and memset() to override the compiler's
built-in versions in order to guarantee that the compiler won't generate
out-of-line calls to external functions via the PLT.  This allows the
helpers to be safely used in guest code, as KVM selftests don't support
dynamic loading of guest code.

Steal the implementations from the kernel's generic versions, sans the
optimizations in memcmp() for unaligned accesses.

Put the utilities in a separate compilation unit and build with
-ffreestanding to fudge around a gcc "feature" where it will optimize
memset(), memcpy(), etc... by generating a recursive call.  I.e. the
compiler optimizes itself into infinite recursion.  Alternatively, the
individual functions could be tagged with
optimize("no-tree-loop-distribute-patterns"), but using "optimize" for
anything but debug is discouraged, and Linus NAK'd the use of the flag
in the kernel proper[*].

https://lore.kernel.org/lkml/CAHk-=wik-oXnUpfZ6Hw37uLykc-_P0Apyn2XuX-odh-3Nzop8w@mail.gmail.com

Cc: Andrew Jones <andrew.jones@linux.dev>
Cc: Anup Patel <anup@brainfault.org>
Cc: Atish Patra <atishp@atishpatra.org>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Janosch Frank <frankja@linux.ibm.com>
Cc: Claudio Imbrenda <imbrenda@linux.ibm.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220928233652.783504-2-seanjc@google.com>
Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2022-09-30 06:38:02 -04:00
..
accounting
arch tools kvm headers arm64: Update KVM header from the kernel sources 2022-08-27 11:55:16 -03:00
bootconfig
bpf bpftool: Complete libbfd feature detection 2022-08-10 10:44:01 -03:00
build tools build: Switch to new openssl API for test-libcrypto 2022-08-10 10:44:02 -03:00
certs
cgroup tools: add memcg_shrinker.py 2022-07-03 18:08:40 -07:00
counter
debugging tools: Add new "test" taint to kernel-chktaint 2022-09-07 14:51:12 -06:00
edid
firewire
firmware
gpio
hv tools: hv: kvp: remove unnecessary (void*) conversions 2022-09-05 16:55:20 +00:00
iio
include tools/include/uapi: Fix <asm/errno.h> for parisc and xtensa 2022-09-13 14:04:35 +02:00
io_uring
kvm/kvm_stat
laptop
leds
lib libperf evlist: Fix per-thread mmaps for multi-threaded targets 2022-09-08 12:17:22 -03:00
memory-model
objtool Misc fixes: 2022-08-28 10:10:23 -07:00
pci
pcmcia
perf perf record: Fix synthesis failure warnings 2022-09-08 15:57:37 -03:00
power platform-drivers-x86 for v6.0-1 2022-08-04 18:19:14 -07:00
rcu
scripts
spi
testing KVM: selftests: Implement memcmp(), memcpy(), and memset() for guest use 2022-09-30 06:38:02 -04:00
thermal tools/thermal: Fix possible path truncations 2022-08-03 19:28:46 +02:00
time
tracing rtla: Consolidate and show all necessary libraries that failed for building 2022-08-10 12:03:02 -04:00
usb tools: usb: testusb: Add super-plus speed reporting 2022-07-08 14:54:49 +02:00
verification rv/monitor: Add the wwnr monitor 2022-07-30 14:01:30 -04:00
virtio tools/virtio: fix build 2022-08-11 04:26:07 -04:00
vm - The usual batches of cleanups from Baoquan He, Muchun Song, Miaohe 2022-08-05 16:32:45 -07:00
wmi
Makefile