public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v7 0/5] Catch syscall group
@ 2016-06-19 20:34 Gabriel Krisman Bertazi
  2016-06-19 20:34 ` [PATCH v7 1/5] Implemement support for groups of syscalls in the xml-syscall interface Gabriel Krisman Bertazi
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-06-19 20:34 UTC (permalink / raw)
  To: gdb-patches; +Cc: palves, sergiodj, dje, Gabriel Krisman Bertazi

Hi,

This is yet another iteration of the catch syscall group patch set.
This version includes the fixes proposed by Sergio, Doug and Pedro in
the last iteration.  Thank you guys for the suggestions.

Changes since v6:
	- Initialize variable to NULL (Sergio)
	- Create wrapper rules syscalls-xml and clean-syscalls-xml (Pedro)
	- Always check for xsltproc in configure.ac.  Only force the dependency
	when in maintainer mode.
	- Expose xml creation rule outside of maintainer mode (Pedro)
	- Fix up license header in apply-defaults.xsl (Pedro)

Looking forward to hear from you guys.

Gabriel Krisman Bertazi (5):
  Implemement support for groups of syscalls in the xml-syscall    
    interface.
  Add support to catch groups of syscalls.
  Add tests for catching groups of syscalls on supported    
    architectures.
  Include group information to xml syscall files.
  Update documentation on catching a group of related syscalls.

 gdb/NEWS                                 |   5 +
 gdb/break-catch-syscall.c                | 103 ++++++--
 gdb/configure.ac                         |   9 +
 gdb/data-directory/Makefile.in           |  21 +-
 gdb/doc/gdb.texinfo                      |  28 ++-
 gdb/syscalls/aarch64-linux.xml           | 271 ---------------------
 gdb/syscalls/aarch64-linux.xml.in        | 271 +++++++++++++++++++++
 gdb/syscalls/amd64-linux.xml             | 314 ------------------------
 gdb/syscalls/amd64-linux.xml.in          | 314 ++++++++++++++++++++++++
 gdb/syscalls/apply-defaults.xsl          |  43 ++++
 gdb/syscalls/arm-linux.xml               | 398 -------------------------------
 gdb/syscalls/arm-linux.xml.in            | 398 +++++++++++++++++++++++++++++++
 gdb/syscalls/bfin-linux.xml              | 326 -------------------------
 gdb/syscalls/bfin-linux.xml.in           | 326 +++++++++++++++++++++++++
 gdb/syscalls/gdb-syscalls.dtd            |   3 +-
 gdb/syscalls/i386-linux.xml              | 340 --------------------------
 gdb/syscalls/i386-linux.xml.in           | 340 ++++++++++++++++++++++++++
 gdb/syscalls/linux-defaults.xml.in       | 243 +++++++++++++++++++
 gdb/syscalls/mips-n32-linux.xml          | 319 -------------------------
 gdb/syscalls/mips-n32-linux.xml.in       | 319 +++++++++++++++++++++++++
 gdb/syscalls/mips-n64-linux.xml          | 312 ------------------------
 gdb/syscalls/mips-n64-linux.xml.in       | 312 ++++++++++++++++++++++++
 gdb/syscalls/mips-o32-linux.xml          | 347 ---------------------------
 gdb/syscalls/mips-o32-linux.xml.in       | 347 +++++++++++++++++++++++++++
 gdb/syscalls/ppc-linux.xml               | 310 ------------------------
 gdb/syscalls/ppc-linux.xml.in            | 310 ++++++++++++++++++++++++
 gdb/syscalls/ppc64-linux.xml             | 295 -----------------------
 gdb/syscalls/ppc64-linux.xml.in          | 295 +++++++++++++++++++++++
 gdb/syscalls/s390-linux.xml              | 367 ----------------------------
 gdb/syscalls/s390-linux.xml.in           | 367 ++++++++++++++++++++++++++++
 gdb/syscalls/s390x-linux.xml             | 334 --------------------------
 gdb/syscalls/s390x-linux.xml.in          | 334 ++++++++++++++++++++++++++
 gdb/syscalls/sparc-linux.xml             | 344 --------------------------
 gdb/syscalls/sparc-linux.xml.in          | 344 ++++++++++++++++++++++++++
 gdb/syscalls/sparc64-linux.xml           | 326 -------------------------
 gdb/syscalls/sparc64-linux.xml.in        | 326 +++++++++++++++++++++++++
 gdb/testsuite/gdb.base/catch-syscall.exp |  39 +++
 gdb/xml-syscall.c                        | 234 +++++++++++++++++-
 gdb/xml-syscall.h                        |  16 ++
 39 files changed, 5326 insertions(+), 4624 deletions(-)
 delete mode 100644 gdb/syscalls/aarch64-linux.xml
 create mode 100644 gdb/syscalls/aarch64-linux.xml.in
 delete mode 100644 gdb/syscalls/amd64-linux.xml
 create mode 100644 gdb/syscalls/amd64-linux.xml.in
 create mode 100644 gdb/syscalls/apply-defaults.xsl
 delete mode 100644 gdb/syscalls/arm-linux.xml
 create mode 100644 gdb/syscalls/arm-linux.xml.in
 delete mode 100644 gdb/syscalls/bfin-linux.xml
 create mode 100644 gdb/syscalls/bfin-linux.xml.in
 delete mode 100644 gdb/syscalls/i386-linux.xml
 create mode 100644 gdb/syscalls/i386-linux.xml.in
 create mode 100644 gdb/syscalls/linux-defaults.xml.in
 delete mode 100644 gdb/syscalls/mips-n32-linux.xml
 create mode 100644 gdb/syscalls/mips-n32-linux.xml.in
 delete mode 100644 gdb/syscalls/mips-n64-linux.xml
 create mode 100644 gdb/syscalls/mips-n64-linux.xml.in
 delete mode 100644 gdb/syscalls/mips-o32-linux.xml
 create mode 100644 gdb/syscalls/mips-o32-linux.xml.in
 delete mode 100644 gdb/syscalls/ppc-linux.xml
 create mode 100644 gdb/syscalls/ppc-linux.xml.in
 delete mode 100644 gdb/syscalls/ppc64-linux.xml
 create mode 100644 gdb/syscalls/ppc64-linux.xml.in
 delete mode 100644 gdb/syscalls/s390-linux.xml
 create mode 100644 gdb/syscalls/s390-linux.xml.in
 delete mode 100644 gdb/syscalls/s390x-linux.xml
 create mode 100644 gdb/syscalls/s390x-linux.xml.in
 delete mode 100644 gdb/syscalls/sparc-linux.xml
 create mode 100644 gdb/syscalls/sparc-linux.xml.in
 delete mode 100644 gdb/syscalls/sparc64-linux.xml
 create mode 100644 gdb/syscalls/sparc64-linux.xml.in

-- 
2.4.11

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v7 2/5] Add support to catch groups of syscalls.
  2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
  2016-06-19 20:34 ` [PATCH v7 1/5] Implemement support for groups of syscalls in the xml-syscall interface Gabriel Krisman Bertazi
@ 2016-06-19 20:34 ` Gabriel Krisman Bertazi
  2016-06-19 20:34 ` [PATCH v7 3/5] Add tests for catching groups of syscalls on supported architectures Gabriel Krisman Bertazi
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-06-19 20:34 UTC (permalink / raw)
  To: gdb-patches; +Cc: palves, sergiodj, dje, Gabriel Krisman Bertazi

This implements the catchpoint side.  While parsing 'catch syscall'
arguments, we verify if the argument is a syscall group and expand it to
a list of syscalls that are part of that group.

gdb/

	* break-catch-syscall.c (catch_syscall_split_args): Verify if
	argument is a syscall group and expand it to a list of syscalls
	when creating catchpoints.
	(catch_syscall_completer): Add word completion for system call
	groups.
---
 gdb/break-catch-syscall.c | 93 ++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 84 insertions(+), 9 deletions(-)

diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c
index dbebdda..c564b8f 100644
--- a/gdb/break-catch-syscall.c
+++ b/gdb/break-catch-syscall.c
@@ -464,10 +464,38 @@ catch_syscall_split_args (char *arg)
       cur_name[i] = '\0';
       arg += i;
 
-      /* Check if the user provided a syscall name or a number.  */
+      /* Check if the user provided a syscall name, group, or a number.  */
       syscall_number = (int) strtol (cur_name, &endptr, 0);
       if (*endptr == '\0')
-	get_syscall_by_number (gdbarch, syscall_number, &s);
+	{
+	  get_syscall_by_number (gdbarch, syscall_number, &s);
+	  VEC_safe_push (int, result, s.number);
+	}
+      else if (startswith (cur_name, "g:")
+	       || startswith (cur_name, "group:"))
+	{
+	  /* We have a syscall group.  Let's expand it into a syscall
+	     list before inserting.  */
+	  struct syscall *syscall_list;
+	  const char *group_name;
+
+	  /* Skip over "g:" and "group:" prefix strings.  */
+	  group_name = strchr (cur_name, ':') + 1;
+
+	  syscall_list = get_syscalls_by_group (gdbarch, group_name);
+
+	  if (syscall_list == NULL)
+	    error (_("Unknown syscall group '%s'."), group_name);
+
+	  for (i = 0; syscall_list[i].name != NULL; i++)
+	    {
+	      /* Insert each syscall that are part of the group.  No
+		 need to check if it is valid.  */
+	      VEC_safe_push (int, result, syscall_list[i].number);
+	    }
+
+	  xfree (syscall_list);
+	}
       else
 	{
 	  /* We have a name.  Let's check if it's valid and convert it
@@ -479,10 +507,10 @@ catch_syscall_split_args (char *arg)
 	       because GDB cannot do anything useful if there's no
 	       syscall number to be caught.  */
 	    error (_("Unknown syscall name '%s'."), cur_name);
-	}
 
-      /* Ok, it's valid.  */
-      VEC_safe_push (int, result, s.number);
+	  /* Ok, it's valid.  */
+	  VEC_safe_push (int, result, s.number);
+	}
     }
 
   discard_cleanups (cleanup);
@@ -597,11 +625,58 @@ static VEC (char_ptr) *
 catch_syscall_completer (struct cmd_list_element *cmd,
                          const char *text, const char *word)
 {
-  const char **list = get_syscall_names (get_current_arch ());
-  VEC (char_ptr) *retlist
-    = (list == NULL) ? NULL : complete_on_enum (list, word, word);
+  struct gdbarch *gdbarch = get_current_arch ();
+  struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
+  VEC (char_ptr) *group_retlist = NULL;
+  VEC (char_ptr) *syscall_retlist = NULL;
+  VEC (char_ptr) *retlist = NULL;
+  const char **group_list = NULL;
+  const char **syscall_list = NULL;
+  const char *prefix;
+  int i;
+
+  /* Completion considers ':' to be a word separator, so we use this to
+     verify whether the previous word was a group prefix.  If so, we
+     build the completion list using group names only.  */
+  for (prefix = word; prefix != text && prefix[-1] != ' '; prefix--)
+    ;
+
+  if (startswith (prefix, "g:") || startswith (prefix, "group:"))
+    {
+      /* Perform completion inside 'group:' namespace only.  */
+      group_list = get_syscall_group_names (gdbarch);
+      retlist = (group_list == NULL
+		 ? NULL : complete_on_enum (group_list, word, word));
+    }
+  else
+    {
+      /* Complete with both, syscall names and groups.  */
+      syscall_list = get_syscall_names (gdbarch);
+      group_list = get_syscall_group_names (gdbarch);
+
+      /* Append "group:" prefix to syscall groups.  */
+      for (i = 0; group_list[i] != NULL; i++)
+	{
+	  char *prefixed_group = xstrprintf ("group:%s", group_list[i]);
+
+	  group_list[i] = prefixed_group;
+	  make_cleanup (xfree, prefixed_group);
+	}
+
+      syscall_retlist = ((syscall_list == NULL)
+			 ? NULL : complete_on_enum (syscall_list, word, word));
+      group_retlist = ((group_list == NULL)
+		       ? NULL : complete_on_enum (group_list, word, word));
+
+      retlist = VEC_merge (char_ptr, syscall_retlist, group_retlist);
+    }
+
+  VEC_free (char_ptr, syscall_retlist);
+  VEC_free (char_ptr, group_retlist);
+  xfree (syscall_list);
+  xfree (group_list);
+  do_cleanups (cleanups);
 
-  xfree (list);
   return retlist;
 }
 
-- 
2.4.11

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v7 1/5] Implemement support for groups of syscalls in the xml-syscall interface.
  2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
@ 2016-06-19 20:34 ` Gabriel Krisman Bertazi
  2016-06-19 20:34 ` [PATCH v7 2/5] Add support to catch groups of syscalls Gabriel Krisman Bertazi
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-06-19 20:34 UTC (permalink / raw)
  To: gdb-patches; +Cc: palves, sergiodj, dje, Gabriel Krisman Bertazi

This is done by maintaining a list of syscall_group_desc for each
syscall group inside the syscalls_info structure.  Inside each
syscall_group_desc we have a vector of pointers to the syscalls that are
part of that group.

gdb/

	* syscalls/gdb-syscalls.dtd: Include group attribute to the
	syscall element.
	* xml-syscall.c (get_syscalls_by_group): New.
	(get_syscall_group_names): New.
	(struct syscall_group_desc): New structure to store group data.
	(struct syscalls_info): Include field to store the group list.
	(sysinfo_free_syscall_group_desc): New.
	(free_syscalls_info): Free group list.
	(syscall_group_create_syscall_group_desc): New.
	(syscall_group_add_syscall): New.
	(syscall_create_syscall_desc): Add syscall to its groups.
	(syscall_start_syscall): Load group attribute.
	(syscall_group_get_group_by_name): New.
	(xml_list_syscalls_by_group): New.
	(xml_list_of_groups): New.
	* xml-syscall.h (get_syscalls_by_group): Export function
	to retrieve a list of syscalls filtered by the group name.
	(get_syscall_group_names): Export function to retrieve the list
	of syscall groups.
---
 gdb/syscalls/gdb-syscalls.dtd |   3 +-
 gdb/xml-syscall.c             | 234 +++++++++++++++++++++++++++++++++++++++++-
 gdb/xml-syscall.h             |  16 +++
 3 files changed, 250 insertions(+), 3 deletions(-)

diff --git a/gdb/syscalls/gdb-syscalls.dtd b/gdb/syscalls/gdb-syscalls.dtd
index 3deda12..de47d4d 100644
--- a/gdb/syscalls/gdb-syscalls.dtd
+++ b/gdb/syscalls/gdb-syscalls.dtd
@@ -11,4 +11,5 @@
 <!ELEMENT syscall		EMPTY>
 <!ATTLIST syscall
 	name			CDATA	#REQUIRED
-	number			CDATA	#REQUIRED>
+	number			CDATA	#REQUIRED
+	groups			CDATA	#IMPLIED>
diff --git a/gdb/xml-syscall.c b/gdb/xml-syscall.c
index ceaf750..141ca3d 100644
--- a/gdb/xml-syscall.c
+++ b/gdb/xml-syscall.c
@@ -77,6 +77,20 @@ get_syscall_names (struct gdbarch *gdbarch)
   return NULL;
 }
 
+struct syscall *
+get_syscalls_by_group (struct gdbarch *gdbarch, const char *group)
+{
+  syscall_warn_user ();
+  return NULL;
+}
+
+const char **
+get_syscall_group_names (struct gdbarch *gdbarch)
+{
+  syscall_warn_user ();
+  return NULL;
+}
+
 #else /* ! HAVE_LIBEXPAT */
 
 /* Structure which describes a syscall.  */
@@ -92,6 +106,19 @@ typedef struct syscall_desc
 } *syscall_desc_p;
 DEF_VEC_P(syscall_desc_p);
 
+/* Structure of a syscall group.  */
+typedef struct syscall_group_desc
+{
+  /* The group name.  */
+
+  char *name;
+
+  /* The syscalls that are part of the group.  */
+
+  VEC(syscall_desc_p) *syscalls;
+} *syscall_group_desc_p;
+DEF_VEC_P(syscall_group_desc_p);
+
 /* Structure that represents syscalls information.  */
 struct syscalls_info
 {
@@ -99,6 +126,10 @@ struct syscalls_info
 
   VEC(syscall_desc_p) *syscalls;
 
+  /* The syscall groups.  */
+
+  VEC(syscall_group_desc_p) *groups;
+
   /* Variable that will hold the last known data-directory.  This is
      useful to know whether we should re-read the XML info for the
      target.  */
@@ -126,11 +157,21 @@ syscalls_info_free_syscalls_desc (struct syscall_desc *sd)
   xfree (sd->name);
 }
 
+/* Free syscall_group_desc members but not the structure itself.  */
+
+static void
+syscalls_info_free_syscall_group_desc (struct syscall_group_desc *sd)
+{
+  VEC_free (syscall_desc_p, sd->syscalls);
+  xfree (sd->name);
+}
+
 static void
 free_syscalls_info (void *arg)
 {
   struct syscalls_info *syscalls_info = (struct syscalls_info *) arg;
   struct syscall_desc *sysdesc;
+  struct syscall_group_desc *groupdesc;
   int i;
 
   xfree (syscalls_info->my_gdb_datadir);
@@ -144,6 +185,17 @@ free_syscalls_info (void *arg)
       VEC_free (syscall_desc_p, syscalls_info->syscalls);
     }
 
+  if (syscalls_info->groups != NULL)
+    {
+      for (i = 0;
+	   VEC_iterate (syscall_group_desc_p,
+			syscalls_info->groups, i, groupdesc);
+	   i++)
+	syscalls_info_free_syscall_group_desc (groupdesc);
+
+      VEC_free (syscall_group_desc_p, syscalls_info->groups);
+    }
+
   xfree (syscalls_info);
 }
 
@@ -153,16 +205,73 @@ make_cleanup_free_syscalls_info (struct syscalls_info *syscalls_info)
   return make_cleanup (free_syscalls_info, syscalls_info);
 }
 
+/* Create a new syscall group.  Return pointer to the
+   syscall_group_desc structure that represents the new group.  */
+
+static struct syscall_group_desc *
+syscall_group_create_syscall_group_desc (struct syscalls_info *syscalls_info,
+					 const char *group)
+{
+  struct syscall_group_desc *groupdesc = XCNEW (struct syscall_group_desc);
+
+  groupdesc->name = xstrdup (group);
+
+  VEC_safe_push (syscall_group_desc_p, syscalls_info->groups, groupdesc);
+
+  return groupdesc;
+}
+
+/* Add a syscall to the group.  If group doesn't exist, create it.  */
+
+static void
+syscall_group_add_syscall (struct syscalls_info *syscalls_info,
+			   struct syscall_desc *syscall,
+			   const char *group)
+{
+  struct syscall_group_desc *groupdesc = NULL;
+  int i;
+
+  /* Search for an existing group.  */
+  for (i = 0;
+       VEC_iterate (syscall_group_desc_p, syscalls_info->groups, i, groupdesc);
+       i++)
+    {
+      if (strcmp (groupdesc->name, group) == 0)
+	break;
+    }
+
+  if (groupdesc == NULL)
+    {
+      /* No group was found with this name.  We must create a new
+	 one.  */
+      groupdesc = syscall_group_create_syscall_group_desc (syscalls_info,
+							   group);
+    }
+
+  VEC_safe_push (syscall_desc_p, groupdesc->syscalls, syscall);
+}
+
 static void
 syscall_create_syscall_desc (struct syscalls_info *syscalls_info,
-                             const char *name, int number)
+			     const char *name, int number,
+			     char *groups)
 {
   struct syscall_desc *sysdesc = XCNEW (struct syscall_desc);
+  char *group;
 
   sysdesc->name = xstrdup (name);
   sysdesc->number = number;
 
   VEC_safe_push (syscall_desc_p, syscalls_info->syscalls, sysdesc);
+
+  /*  Add syscall to its groups.  */
+  if (groups != NULL)
+    {
+      for (group = strtok (groups, ",");
+	   group != NULL;
+	   group = strtok (NULL, ","))
+	syscall_group_add_syscall (syscalls_info, sysdesc, group);
+    }
 }
 
 /* Handle the start of a <syscall> element.  */
@@ -177,6 +286,7 @@ syscall_start_syscall (struct gdb_xml_parser *parser,
   /* syscall info.  */
   char *name = NULL;
   int number = 0;
+  char *groups = NULL;
 
   len = VEC_length (gdb_xml_value_s, attributes);
 
@@ -186,13 +296,15 @@ syscall_start_syscall (struct gdb_xml_parser *parser,
         name = (char *) attrs[i].value;
       else if (strcmp (attrs[i].name, "number") == 0)
         number = * (ULONGEST *) attrs[i].value;
+      else if (strcmp (attrs[i].name, "groups") == 0)
+        groups = (char *) attrs[i].value;
       else
         internal_error (__FILE__, __LINE__,
                         _("Unknown attribute name '%s'."), attrs[i].name);
     }
 
   gdb_assert (name);
-  syscall_create_syscall_desc (data->syscalls_info, name, number);
+  syscall_create_syscall_desc (data->syscalls_info, name, number, groups);
 }
 
 
@@ -200,6 +312,7 @@ syscall_start_syscall (struct gdb_xml_parser *parser,
 static const struct gdb_xml_attribute syscall_attr[] = {
   { "number", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL },
   { "name", GDB_XML_AF_NONE, NULL, NULL },
+  { "groups", GDB_XML_AF_OPTIONAL, NULL, NULL },
   { NULL, GDB_XML_AF_NONE, NULL, NULL }
 };
 
@@ -321,6 +434,34 @@ init_syscalls_info (struct gdbarch *gdbarch)
   set_gdbarch_syscalls_info (gdbarch, syscalls_info);
 }
 
+/* Search for a syscall group by its name.  Return syscall_group_desc
+   structure for the group if found or NULL otherwise.  */
+
+static struct syscall_group_desc *
+syscall_group_get_group_by_name (const struct syscalls_info *syscalls_info,
+				 const char *group)
+{
+  struct syscall_group_desc *groupdesc;
+  int i;
+
+  if (syscalls_info == NULL)
+    return NULL;
+
+  if (group == NULL)
+    return NULL;
+
+   /* Search for existing group.  */
+  for (i = 0;
+       VEC_iterate (syscall_group_desc_p, syscalls_info->groups, i, groupdesc);
+       i++)
+    {
+      if (strcmp (groupdesc->name, group) == 0)
+	return groupdesc;
+    }
+
+  return NULL;
+}
+
 static int
 xml_get_syscall_number (struct gdbarch *gdbarch,
                         const char *syscall_name)
@@ -388,6 +529,75 @@ xml_list_of_syscalls (struct gdbarch *gdbarch)
   return names;
 }
 
+/* Iterate over the syscall_group_desc element to return a list of
+   syscalls that are part of the given group, terminated by an empty
+   element.  If the syscall group doesn't exist, return NULL.  */
+
+static struct syscall *
+xml_list_syscalls_by_group (struct gdbarch *gdbarch, const char *group)
+{
+  struct syscalls_info *syscalls_info = gdbarch_syscalls_info (gdbarch);
+  struct syscall_group_desc *groupdesc;
+  struct syscall_desc *sysdesc;
+  struct syscall *syscalls = NULL;
+  int nsyscalls;
+  int i;
+
+  if (syscalls_info == NULL)
+    return NULL;
+
+  groupdesc = syscall_group_get_group_by_name (syscalls_info, group);
+  if (groupdesc == NULL)
+    return NULL;
+
+  nsyscalls = VEC_length (syscall_desc_p, groupdesc->syscalls);
+  syscalls = (struct syscall*) xmalloc ((nsyscalls + 1)
+					* sizeof (struct syscall));
+
+  for (i = 0;
+       VEC_iterate (syscall_desc_p, groupdesc->syscalls, i, sysdesc);
+       i++)
+    {
+      syscalls[i].name = sysdesc->name;
+      syscalls[i].number = sysdesc->number;
+    }
+
+  /* Add final element marker.  */
+  syscalls[i].name = NULL;
+  syscalls[i].number = 0;
+
+  return syscalls;
+}
+
+/* Return a NULL terminated list of syscall groups or an empty list, if
+   no syscall group is available.  Return NULL, if there is no syscall
+   information available.  */
+
+static const char **
+xml_list_of_groups (struct gdbarch *gdbarch)
+{
+  struct syscalls_info *syscalls_info = gdbarch_syscalls_info (gdbarch);
+  struct syscall_group_desc *groupdesc;
+  const char **names = NULL;
+  int i;
+  int ngroups;
+
+  if (syscalls_info == NULL)
+    return NULL;
+
+  ngroups = VEC_length (syscall_group_desc_p, syscalls_info->groups);
+  names = (const char**) xmalloc ((ngroups + 1) * sizeof (char *));
+
+  for (i = 0;
+       VEC_iterate (syscall_group_desc_p, syscalls_info->groups, i, groupdesc);
+       i++)
+    names[i] = groupdesc->name;
+
+  names[i] = NULL;
+
+  return names;
+}
+
 void
 set_xml_syscall_file_name (struct gdbarch *gdbarch, const char *name)
 {
@@ -422,4 +632,24 @@ get_syscall_names (struct gdbarch *gdbarch)
   return xml_list_of_syscalls (gdbarch);
 }
 
+/* See comment in xml-syscall.h.  */
+
+struct syscall *
+get_syscalls_by_group (struct gdbarch *gdbarch, const char *group)
+{
+  init_syscalls_info (gdbarch);
+
+  return xml_list_syscalls_by_group (gdbarch, group);
+}
+
+/* See comment in xml-syscall.h.  */
+
+const char **
+get_syscall_group_names (struct gdbarch *gdbarch)
+{
+  init_syscalls_info (gdbarch);
+
+  return xml_list_of_groups (gdbarch);
+}
+
 #endif /* ! HAVE_LIBEXPAT */
diff --git a/gdb/xml-syscall.h b/gdb/xml-syscall.h
index b0dd401..407613e 100644
--- a/gdb/xml-syscall.h
+++ b/gdb/xml-syscall.h
@@ -50,4 +50,20 @@ void get_syscall_by_name (struct gdbarch *gdbarch,
 
 const char **get_syscall_names (struct gdbarch *gdbarch);
 
+/* Function used to retrieve the list of syscalls of a given group in
+   the system.  Return a list of syscalls that are element of the
+   group, terminated by an empty element. The list is malloc'ed
+   and must be freed by the caller.  If group doesn't exist, return
+   NULL.  */
+
+struct syscall *get_syscalls_by_group (struct gdbarch *gdbarch,
+				       const char *group);
+
+/* Function used to retrieve the list of syscall groups in the system.
+   Return an array of strings terminated by a NULL element.  The list
+   must be freed by the caller.  Return NULL if there is no syscall
+   information available.  */
+
+const char **get_syscall_group_names (struct gdbarch *gdbarch);
+
 #endif /* XML_SYSCALL_H */
-- 
2.4.11

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v7 3/5] Add tests for catching groups of syscalls on supported architectures.
  2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
  2016-06-19 20:34 ` [PATCH v7 1/5] Implemement support for groups of syscalls in the xml-syscall interface Gabriel Krisman Bertazi
  2016-06-19 20:34 ` [PATCH v7 2/5] Add support to catch groups of syscalls Gabriel Krisman Bertazi
@ 2016-06-19 20:34 ` Gabriel Krisman Bertazi
  2016-06-19 20:35 ` [PATCH v7 5/5] Update documentation on catching a group of related syscalls Gabriel Krisman Bertazi
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-06-19 20:34 UTC (permalink / raw)
  To: gdb-patches; +Cc: palves, sergiodj, dje, Gabriel Krisman Bertazi

gdb/testsuite/

	* gdb.base/catch-syscall.exp (do_syscall_tests): Add call
	to test_catch_syscall_group.
	(test_catch_syscall_group): New.
---
 gdb/testsuite/gdb.base/catch-syscall.exp | 39 ++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gdb/testsuite/gdb.base/catch-syscall.exp b/gdb/testsuite/gdb.base/catch-syscall.exp
index 5679000..e55bd70 100644
--- a/gdb/testsuite/gdb.base/catch-syscall.exp
+++ b/gdb/testsuite/gdb.base/catch-syscall.exp
@@ -370,6 +370,42 @@ proc test_catch_syscall_fail_nodatadir {} {
     }
 }
 
+proc test_catch_syscall_group {} {
+    global decimal
+
+    set sysnum "\\\[${decimal}\\\]"
+
+    gdb_test "catch syscall g:process" \
+	"Catchpoint $decimal \\(syscalls (\'(clone|fork|execve|exit)\' $sysnum)+.*" \
+	"set catchpoint on a group of syscalls"
+
+    gdb_test "catch syscall group:process read" \
+	"Catchpoint $decimal \\(syscalls (\'(clone|fork|execve|exit)\' $sysnum)+.*read.*\\)" \
+	"set catchpoints on a group of syscalls and on a single syscall"
+
+    gdb_test "catch syscall group:" \
+	"Unknown syscall group ''\." \
+	"set catchpoints on an invalid group"
+
+    gdb_test "catch syscall g:junk" \
+	"Unknown syscall group 'junk'\." \
+	"set catchpoints on an unknown group."
+
+    gdb_test "complete catch syscall g:proc" \
+	"catch syscall g:process" \
+	"complete catch syscall group with 'g:' prefix"
+
+    gdb_test "complete catch syscall group:proc" \
+	"catch syscall group:process" \
+	"complete catch syscall group with 'group:' prefix"
+
+    gdb_test_sequence "complete catch syscall g" \
+	"complete catch syscall group suggests 'group:' prefix" {
+	    "group:descriptor" "group:file" "group:ipc" "group:memory"
+	    "group:network" "group:process" "group:signal"
+	}
+}
+
 proc do_syscall_tests {} {
     # NOTE: We don't have to point gdb at the correct data-directory.
     # For the build tree that is handled by INTERNAL_GDBFLAGS.
@@ -420,6 +456,9 @@ proc do_syscall_tests {} {
     # Testing if the 'catch syscall' command works when switching to
     # different architectures on-the-fly (PR gdb/10737).
     if [runto_main] then { test_catch_syscall_multi_arch }
+
+    # Testing the 'catch' syscall command for a group of syscalls.
+    if [runto_main] then { test_catch_syscall_group }
 }
 
 proc test_catch_syscall_without_args_noxml {} {
-- 
2.4.11

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v7 5/5] Update documentation on catching a group of related syscalls.
  2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
                   ` (2 preceding siblings ...)
  2016-06-19 20:34 ` [PATCH v7 3/5] Add tests for catching groups of syscalls on supported architectures Gabriel Krisman Bertazi
@ 2016-06-19 20:35 ` Gabriel Krisman Bertazi
  2016-06-19 20:43 ` [RESEND PATCH v7 4/5] Include group information to xml syscall files Gabriel Krisman Bertazi
  2016-06-30 16:10 ` [PATCH v7 0/5] Catch syscall group Pedro Alves
  5 siblings, 0 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-06-19 20:35 UTC (permalink / raw)
  To: gdb-patches; +Cc: palves, sergiodj, dje, Gabriel Krisman Bertazi

Eli already approved this one.

gdb/

	* break-catch-syscall.c (_initialize_breakpoint): Update catch
	syscall command documentation.
	* NEWS: Include section about catching groups of syscalls.

gdb/doc/

	* gdb.texinfo (Set Catchpoints): Add 'group' argument to catch
	syscall.
---
 gdb/NEWS                  |  5 +++++
 gdb/break-catch-syscall.c | 10 +++++-----
 gdb/doc/gdb.texinfo       | 28 +++++++++++++++++++++++++++-
 3 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/gdb/NEWS b/gdb/NEWS
index 340a751..a8d2700 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -46,6 +46,11 @@
   language.  See https://www.rust-lang.org/ for more information about
   Rust.
 
+* The "catch syscall" command catches groups of related syscalls.
+
+  The "catch syscall" command now supports catching a group of related
+  syscalls using the 'group:' or 'g:' prefix.
+
 * New commands
 
 skip -file file
diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c
index c564b8f..602aba4 100644
--- a/gdb/break-catch-syscall.c
+++ b/gdb/break-catch-syscall.c
@@ -724,11 +724,11 @@ _initialize_break_catch_syscall (void)
 					   catch_syscall_inferior_data_cleanup);
 
   add_catch_command ("syscall", _("\
-Catch system calls by their names and/or numbers.\n\
-Arguments say which system calls to catch.  If no arguments\n\
-are given, every system call will be caught.\n\
-Arguments, if given, should be one or more system call names\n\
-(if your system supports that), or system call numbers."),
+Catch system calls by their names, groups and/or numbers.\n\
+Arguments say which system calls to catch.  If no arguments are given,\n\
+every system call will be caught.  Arguments, if given, should be one\n\
+or more system call names (if your system supports that), system call\n\
+groups or system call numbers."),
 		     catch_syscall_command_1,
 		     catch_syscall_completer,
 		     CATCH_PERMANENT,
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 795a70b..7be08d2 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -4375,7 +4375,7 @@ A failed Ada assertion.
 A call to @code{exec}.
 
 @item syscall
-@itemx syscall @r{[}@var{name} @r{|} @var{number}@r{]} @dots{} 
+@itemx syscall @r{[}@var{name} @r{|} @var{number} @r{|} @r{group:}@var{groupname} @r{|} @r{g:}@var{groupname}@r{]} @dots{}
 @kindex catch syscall
 @cindex break on a system call.
 A call to or return from a system call, a.k.a.@: @dfn{syscall}.  A
@@ -4410,6 +4410,15 @@ may be useful if @value{GDBN}'s database does not have the complete
 list of syscalls on your system (e.g., because @value{GDBN} lags
 behind the OS upgrades).
 
+You may specify a group of related syscalls to be caught at once using
+the @code{group:} syntax (@code{g:} is a shorter equivalent).  For
+instance, on some platforms @value{GDBN} allows you to catch all
+network related syscalls, by passing the argument @code{group:network}
+to @code{catch syscall}.  Note that not all syscall groups are
+available in every system.  You can use the command completion
+facilities (@pxref{Completion,, command completion}) to list the
+syscall groups available on your environment.
+
 The example below illustrates how this command works if you don't provide
 arguments to it:
 
@@ -4466,6 +4475,23 @@ Program exited normally.
 (@value{GDBP})
 @end smallexample
 
+Here is an example of catching a syscall group:
+
+@smallexample
+(@value{GDBP}) catch syscall group:process
+Catchpoint 1 (syscalls 'exit' [1] 'fork' [2] 'waitpid' [7]
+'execve' [11] 'wait4' [114] 'clone' [120] 'vfork' [190]
+'exit_group' [252] 'waitid' [284] 'unshare' [310])
+(@value{GDBP}) r
+Starting program: /tmp/catch-syscall
+
+Catchpoint 1 (call to syscall fork), 0x00007ffff7df4e27 in open64 ()
+   from /lib64/ld-linux-x86-64.so.2
+
+(@value{GDBP}) c
+Continuing.
+@end smallexample
+
 However, there can be situations when there is no corresponding name
 in XML file for that syscall number.  In this case, @value{GDBN} prints
 a warning message saying that it was not able to find the syscall name,
-- 
2.4.11

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [RESEND PATCH v7 4/5] Include group information to xml syscall files.
  2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
                   ` (3 preceding siblings ...)
  2016-06-19 20:35 ` [PATCH v7 5/5] Update documentation on catching a group of related syscalls Gabriel Krisman Bertazi
@ 2016-06-19 20:43 ` Gabriel Krisman Bertazi
  2016-06-30 16:10 ` [PATCH v7 0/5] Catch syscall group Pedro Alves
  5 siblings, 0 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-06-19 20:43 UTC (permalink / raw)
  To: gdb-patches; +Cc: palves, sergiodj, dje, Gabriel Krisman Bertazi

And... I forgot to reduce the patch size again by checking renames.
Sorry, resending again, and I"ll make sure to add -M to my .gitconfig.

We maintain linux-defaults.xml.in, a template file to hold generic group
information.  It is used by the XSL script that parses the architecture
specific files to generate the final xml files, which are actually
installed and loaded by GDB.  The script is not run during the normal
build process, only when building in maintainer mode.

gdb/

	* data-directory/Makefile.in: Generate syscall xml when building
	in maintainer mode.
	* configure.ac: Include dependency for xsltproc when building
	in maintainer-mode.
	* syscalls/apply-defaults.xsl: New file.
	* syscalls/linux-defaults.xml.in: New file.
	* syscalls/aarch64-linux.xml: Rename to aarch64-linux.xml.in.
	* syscalls/amd64-linux.xml: Rename to amd64-linux.xml.in.
	* syscalls/arm-linux.xml: Rename to arm-linux.xml.in.
	* syscalls/bfin-linux.xml: Rename to bfin-linux.xml.in.
	* syscalls/i386-linux.xml: Rename to i386-linux.xml.in.
	* syscalls/mips-n32-linux.xml: Rename to mips-n32-linux.xml.in.
	* syscalls/mips-n64-linux.xml: Rename to mips-n64-linux.xml.in.
	* syscalls/mips-o32-linux.xml: Rename to mips-o32-linux.xml.in.
	* syscalls/ppc-linux.xml: Rename to ppc-linux.xml.in.
	* syscalls/ppc64-linux.xml: Rename to ppc64-linux.xml.in.
	* syscalls/s390-linux.xml: Rename to s390-linux.xml.in.
	* syscalls/s390x-linux.xml: Rename to s390x-linux.xml.in.
	* syscalls/sparc-linux.xml: Rename to sparc-linux.xml.in.
	* syscalls/sparc64-linux.xml: Rename to sparc64-linux.xml.in.
---
 gdb/configure.ac                                   |   9 +
 gdb/data-directory/Makefile.in                     |  21 +-
 .../{aarch64-linux.xml => aarch64-linux.xml.in}    |   0
 .../{amd64-linux.xml => amd64-linux.xml.in}        |   0
 gdb/syscalls/apply-defaults.xsl                    |  43 ++++
 gdb/syscalls/{arm-linux.xml => arm-linux.xml.in}   |   0
 gdb/syscalls/{bfin-linux.xml => bfin-linux.xml.in} |   0
 gdb/syscalls/{i386-linux.xml => i386-linux.xml.in} |   0
 gdb/syscalls/linux-defaults.xml.in                 | 243 +++++++++++++++++++++
 .../{mips-n32-linux.xml => mips-n32-linux.xml.in}  |   0
 .../{mips-n64-linux.xml => mips-n64-linux.xml.in}  |   0
 .../{mips-o32-linux.xml => mips-o32-linux.xml.in}  |   0
 gdb/syscalls/{ppc-linux.xml => ppc-linux.xml.in}   |   0
 .../{ppc64-linux.xml => ppc64-linux.xml.in}        |   0
 gdb/syscalls/{s390-linux.xml => s390-linux.xml.in} |   0
 .../{s390x-linux.xml => s390x-linux.xml.in}        |   0
 .../{sparc-linux.xml => sparc-linux.xml.in}        |   0
 .../{sparc64-linux.xml => sparc64-linux.xml.in}    |   0
 18 files changed, 313 insertions(+), 3 deletions(-)
 rename gdb/syscalls/{aarch64-linux.xml => aarch64-linux.xml.in} (100%)
 rename gdb/syscalls/{amd64-linux.xml => amd64-linux.xml.in} (100%)
 create mode 100644 gdb/syscalls/apply-defaults.xsl
 rename gdb/syscalls/{arm-linux.xml => arm-linux.xml.in} (100%)
 rename gdb/syscalls/{bfin-linux.xml => bfin-linux.xml.in} (100%)
 rename gdb/syscalls/{i386-linux.xml => i386-linux.xml.in} (100%)
 create mode 100644 gdb/syscalls/linux-defaults.xml.in
 rename gdb/syscalls/{mips-n32-linux.xml => mips-n32-linux.xml.in} (100%)
 rename gdb/syscalls/{mips-n64-linux.xml => mips-n64-linux.xml.in} (100%)
 rename gdb/syscalls/{mips-o32-linux.xml => mips-o32-linux.xml.in} (100%)
 rename gdb/syscalls/{ppc-linux.xml => ppc-linux.xml.in} (100%)
 rename gdb/syscalls/{ppc64-linux.xml => ppc64-linux.xml.in} (100%)
 rename gdb/syscalls/{s390-linux.xml => s390-linux.xml.in} (100%)
 rename gdb/syscalls/{s390x-linux.xml => s390x-linux.xml.in} (100%)
 rename gdb/syscalls/{sparc-linux.xml => sparc-linux.xml.in} (100%)
 rename gdb/syscalls/{sparc64-linux.xml => sparc64-linux.xml.in} (100%)

diff --git a/gdb/configure.ac b/gdb/configure.ac
index 6a72f72..9c038ff 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -2339,6 +2339,15 @@ if test "${nativefile}" != ""; then
 fi
 AC_SUBST(GDB_NM_FILE)
 
+dnl Add dependency for xsltproc if building with maintainer-mode enabled.
+AC_PATH_PROGS(XSLTPROC, xsltproc, missing)
+if test "x$USE_MAINTAINER_MODE" = xyes; then
+  if test "${XSLTPROC}" = missing; then
+    AC_ERROR(unable to find xsltproc.  maintainer-mode requires xsltproc.)
+  fi
+fi
+AC_SUBST(XSLTPROC)
+
 AC_LINK_FILES($files, $links)
 
 dnl Check for exe extension set on certain hosts (e.g. Win32)
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index c05f379..6d501bf 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -22,6 +22,7 @@ PYTHON_SRCDIR = $(srcdir)/../python/lib
 GUILE_SRCDIR = $(srcdir)/../guile/lib
 SYSTEM_GDBINIT_SRCDIR = $(srcdir)/../system-gdbinit
 VPATH = $(srcdir):$(SYSCALLS_SRCDIR):$(PYTHON_SRCDIR):$(GUILE_SRCDIR):$(SYSTEM_GDBINIT_SRCDIR)
+XSLTPROC = @XSLTPROC@
 
 top_srcdir = @top_srcdir@
 top_builddir = @top_builddir@
@@ -44,14 +45,13 @@ GDB_DATADIR = @GDB_DATADIR@
 
 SYSCALLS_DIR = syscalls
 SYSCALLS_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(SYSCALLS_DIR)
-SYSCALLS_FILES = \
-	gdb-syscalls.dtd \
-	arm-linux.xml aarch64-linux.xml \
+GEN_SYSCALLS_FILES = arm-linux.xml aarch64-linux.xml \
 	ppc-linux.xml ppc64-linux.xml \
 	i386-linux.xml amd64-linux.xml \
 	sparc-linux.xml sparc64-linux.xml \
 	mips-o32-linux.xml mips-n32-linux.xml mips-n64-linux.xml \
 	s390-linux.xml s390x-linux.xml
+SYSCALLS_FILES = gdb-syscalls.dtd $(GEN_SYSCALLS_FILES)
 
 PYTHON_DIR = python
 PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR)
@@ -162,6 +162,21 @@ FLAGS_TO_PASS = \
 .PHONY: all
 all: stamp-syscalls stamp-python stamp-guile stamp-system-gdbinit
 
+%.xml: @MAINTAINER_MODE_TRUE@ %.xml.in apply-defaults.xsl linux-defaults.xml.in
+	$(XSLTPROC) -o $(SYSCALLS_SRCDIR)/$@ $(SYSCALLS_SRCDIR)/apply-defaults.xsl\
+		$(SYSCALLS_SRCDIR)/$@.in
+
+.PHONY: syscall-xml
+syscall-xml: $(GEN_SYSCALLS_FILES)
+
+.PHONY: clean-syscall-xml
+# Only clean files generated XML files.
+clean-syscall-xml:
+	files='$(GEN_SYSCALLS_FILES)' ; \
+	for file in $$files; do \
+		rm -f "$(SYSCALLS_SRCDIR)/$$file"; \
+	done
+
 # For portability's sake, we need to handle systems that don't have
 # symbolic links.
 stamp-syscalls: Makefile $(SYSCALLS_FILES)
diff --git a/gdb/syscalls/aarch64-linux.xml b/gdb/syscalls/aarch64-linux.xml.in
similarity index 100%
rename from gdb/syscalls/aarch64-linux.xml
rename to gdb/syscalls/aarch64-linux.xml.in
diff --git a/gdb/syscalls/amd64-linux.xml b/gdb/syscalls/amd64-linux.xml.in
similarity index 100%
rename from gdb/syscalls/amd64-linux.xml
rename to gdb/syscalls/amd64-linux.xml.in
diff --git a/gdb/syscalls/apply-defaults.xsl b/gdb/syscalls/apply-defaults.xsl
new file mode 100644
index 0000000..5ab2b67
--- /dev/null
+++ b/gdb/syscalls/apply-defaults.xsl
@@ -0,0 +1,43 @@
+<!-- Generate syscall XML files based on defaults template.
+     Copyright (C) 2016 Free Software Foundation, Inc.
+
+     This file is part of GDB.
+
+     This program is free software; you can redistribute it and/or modify
+     it under the terms of the GNU General Public License as published by
+     the Free Software Foundation; either version 3 of the License, or
+     (at your option) any later version.
+
+     This program is distributed in the hope that it will be useful,
+     but WITHOUT ANY WARRANTY; without even the implied warranty of
+     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+     GNU General Public License for more details.
+
+     You should have received a copy of the GNU General Public License
+     along with this program.  If not, see <http://www.gnu.org/licenses/>. -->
+
+<xsl:stylesheet version="1.0"
+		xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output method="xml" doctype-system="gdb-syscalls.dtd"/>
+
+  <xsl:template match="node()|@*" name="identity">
+    <xsl:copy>
+      <xsl:apply-templates select="node()|@*"/>
+    </xsl:copy>
+  </xsl:template>
+
+  <xsl:template match="/syscalls_info/syscall">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|node()"/>
+      <xsl:variable name="syscall"><xsl:value-of select="@name"/></xsl:variable>
+      <xsl:variable name="tgroups"><xsl:value-of select="@groups"/></xsl:variable>
+      <xsl:for-each select="document('linux-defaults.xml.in')/syscalls_defaults/child::*[@name=$syscall]">
+	<xsl:attribute name="groups">
+	  <xsl:value-of select="@groups"/>
+	  <xsl:if test="$tgroups != '' ">,<xsl:value-of select="$tgroups"/></xsl:if>
+	</xsl:attribute>
+      </xsl:for-each>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/gdb/syscalls/arm-linux.xml b/gdb/syscalls/arm-linux.xml.in
similarity index 100%
rename from gdb/syscalls/arm-linux.xml
rename to gdb/syscalls/arm-linux.xml.in
diff --git a/gdb/syscalls/bfin-linux.xml b/gdb/syscalls/bfin-linux.xml.in
similarity index 100%
rename from gdb/syscalls/bfin-linux.xml
rename to gdb/syscalls/bfin-linux.xml.in
diff --git a/gdb/syscalls/i386-linux.xml b/gdb/syscalls/i386-linux.xml.in
similarity index 100%
rename from gdb/syscalls/i386-linux.xml
rename to gdb/syscalls/i386-linux.xml.in
diff --git a/gdb/syscalls/linux-defaults.xml.in b/gdb/syscalls/linux-defaults.xml.in
new file mode 100644
index 0000000..1c4e187
--- /dev/null
+++ b/gdb/syscalls/linux-defaults.xml.in
@@ -0,0 +1,243 @@
+<?xml version="1.0"?>
+<!-- Copyright (C) 2009-2016 Free Software Foundation, Inc.
+
+     Copying and distribution of this file, with or without modification,
+     are permitted in any medium without royalty provided the copyright
+     notice and this notice are preserved.  -->
+
+<!-- The group field information was based on strace.  -->
+
+<syscalls_defaults>
+  <syscall name="read" groups="descriptor"/>
+  <syscall name="write" groups="descriptor"/>
+  <syscall name="open" groups="descriptor,file"/>
+  <syscall name="close" groups="descriptor"/>
+  <syscall name="stat" groups="file"/>
+  <syscall name="fstat" groups="descriptor"/>
+  <syscall name="lstat" groups="file"/>
+  <syscall name="poll" groups="descriptor"/>
+  <syscall name="lseek" groups="descriptor"/>
+  <syscall name="mmap" groups="descriptor,memory"/>
+  <syscall name="mprotect" groups="memory"/>
+  <syscall name="munmap" groups="memory"/>
+  <syscall name="brk" groups="memory"/>
+  <syscall name="rt_sigaction" groups="signal"/>
+  <syscall name="rt_sigprocmask" groups="signal"/>
+  <syscall name="rt_sigreturn" groups="signal"/>
+  <syscall name="ioctl" groups="descriptor"/>
+  <syscall name="pread64" groups="descriptor"/>
+  <syscall name="pwrite64" groups="descriptor"/>
+  <syscall name="readv" groups="descriptor"/>
+  <syscall name="writev" groups="descriptor"/>
+  <syscall name="access" groups="file"/>
+  <syscall name="pipe" groups="descriptor"/>
+  <syscall name="select" groups="descriptor"/>
+  <syscall name="mremap" groups="memory"/>
+  <syscall name="msync" groups="memory"/>
+  <syscall name="mincore" groups="memory"/>
+  <syscall name="madvise" groups="memory"/>
+  <syscall name="shmget" groups="ipc"/>
+  <syscall name="shmat" groups="ipc,memory"/>
+  <syscall name="shmctl" groups="ipc"/>
+  <syscall name="dup" groups="descriptor"/>
+  <syscall name="dup2" groups="descriptor"/>
+  <syscall name="pause" groups="signal"/>
+  <syscall name="sendfile" groups="descriptor,network"/>
+  <syscall name="socket" groups="network"/>
+  <syscall name="connect" groups="network"/>
+  <syscall name="accept" groups="network"/>
+  <syscall name="sendto" groups="network"/>
+  <syscall name="recvfrom" groups="network"/>
+  <syscall name="sendmsg" groups="network"/>
+  <syscall name="recvmsg" groups="network"/>
+  <syscall name="shutdown" groups="network"/>
+  <syscall name="bind" groups="network"/>
+  <syscall name="listen" groups="network"/>
+  <syscall name="getsockname" groups="network"/>
+  <syscall name="getpeername" groups="network"/>
+  <syscall name="socketpair" groups="network"/>
+  <syscall name="setsockopt" groups="network"/>
+  <syscall name="getsockopt" groups="network"/>
+  <syscall name="clone" groups="process"/>
+  <syscall name="fork" groups="process"/>
+  <syscall name="vfork" groups="process"/>
+  <syscall name="execve" groups="file,process"/>
+  <syscall name="execv" groups="file,process"/>
+  <syscall name="exit" groups="process"/>
+  <syscall name="wait4" groups="process"/>
+  <syscall name="kill" groups="signal"/>
+  <syscall name="semget" groups="ipc"/>
+  <syscall name="semop" groups="ipc"/>
+  <syscall name="semctl" groups="ipc"/>
+  <syscall name="shmdt" groups="ipc,memory"/>
+  <syscall name="msgget" groups="ipc"/>
+  <syscall name="msgsnd" groups="ipc"/>
+  <syscall name="msgrcv" groups="ipc"/>
+  <syscall name="msgctl" groups="ipc"/>
+  <syscall name="fcntl" groups="descriptor"/>
+  <syscall name="flock" groups="descriptor"/>
+  <syscall name="fsync" groups="descriptor"/>
+  <syscall name="fdatasync" groups="descriptor"/>
+  <syscall name="truncate" groups="file"/>
+  <syscall name="ftruncate" groups="descriptor"/>
+  <syscall name="getdents" groups="descriptor"/>
+  <syscall name="getcwd" groups="file"/>
+  <syscall name="chdir" groups="file"/>
+  <syscall name="fchdir" groups="descriptor"/>
+  <syscall name="rename" groups="file"/>
+  <syscall name="mkdir" groups="file"/>
+  <syscall name="rmdir" groups="file"/>
+  <syscall name="creat" groups="descriptor,file"/>
+  <syscall name="link" groups="file"/>
+  <syscall name="unlink" groups="file"/>
+  <syscall name="symlink" groups="file"/>
+  <syscall name="readlink" groups="file"/>
+  <syscall name="chmod" groups="file"/>
+  <syscall name="fchmod" groups="descriptor"/>
+  <syscall name="chown" groups="file"/>
+  <syscall name="fchown" groups="descriptor"/>
+  <syscall name="lchown" groups="file"/>
+  <syscall name="rt_sigpending" groups="signal"/>
+  <syscall name="rt_sigtimedwait" groups="signal"/>
+  <syscall name="rt_sigqueueinfo" groups="signal"/>
+  <syscall name="rt_sigsuspend" groups="signal"/>
+  <syscall name="sigaltstack" groups="signal"/>
+  <syscall name="utime" groups="file"/>
+  <syscall name="mknod" groups="file"/>
+  <syscall name="uselib" groups="file"/>
+  <syscall name="statfs" groups="file"/>
+  <syscall name="fstatfs" groups="descriptor"/>
+  <syscall name="mlock" groups="memory"/>
+  <syscall name="munlock" groups="memory"/>
+  <syscall name="mlockall" groups="memory"/>
+  <syscall name="munlockall" groups="memory"/>
+  <syscall name="pivot_root" groups="file"/>
+  <syscall name="arch_prctl" groups="process"/>
+  <syscall name="chroot" groups="file"/>
+  <syscall name="acct" groups="file"/>
+  <syscall name="mount" groups="file"/>
+  <syscall name="umount" groups="file"/>
+  <syscall name="umount2" groups="file"/>
+  <syscall name="swapon" groups="file"/>
+  <syscall name="swapoff" groups="file"/>
+  <syscall name="quotactl" groups="file"/>
+  <syscall name="readahead" groups="descriptor"/>
+  <syscall name="setxattr" groups="file"/>
+  <syscall name="lsetxattr" groups="file"/>
+  <syscall name="fsetxattr" groups="descriptor"/>
+  <syscall name="getxattr" groups="file"/>
+  <syscall name="lgetxattr" groups="file"/>
+  <syscall name="fgetxattr" groups="descriptor"/>
+  <syscall name="listxattr" groups="file"/>
+  <syscall name="llistxattr" groups="file"/>
+  <syscall name="flistxattr" groups="descriptor"/>
+  <syscall name="removexattr" groups="file"/>
+  <syscall name="lremovexattr" groups="file"/>
+  <syscall name="fremovexattr" groups="descriptor"/>
+  <syscall name="tkill" groups="signal"/>
+  <syscall name="epoll_create" groups="descriptor"/>
+  <syscall name="remap_file_pages" groups="memory"/>
+  <syscall name="getdents64" groups="descriptor"/>
+  <syscall name="semtimedop" groups="ipc"/>
+  <syscall name="fadvise64" groups="descriptor"/>
+  <syscall name="exit_group" groups="process"/>
+  <syscall name="epoll_wait" groups="descriptor"/>
+  <syscall name="epoll_ctl" groups="descriptor"/>
+  <syscall name="tgkill" groups="signal"/>
+  <syscall name="utimes" groups="file"/>
+  <syscall name="mbind" groups="memory"/>
+  <syscall name="set_mempolicy" groups="memory"/>
+  <syscall name="get_mempolicy" groups="memory"/>
+  <syscall name="waitid" groups="process"/>
+  <syscall name="inotify_init" groups="descriptor"/>
+  <syscall name="inotify_add_watch" groups="descriptor"/>
+  <syscall name="inotify_rm_watch" groups="descriptor"/>
+  <syscall name="migrate_pages" groups="memory"/>
+  <syscall name="openat" groups="descriptor,file"/>
+  <syscall name="mkdirat" groups="descriptor,file"/>
+  <syscall name="mknodat" groups="descriptor,file"/>
+  <syscall name="fchownat" groups="descriptor,file"/>
+  <syscall name="futimesat" groups="descriptor,file"/>
+  <syscall name="newfstatat" groups="descriptor,file"/>
+  <syscall name="unlinkat" groups="descriptor,file"/>
+  <syscall name="renameat" groups="descriptor,file"/>
+  <syscall name="linkat" groups="descriptor,file"/>
+  <syscall name="symlinkat" groups="descriptor,file"/>
+  <syscall name="readlinkat" groups="descriptor,file"/>
+  <syscall name="fchmodat" groups="descriptor,file"/>
+  <syscall name="faccessat" groups="descriptor,file"/>
+  <syscall name="pselect6" groups="descriptor"/>
+  <syscall name="ppoll" groups="descriptor"/>
+  <syscall name="unshare" groups="process"/>
+  <syscall name="splice" groups="descriptor"/>
+  <syscall name="tee" groups="descriptor"/>
+  <syscall name="sync_file_range" groups="descriptor"/>
+  <syscall name="vmsplice" groups="descriptor"/>
+  <syscall name="move_pages" groups="memory"/>
+  <syscall name="utimensat" groups="descriptor,file"/>
+  <syscall name="epoll_pwait" groups="descriptor"/>
+  <syscall name="signalfd" groups="descriptor,signal"/>
+  <syscall name="timerfd_create" groups="descriptor"/>
+  <syscall name="eventfd" groups="descriptor"/>
+  <syscall name="fallocate" groups="descriptor"/>
+  <syscall name="timerfd_settime" groups="descriptor"/>
+  <syscall name="timerfd_gettime" groups="descriptor"/>
+  <syscall name="accept4" groups="network"/>
+  <syscall name="signalfd4" groups="descriptor,signal"/>
+  <syscall name="eventfd2" groups="descriptor"/>
+  <syscall name="epoll_create1" groups="descriptor"/>
+  <syscall name="dup3" groups="descriptor"/>
+  <syscall name="pipe2" groups="descriptor"/>
+  <syscall name="inotify_init1" groups="descriptor"/>
+  <syscall name="preadv" groups="descriptor"/>
+  <syscall name="pwritev" groups="descriptor"/>
+  <syscall name="send" groups="network"/>
+  <syscall name="recv" groups="network"/>
+  <syscall name="statfs64" groups="file"/>
+  <syscall name="fstatfs64" groups="descriptor"/>
+  <syscall name="sendfile64" groups="descriptor,network"/>
+  <syscall name="rt_tgsigqueueinfo" groups="process,signal"/>
+  <syscall name="perf_event_open" groups="descriptor"/>
+  <syscall name="recvmmsg" groups="network"/>
+  <syscall name="fanotify_init" groups="descriptor"/>
+  <syscall name="fanotify_mark" groups="descriptor,file"/>
+  <syscall name="fchown32" groups="descriptor"/>
+  <syscall name="chown32" groups="file"/>
+  <syscall name="fcntl64" groups="descriptor"/>
+  <syscall name="mmap2" groups="descriptor,memory"/>
+  <syscall name="truncate64" groups="file"/>
+  <syscall name="ftruncate64" groups="descriptor"/>
+  <syscall name="stat64" groups="file"/>
+  <syscall name="lstat64" groups="file"/>
+  <syscall name="fstat64" groups="descriptor"/>
+  <syscall name="lchown32" groups="file"/>
+  <syscall name="name_to_handle_at" groups="descriptor,file"/>
+  <syscall name="open_by_handle_at" groups="descriptor"/>
+  <syscall name="_llseek" groups="descriptor"/>
+  <syscall name="syncfs" groups="descriptor"/>
+  <syscall name="sendmmsg" groups="network"/>
+  <syscall name="setns" groups="descriptor"/>
+  <syscall name="finit_module" groups="descriptor"/>
+  <syscall name="oldstat" groups="file"/>
+  <syscall name="sigaction" groups="signal"/>
+  <syscall name="sigreturn" groups="signal"/>
+  <syscall name="sigsuspend" groups="signal"/>
+  <syscall name="sigpending" groups="signal"/>
+  <syscall name="sigprocmask" groups="signal"/>
+  <syscall name="ipc" groups="ipc"/>
+  <syscall name="readdir" groups="descriptor"/>
+  <syscall name="socketcall" groups="descriptor"/>
+  <syscall name="break" groups="memory"/>
+  <syscall name="oldfstat" groups="descriptor"/>
+  <syscall name="signal" groups="signal"/>
+  <syscall name="sgetmask" groups="signal"/>
+  <syscall name="ssetmask" groups="signal"/>
+  <syscall name="oldlstat" groups="file"/>
+  <syscall name="waitpid" groups="process"/>
+  <syscall name="pread" groups="descriptor"/>
+  <syscall name="pwrite" groups="descriptor"/>
+  <syscall name="fadvise64_64" groups="descriptor"/>
+  <syscall name="fstatat64" groups="descriptor,file"/>
+  <syscall name="_newselect" groups="descriptor"/>
+  <syscall name="timerfd" groups="descriptor"/>
+</syscalls_defaults>
diff --git a/gdb/syscalls/mips-n32-linux.xml b/gdb/syscalls/mips-n32-linux.xml.in
similarity index 100%
rename from gdb/syscalls/mips-n32-linux.xml
rename to gdb/syscalls/mips-n32-linux.xml.in
diff --git a/gdb/syscalls/mips-n64-linux.xml b/gdb/syscalls/mips-n64-linux.xml.in
similarity index 100%
rename from gdb/syscalls/mips-n64-linux.xml
rename to gdb/syscalls/mips-n64-linux.xml.in
diff --git a/gdb/syscalls/mips-o32-linux.xml b/gdb/syscalls/mips-o32-linux.xml.in
similarity index 100%
rename from gdb/syscalls/mips-o32-linux.xml
rename to gdb/syscalls/mips-o32-linux.xml.in
diff --git a/gdb/syscalls/ppc-linux.xml b/gdb/syscalls/ppc-linux.xml.in
similarity index 100%
rename from gdb/syscalls/ppc-linux.xml
rename to gdb/syscalls/ppc-linux.xml.in
diff --git a/gdb/syscalls/ppc64-linux.xml b/gdb/syscalls/ppc64-linux.xml.in
similarity index 100%
rename from gdb/syscalls/ppc64-linux.xml
rename to gdb/syscalls/ppc64-linux.xml.in
diff --git a/gdb/syscalls/s390-linux.xml b/gdb/syscalls/s390-linux.xml.in
similarity index 100%
rename from gdb/syscalls/s390-linux.xml
rename to gdb/syscalls/s390-linux.xml.in
diff --git a/gdb/syscalls/s390x-linux.xml b/gdb/syscalls/s390x-linux.xml.in
similarity index 100%
rename from gdb/syscalls/s390x-linux.xml
rename to gdb/syscalls/s390x-linux.xml.in
diff --git a/gdb/syscalls/sparc-linux.xml b/gdb/syscalls/sparc-linux.xml.in
similarity index 100%
rename from gdb/syscalls/sparc-linux.xml
rename to gdb/syscalls/sparc-linux.xml.in
diff --git a/gdb/syscalls/sparc64-linux.xml b/gdb/syscalls/sparc64-linux.xml.in
similarity index 100%
rename from gdb/syscalls/sparc64-linux.xml
rename to gdb/syscalls/sparc64-linux.xml.in
-- 
2.4.11

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v7 0/5] Catch syscall group
  2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
                   ` (4 preceding siblings ...)
  2016-06-19 20:43 ` [RESEND PATCH v7 4/5] Include group information to xml syscall files Gabriel Krisman Bertazi
@ 2016-06-30 16:10 ` Pedro Alves
  2016-07-13  1:45   ` Gabriel Krisman Bertazi
  5 siblings, 1 reply; 11+ messages in thread
From: Pedro Alves @ 2016-06-30 16:10 UTC (permalink / raw)
  To: Gabriel Krisman Bertazi, gdb-patches; +Cc: sergiodj, dje

On 06/19/2016 09:34 PM, Gabriel Krisman Bertazi wrote:
> Changes since v6:
> 	- Initialize variable to NULL (Sergio)
> 	- Create wrapper rules syscalls-xml and clean-syscalls-xml (Pedro)
> 	- Always check for xsltproc in configure.ac.  Only force the dependency
> 	when in maintainer mode.
> 	- Expose xml creation rule outside of maintainer mode (Pedro)
> 	- Fix up license header in apply-defaults.xsl (Pedro)

Thanks.  I'm happy with the updates.  LGTM.

-- 
Pedro Alves

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v7 0/5] Catch syscall group
  2016-06-30 16:10 ` [PATCH v7 0/5] Catch syscall group Pedro Alves
@ 2016-07-13  1:45   ` Gabriel Krisman Bertazi
  2016-07-13 17:34     ` Doug Evans
  0 siblings, 1 reply; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-07-13  1:45 UTC (permalink / raw)
  To: Pedro Alves; +Cc: Gabriel Krisman Bertazi, gdb-patches, sergiodj, dje

Pedro Alves <palves@redhat.com> writes:

> On 06/19/2016 09:34 PM, Gabriel Krisman Bertazi wrote:
>> Changes since v6:
>> 	- Initialize variable to NULL (Sergio)
>> 	- Create wrapper rules syscalls-xml and clean-syscalls-xml (Pedro)
>> 	- Always check for xsltproc in configure.ac.  Only force the dependency
>> 	when in maintainer mode.
>> 	- Expose xml creation rule outside of maintainer mode (Pedro)
>> 	- Fix up license header in apply-defaults.xsl (Pedro)
>
> Thanks.  I'm happy with the updates.  LGTM.

Thanks, Doug and Pedro.

It's been almost 2 weeks from the last review.  I'm out of office this
week, but unless anyone has other concerns, I plan to push it next week.

Does any one has other suggestions for this?

Thanks,

-- 
Gabriel Krisman Bertazi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v7 0/5] Catch syscall group
  2016-07-13  1:45   ` Gabriel Krisman Bertazi
@ 2016-07-13 17:34     ` Doug Evans
  2016-07-23 21:44       ` Gabriel Krisman Bertazi
  0 siblings, 1 reply; 11+ messages in thread
From: Doug Evans @ 2016-07-13 17:34 UTC (permalink / raw)
  To: Gabriel Krisman Bertazi; +Cc: Pedro Alves, gdb-patches, Sergio Durigan Junior

On Tue, Jul 12, 2016 at 6:44 PM, Gabriel Krisman Bertazi
<gabriel@krisman.be> wrote:
> Pedro Alves <palves@redhat.com> writes:
>
>> On 06/19/2016 09:34 PM, Gabriel Krisman Bertazi wrote:
>>> Changes since v6:
>>>      - Initialize variable to NULL (Sergio)
>>>      - Create wrapper rules syscalls-xml and clean-syscalls-xml (Pedro)
>>>      - Always check for xsltproc in configure.ac.  Only force the dependency
>>>      when in maintainer mode.
>>>      - Expose xml creation rule outside of maintainer mode (Pedro)
>>>      - Fix up license header in apply-defaults.xsl (Pedro)
>>
>> Thanks.  I'm happy with the updates.  LGTM.
>
> Thanks, Doug and Pedro.
>
> It's been almost 2 weeks from the last review.  I'm out of office this
> week, but unless anyone has other concerns, I plan to push it next week.
>
> Does any one has other suggestions for this?

None come to mind.
Go for it, and thanks!

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v7 0/5] Catch syscall group
  2016-07-13 17:34     ` Doug Evans
@ 2016-07-23 21:44       ` Gabriel Krisman Bertazi
  0 siblings, 0 replies; 11+ messages in thread
From: Gabriel Krisman Bertazi @ 2016-07-23 21:44 UTC (permalink / raw)
  To: Doug Evans
  Cc: Gabriel Krisman Bertazi, Pedro Alves, gdb-patches, Sergio Durigan Junior

Doug Evans <dje@google.com> writes:

> On Tue, Jul 12, 2016 at 6:44 PM, Gabriel Krisman Bertazi
> <gabriel@krisman.be> wrote:
>> Pedro Alves <palves@redhat.com> writes:
>>
>>> On 06/19/2016 09:34 PM, Gabriel Krisman Bertazi wrote:
>>>> Changes since v6:
>>>>      - Initialize variable to NULL (Sergio)
>>>>      - Create wrapper rules syscalls-xml and clean-syscalls-xml (Pedro)
>>>>      - Always check for xsltproc in configure.ac.  Only force the dependency
>>>>      when in maintainer mode.
>>>>      - Expose xml creation rule outside of maintainer mode (Pedro)
>>>>      - Fix up license header in apply-defaults.xsl (Pedro)
>>>
>>> Thanks.  I'm happy with the updates.  LGTM.
>>
>> Thanks, Doug and Pedro.
>>
>> It's been almost 2 weeks from the last review.  I'm out of office this
>> week, but unless anyone has other concerns, I plan to push it next week.
>>
>> Does any one has other suggestions for this?
>
> None come to mind.
> Go for it, and thanks!

Pushed: <https://sourceware.org/ml/gdb-cvs/2016-07/msg00078.html>

Thanks,

-- 
Gabriel Krisman Bertazi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v7 0/5] Catch syscall group
@ 2016-06-27 18:54 Doug Evans
  0 siblings, 0 replies; 11+ messages in thread
From: Doug Evans @ 2016-06-27 18:54 UTC (permalink / raw)
  To: Gabriel Krisman Bertazi; +Cc: gdb-patches, palves, sergiodj

Gabriel Krisman Bertazi writes:
  > Hi,
  >
  > This is yet another iteration of the catch syscall group patch set.
  > This version includes the fixes proposed by Sergio, Doug and Pedro in
  > the last iteration.  Thank you guys for the suggestions.
  >
  > Changes since v6:
  > 	- Initialize variable to NULL (Sergio)
  > 	- Create wrapper rules syscalls-xml and clean-syscalls-xml (Pedro)
  > 	- Always check for xsltproc in configure.ac.  Only force the dependency
  > 	when in maintainer mode.
  > 	- Expose xml creation rule outside of maintainer mode (Pedro)
  > 	- Fix up license header in apply-defaults.xsl (Pedro)
  >
  > Looking forward to hear from you guys.
  >
  > Gabriel Krisman Bertazi (5):
  >   Implemement support for groups of syscalls in the xml-syscall
  >     interface.
  >   Add support to catch groups of syscalls.
  >   Add tests for catching groups of syscalls on supported
  >     architectures.
  >   Include group information to xml syscall files.
  >   Update documentation on catching a group of related syscalls.

Hi.

I gave the latest series a quick read through.
LGTM.
Thanks!

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-07-23 21:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-19 20:34 [PATCH v7 0/5] Catch syscall group Gabriel Krisman Bertazi
2016-06-19 20:34 ` [PATCH v7 1/5] Implemement support for groups of syscalls in the xml-syscall interface Gabriel Krisman Bertazi
2016-06-19 20:34 ` [PATCH v7 2/5] Add support to catch groups of syscalls Gabriel Krisman Bertazi
2016-06-19 20:34 ` [PATCH v7 3/5] Add tests for catching groups of syscalls on supported architectures Gabriel Krisman Bertazi
2016-06-19 20:35 ` [PATCH v7 5/5] Update documentation on catching a group of related syscalls Gabriel Krisman Bertazi
2016-06-19 20:43 ` [RESEND PATCH v7 4/5] Include group information to xml syscall files Gabriel Krisman Bertazi
2016-06-30 16:10 ` [PATCH v7 0/5] Catch syscall group Pedro Alves
2016-07-13  1:45   ` Gabriel Krisman Bertazi
2016-07-13 17:34     ` Doug Evans
2016-07-23 21:44       ` Gabriel Krisman Bertazi
2016-06-27 18:54 Doug Evans

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).