[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 11:56:21 PDT 2021


serge-sans-paille created this revision.
serge-sans-paille added reviewers: rnk, tstellar, MaskRay.
Herald added a subscriber: mgorny.
serge-sans-paille requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This check should ensure we don't reproduce the problem fixed by
02df443d2801601a4e42e360e436d97314e9da30 <https://reviews.llvm.org/rG02df443d2801601a4e42e360e436d97314e9da30>

It's a follow-up to https://reviews.llvm.org/D108943


Repository:
  rG LLVM Github Monorepo

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,18 @@
   if(TARGET libLLVMExports)
     add_dependencies(LLVM libLLVMExports)
   endif()
+  set(LIB_DIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib${LLVM_LIBDIR_SUFFIX})
+
+  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_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}LLVM-${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)
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.370638.patch
Type: text/x-patch
Size: 1468 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210903/6f9c2b95/attachment.bin>


More information about the llvm-commits mailing list