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.