From 29cdfa3fc337381e2529eaac2a551137ee8a1aaa Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Mon, 17 Jul 2017 02:53:08 +0200 Subject: no need to statically link against the emfio library in the tests ODR-violation found by ASAN: ==17022==ERROR: AddressSanitizer: odr-violation (0x2b86adb17c60): [1] size=352 'vtable for emfio::emfreader::XEmfParser' /home/tdf/lode/jenkins/workspace/lo_ubsan/emfio/source/emfuno/xemfparser.cxx [2] size=352 'vtable for emfio::emfreader::XEmfParser' /home/tdf/lode/jenkins/workspace/lo_ubsan/emfio/source/emfuno/xemfparser.cxx These globals were registered at these points: [1]: #0 0x443a73 in __asan_register_globals /home/tdf/lode/packages/llvm-3.8.0.src/projects/compiler-rt/lib/asan/asan_globals.cc:218 #1 0x2b86bea2dced in asan.module_ctor (/workdir/LinkTarget/CppunitTest/libtest_emfio_wmf.so+0x1a0ced) #2 0x7fff394ad75a () [2]: #0 0x443a73 in __asan_register_globals /home/tdf/lode/packages/llvm-3.8.0.src/projects/compiler-rt/lib/asan/asan_globals.cc:218 #1 0x2b86ad6e862d in asan.module_ctor (/workdir/LinkTarget/CppunitTest/libtest_emfio_emf.so+0x18862d) #2 0x7fff394ad75a () Change-Id: Id98677a3692ac6a0586164aa5d0a2c82ab26f916 Reviewed-on: https://gerrit.libreoffice.org/40029 Reviewed-by: Stephan Bergmann Tested-by: Stephan Bergmann --- emfio/CppunitTest_emfio_emf_test.mk | 14 ++------------ emfio/CppunitTest_emfio_wmf_test.mk | 8 ++------ emfio/Library_emfio.mk | 4 ++++ emfio/inc/emfiodllapi.h | 33 +++++++++++++++++++++++++++++++++ emfio/inc/mtftools.hxx | 9 +++++++-- 5 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 emfio/inc/emfiodllapi.h (limited to 'emfio') diff --git a/emfio/CppunitTest_emfio_emf_test.mk b/emfio/CppunitTest_emfio_emf_test.mk index 49cf14f90e51..d577398c4367 100644 --- a/emfio/CppunitTest_emfio_emf_test.mk +++ b/emfio/CppunitTest_emfio_emf_test.mk @@ -9,15 +9,7 @@ $(eval $(call gb_CppunitTest_CppunitTest,emfio_emf)) -$(eval $(call gb_CppunitTest_set_componentfile,emfio_emf,emfio/emfio)) - -$(eval $(call gb_CppunitTest_set_include,emfio_emf,\ - $$(INCLUDE) \ - -I$(SRCDIR)/emfio/inc \ -)) - $(eval $(call gb_CppunitTest_use_externals,emfio_emf,\ - boost_headers \ libxml2 \ )) @@ -27,16 +19,13 @@ $(eval $(call gb_CppunitTest_add_exception_objects,emfio_emf,\ $(eval $(call gb_CppunitTest_use_sdk_api,emfio_emf)) -$(eval $(call gb_CppunitTest_use_library_objects,emfio_emf,\ - emfio \ -)) - $(eval $(call gb_CppunitTest_use_libraries,emfio_emf,\ basegfx \ drawinglayer \ cppu \ cppuhelper \ comphelper \ + emfio \ sal \ svt \ test \ @@ -52,6 +41,7 @@ $(eval $(call gb_CppunitTest_use_vcl,emfio_emf)) $(eval $(call gb_CppunitTest_use_components,emfio_emf,\ configmgr/source/configmgr \ dtrans/util/mcnttype \ + emfio/emfio \ framework/util/fwk \ i18npool/util/i18npool \ package/source/xstor/xstor \ diff --git a/emfio/CppunitTest_emfio_wmf_test.mk b/emfio/CppunitTest_emfio_wmf_test.mk index c24dd19acfef..b612f5c5a03b 100644 --- a/emfio/CppunitTest_emfio_wmf_test.mk +++ b/emfio/CppunitTest_emfio_wmf_test.mk @@ -9,8 +9,6 @@ $(eval $(call gb_CppunitTest_CppunitTest,emfio_wmf)) -$(eval $(call gb_CppunitTest_set_componentfile,emfio_wmf,emfio/emfio)) - $(eval $(call gb_CppunitTest_set_include,emfio_wmf,\ $$(INCLUDE) \ -I$(SRCDIR)/emfio/inc \ @@ -28,10 +26,6 @@ $(eval $(call gb_CppunitTest_add_exception_objects,emfio_wmf, \ $(eval $(call gb_CppunitTest_use_sdk_api,emfio_wmf)) -$(eval $(call gb_CppunitTest_use_library_objects,emfio_wmf, \ - emfio \ -)) - $(eval $(call gb_CppunitTest_use_libraries,emfio_wmf,\ $(call gb_Helper_optional,BREAKPAD, \ crashreport) \ @@ -40,6 +34,7 @@ $(eval $(call gb_CppunitTest_use_libraries,emfio_wmf,\ cppu \ cppuhelper \ comphelper \ + emfio \ i18nlangtag \ i18nutil \ $(if $(filter OPENCL,$(BUILD_TYPE)),opencl) \ @@ -195,6 +190,7 @@ $(eval $(call gb_CppunitTest_use_ure,emfio_wmf)) $(eval $(call gb_CppunitTest_use_components,emfio_wmf,\ configmgr/source/configmgr \ + emfio/emfio \ i18npool/util/i18npool \ ucb/source/core/ucb1 \ unotools/util/utl \ diff --git a/emfio/Library_emfio.mk b/emfio/Library_emfio.mk index ff209f5da3bf..f133d498c97d 100644 --- a/emfio/Library_emfio.mk +++ b/emfio/Library_emfio.mk @@ -25,6 +25,10 @@ $(eval $(call gb_Library_set_include,emfio,\ -I$(SRCDIR)/emfio/inc \ )) +$(eval $(call gb_Library_add_defs,emfio,\ + -DEMFIO_DLLIMPLEMENTATION \ +)) + $(eval $(call gb_Library_use_custom_headers,emfio,\ officecfg/registry \ )) diff --git a/emfio/inc/emfiodllapi.h b/emfio/inc/emfiodllapi.h new file mode 100644 index 000000000000..8a7cac187f25 --- /dev/null +++ b/emfio/inc/emfiodllapi.h @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + +#ifndef INCLUDED_EMFIO_INC_EMFIODLLAPI_H +#define INCLUDED_EMFIO_INC_EMFIODLLAPI_H + +#include + +#if defined(EMFIO_DLLIMPLEMENTATION) +#define EMFIO_DLLPUBLIC SAL_DLLPUBLIC_EXPORT +#else +#define EMFIO_DLLPUBLIC SAL_DLLPUBLIC_IMPORT +#endif + +#endif // INCLUDED_EMFIO_INC_EMFIODLLAPI_H + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/emfio/inc/mtftools.hxx b/emfio/inc/mtftools.hxx index 2d14d9cfe633..38fff789a053 100644 --- a/emfio/inc/mtftools.hxx +++ b/emfio/inc/mtftools.hxx @@ -30,6 +30,8 @@ #include #include +#include "emfiodllapi.h" + #define ERROR 0 #define NULLREGION 1 #define COMPLEXREGION 3 @@ -298,7 +300,7 @@ namespace emfio virtual ~GDIObj() = default; // Polymorphic base class }; - struct WinMtfFontStyle : GDIObj + struct EMFIO_DLLPUBLIC WinMtfFontStyle : GDIObj { vcl::Font aFont; @@ -438,8 +440,11 @@ namespace emfio {} }; - class MtfTools + class EMFIO_DLLPUBLIC MtfTools { + MtfTools(MtfTools &) = delete; + void operator =(MtfTools) = delete; + protected: WinMtfPathObj maPathObj; WinMtfClipPath maClipPath; -- cgit