components/snort/patches/solaris-build.patch
author Rich Burridge <rich.burridge@oracle.com>
Tue, 17 Dec 2013 21:59:26 -0800
changeset 1609 87293f3666a2
parent 1345 ee87318d9935
child 2198 168b8acace5f
permissions -rw-r--r--
17599591 The Python tox module needs to be added to Userland (fix build) 17599586 The Python webtest module needs to be added to Userland (fix build)

This patch does three things:

1/ Uses gethrtime() rather than trying to read the %tick register (the
   latter has issues in MP environments)
2/ Allows Studio to compile in 64-bit and normal optimization.
3/ Removed the need to define lines like "CFLAGS += -Du_int8_t=uint8_t"
   in the snort component Makefile.

It has been sent upstream for consideration by the snort maintainers for 
a future release.

--- snort-2.9.2/configure.in.orig	2013-06-04 14:05:22.814684109 -0700
+++ snort-2.9.2/configure.in	2013-06-04 14:41:42.703306013 -0700
@@ -686,27 +686,8 @@
     AC_MSG_RESULT(no)
 fi
 
-# check for sparc %time register
-if eval "echo $host_cpu|grep -i sparc >/dev/null"; then
-    OLD_CFLAGS="$CFLAGS"
-    CFLAGS="$CFLAGS -mcpu=v9 "
-    AC_MSG_CHECKING([for sparc %time register])
-    AC_RUN_IFELSE(
-    [AC_LANG_PROGRAM(
-    [[]],
-    [[
-        int val;
-        __asm__ __volatile__("rd %%tick, %0" : "=r"(val));
-    ]])],
-    [sparcv9="yes"],
-    [sparcv9="no"])
-    AC_MSG_RESULT($sparcv9)
-    if test "x$sparcv9" = "xyes"; then
-        AC_DEFINE([SPARCV9],[1],[For sparc v9 with %time register])
-    else
-        CFLAGS="$OLD_CFLAGS"
-    fi
-fi
+# Check for the presence of the Solaris gethrtime routine.
+AC_CHECK_FUNCS(gethrtime)
 
 # modified from gnulib/m4/visibility.m4
 AC_DEFUN([CC_VISIBILITY],
--- snort-2.9.2/src/cpuclock.h.orig	2013-06-04 12:30:59.362777817 -0700
+++ snort-2.9.2/src/cpuclock.h	2013-06-04 14:19:42.869930833 -0700
@@ -83,26 +83,15 @@
     val = ((uint64_t)tbl) | (((uint64_t)tbu0) << 32);  \
 }
 #else
-/* SPARC */
-#ifdef SPARCV9
-#ifdef _LP64
+/* SOLARIS */
+#ifdef HAVE_GETHRTIME
 #define get_clockticks(val) \
 { \
-    __asm__ __volatile__("rd %%tick, %0" : "=r"(val)); \
+    val = gethrtime(); \
 }
 #else
-#define get_clockticks(val) \
-{ \
-    uint32_t a, b; \
-    __asm__ __volatile__("rd %%tick, %0\n" \
-                         "srlx %0, 32, %1" \
-                         : "=r"(a), "=r"(b)); \
-    val = ((uint64_t)a) | (((uint64_t)b) << 32); \
-}
-#endif /* _LP64 */
-#else
 #define get_clockticks(val)
-#endif /* SPARC */
+#endif /* HAVE_GETTHRTIME */
 #endif /* POWERPC || PPC */
 #endif /* IA64 && HPUX */
 #endif /* IA64 && GNUC */
--- snort-2.9.2/src/sfutil/sf_ip.h.orig	2013-06-04 12:33:38.923475148 -0700
+++ snort-2.9.2/src/sfutil/sf_ip.h	2013-06-04 12:33:52.951704625 -0700
@@ -38,6 +38,7 @@
 #endif
 
 #include "snort_debug.h" /* for inline definition */
+#include "sf_types.h"
 
 /* define SFIP_ROBUST to check pointers passed into the sfip libs.
  * Robustification should not be enabled if the client code is trustworthy.