Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


On 14/05/2019 02:32, Regina Henschel wrote:
I need help again. I try to write a unit test https://gerrit.libreoffice.org/#/c/72229/
It works with Windows10. But Jenkins fails on Mac with message
https://ci.libreoffice.org/job/gerrit_mac/32803/

Undefined symbols for architecture x86_64:
  "SdrObjCustomShape::DragMoveCustomShapeHdl(Point const&, unsigned short, bool)", referenced from:       (anonymous namespace)::testTdf115813_OOXML_XY_handle::TestBody() in customshapes.o
   "SdrObjCustomShape::GetInteractionHandles() const", referenced from:
      (anonymous namespace)::testTdf115813_OOXML_XY_handle::TestBody() in customshapes.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I have now build it in a VM with Ubuntu 16.0 LTS. There too I get an error. Here the message is
cd /home/vmregina/lo/core/svx && make -j 4 -rs check
[build DEP] LNK:CppunitTest/libtest_svx_unit.so
[build LNK] CppunitTest/libtest_svx_unit.so
/usr/bin/ld.gold: error: /home/vmregina/lo/core/workdir/CxxObject/svx/qa/unit/customshapes.o: requires dynamic R_X86_64_PC32 reloc against '_ZNK17SdrObjCustomShape21GetInteractionHandlesEv' which may overflow at runtime; recompile with -fPIC /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:361: error: undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const' /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:365: error: undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const' /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:369: error: undefined reference to 'SdrObjCustomShape::DragMoveCustomShapeHdl(Point const&, unsigned short, bool)' /home/vmregina/lo/core/svx/qa/unit/customshapes.cxx:371: error: undefined reference to 'SdrObjCustomShape::GetInteractionHandles() const'
collect2: error: ld returned 1 exit status
/home/vmregina/lo/core/solenv/gbuild/LinkTarget.mk:635: recipe for target '/home/vmregina/lo/core/workdir/LinkTarget/CppunitTest/libtest_svx_unit.so' failed make[1]: *** [/home/vmregina/lo/core/workdir/LinkTarget/CppunitTest/libtest_svx_unit.so] Error 1
Makefile:120: recipe for target 'svx.check' failed
make: *** [svx.check] Error 2

What is needed for these systems? Does it make a difference whether it is a debug build or not? My current Windows setting is a non-debug build, in the Linux VM it is a debug-build.

In include/svx/svdoashp.hxx, the SdrObjCustomShape member functions GetInteractionHandles and DragMoveCustomShapeHdl are marked as SVX_DLLPRIVATE (i.e., SAL_DLLPRIVATE). On Windows, that happens to have no effect, but on other platforms it prevents those symbols from being exported from the svxcore library, so you can't actually access those functions from test code.

The technically preferred solution would be if you can somehow avoid calling those functions directly from the test code. Less appealing hacks to get it working are either to not mark those functions as SVX_DLLPRIVATE in include/svx/svdoashp.hxx, or to make svx/CppunitTest_svx_unit.mk use gb_CppunitTest_use_library_objects to directly include (copies of) the svxcore objects, instead of using gb_CppunitTest_use_libraries to link against the svxcore library.

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.