GCC Newspaper
OCTOBER 6, 2026
Date
/
Architectures
Components
Topics
News & Policy
Other
fortran

Fortran BIND(C) entities must keep default ELF visibility

Fortran PRIVATE module entities with BIND(C) now correctly retain default ELF visibility.

Fortran entities with BIND(C) implicitly have external linkage. This change ensures that PRIVATE module entities with BIND(C) correctly maintain their default ELF visibility, rather than being hidden. Previously, a bug caused these entities to be given hidden visibility, preventing them from being exported from shared libraries.

In Details

The fortran frontend's symbol visibility handling for PRIVATE module entities was too aggressive. Specifically, gfc_finish_var_decl and build_function_decl in trans-decl.cc incorrectly applied hidden ELF visibility to entities marked PRIVATE that also had a BIND(C) attribute. This violated the rule that BIND(C) implies external linkage, thus affecting shared library exports.

Filed Under: fortranELFvisibility