https://bugs.llvm.org/show_bug.cgi?id=50237

            Bug ID: 50237
           Summary: hidden visibility with shared objects lead to subtle
                    bugs
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: Target Description Classes
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]

We should not set CMAKE_CXX_VISIBILITY_PRESET to hidden for llvm Targets

Using this feature is error prone and interacts in subtle ways with the LLVM
codebase.

As an example, llvm::Any::TypeId::Id relies on the uniqueness of the address of
a
static variable defined in a template function. hidden visibility implies vague
linkage for that variable, which does not guarantee the uniqueness of the
address
across a binary and a shared library. This totally breaks the implementation of
llvm::Any.

See https://gcc.gnu.org/wiki/Visibility and
https://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html
for more information on that topic.

Proposed patch: https://reviews.llvm.org/D101972

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to