Change the shared bridgetest code from static to dynamic library
...so ASan builds do not complain about ODR violations due to multiple instances
of vtable for testtools::bridgetest::CurrentContextChecker after
a53808c0ed
"loplugin:dllprivate" removed the
SAL_DLLPRIVATE from class CurrentContextChecker (which apparently /did/ have an
impact with -fvisibility-ms-compat, as used by Linux Clang ASan/UBSan builds).
Change-Id: Ifb1ba1819f7ea989300f4696d44f9599a1436563
This commit is contained in:
parent
0f6cb25be8
commit
16bbeb5713
9 changed files with 74 additions and 39 deletions
|
@ -487,6 +487,7 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \
|
|||
test-setupvcl \
|
||||
testtools_cppobj \
|
||||
testtools_bridgetest \
|
||||
testtools_bridgetest-common \
|
||||
testtools_constructors \
|
||||
unobootstrapprotector \
|
||||
unoexceptionprotector \
|
||||
|
|
38
testtools/Library_bridgetest-common.mk
Normal file
38
testtools/Library_bridgetest-common.mk
Normal file
|
@ -0,0 +1,38 @@
|
|||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
#
|
||||
# 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/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_Library_Library,testtools_bridgetest-common))
|
||||
|
||||
$(eval $(call gb_Library_add_defs,testtools_bridgetest-common, \
|
||||
-DLO_DLLIMPLEMENTATION_TESTTOOLS \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_external,testtools_bridgetest-common,boost_headers))
|
||||
|
||||
$(eval $(call gb_Library_use_internal_api,testtools_bridgetest-common,\
|
||||
bridgetest \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_libraries,testtools_bridgetest-common, \
|
||||
cppu \
|
||||
cppuhelper \
|
||||
sal \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_api,testtools_bridgetest-common,\
|
||||
udkapi \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_add_exception_objects,testtools_bridgetest-common,\
|
||||
testtools/source/bridgetest/currentcontextchecker \
|
||||
testtools/source/bridgetest/multi \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
|
@ -19,16 +19,13 @@ $(eval $(call gb_Library_use_api,testtools_bridgetest,\
|
|||
udkapi \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_static_libraries,testtools_bridgetest,\
|
||||
testtools_bridgetest_s \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_external,testtools_bridgetest,boost_headers))
|
||||
|
||||
$(eval $(call gb_Library_use_libraries,testtools_bridgetest,\
|
||||
cppu \
|
||||
cppuhelper \
|
||||
sal \
|
||||
testtools_bridgetest-common \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_add_exception_objects,testtools_bridgetest,\
|
||||
|
|
|
@ -26,14 +26,11 @@ $(eval $(call gb_Library_use_api,testtools_cppobj,\
|
|||
|
||||
$(eval $(call gb_Library_use_external,testtools_cppobj,boost_headers))
|
||||
|
||||
$(eval $(call gb_Library_use_static_libraries,testtools_cppobj,\
|
||||
testtools_bridgetest_s \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_libraries,testtools_cppobj,\
|
||||
cppu \
|
||||
cppuhelper \
|
||||
sal \
|
||||
testtools_bridgetest-common \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_add_exception_objects,testtools_cppobj,\
|
||||
|
|
|
@ -15,9 +15,9 @@ $(eval $(call gb_Module_add_targets,testtools,\
|
|||
CustomTarget_bridgetest \
|
||||
InternalUnoApi_bridgetest \
|
||||
InternalUnoApi_performance \
|
||||
StaticLibrary_bridgetest \
|
||||
Library_cppobj \
|
||||
Library_bridgetest \
|
||||
Library_bridgetest-common \
|
||||
Library_constructors \
|
||||
Rdb_uno_services \
|
||||
))
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
#
|
||||
# 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/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_StaticLibrary_StaticLibrary,testtools_bridgetest_s))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_use_external,testtools_bridgetest_s,boost_headers))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_use_internal_api,testtools_bridgetest_s,\
|
||||
bridgetest \
|
||||
))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_use_api,testtools_bridgetest_s,\
|
||||
udkapi \
|
||||
))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_add_exception_objects,testtools_bridgetest_s,\
|
||||
testtools/source/bridgetest/currentcontextchecker \
|
||||
testtools/source/bridgetest/multi \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
|
@ -28,9 +28,11 @@
|
|||
#include "sal/types.h"
|
||||
#include "test/testtools/bridgetest/XCurrentContextChecker.hpp"
|
||||
|
||||
#include <dllapi.hxx>
|
||||
|
||||
namespace testtools { namespace bridgetest {
|
||||
|
||||
class CurrentContextChecker :
|
||||
class LO_DLLPUBLIC_TESTTOOLS CurrentContextChecker :
|
||||
public ::osl::DebugBase< CurrentContextChecker >,
|
||||
public ::cppu::WeakImplHelper<
|
||||
::test::testtools::bridgetest::XCurrentContextChecker >
|
||||
|
@ -49,7 +51,7 @@ private:
|
|||
CurrentContextChecker(CurrentContextChecker &) = delete;
|
||||
void operator =(CurrentContextChecker &) = delete;
|
||||
|
||||
bool performCheck(
|
||||
SAL_DLLPRIVATE bool performCheck(
|
||||
css::uno::Reference< ::test::testtools::bridgetest::XCurrentContextChecker > const & other,
|
||||
::sal_Int32 setSteps, ::sal_Int32 checkSteps);
|
||||
};
|
||||
|
|
25
testtools/source/bridgetest/dllapi.hxx
Normal file
25
testtools/source/bridgetest/dllapi.hxx
Normal file
|
@ -0,0 +1,25 @@
|
|||
/* -*- 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/.
|
||||
*/
|
||||
|
||||
#ifndef INCLUDED_TESTTOOLS_SOURCE_BRIDGETEST_DLLAPI_HXX
|
||||
#define INCLUDED_TESTTOOLS_SOURCE_BRIDGETEST_DLLAPI_HXX
|
||||
|
||||
#include <sal/config.h>
|
||||
|
||||
#include <sal/types.h>
|
||||
|
||||
#if defined LO_DLLIMPLEMENTATION_TESTTOOLS
|
||||
#define LO_DLLPUBLIC_TESTTOOLS SAL_DLLPUBLIC_EXPORT
|
||||
#else
|
||||
#define LO_DLLPUBLIC_TESTTOOLS SAL_DLLPUBLIC_IMPORT
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|
|
@ -29,6 +29,8 @@
|
|||
#include "sal/types.h"
|
||||
#include "test/testtools/bridgetest/XMulti.hpp"
|
||||
|
||||
#include <dllapi.hxx>
|
||||
|
||||
namespace testtools { namespace bridgetest {
|
||||
|
||||
class Multi: public cppu::WeakImplHelper< test::testtools::bridgetest::XMulti >
|
||||
|
@ -109,6 +111,7 @@ private:
|
|||
double m_attribute3;
|
||||
};
|
||||
|
||||
LO_DLLPUBLIC_TESTTOOLS
|
||||
OUString testMulti( css::uno::Reference< test::testtools::bridgetest::XMulti > const & multi);
|
||||
|
||||
} }
|
||||
|
|
Loading…
Reference in a new issue