]> granicus.if.org Git - icinga2/commitdiff
Avoid most other unnecessary PLT indirections
authorGunnar Beutner <gunnar@beutner.name>
Sat, 28 Mar 2015 15:56:47 +0000 (16:56 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Sat, 28 Mar 2015 16:40:01 +0000 (17:40 +0100)
refs #8890

CMakeLists.txt
lib/base/value.cpp

index fe4c7a7295159dca6b47ca05f79a9f28db4b06a1..21a0145d5a7d103bd4891d35dace76012c387f0a 100644 (file)
@@ -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)
index d050c86bdcb887eae6d9289e3d1e2c588e4f7549..293d9f8bc1fad2cc84708e4bc29b4e5ae3841ca7 100644 (file)
@@ -71,7 +71,7 @@ String Value::GetTypeName(void) const
                case ValueString:
                        return "String";
                case ValueObject:
-                       t = static_cast<Object::Ptr>(*this)->GetReflectionType();
+                       t = boost::get<Object::Ptr>(m_Value)->GetReflectionType();
                        if (!t) {
                                if (IsObjectType<Array>())
                                        return "Array";
@@ -98,7 +98,7 @@ Type::Ptr Value::GetReflectionType(void) const
                case ValueString:
                        return Type::GetByName("String");
                case ValueObject:
-                       return static_cast<Object::Ptr>(*this)->GetReflectionType();
+                       return boost::get<Object::Ptr>(m_Value)->GetReflectionType();
                default:
                        return Type::Ptr();
        }