[PATCH] D109252: Add extra check for llvm::Any::TypeId visibility
serge via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 3 12:00:04 PDT 2021
serge-sans-paille updated this revision to Diff 370640.
serge-sans-paille added a comment.
(reformat)
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D109252/new/
https://reviews.llvm.org/D109252
Files:
llvm/test/CMakeLists.txt
llvm/tools/llvm-shlib/CMakeLists.txt
Index: llvm/tools/llvm-shlib/CMakeLists.txt
===================================================================
--- llvm/tools/llvm-shlib/CMakeLists.txt
+++ llvm/tools/llvm-shlib/CMakeLists.txt
@@ -72,6 +72,21 @@
if(TARGET libLLVMExports)
add_dependencies(LLVM libLLVMExports)
endif()
+
+ set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
+ set(LIB_NAME ${LIB_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}LLVM)
+
+ if(UNIX)
+ # This checks that no instanciation of llvm::Any::TypeId ends up with
+ # hidden visibility. This happens if llvm::Any is used with hidden types.
+ add_custom_target(
+ check-typeid-visibility
+ COMMAND nm -C ${LIB_NAME}-${LLVM_VERSION_MAJOR}${LLVM_VERSION_SUFFIX}${CMAKE_SHARED_LIBRARY_SUFFIX} | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/not grep -E '[wW] llvm::Any::TypeId'
+ DEPENDS LLVM not
+ WORKING_DIRECTORY ${LIB_DIR}
+ COMMENT "Checking llvm::Any::TypeId visibility")
+ endif()
+
endif()
if(LLVM_BUILD_LLVM_C_DYLIB AND NOT MSVC)
@@ -88,8 +103,6 @@
set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_BINARY_DIR}/libllvm-c.exports)
- set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
- set(LIB_NAME ${LIB_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}LLVM)
set(LIB_PATH ${LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(LIB_EXPORTS_PATH ${LIB_NAME}.exports)
list(APPEND LLVM_DYLIB_REQUIRED_EXPORTS ${LIB_EXPORTS_PATH})
Index: llvm/test/CMakeLists.txt
===================================================================
--- llvm/test/CMakeLists.txt
+++ llvm/test/CMakeLists.txt
@@ -221,6 +221,11 @@
)
set_target_properties(check-llvm PROPERTIES FOLDER "Tests")
+if(TARGET check-typeid-visibility)
+ add_dependencies(check-llvm check-typeid-visibility)
+endif()
+
+
add_lit_testsuites(LLVM ${CMAKE_CURRENT_SOURCE_DIR}
${exclude_from_check_all}
DEPENDS ${LLVM_TEST_DEPENDS}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D109252.370640.patch
Type: text/x-patch
Size: 1916 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210903/d6bc191c/attachment.bin>
More information about the llvm-commits
mailing list