Jan Kratochvil c64e732
http://sourceware.org/ml/gdb-patches/2012-03/msg00171.html
Jan Kratochvil c64e732
Subject: [patch 3/3] attach-fail-reasons: SELinux deny_ptrace
Jan Kratochvil c64e732
Jan Kratochvil c64e732
Hi,
Jan Kratochvil c64e732
Jan Kratochvil c64e732
and here is the last bit for new SELinux 'deny_ptrace':
Jan Kratochvil c64e732
	https://bugzilla.redhat.com/show_bug.cgi?id=786878
Jan Kratochvil c64e732
Jan Kratochvil c64e732
As even PTRACE_TRACEME fails in such case it needs to install hook for even
Jan Kratochvil c64e732
that event.
Jan Kratochvil c64e732
Jan Kratochvil c64e732
Jan Kratochvil c64e732
Thanks,
Jan Kratochvil c64e732
Jan
Jan Kratochvil c64e732
Jan Kratochvil c64e732
Jan Kratochvil c64e732
gdb/
Jan Kratochvil c64e732
2012-03-06  Jan Kratochvil  <jan.kratochvil@redhat.com>
Jan Kratochvil c64e732
Jan Kratochvil c64e732
	* common/linux-ptrace.c [HAVE_SELINUX_SELINUX_H]: include
Jan Kratochvil c64e732
	selinux/selinux.h.
Jan Kratochvil c64e732
	(linux_ptrace_attach_warnings): Call linux_ptrace_create_warnings.
Jan Kratochvil c64e732
	(linux_ptrace_create_warnings): New.
Jan Kratochvil c64e732
	* common/linux-ptrace.h (linux_ptrace_create_warnings): New declaration.
Jan Kratochvil c64e732
	* config.in: Regenerate.
Jan Kratochvil c64e732
	* configure: Regenerate.
Jan Kratochvil c64e732
	* configure.ac: Check selinux/selinux.h and the selinux library.
Jan Kratochvil c64e732
	* inf-ptrace.c (inf_ptrace_me): Check the ptrace result.
Jan Kratochvil c64e732
	* linux-nat.c (linux_nat_create_inferior): New variable ex.  Wrap
Jan Kratochvil c64e732
	to_create_inferior into TRY_CATCH, call linux_ptrace_create_warnings.
Jan Kratochvil c64e732
Jan Kratochvil c64e732
gdb/gdbserver/
Jan Kratochvil c64e732
	* config.in: Regenerate.
Jan Kratochvil c64e732
	* configure: Regenerate.
Jan Kratochvil c64e732
	* configure.ac: Check selinux/selinux.h and the selinux library.
Jan Kratochvil c64e732
	* linux-low.c (linux_traceme): New function.
Jan Kratochvil c64e732
	(linux_create_inferior, linux_tracefork_child): Call it instead of
Jan Kratochvil c64e732
	direct ptrace.
Jan Kratochvil c64e732
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/common/linux-ptrace.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/common/linux-ptrace.c	2014-02-06 17:40:32.530145960 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/common/linux-ptrace.c	2014-02-06 17:48:16.329644534 +0100
Jan Kratochvil 2c55a54
@@ -32,6 +32,10 @@
Jan Kratochvil 2c55a54
 
Jan Kratochvil 2c55a54
 #include <stdint.h>
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
+#ifdef HAVE_SELINUX_SELINUX_H
Jan Kratochvil c64e732
+# include <selinux/selinux.h>
Jan Kratochvil c64e732
+#endif /* HAVE_SELINUX_SELINUX_H */
Jan Kratochvil c64e732
+
Jan Kratochvil 2c55a54
 /* Stores the currently supported ptrace options.  A value of
Jan Kratochvil 2c55a54
    -1 means we did not check for features yet.  A value of 0 means
Jan Kratochvil 2c55a54
    there are no supported features.  */
Jan Kratochvil 2c55a54
@@ -56,6 +60,8 @@ linux_ptrace_attach_warnings (pid_t pid,
Jan Kratochvil f8eee05
     buffer_xml_printf (buffer, _("warning: process %d is a zombie "
Jan Kratochvil f8eee05
 				 "- the process has already terminated\n"),
Jan Kratochvil f8eee05
 		       (int) pid);
Jan Kratochvil c64e732
+
Jan Kratochvil f8eee05
+  linux_ptrace_create_warnings (buffer);
Jan Kratochvil 8aabf36
 }
Jan Kratochvil 8aabf36
 
Jan Kratochvil fb02fc3
 #if defined __i386__ || defined __x86_64__
Jan Kratochvil 2c55a54
@@ -542,3 +548,19 @@ linux_ptrace_init_warnings (void)
Jan Kratochvil 8aabf36
 
Jan Kratochvil 8aabf36
   linux_ptrace_test_ret_to_nx ();
Jan Kratochvil 8aabf36
 }
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
+/* Print all possible reasons we could fail to create a traced process.  */
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
+void
Jan Kratochvil f8eee05
+linux_ptrace_create_warnings (struct buffer *buffer)
Jan Kratochvil c64e732
+{
Jan Kratochvil c64e732
+#ifdef HAVE_LIBSELINUX
Jan Kratochvil c64e732
+  /* -1 is returned for errors, 0 if it has no effect, 1 if PTRACE_ATTACH is
Jan Kratochvil c64e732
+     forbidden.  */
Jan Kratochvil c64e732
+  if (security_get_boolean_active ("deny_ptrace") == 1)
Jan Kratochvil f8eee05
+    buffer_xml_printf (buffer,
Jan Kratochvil f8eee05
+		       _("the SELinux boolean 'deny_ptrace' is enabled, "
Jan Kratochvil f8eee05
+			 "you can disable this process attach protection by: "
Jan Kratochvil f8eee05
+			 "(gdb) shell sudo setsebool deny_ptrace=0"));
Jan Kratochvil c64e732
+#endif /* HAVE_LIBSELINUX */
Jan Kratochvil 8aabf36
+}
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/common/linux-ptrace.h
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/common/linux-ptrace.h	2014-02-06 17:40:35.506149162 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/common/linux-ptrace.h	2014-02-06 17:48:00.601627995 +0100
Jan Kratochvil 2c55a54
@@ -85,6 +85,7 @@ struct buffer;
Jan Kratochvil c64e732
 
Jan Kratochvil f8eee05
 extern void linux_ptrace_attach_warnings (pid_t pid, struct buffer *buffer);
Jan Kratochvil 8aabf36
 extern void linux_ptrace_init_warnings (void);
Jan Kratochvil f8eee05
+extern void linux_ptrace_create_warnings (struct buffer *buffer);
Jan Kratochvil 2c55a54
 extern void linux_enable_event_reporting (pid_t pid);
Jan Kratochvil 2c55a54
 extern int linux_supports_tracefork (void);
Jan Kratochvil 2c55a54
 extern int linux_supports_traceclone (void);
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/configure.ac
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/configure.ac	2014-02-06 17:40:32.532145962 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/configure.ac	2014-02-06 17:40:35.507149163 +0100
Jan Kratochvil 2c55a54
@@ -1975,6 +1975,10 @@ case $host_os in
Jan Kratochvil 872aab0
 esac
Jan Kratochvil 872aab0
 AC_DEFINE_UNQUOTED(GDBINIT,"$gdbinit",[The .gdbinit filename.])
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
+dnl Check security_get_boolean_active availability.
Jan Kratochvil c64e732
+AC_CHECK_HEADERS(selinux/selinux.h)
Jan Kratochvil c64e732
+AC_CHECK_LIB(selinux, security_get_boolean_active)
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
 dnl Handle optional features that can be enabled.
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
 # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/gdbserver/configure.ac
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/gdbserver/configure.ac	2014-02-06 17:40:32.532145962 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/gdbserver/configure.ac	2014-02-06 17:40:35.507149163 +0100
Jan Kratochvil 2c55a54
@@ -454,6 +454,10 @@ if $want_ipa ; then
Jan Kratochvil c64e732
    fi
Jan Kratochvil c64e732
 fi
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
+dnl Check security_get_boolean_active availability.
Jan Kratochvil c64e732
+AC_CHECK_HEADERS(selinux/selinux.h)
Jan Kratochvil c64e732
+AC_CHECK_LIB(selinux, security_get_boolean_active)
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
 AC_SUBST(GDBSERVER_DEPFILES)
Jan Kratochvil c64e732
 AC_SUBST(GDBSERVER_LIBS)
Jan Kratochvil 872aab0
 AC_SUBST(srv_xmlbuiltin)
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/gdbserver/linux-low.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/gdbserver/linux-low.c	2014-02-06 17:40:32.534145964 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/gdbserver/linux-low.c	2014-02-06 17:49:32.385726514 +0100
Jan Kratochvil 2c55a54
@@ -543,6 +543,29 @@ add_lwp (ptid_t ptid)
Jan Kratochvil c64e732
   return lwp;
Jan Kratochvil c64e732
 }
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
+/* Execute PTRACE_TRACEME with error checking.  */
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
+static void
Jan Kratochvil c64e732
+linux_traceme (const char *program)
Jan Kratochvil c64e732
+{
Jan Kratochvil c64e732
+  int save_errno;
Jan Kratochvil f8eee05
+  struct buffer buffer;
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
+  errno = 0;
Jan Kratochvil ab333d9
+  if (ptrace (PTRACE_TRACEME, 0,
Jan Kratochvil 2c55a54
+	      (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0) == 0)
Jan Kratochvil c64e732
+    return;
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
+  save_errno = errno;
Jan Kratochvil f8eee05
+  buffer_init (&buffer);
Jan Kratochvil f8eee05
+  linux_ptrace_create_warnings (&buffer);
Jan Kratochvil f8eee05
+  buffer_grow_str0 (&buffer, "");
Jan Kratochvil f8eee05
+  fprintf (stderr, _("%sCannot trace created process %s: %s.\n"),
Jan Kratochvil f8eee05
+	   buffer_finish (&buffer), program, strerror (save_errno));
Jan Kratochvil c64e732
+  fflush (stderr);
Jan Kratochvil c64e732
+  _exit (0177);
Jan Kratochvil c64e732
+}
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
 /* Start an inferior process and returns its pid.
Jan Kratochvil c64e732
    ALLARGS is a vector of program-name and args. */
Jan Kratochvil c64e732
 
Jan Kratochvil 2c55a54
@@ -584,7 +607,7 @@ linux_create_inferior (char *program, ch
Jan Kratochvil c64e732
   if (pid == 0)
Jan Kratochvil c64e732
     {
Jan Kratochvil 2c55a54
       close_most_fds ();
Jan Kratochvil 2c55a54
-      ptrace (PTRACE_TRACEME, 0, (PTRACE_TYPE_ARG3) 0, (PTRACE_TYPE_ARG4) 0);
Jan Kratochvil c64e732
+      linux_traceme (program);
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
 #ifndef __ANDROID__ /* Bionic doesn't use SIGRTMIN the way glibc does.  */
Jan Kratochvil c64e732
       signal (__SIGRTMIN + 1, SIG_DFL);
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/inf-ptrace.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/inf-ptrace.c	2014-02-06 17:40:32.535145965 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/inf-ptrace.c	2014-02-06 17:40:35.510149167 +0100
Jan Kratochvil 2c55a54
@@ -105,7 +105,15 @@ static void
Jan Kratochvil c64e732
 inf_ptrace_me (void)
Jan Kratochvil c64e732
 {
Jan Kratochvil c64e732
   /* "Trace me, Dr. Memory!"  */
Jan Kratochvil c64e732
+  errno = 0;
Jan Kratochvil c64e732
   ptrace (PT_TRACE_ME, 0, (PTRACE_TYPE_ARG3)0, 0);
Jan Kratochvil c64e732
+  if (errno != 0)
Jan Kratochvil c64e732
+    {
Jan Kratochvil c64e732
+      fprintf_unfiltered (gdb_stderr, _("Cannot create process: %s\n"),
Jan Kratochvil c64e732
+			  safe_strerror (errno));
Jan Kratochvil c64e732
+      gdb_flush (gdb_stderr);
Jan Kratochvil c64e732
+      _exit (0177);
Jan Kratochvil c64e732
+    }
Jan Kratochvil c64e732
 }
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
 /* Start a new inferior Unix child process.  EXEC_FILE is the file to
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/linux-nat.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/linux-nat.c	2014-02-06 17:40:32.537145968 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/linux-nat.c	2014-02-06 17:40:35.511149168 +0100
Jan Kratochvil 2c55a54
@@ -1283,6 +1283,7 @@ linux_nat_create_inferior (struct target
Jan Kratochvil c64e732
 #ifdef HAVE_PERSONALITY
Jan Kratochvil c64e732
   int personality_orig = 0, personality_set = 0;
Jan Kratochvil c64e732
 #endif /* HAVE_PERSONALITY */
Jan Kratochvil c64e732
+  volatile struct gdb_exception ex;
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
   /* The fork_child mechanism is synchronous and calls target_wait, so
Jan Kratochvil c64e732
      we have to mask the async mode.  */
Jan Kratochvil 2c55a54
@@ -1307,7 +1308,10 @@ linux_nat_create_inferior (struct target
Jan Kratochvil c64e732
   /* Make sure we report all signals during startup.  */
Jan Kratochvil c64e732
   linux_nat_pass_signals (0, NULL);
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
-  linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty);
Jan Kratochvil c64e732
+  TRY_CATCH (ex, RETURN_MASK_ERROR)
Jan Kratochvil c64e732
+    {
Jan Kratochvil c64e732
+      linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty);
Jan Kratochvil c64e732
+    }
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
 #ifdef HAVE_PERSONALITY
Jan Kratochvil c64e732
   if (personality_set)
Jan Kratochvil 2c55a54
@@ -1319,6 +1323,24 @@ linux_nat_create_inferior (struct target
Jan Kratochvil c64e732
 		 safe_strerror (errno));
Jan Kratochvil c64e732
     }
Jan Kratochvil c64e732
 #endif /* HAVE_PERSONALITY */
Jan Kratochvil c64e732
+
Jan Kratochvil c64e732
+  if (ex.reason < 0)
Jan Kratochvil c64e732
+    {
Jan Kratochvil f8eee05
+      struct buffer buffer;
Jan Kratochvil f8eee05
+      char *message, *buffer_s;
Jan Kratochvil f8eee05
+
Jan Kratochvil f8eee05
+      message = xstrdup (ex.message);
Jan Kratochvil f8eee05
+      make_cleanup (xfree, message);
Jan Kratochvil f8eee05
+
Jan Kratochvil f8eee05
+      buffer_init (&buffer);
Jan Kratochvil f8eee05
+      linux_ptrace_create_warnings (&buffer);
Jan Kratochvil f8eee05
+
Jan Kratochvil f8eee05
+      buffer_grow_str0 (&buffer, "");
Jan Kratochvil f8eee05
+      buffer_s = buffer_finish (&buffer);
Jan Kratochvil f8eee05
+      make_cleanup (xfree, buffer_s);
Jan Kratochvil f8eee05
+
Jan Kratochvil f8eee05
+      throw_error (ex.error, "%s%s", buffer_s, message);
Jan Kratochvil c64e732
+    }
Jan Kratochvil c64e732
 }
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
 static void
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/config.in
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/config.in	2014-02-06 17:40:32.538145969 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/config.in	2014-02-06 17:40:35.511149168 +0100
Jan Kratochvil 2c55a54
@@ -213,6 +213,9 @@
Jan Kratochvil 872aab0
 /* Define if librpm library is being used. */
Jan Kratochvil 872aab0
 #undef HAVE_LIBRPM
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
+/* Define to 1 if you have the `selinux' library (-lselinux). */
Jan Kratochvil 872aab0
+#undef HAVE_LIBSELINUX
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
 /* Define to 1 if you have the <libunwind-ia64.h> header file. */
Jan Kratochvil 872aab0
 #undef HAVE_LIBUNWIND_IA64_H
Jan Kratochvil 872aab0
 
Jan Kratochvil 2c55a54
@@ -345,6 +348,9 @@
Jan Kratochvil 872aab0
 /* Define to 1 if you have the `sbrk' function. */
Jan Kratochvil 872aab0
 #undef HAVE_SBRK
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
Jan Kratochvil 872aab0
+#undef HAVE_SELINUX_SELINUX_H
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
 /* Define to 1 if you have the `setlocale' function. */
Jan Kratochvil 872aab0
 #undef HAVE_SETLOCALE
Jan Kratochvil 872aab0
 
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/configure
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/configure	2014-02-06 17:40:32.541145972 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/configure	2014-02-06 17:40:35.515149172 +0100
Jan Kratochvil 2c55a54
@@ -12861,6 +12861,64 @@ cat >>confdefs.h <<_ACEOF
Jan Kratochvil 872aab0
 _ACEOF
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
+for ac_header in selinux/selinux.h
Jan Kratochvil 872aab0
+do :
Jan Kratochvil 872aab0
+  ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
Jan Kratochvil 872aab0
+if test "x$ac_cv_header_selinux_selinux_h" = x""yes; then :
Jan Kratochvil 872aab0
+  cat >>confdefs.h <<_ACEOF
Jan Kratochvil 872aab0
+#define HAVE_SELINUX_SELINUX_H 1
Jan Kratochvil 872aab0
+_ACEOF
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+done
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for security_get_boolean_active in -lselinux" >&5
Jan Kratochvil 872aab0
+$as_echo_n "checking for security_get_boolean_active in -lselinux... " >&6; }
Jan Kratochvil 872aab0
+if test "${ac_cv_lib_selinux_security_get_boolean_active+set}" = set; then :
Jan Kratochvil 872aab0
+  $as_echo_n "(cached) " >&6
Jan Kratochvil 872aab0
+else
Jan Kratochvil 872aab0
+  ac_check_lib_save_LIBS=$LIBS
Jan Kratochvil 872aab0
+LIBS="-lselinux  $LIBS"
Jan Kratochvil 872aab0
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
Jan Kratochvil 872aab0
+/* end confdefs.h.  */
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+/* Override any GCC internal prototype to avoid an error.
Jan Kratochvil 872aab0
+   Use char because int might match the return type of a GCC
Jan Kratochvil 872aab0
+   builtin and then its argument prototype would still apply.  */
Jan Kratochvil 872aab0
+#ifdef __cplusplus
Jan Kratochvil 872aab0
+extern "C"
Jan Kratochvil 872aab0
+#endif
Jan Kratochvil 872aab0
+char security_get_boolean_active ();
Jan Kratochvil 872aab0
+int
Jan Kratochvil 872aab0
+main ()
Jan Kratochvil 872aab0
+{
Jan Kratochvil 872aab0
+return security_get_boolean_active ();
Jan Kratochvil 872aab0
+  ;
Jan Kratochvil 872aab0
+  return 0;
Jan Kratochvil 872aab0
+}
Jan Kratochvil 872aab0
+_ACEOF
Jan Kratochvil 872aab0
+if ac_fn_c_try_link "$LINENO"; then :
Jan Kratochvil 872aab0
+  ac_cv_lib_selinux_security_get_boolean_active=yes
Jan Kratochvil 872aab0
+else
Jan Kratochvil 872aab0
+  ac_cv_lib_selinux_security_get_boolean_active=no
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+rm -f core conftest.err conftest.$ac_objext \
Jan Kratochvil 872aab0
+    conftest$ac_exeext conftest.$ac_ext
Jan Kratochvil 872aab0
+LIBS=$ac_check_lib_save_LIBS
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_security_get_boolean_active" >&5
Jan Kratochvil 872aab0
+$as_echo "$ac_cv_lib_selinux_security_get_boolean_active" >&6; }
Jan Kratochvil 872aab0
+if test "x$ac_cv_lib_selinux_security_get_boolean_active" = x""yes; then :
Jan Kratochvil 872aab0
+  cat >>confdefs.h <<_ACEOF
Jan Kratochvil 872aab0
+#define HAVE_LIBSELINUX 1
Jan Kratochvil 872aab0
+_ACEOF
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+  LIBS="-lselinux $LIBS"
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
 # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
Jan Kratochvil 872aab0
 # except that the argument to --with-sysroot is optional.
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/gdbserver/config.in
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/gdbserver/config.in	2014-02-06 17:40:32.542145973 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/gdbserver/config.in	2014-02-06 17:54:06.923021799 +0100
Jan Kratochvil 2c55a54
@@ -78,6 +78,9 @@
Jan Kratochvil 2c55a54
 /* Define to 1 if you have the `mcheck' library (-lmcheck). */
Jan Kratochvil 2c55a54
 #undef HAVE_LIBMCHECK
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
+/* Define to 1 if you have the `selinux' library (-lselinux). */
Jan Kratochvil 872aab0
+#undef HAVE_LIBSELINUX
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
 /* Define if the target supports branch tracing. */
Jan Kratochvil 872aab0
 #undef HAVE_LINUX_BTRACE
Jan Kratochvil 872aab0
 
Jan Kratochvil 2c55a54
@@ -151,6 +154,9 @@
Jan Kratochvil 872aab0
 /* Define to 1 if you have the `readlink' function. */
Jan Kratochvil 872aab0
 #undef HAVE_READLINK
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
Jan Kratochvil 872aab0
+#undef HAVE_SELINUX_SELINUX_H
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
 /* Define to 1 if you have the <sgtty.h> header file. */
Jan Kratochvil 872aab0
 #undef HAVE_SGTTY_H
Jan Kratochvil 872aab0
 
Jan Kratochvil 2c55a54
Index: gdb-7.6.90.20140127/gdb/gdbserver/configure
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil 2c55a54
--- gdb-7.6.90.20140127.orig/gdb/gdbserver/configure	2014-02-06 17:40:32.543145974 +0100
Jan Kratochvil 2c55a54
+++ gdb-7.6.90.20140127/gdb/gdbserver/configure	2014-02-06 17:40:35.516149173 +0100
Jan Kratochvil 2c55a54
@@ -6170,6 +6170,64 @@ if $want_ipa ; then
Jan Kratochvil 872aab0
    fi
Jan Kratochvil 872aab0
 fi
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
+for ac_header in selinux/selinux.h
Jan Kratochvil 872aab0
+do :
Jan Kratochvil 872aab0
+  ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default"
Jan Kratochvil 872aab0
+if test "x$ac_cv_header_selinux_selinux_h" = x""yes; then :
Jan Kratochvil 872aab0
+  cat >>confdefs.h <<_ACEOF
Jan Kratochvil 872aab0
+#define HAVE_SELINUX_SELINUX_H 1
Jan Kratochvil 872aab0
+_ACEOF
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+done
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for security_get_boolean_active in -lselinux" >&5
Jan Kratochvil 872aab0
+$as_echo_n "checking for security_get_boolean_active in -lselinux... " >&6; }
Jan Kratochvil 872aab0
+if test "${ac_cv_lib_selinux_security_get_boolean_active+set}" = set; then :
Jan Kratochvil 872aab0
+  $as_echo_n "(cached) " >&6
Jan Kratochvil 872aab0
+else
Jan Kratochvil 872aab0
+  ac_check_lib_save_LIBS=$LIBS
Jan Kratochvil 872aab0
+LIBS="-lselinux  $LIBS"
Jan Kratochvil 872aab0
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
Jan Kratochvil 872aab0
+/* end confdefs.h.  */
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+/* Override any GCC internal prototype to avoid an error.
Jan Kratochvil 872aab0
+   Use char because int might match the return type of a GCC
Jan Kratochvil 872aab0
+   builtin and then its argument prototype would still apply.  */
Jan Kratochvil 872aab0
+#ifdef __cplusplus
Jan Kratochvil 872aab0
+extern "C"
Jan Kratochvil 872aab0
+#endif
Jan Kratochvil 872aab0
+char security_get_boolean_active ();
Jan Kratochvil 872aab0
+int
Jan Kratochvil 872aab0
+main ()
Jan Kratochvil 872aab0
+{
Jan Kratochvil 872aab0
+return security_get_boolean_active ();
Jan Kratochvil 872aab0
+  ;
Jan Kratochvil 872aab0
+  return 0;
Jan Kratochvil 872aab0
+}
Jan Kratochvil 872aab0
+_ACEOF
Jan Kratochvil 872aab0
+if ac_fn_c_try_link "$LINENO"; then :
Jan Kratochvil 872aab0
+  ac_cv_lib_selinux_security_get_boolean_active=yes
Jan Kratochvil 872aab0
+else
Jan Kratochvil 872aab0
+  ac_cv_lib_selinux_security_get_boolean_active=no
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+rm -f core conftest.err conftest.$ac_objext \
Jan Kratochvil 872aab0
+    conftest$ac_exeext conftest.$ac_ext
Jan Kratochvil 872aab0
+LIBS=$ac_check_lib_save_LIBS
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_security_get_boolean_active" >&5
Jan Kratochvil 872aab0
+$as_echo "$ac_cv_lib_selinux_security_get_boolean_active" >&6; }
Jan Kratochvil 872aab0
+if test "x$ac_cv_lib_selinux_security_get_boolean_active" = x""yes; then :
Jan Kratochvil 872aab0
+  cat >>confdefs.h <<_ACEOF
Jan Kratochvil 872aab0
+#define HAVE_LIBSELINUX 1
Jan Kratochvil 872aab0
+_ACEOF
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+  LIBS="-lselinux $LIBS"
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+fi
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
+
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0
 
Jan Kratochvil 872aab0