# HG changeset patch # User Sebastien Jodogne # Date 1628491782 -7200 # Node ID bbe70c24bc608379cbaf2a4148994ef964ca70c1 # Parent b1319a5304fb494e567e32dc53aa11a6978eb554 hotfix for LSB precompiled binaries of Orthanc 1.9.6: reintegration of changeset 4761 diff -r b1319a5304fb -r bbe70c24bc60 OrthancServer/CMakeLists.txt --- a/OrthancServer/CMakeLists.txt Wed Jul 21 10:26:20 2021 +0200 +++ b/OrthancServer/CMakeLists.txt Mon Aug 09 08:49:42 2021 +0200 @@ -397,6 +397,16 @@ target_link_libraries(Orthanc ServerLibrary CoreLibrary ${DCMTK_LIBRARIES}) +if ("${CMAKE_SYSTEM_VERSION}" STREQUAL "LinuxStandardBase") + # The link flag below hides all the global functions so that a Linux + # Standard Base (LSB) build of Orthanc can load plugins that are not + # built using LSB (new in Orthanc 1.9.7) + set_property( + TARGET Orthanc + PROPERTY LINK_FLAGS "-Wl,--version-script=${CMAKE_SOURCE_DIR}/Resources/VersionScriptOrthanc.map" + ) +endif() + install( TARGETS Orthanc RUNTIME DESTINATION sbin diff -r b1319a5304fb -r bbe70c24bc60 OrthancServer/Resources/VersionScriptOrthanc.map --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancServer/Resources/VersionScriptOrthanc.map Mon Aug 09 08:49:42 2021 +0200 @@ -0,0 +1,13 @@ +# This is a version-script for the main Orthanc binary, that hides all +# the global functions of the executable so that a Linux Standard Base +# (LSB) build of Orthanc can load plugins that are not built using +# LSB. Otherwise, the dynamic loader of the plugins will try to use +# the global functions published by the Orthanc server, which results +# in a segmentation fault if the data structures don't have the same +# memory layout (e.g. debug vs. release, or another version of some +# C/C++ library used both by Orthanc, typically jsoncpp). + +{ +local: + *; +};