external/firebird/UnpackedTarball_firebird.mk | 8 ++++ external/firebird/sanitizer.patch | 52 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+)
New commits: commit 6a312a4a3d642f0f9769df54c0ec25471c9916bd Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Dec 22 07:58:47 2017 +0100 Prepare external/firebird for sanitizers ...so at least Clang -fsanitize=function on Linux works now. The patch needs to stop errors about undefined sanitizer symbols in DSOs (UNDEF_PLATFORM, EXE_LINK_OPTIONS), and make resolution of RTTI symbols consistent in a process, by exporting them from the various version map files and adding RTLD_GLOBAL to dlopen. Change-Id: I75779e55529b62a96a8943e3dee9119647aa91a7 Reviewed-on: https://gerrit.libreoffice.org/46947 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/external/firebird/UnpackedTarball_firebird.mk b/external/firebird/UnpackedTarball_firebird.mk index 9c03f7c8755f..a055b6573696 100644 --- a/external/firebird/UnpackedTarball_firebird.mk +++ b/external/firebird/UnpackedTarball_firebird.mk @@ -46,4 +46,12 @@ $(eval $(call gb_UnpackedTarball_add_patches,firebird,\ )) endif +ifeq ($(COM_IS_CLANG),TRUE) +ifneq ($(filter -fsanitize=%,$(CC)),) +$(eval $(call gb_UnpackedTarball_add_patches,firebird, \ + external/firebird/sanitizer.patch \ +)) +endif +endif + # vim: set noet sw=4 ts=4: diff --git a/external/firebird/sanitizer.patch b/external/firebird/sanitizer.patch new file mode 100644 index 000000000000..cf3a54b266f8 --- /dev/null +++ b/external/firebird/sanitizer.patch @@ -0,0 +1,52 @@ +--- builds/posix/fbintl.vers ++++ builds/posix/fbintl.vers +@@ -29,3 +29,4 @@ + LD_lookup_texttype + LD_setup_attributes + LD_version ++_ZTI* +--- builds/posix/fbplugin.vers ++++ builds/posix/fbplugin.vers +@@ -26,3 +26,4 @@ + # + + firebird_plugin ++_ZTI* +--- builds/posix/firebird.vers ++++ builds/posix/firebird.vers +@@ -367,3 +367,4 @@ + + KEYWORD_stringIsAToken + KEYWORD_getTokens ++_ZTI* +--- builds/posix/make.defaults ++++ builds/posix/make.defaults +@@ -252,7 +252,7 @@ + # LINKER OPTIONS + # + +-UNDEF_PLATFORM = -Wl,--no-undefined ++UNDEF_PLATFORM = + ifeq ($(TARGET),Debug) + UNDEF_FLAGS = $(UNDEF_PLATFORM) + endif +@@ -291,7 +291,7 @@ + LIB_LINK_MAPFILE= -Wl,--version-script,$(1) + FIREBIRD_LIBRARY_LINK= -L$(LIB) -lfbclient $(MATHLIB) + +-EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) $(LINK_EMPTY_SYMBOLS) ++EXE_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) $(UNDEF_FLAGS) $(LIB_PATH_OPTS) + LIB_LINK_OPTIONS= $(LDFLAGS) $(THR_FLAGS) -shared + + FB_DAEMON = $(BIN)/firebird$(EXEC_EXT) +--- src/common/os/posix/mod_loader.cpp ++++ src/common/os/posix/mod_loader.cpp +@@ -88,7 +88,7 @@ + + ModuleLoader::Module* ModuleLoader::loadModule(const Firebird::PathName& modPath) + { +- void* module = dlopen(modPath.nullStr(), FB_RTLD_MODE); ++ void* module = dlopen(modPath.nullStr(), FB_RTLD_MODE | RTLD_GLOBAL); + if (module == NULL) + { + #ifdef DEV_BUILD _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits