[llvm] [flang-rt] Fix weak RPC stub on Mac-OS (PR #200998)

Joseph Huber via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 1 20:55:01 PDT 2026


https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/200998

Summary:
This does not work like the ELF extern weak. Attempt to just provide a
weak function that will get overridden if it is linked in.


>From 68d9696791d2f07b64d9519876bad25f0a0c8aa1 Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Mon, 1 Jun 2026 22:51:05 -0500
Subject: [PATCH] [flang-rt] Fix weak RPC stub on Mac-OS

Summary:
This does not work like the ELF extern weak. Attempt to just provide a
weak function that will get overridden if it is linked in.
---
 flang-rt/lib/runtime/io-api-server.cpp | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/flang-rt/lib/runtime/io-api-server.cpp b/flang-rt/lib/runtime/io-api-server.cpp
index 4c8b36f4d704a..073f31a9126ac 100644
--- a/flang-rt/lib/runtime/io-api-server.cpp
+++ b/flang-rt/lib/runtime/io-api-server.cpp
@@ -323,20 +323,19 @@ static std::uint32_t HandleRPCOpcodes(void *raw, std::uint32_t numLanes) {
 }
 
 #if defined(__ELF__)
-extern "C" void __tgt_register_rpc_callback(RPCCallbackTy)
-    __attribute__((weak));
+extern "C" [[gnu::weak]] void __tgt_register_rpc_callback(RPCCallbackTy);
 #elif defined(__APPLE__)
-extern "C" void __tgt_register_rpc_callback(RPCCallbackTy)
-    __attribute__((weak_import));
+extern "C" [[gnu::weak]]
+void __tgt_register_rpc_callback(RPCCallbackTy) {}
 #else
 extern "C" void __tgt_register_rpc_callback(RPCCallbackTy);
 #endif
 
 void RegisterRPCHandlers() {
-#if defined(__ELF__) || defined(__APPLE__)
+#if defined(__ELF__)
   if (__tgt_register_rpc_callback)
     __tgt_register_rpc_callback(HandleRPCOpcodes);
-#elif defined(_MSC_VER)
+#elif defined(__APPLE__) || defined(_MSC_VER)
   __tgt_register_rpc_callback(HandleRPCOpcodes);
 #endif
 }



More information about the llvm-commits mailing list