Skip to content

hidden visibility with shared objects lead to subtle bugs #49581

@serge-sans-paille

Description

@serge-sans-paille
Bugzilla Link 50237
Resolution DUPLICATE
Resolved on May 11, 2021 21:18
Version trunk
OS Linux
Blocks #48661
CC @bd1976bris,@pogo59,@tstellar

Extended Description

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzilladuplicateResolved as duplicate

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions