summaryrefslogtreecommitdiff
path: root/cmake/dtrace.cmake
diff options
context:
space:
mode:
authorMats Kindahl <mats.kindahl@oracle.com>2010-09-06 14:45:12 +0200
committerMats Kindahl <mats.kindahl@oracle.com>2010-09-06 14:45:12 +0200
commit788d3c4518492c211a4aaea562ebbbbe75a7d8b0 (patch)
tree963d3ad58c4b4336a980046ea444c0d49429c87b /cmake/dtrace.cmake
parent08e1a5b770e099430e046d3dcd5f8d5fe4f1a279 (diff)
downloadmariadb-git-788d3c4518492c211a4aaea562ebbbbe75a7d8b0.tar.gz
Bug #55966: "plugin" tests fail in 5.5
On Solaris with version 3.4.6, the ha_example.so shared library is built with DTrace and the server is built without DTrace support. This occurs because dtrace.cmake disables DTrace support for 3.4.6, but still set HAVE_DTRACE, which causes probes_mysql.h to include probes_mysql_dtrace.h instead of probes_mysql_nodtrace.h. This patch fixes this by not setting HAVE_DTRACE on Solaris for GCC 3.4.6.
Diffstat (limited to 'cmake/dtrace.cmake')
-rw-r--r--cmake/dtrace.cmake35
1 files changed, 18 insertions, 17 deletions
diff --git a/cmake/dtrace.cmake b/cmake/dtrace.cmake
index d5566d03913..c12a74cba31 100644
--- a/cmake/dtrace.cmake
+++ b/cmake/dtrace.cmake
@@ -13,13 +13,30 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCXX
+ AND CMAKE_SIZEOF_VOID_P EQUAL 4)
+ IF(NOT DEFINED BUGGY_GCC_NO_DTRACE_MODULES)
+ EXECUTE_PROCESS(
+ COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1} --version
+ OUTPUT_VARIABLE out)
+ IF(out MATCHES "3.4.6")
+ # This gcc causes crashes in dlopen() for dtraced shared libs,
+ # while standard shipped with Solaris10 3.4.3 is ok
+ SET(BUGGY_GCC_NO_DTRACE_MODULES 1 CACHE INTERNAL "")
+ ELSE()
+ SET(BUGGY_GCC_NO_DTRACE_MODULES 0 CACHE INTERNAL "")
+ ENDIF()
+ ENDIF()
+ENDIF()
+
# Check if OS supports DTrace
MACRO(CHECK_DTRACE)
FIND_PROGRAM(DTRACE dtrace)
MARK_AS_ADVANCED(DTRACE)
# On FreeBSD, dtrace does not handle userland tracing yet
- IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+ IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
+ AND NOT BUGGY_GCC_NO_DTRACE_MODULES)
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
ENDIF()
SET(HAVE_DTRACE ${ENABLE_DTRACE})
@@ -72,22 +89,6 @@ IF(ENABLE_DTRACE)
)
ENDIF()
-IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND CMAKE_COMPILER_IS_GNUCXX
- AND CMAKE_SIZEOF_VOID_P EQUAL 4)
- IF(NOT DEFINED BUGGY_GCC_NO_DTRACE_MODULES)
- EXECUTE_PROCESS(
- COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1} --version
- OUTPUT_VARIABLE out)
- IF(out MATCHES "3.4.6")
- # This gcc causes crashes in dlopen() for dtraced shared libs,
- # while standard shipped with Solaris10 3.4.3 is ok
- SET(BUGGY_GCC_NO_DTRACE_MODULES 1 CACHE INTERNAL "")
- ELSE()
- SET(BUGGY_GCC_NO_DTRACE_MODULES 0 CACHE INTERNAL "")
- ENDIF()
- ENDIF()
-ENDIF()
-
FUNCTION(DTRACE_INSTRUMENT target)
IF(BUGGY_GCC_NO_DTRACE_MODULES)
GET_TARGET_PROPERTY(target_type ${target} TYPE)