From 01c07bfe113aa2369bbff34c8f845108a2273e1f Mon Sep 17 00:00:00 2001 From: Alexander Potapenko Date: Fri, 28 Nov 2025 13:29:28 +0100 Subject: executor: apply optnone to guest_handle_nested_vmentry_intel() Florent Revest reported ThinLTO builds failing with the following error: :2:1: error: symbol 'after_vmentry_label' is already defined after_vmentry_label: ^ error: cannot compile inline asm , which turned out to be caused by the compiler not respecting `noinline`. Adding __attribute__((optnone)) (or optimize("O0") on GCC) fixes the issue. --- executor/common_kvm_amd64_syzos.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'executor/common_kvm_amd64_syzos.h') diff --git a/executor/common_kvm_amd64_syzos.h b/executor/common_kvm_amd64_syzos.h index baabbef7e..df1f63ad5 100644 --- a/executor/common_kvm_amd64_syzos.h +++ b/executor/common_kvm_amd64_syzos.h @@ -1151,7 +1151,10 @@ guest_handle_nested_load_code(struct api_call_nested_load_code* cmd, uint64 cpu_ } } -GUEST_CODE static noinline void +// Clang's LTO may ignore noinline and attempt to inline this function into both callers, +// which results in duplicate declaration of after_vmentry_label. +// Applying __optnone should prevent this behavior. +GUEST_CODE static noinline __optnone void guest_handle_nested_vmentry_intel(uint64 vm_id, uint64 cpu_id, bool is_launch) { uint64 vmx_error_code = 0; -- cgit mrf-deployment