[clang][ssaf] Fix plugin crash on AIX by adding SUPPORT_PLUGINS to clang-ssaf-format (#192292)
This change fixes a crash when running the `with-plugin.test` lit tests on AIX. The crash is caused by a missing `-Wl, -brtl` linker flag. Without this flag, the dynamic linker cannot resolve symbols from the host executable when loading shared libraries via `dlopen`. So when the plugin's static initializer runs and tries to register into the `llvm::Registry` (calling `getRegistryLinkListInstance` defined in the host via `LLVM_INSTANTIATE_REGISTRY`), the symbol resolves to `null`, crashing the process. The fix is to use `SUPPORT_PLUGINS` flag in `add_llvm_executable`, like other tools in llvm. For AIX, this flag adds `-Wl, -brtl` to enable runtime linking; for Non-AIX platforms, it sets `LLVM_NO_DEAD_STRIP` to prevent the linker from stripping symbols that plugins reference at load time.
This commit is contained in:
@@ -3,8 +3,13 @@ set(LLVM_LINK_COMPONENTS
|
||||
Support
|
||||
)
|
||||
|
||||
if(CLANG_PLUGIN_SUPPORT)
|
||||
set(support_plugins SUPPORT_PLUGINS)
|
||||
endif()
|
||||
|
||||
add_clang_tool(clang-ssaf-format
|
||||
SSAFFormat.cpp
|
||||
${support_plugins}
|
||||
)
|
||||
|
||||
clang_target_link_libraries(clang-ssaf-format
|
||||
|
||||
Reference in New Issue
Block a user