diff --git a/CMakeLists.txt b/CMakeLists.txt index fe4c7a729..21a0145d5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,8 +142,8 @@ if(CMAKE_C_COMPILER_ID STREQUAL "GNU") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g") endif() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -Wl,--no-export-dynamic -Bsymbolic-functions -Wl,--dynamic-list-cpp-typeinfo -Wl,--dynamic-list-data") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--gc-sections -Wl,--no-export-dynamic -Bsymbolic-functions -Wl,--dynamic-list-cpp-typeinfo -Wl,--dynamic-list-data") endif() if(ICINGA2_LTO_BUILD) diff --git a/lib/base/value.cpp b/lib/base/value.cpp index d050c86bd..293d9f8bc 100644 --- a/lib/base/value.cpp +++ b/lib/base/value.cpp @@ -71,7 +71,7 @@ String Value::GetTypeName(void) const case ValueString: return "String"; case ValueObject: - t = static_cast(*this)->GetReflectionType(); + t = boost::get(m_Value)->GetReflectionType(); if (!t) { if (IsObjectType()) return "Array"; @@ -98,7 +98,7 @@ Type::Ptr Value::GetReflectionType(void) const case ValueString: return Type::GetByName("String"); case ValueObject: - return static_cast(*this)->GetReflectionType(); + return boost::get(m_Value)->GetReflectionType(); default: return Type::Ptr(); }