For Clang -fsanitize=vptr use -fvisibility-ms-compat, not -fvisibility=hidden

Desktop / LibreOffice - Stephan Bergmann [redhat.com] - 27 February 2015 03:05 UTC

As discussed in b4f6b26b5a1a78fecfa95ec2eb7ac8b80495d8aa "SAL_DLLPUBLIC_RTTI for proper RTTI visibility for LLVM," RTTI-based -fsanitize= checks with Clang on Linux need special precautions to make RTTI symbols visible across DSOs. The approach taken there, as well as in 598d8194b0ea1a64e0ebba28a86c128bafa57c7c "Visible function type RTTI for Clang -fsanitize=function," was to add explicit SAL_DLLPUBLIC_RTTI annontations to relevant type definitions. However, for-fsanitize=vptr that would have required many more of those, so it appears easier to "misuse" -fsanitize-ms-compat in that case, which happens to give all RTTI symbols default visibility (while otherwise still honoring our SAL_DLLPUBLIC/PRIVATE annotations).

The SAL_DLLPUBLIC_RTTI annotations from 598d8194b0ea1a64e0ebba28a86c128bafa57c7c "Visible function type RTTI for Clang -fsanitize=function" can likely be removed again.

f0aa1a7 For Clang -fsanitize=vptr use -fvisibility-ms-compat, not -fvisibility=hidden
external/libabw/UnpackedTarball_libabw.mk | 10 ++++++++++
external/libabw/ubsan-visibility.patch | 11 +++++++++++
external/libcdr/UnpackedTarball_libcdr.mk | 10 ++++++++++
external/libcdr/ubsan-visibility.patch | 11 +++++++++++
external/libebook/UnpackedTarball_libebook.mk | 8 ++++++++
external/libebook/ubsan-visibility.patch | 11 +++++++++++
external/libmspub/UnpackedTarball_libmspub.mk | 8 ++++++++
external/libmspub/ubsan-visibility.patch | 11 +++++++++++
external/libmwaw/UnpackedTarball_libmwaw.mk | 8 ++++++++
external/libmwaw/ubsan-visibility.patch.0 | 11 +++++++++++
external/libodfgen/UnpackedTarball_libodfgen.mk | 8 ++++++++
external/libodfgen/ubsan-visibility.patch | 11 +++++++++++
.../libpagemaker/UnpackedTarball_libpagemaker.mk | 10 ++++++++++
external/libpagemaker/ubsan-visibility.patch | 11 +++++++++++
external/librevenge/UnpackedTarball_librevenge.mk | 10 +++++++++-
external/librevenge/ubsan-visibility.patch | 11 +++++++++++
external/libvisio/UnpackedTarball_libvisio.mk | 8 ++++++++
external/libvisio/ubsan-visibility.patch | 11 +++++++++++
solenv/gbuild/platform/com_GCC_defs.mk | 8 +++++++-
19 files changed, 185 insertions(+), 2 deletions(-)

Upstream: cgit.freedesktop.org


  • Share