1############################################################### 2# 3# Licensed to the Apache Software Foundation (ASF) under one 4# or more contributor license agreements. See the NOTICE file 5# distributed with this work for additional information 6# regarding copyright ownership. The ASF licenses this file 7# to you under the Apache License, Version 2.0 (the 8# "License"); you may not use this file except in compliance 9# with the License. You may obtain a copy of the License at 10# 11# http://www.apache.org/licenses/LICENSE-2.0 12# 13# Unless required by applicable law or agreed to in writing, 14# software distributed under the License is distributed on an 15# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16# KIND, either express or implied. See the License for the 17# specific language governing permissions and limitations 18# under the License. 19# 20############################################################### 21# NOTE: the _ZTI*/_ZTS* entries below are deliberately not platform-specific. 22# A version script that hides typeinfo and typeinfo-name symbols breaks C++ 23# across library boundaries: type_info objects have vague linkage, so hiding 24# them gives each library its own copy and cross-library "catch" and 25# "dynamic_cast" then fail to match. Exporting them restores the one-definition 26# behaviour that libraries without a version script already have. 27# 28# Exporting is also the right intent on macOS/arm64, where the C++-UNO bridge 29# resolves exception typeinfo with dlsym() first and falls back to synthesis 30# only if that fails. In practice it always falls back there: clang emits the 31# typeinfo of every keyless class (which is every UNO exception) as hidden on 32# arm64 Darwin regardless of any version script or export list, so these _ZTI* 33# entries do not reach dlsym() on that platform. Keep them anyway -- they are 34# correct and load-bearing for every other target -- and see 35# bridges/source/cpp_uno/s5abi_macosx_aarch64/except.cxx (RTTI::getRTTI and 36# RTTI::synthesiseRTTI) for how arm64 copes without them, and 37# solenv/bin/addsym-macosx.sh. 38UDK_3_0_0 { 39 global: 40 component_getImplementationEnvironment; 41 component_getFactory; 42 _ZTI*; 43 _ZTS*; 44 local: 45 *; 46}; 47