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 d987921
Index: gdb-7.11.90.20160829/gdb/nat/linux-ptrace.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/nat/linux-ptrace.c	2016-08-29 09:35:26.798230659 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/nat/linux-ptrace.c	2016-08-29 09:35:43.162384100 +0200
Jan Kratochvil 9faadbe
@@ -25,6 +25,10 @@
Jan Kratochvil 23f398e
 #include "gdb_ptrace.h"
Jan Kratochvil d987921
 #include <sys/procfs.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 32f92b2
 /* Stores the ptrace options supported by the running kernel.
Jan Kratochvil 32f92b2
    A value of -1 means we did not check for features yet.  A value
Jan Kratochvil 32f92b2
    of 0 means there are no supported features.  */
Jan Kratochvil 9faadbe
@@ -49,6 +53,8 @@
Jan Kratochvil eb6cb2d
     buffer_xml_printf (buffer, _("process %d is a zombie "
Jan Kratochvil eb6cb2d
 				 "- the process has already terminated"),
Jan Kratochvil f8eee05
 		       (int) pid);
Jan Kratochvil c64e732
+
Jan Kratochvil f8eee05
+  linux_ptrace_create_warnings (buffer);
Jan Kratochvil 8aabf36
 }
Jan Kratochvil 8aabf36
 
Jan Kratochvil 0728371
 /* See linux-ptrace.h.  */
Jan Kratochvil 9faadbe
@@ -592,6 +598,22 @@
Jan Kratochvil 8aabf36
   linux_ptrace_test_ret_to_nx ();
Jan Kratochvil 8aabf36
 }
Jan Kratochvil 2f7f533
 
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 2f7f533
+
Jan Kratochvil 32f92b2
 /* Extract extended ptrace event from wait status.  */
Jan Kratochvil 32f92b2
 
Jan Kratochvil 32f92b2
 int
Jan Kratochvil d987921
Index: gdb-7.11.90.20160829/gdb/nat/linux-ptrace.h
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/nat/linux-ptrace.h	2016-08-29 09:35:26.798230659 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/nat/linux-ptrace.h	2016-08-29 09:35:43.162384100 +0200
Jan Kratochvil 9faadbe
@@ -185,6 +185,7 @@
Jan Kratochvil 0728371
 extern char *linux_ptrace_attach_fail_reason_string (ptid_t ptid, int err);
Jan Kratochvil c64e732
 
Jan Kratochvil 8aabf36
 extern void linux_ptrace_init_warnings (void);
Jan Kratochvil f8eee05
+extern void linux_ptrace_create_warnings (struct buffer *buffer);
Jan Kratochvil 32f92b2
 extern void linux_check_ptrace_features (void);
Jan Kratochvil 2f7f533
 extern void linux_enable_event_reporting (pid_t pid, int attached);
Jan Kratochvil eb6cb2d
 extern void linux_disable_event_reporting (pid_t pid);
Jan Kratochvil d987921
Index: gdb-7.11.90.20160829/gdb/configure.ac
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/configure.ac	2016-08-29 09:35:26.799230668 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/configure.ac	2016-08-29 09:35:43.163384109 +0200
Jan Kratochvil 9faadbe
@@ -2108,6 +2108,10 @@
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 d987921
Index: gdb-7.11.90.20160829/gdb/gdbserver/configure.ac
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/configure.ac	2016-08-29 09:35:26.799230668 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/gdbserver/configure.ac	2016-08-29 09:35:43.163384109 +0200
Jan Kratochvil d987921
@@ -472,6 +472,10 @@
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 d987921
Index: gdb-7.11.90.20160829/gdb/gdbserver/linux-low.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/linux-low.c	2016-08-29 09:35:26.801230687 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/gdbserver/linux-low.c	2016-08-29 09:35:43.165384128 +0200
Jan Kratochvil 9faadbe
@@ -933,6 +933,29 @@
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 9faadbe
@@ -956,7 +979,7 @@
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 2116e53
       setpgid (0, 0);
Jan Kratochvil 2116e53
 
Jan Kratochvil d987921
Index: gdb-7.11.90.20160829/gdb/inf-ptrace.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/inf-ptrace.c	2016-08-29 09:35:26.801230687 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/inf-ptrace.c	2016-08-29 09:35:43.165384128 +0200
Jan Kratochvil 2116e53
@@ -79,7 +79,15 @@
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 d987921
Index: gdb-7.11.90.20160829/gdb/linux-nat.c
Jan Kratochvil f8eee05
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/linux-nat.c	2016-08-29 09:35:26.802230697 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/linux-nat.c	2016-08-29 09:35:43.166384137 +0200
Jan Kratochvil 9faadbe
@@ -1102,6 +1102,7 @@
Jan Kratochvil 32f92b2
 {
Jan Kratochvil 32f92b2
   struct cleanup *restore_personality
Jan Kratochvil 32f92b2
     = maybe_disable_address_space_randomization (disable_randomization);
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 9faadbe
@@ -1109,7 +1110,28 @@
Jan Kratochvil c64e732
   /* Make sure we report all signals during startup.  */
Jan Kratochvil eb6cb2d
   linux_nat_pass_signals (ops, 0, NULL);
Jan Kratochvil c64e732
 
Jan Kratochvil c64e732
-  linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty);
Jan Kratochvil 32f92b2
+  TRY
Jan Kratochvil c64e732
+    {
Jan Kratochvil c64e732
+      linux_ops->to_create_inferior (ops, exec_file, allargs, env, from_tty);
Jan Kratochvil c64e732
+    }
Jan Kratochvil 32f92b2
+  CATCH (ex, RETURN_MASK_ERROR)
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 32f92b2
+  END_CATCH
Jan Kratochvil c64e732
 
Jan Kratochvil 32f92b2
   do_cleanups (restore_personality);
Jan Kratochvil 32f92b2
 }
Jan Kratochvil d987921
Index: gdb-7.11.90.20160829/gdb/config.in
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/config.in	2016-08-29 09:35:26.803230706 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/config.in	2016-08-29 09:35:43.166384137 +0200
Jan Kratochvil 9faadbe
@@ -267,6 +267,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 9faadbe
@@ -399,6 +402,9 @@
Jan Kratochvil eb6cb2d
 /* Define to 1 if you have the `scm_new_smob' function. */
Jan Kratochvil eb6cb2d
 #undef HAVE_SCM_NEW_SMOB
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 43b0bce
 /* Define to 1 if you have the `setlocale' function. */
Jan Kratochvil 43b0bce
 #undef HAVE_SETLOCALE
Jan Kratochvil 872aab0
 
Jan Kratochvil d987921
Index: gdb-7.11.90.20160829/gdb/configure
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/configure	2016-08-29 09:35:26.806230734 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/configure	2016-08-29 09:35:43.170384175 +0200
Jan Kratochvil 9faadbe
@@ -14642,6 +14642,64 @@
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 d987921
Index: gdb-7.11.90.20160829/gdb/gdbserver/config.in
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/config.in	2016-08-29 09:35:26.807230743 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/gdbserver/config.in	2016-08-29 09:35:43.170384175 +0200
Jan Kratochvil 9faadbe
@@ -120,6 +120,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 9faadbe
@@ -196,6 +199,9 @@
Jan Kratochvil c296a6a
 /* Define to 1 if you have the `pwrite' function. */
Jan Kratochvil c296a6a
 #undef HAVE_PWRITE
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 c296a6a
 /* Define to 1 if you have the `setns' function. */
Jan Kratochvil c296a6a
 #undef HAVE_SETNS
Jan Kratochvil 872aab0
 
Jan Kratochvil d987921
Index: gdb-7.11.90.20160829/gdb/gdbserver/configure
Jan Kratochvil 872aab0
===================================================================
Jan Kratochvil d987921
--- gdb-7.11.90.20160829.orig/gdb/gdbserver/configure	2016-08-29 09:35:26.809230762 +0200
Jan Kratochvil d987921
+++ gdb-7.11.90.20160829/gdb/gdbserver/configure	2016-08-29 09:35:43.172384194 +0200
Jan Kratochvil d987921
@@ -7561,6 +7561,64 @@
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