diff --git a/src/liboslexec/llvm_util.cpp b/src/liboslexec/llvm_util.cpp index 012a1ae98..dd8734b0e 100644 --- a/src/liboslexec/llvm_util.cpp +++ b/src/liboslexec/llvm_util.cpp @@ -2731,7 +2731,10 @@ LLVM_Util::validate_global_mappings( std::vector& names_of_unmapped_globals) { for (llvm::GlobalVariable& global : m_llvm_module->globals()) { - if (global.hasExternalLinkage()) { + // Only external *declarations* need an address supplied from outside + // the module. A definition with external linkage is allocated by the + // JIT itself, so reporting it as unmapped is a false positive. + if (global.hasExternalLinkage() && global.isDeclaration()) { void* global_addr = llvm::sys::DynamicLibrary::SearchForAddressOfSymbol( global.getName().data());