changeset 4763:bbe70c24bc60 Orthanc-1.9.6

hotfix for LSB precompiled binaries of Orthanc 1.9.6: reintegration of changeset 4761
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 09 Aug 2021 08:49:42 +0200
parents b1319a5304fb
children cc02a2aa8bab 2cac948b6169
files OrthancServer/CMakeLists.txt OrthancServer/Resources/VersionScriptOrthanc.map
diffstat 2 files changed, 23 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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
--- /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:
+  *;
+};