public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
From: Giuliano Procida <gprocida@google.com>
To: libabigail@sourceware.org
Cc: dodji@seketeli.org, kernel-team@android.com, gprocida@google.com,
	 maennich@google.com
Subject: [PATCH 01/21] Move regex definitions to own files.
Date: Thu, 23 Apr 2020 16:44:21 +0100	[thread overview]
Message-ID: <20200423154441.170531-2-gprocida@google.com> (raw)
In-Reply-To: <20200423154441.170531-1-gprocida@google.com>

As a prelude to adding wrapper and helper functions for regex
functionality, it makes sense to move the existing regex code (the
shared pointer type and its specialised deleter) to their own files.

This patch does this and also moves various entities into a new
namespace, abigail::regex. It removes the file abg-sptr-utils.cc which
only contained regex things.

There are no behavioural changes.

	* include/Makefile.am: Add abg-regex.h.
	* src/Makefile.am: Remove abg-sptr-utils.h, add abg-regex.cc
	* include/abg-sptr-utils.h (regex_t_sptr): Remove this
	typedef, from namespace abigail::sptr_utils.
	(regex_t_deleter): Remove this struct, from namespace
	abigail::sptr_utils. (build_sptr): Remove these template
	specialisations, in duplicate, for regex_t_sptr.
	* include/abg-regex.h: New file, introduces namespace
	abigail::regex. (regex_t_sptr): Add this typedef, to namespace
	abigail::regex. (regex_t_deleter): Add this struct, to
	namespace abigail::regex. (build_sptr): Add these template
	specialisations for regex_t_sptr
	* src/abg-sptr-utils.cc: Remove this file.
	* src/abg-regex.cc: Add new file with contents effectively
	the same as abg-sptr-utils.cc.
	* src/abg-corpus-priv.h: Update regex_t_sptr namespace
	qualification.
	* src/abg-corpus.cc: Ditto.
	* src/abg-suppression-priv.h: Ditto.
	* src/abg-suppression.cc: Ditto.

Signed-off-by: Giuliano Procida <gprocida@google.com>
---
 include/Makefile.am                     |   3 +-
 include/abg-regex.h                     |  83 ++++++++++++++
 include/abg-sptr-utils.h                |  49 ---------
 src/Makefile.am                         |   2 +-
 src/abg-corpus-priv.h                   |   3 +-
 src/abg-corpus.cc                       |   2 +-
 src/{abg-sptr-utils.cc => abg-regex.cc} |  19 ++--
 src/abg-suppression-priv.h              | 137 ++++++++++++------------
 src/abg-suppression.cc                  |  73 ++++++-------
 9 files changed, 198 insertions(+), 173 deletions(-)
 create mode 100644 include/abg-regex.h
 rename src/{abg-sptr-utils.cc => abg-regex.cc} (84%)

diff --git a/include/Makefile.am b/include/Makefile.am
index ae97f674..b5475252 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -24,6 +24,7 @@ abg-cxx-compat.h	\
 abg-version.h		\
 abg-viz-common.h	\
 abg-viz-dot.h		\
-abg-viz-svg.h		
+abg-viz-svg.h		\
+abg-regex.h
 
 EXTRA_DIST = abg-version.h.in
diff --git a/include/abg-regex.h b/include/abg-regex.h
new file mode 100644
index 00000000..84c386a9
--- /dev/null
+++ b/include/abg-regex.h
@@ -0,0 +1,83 @@
+// -*- mode: C++ -*-
+//
+// Copyright (C) 2013-2020 Red Hat, Inc.
+//
+// This file is part of the GNU Application Binary Interface Generic
+// Analysis and Instrumentation Library (libabigail).  This library is
+// free software; you can redistribute it and/or modify it under the
+// terms of the GNU Lesser General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option) any
+// later version.
+
+// This library 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 Lesser Public License for more details.
+
+// You should have received a copy of the GNU Lesser General Public
+// License along with this program; see the file COPYING-LGPLV3.  If
+// not, see <http://www.gnu.org/licenses/>.
+
+/// @file
+///
+/// Wrappers around regex types and functions.
+
+#ifndef __ABG_REGEX_H__
+#define __ABG_REGEX_H__
+
+#include <regex.h>
+
+#include "abg-cxx-compat.h"
+#include "abg-sptr-utils.h"
+
+namespace abigail
+{
+
+/// Namespace for regex types and functions.
+namespace regex
+{
+
+/// A convenience typedef for a shared pointer of regex_t.
+typedef abg_compat::shared_ptr<regex_t> regex_t_sptr;
+
+/// A delete functor for a shared_ptr of regex_t.
+struct regex_t_deleter
+{
+  /// The operator called to de-allocate the pointer to regex_t
+  /// embedded in a shared_ptr<regex_t>
+  ///
+  /// @param r the pointer to regex_t to de-allocate.
+  void
+  operator()(::regex_t* r)
+  {
+    regfree(r);
+    delete r;
+  }
+};//end struct regex_deleter
+
+}// end namespace regex
+
+/// Specialization of sptr_utils::build_sptr for regex_t.
+///
+/// This is used to wrap a pointer to regex_t into a
+/// shared_ptr<regex_t>.
+///
+/// @param p the bare pointer to regex_t to wrap into a shared_ptr<regex_t>.
+///
+/// @return the shared_ptr<regex_t> that wraps @p p.
+template<>
+regex::regex_t_sptr
+sptr_utils::build_sptr<regex_t>(regex_t *p);
+
+/// Specialization of sptr_utils::build_sptr for regex_t.
+///
+/// This creates a pointer to regex_t and wraps it into a shared_ptr<regex_t>.
+///
+/// @return the shared_ptr<regex_t> wrapping the newly created regex_t*
+template<>
+regex::regex_t_sptr
+sptr_utils::build_sptr<regex_t>();
+
+}// end namespace abigail
+
+#endif //__ABG_REGEX_H__
diff --git a/include/abg-sptr-utils.h b/include/abg-sptr-utils.h
index 0adedbb3..9737fe5f 100644
--- a/include/abg-sptr-utils.h
+++ b/include/abg-sptr-utils.h
@@ -78,19 +78,6 @@ typedef shared_ptr<xmlChar> xml_char_sptr;
 template<>
 xml_char_sptr build_sptr<xmlChar>(xmlChar *p);
 
-/// A convenience typedef for a shared pointer of regex_t.
-typedef shared_ptr<regex_t> regex_t_sptr;
-
-/// Specialization of sptr_utils::build_sptr for regex_t.
-template<>
-regex_t_sptr
-build_sptr<regex_t>(regex_t *p);
-
-/// Specialization of sptr_utils::build_sptr for regex_t.
-template<>
-regex_t_sptr
-build_sptr<regex_t>();
-
 /// A deleter for shared pointers that ... doesn't delete the object
 /// managed by the shared pointer.
 struct noop_deleter
@@ -101,42 +88,6 @@ struct noop_deleter
   {}
 };
 
-/// A delete functor for a shared_ptr of regex_t.
-struct regex_t_deleter
-{
-  /// The operator called to de-allocate the pointer to regex_t
-  /// embedded in a shared_ptr<regex_t>
-  ///
-  /// @param r the pointer to regex_t to de-allocate.
-  void
-  operator()(::regex_t* r)
-  {
-    regfree(r);
-    delete r;
-  }
-};//end struct regex_deleter
-
-/// Specialization of sptr_utils::build_sptr for regex_t.
-///
-/// This is used to wrap a pointer to regex_t into a
-/// shared_ptr<regex_t>.
-///
-/// @param p the bare pointer to regex_t to wrap into a shared_ptr<regex_t>.
-///
-/// @return the shared_ptr<regex_t> that wraps @p p.
-template<>
-regex_t_sptr
-build_sptr<regex_t>(regex_t *p);
-
-/// Specialization of sptr_utils::build_sptr for regex_t.
-///
-/// This creates a pointer to regex_t and wraps it into a shared_ptr<regex_t>.
-///
-/// @return the shared_ptr<regex_t> wrapping the newly created regex_t*
-template<>
-regex_t_sptr
-build_sptr<regex_t>();
-
 }// end namespace sptr_utils
 }// end namespace abigail
 
diff --git a/src/Makefile.am b/src/Makefile.am
index fafab853..1153a5f8 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -13,7 +13,6 @@ endif
 
 libabigail_la_SOURCES =			\
 abg-internal.h				\
-abg-sptr-utils.cc			\
 abg-traverse.cc				\
 abg-ir-priv.h				\
 abg-ir.cc				\
@@ -41,6 +40,7 @@ abg-workers.cc				\
 abg-tools-utils.cc			\
 abg-elf-helpers.h			\
 abg-elf-helpers.cc			\
+abg-regex.cc				\
 $(CXX11_SOURCES)
 
 libabigail_la_LIBADD = $(DEPS_LIBS)
diff --git a/src/abg-corpus-priv.h b/src/abg-corpus-priv.h
index 4cb2e43c..e65f7c8f 100644
--- a/src/abg-corpus-priv.h
+++ b/src/abg-corpus-priv.h
@@ -30,6 +30,7 @@
 #define __ABG_CORPUS_PRIV_H__
 
 #include "abg-sptr-utils.h"
+#include "abg-regex.h"
 #include "abg-internal.h"
 
 namespace abigail
@@ -42,7 +43,7 @@ namespace sptr_utils
 namespace ir
 {
 
-using sptr_utils::regex_t_sptr;
+using regex::regex_t_sptr;
 
 /// A convenience typedef for std::vector<regex_t_sptr>.
 typedef vector<regex_t_sptr> regex_t_sptrs_type;
diff --git a/src/abg-corpus.cc b/src/abg-corpus.cc
index 12f44fd1..2e9f304d 100644
--- a/src/abg-corpus.cc
+++ b/src/abg-corpus.cc
@@ -67,7 +67,7 @@ using zip_utils::open_archive;
 using zip_utils::open_file_in_archive;
 #endif // WITH_ZIP_ARCHIVE
 
-using sptr_utils::regex_t_sptr;
+using regex::regex_t_sptr;
 
 /// Constructor of @ref corpus::exported_decls_builder.
 ///
diff --git a/src/abg-sptr-utils.cc b/src/abg-regex.cc
similarity index 84%
rename from src/abg-sptr-utils.cc
rename to src/abg-regex.cc
index 2a6739a8..13f5841d 100644
--- a/src/abg-sptr-utils.cc
+++ b/src/abg-regex.cc
@@ -24,13 +24,11 @@
 ///
 
 #include "abg-sptr-utils.h"
+#include "abg-regex.h"
 
 namespace abigail
 {
 
-namespace sptr_utils
-{
-
 /// Specialization of sptr_utils::build_sptr for regex_t.
 ///
 /// This is used to wrap a pointer to regex_t into a
@@ -40,9 +38,9 @@ namespace sptr_utils
 ///
 /// @return the shared_ptr<regex_t> that wraps @p p.
 template<>
-regex_t_sptr
-build_sptr<regex_t>(regex_t *p)
-{return regex_t_sptr(p, regex_t_deleter());}
+regex::regex_t_sptr
+sptr_utils::build_sptr<regex_t>(regex_t *p)
+{return regex::regex_t_sptr(p, regex::regex_t_deleter());}
 
 /// Specialization of sptr_utils::build_sptr for regex_t.
 ///
@@ -50,9 +48,8 @@ build_sptr<regex_t>(regex_t *p)
 ///
 /// @return the shared_ptr<regex_t> wrapping the newly created regex_t*
 template<>
-regex_t_sptr
-build_sptr<regex_t>()
-{return build_sptr(new regex_t);}
+regex::regex_t_sptr
+sptr_utils::build_sptr<regex_t>()
+{return sptr_utils::build_sptr(new regex_t);}
 
-}
-}
+}//end namespace abigail
diff --git a/src/abg-suppression-priv.h b/src/abg-suppression-priv.h
index 1a9a7207..c37ceff6 100644
--- a/src/abg-suppression-priv.h
+++ b/src/abg-suppression-priv.h
@@ -31,6 +31,7 @@
 #include "abg-fwd.h"
 #include "abg-suppression.h"
 #include "abg-sptr-utils.h"
+#include "abg-regex.h"
 
 namespace abigail
 {
@@ -47,13 +48,13 @@ class suppression_base::priv
   bool					drops_artifact_;
   string				label_;
   string				file_name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	file_name_regex_;
+  mutable regex::regex_t_sptr		file_name_regex_;
   string				file_name_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	file_name_not_regex_;
+  mutable regex::regex_t_sptr		file_name_not_regex_;
   string				soname_regex_str_;
-  mutable sptr_utils::regex_t_sptr	soname_regex_;
+  mutable regex::regex_t_sptr		soname_regex_;
   string				soname_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	soname_not_regex_;
+  mutable regex::regex_t_sptr		soname_not_regex_;
 
 public:
   priv()
@@ -87,14 +88,14 @@ public:
   ///
   /// If the 'file_name_regex' property of @ref suppression_base is
   /// empty then this method returns nil.
-  const sptr_utils::regex_t_sptr&
+  const regex::regex_t_sptr&
   get_file_name_regex() const
   {
     if (!file_name_regex_)
       {
 	if (!file_name_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			file_name_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -112,14 +113,14 @@ public:
   ///
   /// If the 'file_name_not_regex' property of @ref suppression_base
   /// is empty then this method returns nil.
-  const sptr_utils::regex_t_sptr&
+  const regex::regex_t_sptr&
   get_file_name_not_regex() const
   {
     if (!file_name_not_regex_)
       {
 	if (!file_name_not_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			file_name_not_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -137,14 +138,14 @@ public:
   ///
   /// If the 'soname_regex' property of @ref suppression_base is empty
   /// then this method returns nil.
-  const sptr_utils::regex_t_sptr&
+  const regex::regex_t_sptr&
   get_soname_regex() const
   {
     if (!soname_regex_)
       {
 	if (!soname_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			soname_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -162,14 +163,14 @@ public:
   ///
   /// If the 'soname_not_regex' property of @ref suppression_base is
   /// empty then this method returns nil.
-  const sptr_utils::regex_t_sptr&
+  const regex::regex_t_sptr&
   get_soname_not_regex() const
   {
     if (!soname_not_regex_)
       {
 	if (!soname_not_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			soname_not_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -192,14 +193,14 @@ public:
   matches_soname(const string& soname) const
   {
     bool has_regexp = false;
-    if (sptr_utils::regex_t_sptr regexp = get_soname_regex())
+    if (regex::regex_t_sptr regexp = get_soname_regex())
       {
 	has_regexp = true;
 	if (regexec(regexp.get(), soname.c_str(), 0, NULL, 0) != 0)
 	  return false;
       }
 
-    if (sptr_utils::regex_t_sptr regexp = get_soname_not_regex())
+    if (regex::regex_t_sptr regexp = get_soname_not_regex())
       {
 	has_regexp = true;
 	if (regexec(regexp.get(), soname.c_str(), 0, NULL, 0) == 0)
@@ -227,7 +228,7 @@ public:
   {
     bool has_regexp = false;
 
-    if (sptr_utils::regex_t_sptr regexp = get_file_name_regex())
+    if (regex::regex_t_sptr regexp = get_file_name_regex())
       {
 	has_regexp = true;
 	if (regexec(regexp.get(), binary_name.c_str(),
@@ -235,7 +236,7 @@ public:
 	  return false;
       }
 
-    if (sptr_utils::regex_t_sptr regexp = get_file_name_not_regex())
+    if (regex::regex_t_sptr regexp = get_file_name_not_regex())
       {
 	has_regexp = true;
 	if (regexec(regexp.get(), binary_name.c_str(),
@@ -263,7 +264,7 @@ class function_suppression::parameter_spec::priv
   size_t				index_;
   string				type_name_;
   string				type_name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	type_name_regex_;
+  mutable regex::regex_t_sptr		type_name_regex_;
 
   priv()
     : index_()
@@ -277,12 +278,12 @@ class function_suppression::parameter_spec::priv
     : index_(i), type_name_(tn), type_name_regex_str_(tn_regex)
   {}
 
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_type_name_regex() const
   {
     if (!type_name_regex_ && !type_name_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    type_name_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -302,21 +303,21 @@ struct function_suppression::priv
   change_kind				change_kind_;
   string				name_;
   string				name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	name_regex_;
+  mutable regex::regex_t_sptr		name_regex_;
   string				name_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	name_not_regex_;
+  mutable regex::regex_t_sptr		name_not_regex_;
   string				return_type_name_;
   string				return_type_regex_str_;
-  mutable sptr_utils::regex_t_sptr	return_type_regex_;
+  mutable regex::regex_t_sptr		return_type_regex_;
   parameter_specs_type			parm_specs_;
   string				symbol_name_;
   string				symbol_name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	symbol_name_regex_;
+  mutable regex::regex_t_sptr		symbol_name_regex_;
   string				symbol_name_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	symbol_name_not_regex_;
+  mutable regex::regex_t_sptr		symbol_name_not_regex_;
   string				symbol_version_;
   string				symbol_version_regex_str_;
-  mutable sptr_utils::regex_t_sptr	symbol_version_regex_;
+  mutable regex::regex_t_sptr		symbol_version_regex_;
   bool					allow_other_aliases_;
 
   priv():
@@ -356,12 +357,12 @@ struct function_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// function_suppression::priv::name_regex_str_..
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_name_regex() const
   {
     if (!name_regex_ && !name_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    name_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -379,12 +380,12 @@ struct function_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// function_suppression::priv::name_not_regex_str_..
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_name_not_regex() const
   {
     if (!name_not_regex_ && !name_not_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    name_not_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -402,12 +403,12 @@ struct function_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// function_suppression::priv::return_type_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_return_type_regex() const
   {
     if (!return_type_regex_ && !return_type_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    return_type_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -425,12 +426,12 @@ struct function_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// function_suppression::priv::symbol_name_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_symbol_name_regex() const
   {
     if (!symbol_name_regex_ && !symbol_name_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    symbol_name_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -448,12 +449,12 @@ struct function_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// function_suppression::priv::symbol_name_not_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_symbol_name_not_regex() const
   {
     if (!symbol_name_not_regex_ && !symbol_name_not_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    symbol_name_not_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -471,12 +472,12 @@ struct function_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// function_suppression::priv::symbol_version_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_symbol_version_regex() const
   {
     if (!symbol_version_regex_ && ! symbol_version_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    symbol_version_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -561,20 +562,20 @@ struct variable_suppression::priv
   change_kind				change_kind_;
   string				name_;
   string				name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	name_regex_;
+  mutable regex::regex_t_sptr		name_regex_;
   string				name_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	name_not_regex_;
+  mutable regex::regex_t_sptr		name_not_regex_;
   string				symbol_name_;
   string				symbol_name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	symbol_name_regex_;
+  mutable regex::regex_t_sptr		symbol_name_regex_;
   string				symbol_name_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	symbol_name_not_regex_;
+  mutable regex::regex_t_sptr		symbol_name_not_regex_;
   string				symbol_version_;
   string				symbol_version_regex_str_;
-  mutable sptr_utils::regex_t_sptr	symbol_version_regex_;
+  mutable regex::regex_t_sptr		symbol_version_regex_;
   string				type_name_;
   string				type_name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	type_name_regex_;
+  mutable regex::regex_t_sptr		type_name_regex_;
 
   priv(const string& name,
        const string& name_regex_str,
@@ -604,12 +605,12 @@ struct variable_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// variable_suppression::priv::name_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_name_regex() const
   {
     if (!name_regex_ && !name_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    name_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -627,12 +628,12 @@ struct variable_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// variable_suppression::priv::name_not_regex_str_..
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_name_not_regex() const
   {
     if (!name_not_regex_ && !name_not_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    name_not_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -650,12 +651,12 @@ struct variable_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// variable_suppression::priv::symbol_name_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_symbol_name_regex() const
   {
     if (!symbol_name_regex_ && !symbol_name_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    symbol_name_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -673,12 +674,12 @@ struct variable_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// variable_suppression::priv::symbol_name_not_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_symbol_name_not_regex() const
   {
     if (!symbol_name_not_regex_ && !symbol_name_not_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(), symbol_name_not_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
 	  symbol_name_not_regex_ = r;
@@ -695,12 +696,12 @@ struct variable_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// variable_suppression::priv::symbol_version_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_symbol_version_regex()  const
   {
     if (!symbol_version_regex_ && !symbol_version_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    symbol_version_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -718,12 +719,12 @@ struct variable_suppression::priv
   ///
   /// @return a pointer to the regular expression object of
   /// variable_suppression::priv::type_name_regex_str_.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_type_name_regex() const
   {
     if (!type_name_regex_ && !type_name_regex_str_.empty())
       {
-	sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	if (regcomp(r.get(),
 		    type_name_regex_str_.c_str(),
 		    REG_EXTENDED) == 0)
@@ -766,18 +767,18 @@ variable_is_suppressed(const ReadContextType&	ctxt,
 class type_suppression::priv
 {
   string				type_name_regex_str_;
-  mutable sptr_utils::regex_t_sptr	type_name_regex_;
+  mutable regex::regex_t_sptr		type_name_regex_;
   string				type_name_;
   string				type_name_not_regex_str_;
-  mutable sptr_utils::regex_t_sptr	type_name_not_regex_;
+  mutable regex::regex_t_sptr		type_name_not_regex_;
   bool					consider_type_kind_;
   type_suppression::type_kind		type_kind_;
   bool					consider_reach_kind_;
   type_suppression::reach_kind		reach_kind_;
   type_suppression::insertion_ranges	insertion_ranges_;
-  unordered_set<string>		source_locations_to_keep_;
+  unordered_set<string>			source_locations_to_keep_;
   string				source_location_to_keep_regex_str_;
-  mutable sptr_utils::regex_t_sptr	source_location_to_keep_regex_;
+  mutable regex::regex_t_sptr		source_location_to_keep_regex_;
   mutable vector<string>		changed_enumerator_names_;
 
   priv();
@@ -805,14 +806,14 @@ public:
   ///
   /// If the 'type_name_regex' property of @ref type_suppression is
   /// empty then this method returns nil.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_type_name_regex() const
   {
     if (!type_name_regex_)
       {
 	if (!type_name_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			type_name_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -826,7 +827,7 @@ public:
   ///
   /// @param r the new type_name_regex object.
   void
-  set_type_name_regex(sptr_utils::regex_t_sptr r)
+  set_type_name_regex(regex::regex_t_sptr r)
   {type_name_regex_ = r;}
 
   /// Get the regular expression object associated to the
@@ -837,14 +838,14 @@ public:
   ///
   /// If the 'type_name_not_regex' property of @ref type_suppression is
   /// empty then this method returns nil.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_type_name_not_regex() const
   {
     if (!type_name_not_regex_)
       {
 	if (!type_name_not_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			type_name_not_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -858,7 +859,7 @@ public:
   ///
   /// @param r the new type_name_not_regex object.
   void
-  set_type_name_not_regex(sptr_utils::regex_t_sptr r)
+  set_type_name_not_regex(regex::regex_t_sptr r)
   {type_name_not_regex_ = r;}
 
   /// Getter for the string that denotes the 'type_name_not_regex'
@@ -882,14 +883,14 @@ public:
   /// Getter for the source_location_to_keep_regex object.
   ///
   /// This function builds the regex if it's not yet built.
-  const sptr_utils::regex_t_sptr
+  const regex::regex_t_sptr
   get_source_location_to_keep_regex() const
   {
     if (!source_location_to_keep_regex_)
       {
 	if (!source_location_to_keep_regex_str_.empty())
 	  {
-	    sptr_utils::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
+	    regex::regex_t_sptr r = sptr_utils::build_sptr<regex_t>();
 	    if (regcomp(r.get(),
 			source_location_to_keep_regex_str_.c_str(),
 			REG_EXTENDED) == 0)
@@ -903,7 +904,7 @@ public:
   ///
   /// @param r the new regex object.
   void
-  set_source_location_to_keep_regex(sptr_utils::regex_t_sptr r)
+  set_source_location_to_keep_regex(regex::regex_t_sptr r)
   {source_location_to_keep_regex_ = r;}
 
   friend class type_suppression;
diff --git a/src/abg-suppression.cc b/src/abg-suppression.cc
index d3ccb63c..f26c9208 100644
--- a/src/abg-suppression.cc
+++ b/src/abg-suppression.cc
@@ -49,6 +49,7 @@ namespace suppr
 {
 
 using abg_compat::dynamic_pointer_cast;
+using regex::regex_t_sptr;
 
 // <suppression_base stuff>
 
@@ -990,7 +991,7 @@ suppression_matches_type_name(const type_suppression&	s,
 	  // If the qualified name of the considered type doesn't match
 	  // the regular expression of the type name, then this
 	  // suppression doesn't apply.
-	  if (const sptr_utils::regex_t_sptr& type_name_regex =
+	  if (const regex_t_sptr& type_name_regex =
 	      s.priv_->get_type_name_regex())
 	    {
 	      if (regexec(type_name_regex.get(),
@@ -999,7 +1000,7 @@ suppression_matches_type_name(const type_suppression&	s,
 		return false;
 	    }
 
-	  if (const sptr_utils::regex_t_sptr type_name_not_regex =
+	  if (const regex_t_sptr type_name_not_regex =
 	      s.priv_->get_type_name_not_regex())
 	    {
 	      if (regexec(type_name_not_regex.get(),
@@ -1050,8 +1051,7 @@ suppression_matches_type_location(const type_suppression&	s,
       unsigned loc_line = 0, loc_column = 0;
       loc.expand(loc_path, loc_line, loc_column);
 
-      if (sptr_utils::regex_t_sptr regexp =
-	  s.priv_->get_source_location_to_keep_regex())
+      if (regex_t_sptr regexp = s.priv_->get_source_location_to_keep_regex())
 	if (regexec(regexp.get(), loc_path.c_str(), 0, NULL, 0) == 0)
 	  return false;
 
@@ -2500,7 +2500,7 @@ function_suppression::suppresses_function(const function_decl* fn,
     }
 
   // check if the "name_regexp" property matches.
-  const sptr_utils::regex_t_sptr name_regex = priv_->get_name_regex();
+  const regex_t_sptr name_regex = priv_->get_name_regex();
   if (name_regex)
     {
       if (regexec(name_regex.get(),
@@ -2535,7 +2535,7 @@ function_suppression::suppresses_function(const function_decl* fn,
     }
 
   // check if the "name_not_regexp" property matches.
-  const sptr_utils::regex_t_sptr name_not_regex = priv_->get_name_not_regex();
+  const regex_t_sptr name_not_regex = priv_->get_name_not_regex();
   if (name_not_regex)
     {
       if (regexec(name_not_regex.get(),
@@ -2585,8 +2585,7 @@ function_suppression::suppresses_function(const function_decl* fn,
     }
   else
     {
-      const sptr_utils::regex_t_sptr return_type_regex =
-	priv_->get_return_type_regex();
+      const regex_t_sptr return_type_regex = priv_->get_return_type_regex();
       if (return_type_regex
 	  && (regexec(return_type_regex.get(),
 		      fn_return_type_name.c_str(),
@@ -2626,15 +2625,14 @@ function_suppression::suppresses_function(const function_decl* fn,
     }
   else if (sym)
     {
-      const sptr_utils::regex_t_sptr symbol_name_regex =
-	priv_->get_symbol_name_regex();
+      const regex_t_sptr symbol_name_regex = priv_->get_symbol_name_regex();
       if (symbol_name_regex
 	  && (regexec(symbol_name_regex.get(),
 		      fn_sym_name.c_str(),
 		      0, NULL, 0) != 0))
 	return false;
 
-      const sptr_utils::regex_t_sptr symbol_name_not_regex =
+      const regex_t_sptr symbol_name_not_regex =
 	priv_->get_symbol_name_not_regex();
       if (symbol_name_not_regex
 	  && (regexec(symbol_name_not_regex.get(),
@@ -2678,7 +2676,7 @@ function_suppression::suppresses_function(const function_decl* fn,
     }
   else if (sym)
     {
-      const sptr_utils::regex_t_sptr symbol_version_regex =
+      const regex_t_sptr symbol_version_regex =
 	priv_->get_symbol_version_regex();
       if (symbol_version_regex
 	  && (regexec(symbol_version_regex.get(),
@@ -2720,7 +2718,7 @@ function_suppression::suppresses_function(const function_decl* fn,
 	    }
 	  else
 	    {
-	      const sptr_utils::regex_t_sptr parm_type_name_regex =
+	      const regex_t_sptr parm_type_name_regex =
 		(*p)->priv_->get_type_name_regex();
 	      if (parm_type_name_regex)
 		{
@@ -2813,8 +2811,7 @@ function_suppression::suppresses_function_symbol(const elf_symbol* sym,
     }
   else if (!get_symbol_name_regex_str().empty())
     {
-      const sptr_utils::regex_t_sptr symbol_name_regex =
-	priv_->get_symbol_name_regex();
+      const regex_t_sptr symbol_name_regex = priv_->get_symbol_name_regex();
       if (symbol_name_regex
 	  && (regexec(symbol_name_regex.get(),
 		      sym_name.c_str(),
@@ -2832,7 +2829,7 @@ function_suppression::suppresses_function_symbol(const elf_symbol* sym,
     }
   else if (!get_symbol_version_regex_str().empty())
     {
-      const sptr_utils::regex_t_sptr symbol_version_regex =
+      const regex_t_sptr symbol_version_regex =
 	priv_->get_symbol_version_regex();
       if (symbol_version_regex
 	  && (regexec(symbol_version_regex.get(),
@@ -2927,12 +2924,12 @@ bool
 suppression_matches_function_name(const suppr::function_suppression& s,
 				  const string& fn_name)
 {
-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_regex())
+  if (regex_t_sptr regexp = s.priv_->get_name_regex())
     {
       if (regexec(regexp.get(), fn_name.c_str(), 0, NULL, 0) != 0)
 	return false;
     }
-  else if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_not_regex())
+  else if (regex_t_sptr regexp = s.priv_->get_name_not_regex())
     {
       if (regexec(regexp.get(), fn_name.c_str(), 0, NULL, 0) == 0)
 	return false;
@@ -2963,12 +2960,12 @@ bool
 suppression_matches_function_sym_name(const suppr::function_suppression& s,
 				      const string& fn_linkage_name)
 {
-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
+  if (regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
     {
       if (regexec(regexp.get(), fn_linkage_name.c_str(), 0, NULL, 0) != 0)
 	return false;
     }
-  else if (sptr_utils::regex_t_sptr regexp = s.priv_->get_symbol_name_not_regex())
+  else if (regex_t_sptr regexp = s.priv_->get_symbol_name_not_regex())
     {
       if (regexec(regexp.get(), fn_linkage_name.c_str(), 0, NULL, 0) == 0)
 	return false;
@@ -2996,12 +2993,12 @@ bool
 suppression_matches_variable_name(const suppr::variable_suppression& s,
 				  const string& var_name)
 {
-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_regex())
+  if (regex_t_sptr regexp = s.priv_->get_name_regex())
     {
       if (regexec(regexp.get(), var_name.c_str(), 0, NULL, 0) != 0)
 	return false;
     }
-  else if (sptr_utils::regex_t_sptr regexp = s.priv_->get_name_not_regex())
+  else if (regex_t_sptr regexp = s.priv_->get_name_not_regex())
     {
       if (regexec(regexp.get(), var_name.c_str(), 0, NULL, 0) == 0)
 	return false;
@@ -3030,12 +3027,12 @@ bool
 suppression_matches_variable_sym_name(const suppr::variable_suppression& s,
 				      const string& var_linkage_name)
 {
-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
+  if (regex_t_sptr regexp = s.priv_->get_symbol_name_regex())
     {
       if (regexec(regexp.get(), var_linkage_name.c_str(), 0, NULL, 0) != 0)
 	return false;
     }
-  else if (sptr_utils::regex_t_sptr regexp =
+  else if (regex_t_sptr regexp =
 	   s.priv_->get_symbol_name_not_regex())
     {
       if (regexec(regexp.get(), var_linkage_name.c_str(), 0, NULL, 0) == 0)
@@ -3065,7 +3062,7 @@ bool
 suppression_matches_type(const suppr::type_suppression& s,
 			 const string& type_name)
 {
-  if (sptr_utils::regex_t_sptr regexp = s.priv_->get_type_name_regex())
+  if (regex_t_sptr regexp = s.priv_->get_type_name_regex())
     {
       if (regexec(regexp.get(), type_name.c_str(), 0, NULL, 0) != 0)
 	return false;
@@ -3780,14 +3777,13 @@ variable_suppression::suppresses_variable(const var_decl* var,
       // "name_regex" and "name_not_regex" properties match
       if (get_name().empty())
 	{
-	  const sptr_utils::regex_t_sptr name_regex = priv_->get_name_regex();
+	  const regex_t_sptr name_regex = priv_->get_name_regex();
 	  if (name_regex
 	      && (regexec(name_regex.get(), var_name.c_str(),
 			  0, NULL, 0) != 0))
 	    return false;
 
-	  const sptr_utils::regex_t_sptr name_not_regex =
-	    priv_->get_name_not_regex();
+	  const regex_t_sptr name_not_regex = priv_->get_name_not_regex();
 	  if (name_not_regex
 	      && (regexec(name_not_regex.get(), var_name.c_str(),
 			  0, NULL, 0) == 0))
@@ -3805,14 +3801,13 @@ variable_suppression::suppresses_variable(const var_decl* var,
     }
   else
     {
-      const sptr_utils::regex_t_sptr sym_name_regex =
-	priv_->get_symbol_name_regex();
+      const regex_t_sptr sym_name_regex = priv_->get_symbol_name_regex();
       if (sym_name_regex
 	  && (regexec(sym_name_regex.get(), var_sym_name.c_str(),
 		      0, NULL, 0) != 0))
 	return false;
 
-      const sptr_utils::regex_t_sptr sym_name_not_regex =
+      const regex_t_sptr sym_name_not_regex =
 	priv_->get_symbol_name_not_regex();
       if (sym_name_not_regex
 	  && (regexec(sym_name_not_regex.get(), var_sym_name.c_str(),
@@ -3830,7 +3825,7 @@ variable_suppression::suppresses_variable(const var_decl* var,
     }
   else
     {
-      const sptr_utils::regex_t_sptr symbol_version_regex =
+      const regex_t_sptr symbol_version_regex =
 	priv_->get_symbol_version_regex();
       if (symbol_version_regex
 	  && (regexec(symbol_version_regex.get(),
@@ -3852,8 +3847,7 @@ variable_suppression::suppresses_variable(const var_decl* var,
     {
       if (get_type_name().empty())
 	{
-	  const sptr_utils::regex_t_sptr type_name_regex =
-	    priv_->get_type_name_regex();
+	  const regex_t_sptr type_name_regex = priv_->get_type_name_regex();
 	  if (type_name_regex
 	      && (regexec(type_name_regex.get(), var_type_name.c_str(),
 			  0, NULL, 0) != 0))
@@ -3946,8 +3940,7 @@ variable_suppression::suppresses_variable_symbol(const elf_symbol* sym,
     }
   else if (!get_symbol_name_regex_str().empty())
     {
-      const sptr_utils::regex_t_sptr sym_name_regex =
-	priv_->get_symbol_name_regex();
+      const regex_t_sptr sym_name_regex = priv_->get_symbol_name_regex();
       if (sym_name_regex
 	  && (regexec(sym_name_regex.get(), sym_name.c_str(),
 		      0, NULL, 0) != 0))
@@ -3965,7 +3958,7 @@ variable_suppression::suppresses_variable_symbol(const elf_symbol* sym,
     }
   else if (!get_symbol_version_regex_str().empty())
     {
-      const sptr_utils::regex_t_sptr symbol_version_regex =
+      const regex_t_sptr symbol_version_regex =
 	priv_->get_symbol_version_regex();
       if (symbol_version_regex
 	  && (regexec(symbol_version_regex.get(),
@@ -4275,16 +4268,14 @@ file_suppression::suppresses_file(const string& file_path)
 
   bool has_regexp = false;
 
-  if (sptr_utils::regex_t_sptr regexp =
-      suppression_base::priv_->get_file_name_regex())
+  if (regex_t_sptr regexp = suppression_base::priv_->get_file_name_regex())
     {
       has_regexp = true;
       if (regexec(regexp.get(), fname.c_str(), 0, NULL, 0) != 0)
 	return false;
     }
 
-  if (sptr_utils::regex_t_sptr regexp =
-      suppression_base::priv_->get_file_name_not_regex())
+  if (regex_t_sptr regexp = suppression_base::priv_->get_file_name_not_regex())
     {
       has_regexp = true;
       if (regexec(regexp.get(), fname.c_str(), 0, NULL, 0) == 0)
-- 
2.26.1.301.g55bc3eb7cb9-goog


  reply	other threads:[~2020-04-23 15:45 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-23 15:44 [PATCH 00/21] Simplify regex and suppression parsing Giuliano Procida
2020-04-23 15:44 ` Giuliano Procida [this message]
2020-04-23 15:44 ` [PATCH 02/21] Move libxml bits out of abg-sptr-utils.h Giuliano Procida
2020-04-23 15:44 ` [PATCH 03/21] Simplify generation of symbol whitelist regex Giuliano Procida
2020-04-23 15:44 ` [PATCH 04/21] Escape names used in symbol whitelisting regex Giuliano Procida
2020-04-23 15:44 ` [PATCH 05/21] abg-suppression.cc: More uniform variable naming Giuliano Procida
2020-04-23 15:44 ` [PATCH 06/21] diff suppression: Fix handling of change kinds Giuliano Procida
2020-04-23 15:44 ` [PATCH 07/21] Add POSIX regex wrapper functions Giuliano Procida
2020-04-23 18:07   ` [PATCH v2 " Giuliano Procida
2020-04-23 15:44 ` [PATCH 08/21] Use regex::compile wrapper instead of regcomp Giuliano Procida
2020-04-23 15:44 ` [PATCH 09/21] Use regex::match wrapper instead of regexec Giuliano Procida
2020-04-23 18:02   ` [PATCH v2 " Giuliano Procida
2020-04-23 15:44 ` [PATCH 10/21] Refactor read_parameter_spec_from_string logic Giuliano Procida
2020-04-23 15:44 ` [PATCH 11/21] Compile suppression regexes earlier Giuliano Procida
2020-04-23 15:44 ` [PATCH 12/21] Reduce direct access to suppression priv_ members Giuliano Procida
2020-04-23 15:44 ` [PATCH 13/21] Move match methods from priv to suppression_base Giuliano Procida
2020-04-23 15:44 ` [PATCH 14/21] Remove suppression types' priv class methods Giuliano Procida
2020-04-23 15:44 ` [PATCH 15/21] abg-suppression.cc: More consistent regex matching Giuliano Procida
2020-04-23 15:44 ` [PATCH 16/21] abg-tools-utils.cc: Assert generated regexes OK Giuliano Procida
2020-04-23 15:44 ` [PATCH 17/21] Refactor suppression property string parsing Giuliano Procida
2020-04-23 15:44 ` [PATCH 18/21] Refactor suppression property regex parsing Giuliano Procida
2020-04-23 15:44 ` [PATCH 19/21] Warn if user-supplied regexes fail to compile Giuliano Procida
2020-04-23 18:04   ` [PATCH v2 " Giuliano Procida
2020-04-23 15:44 ` [PATCH 20/21] Default construct suppression types Giuliano Procida
2020-04-23 15:44 ` [PATCH 21/21] Remove unused suppression type priv constructors Giuliano Procida
2020-04-23 18:11 ` [PATCH 00/21] Simplify regex and suppression parsing Giuliano Procida
2020-04-24  8:54   ` Giuliano Procida
2020-04-24  9:21 ` [PATCH v3 00/21]Simplify " Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 01/21] Move regex definitions to own files Giuliano Procida
2020-04-27 10:52     ` Matthias Maennich
2020-04-29 14:19       ` Dodji Seketeli
2020-04-29 14:35         ` Giuliano Procida
2020-05-04  9:19     ` Dodji Seketeli
2020-04-24  9:21   ` [PATCH v3 02/21] Move libxml bits out of abg-sptr-utils.h Giuliano Procida
2020-04-27 10:53     ` Matthias Maennich
2020-04-29 14:30     ` Dodji Seketeli
2020-05-04  9:20     ` Dodji Seketeli
2020-04-24  9:21   ` [PATCH v3 03/21] Simplify generation of symbol whitelist regex Giuliano Procida
2020-04-27 11:01     ` Matthias Maennich
2020-04-27 15:31       ` Giuliano Procida
2020-05-04  9:20     ` Dodji Seketeli
2020-04-24  9:21   ` [PATCH v3 04/21] Escape names used in symbol whitelisting regex Giuliano Procida
2020-04-27 11:14     ` Matthias Maennich
2020-04-27 15:37       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 05/21] abg-suppression.cc: More uniform variable naming Giuliano Procida
2020-04-27 11:17     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 06/21] diff suppression: Fix handling of change kinds Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 07/21] Add POSIX regex wrapper functions Giuliano Procida
2020-04-27 11:23     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 08/21] Use regex::compile wrapper instead of regcomp Giuliano Procida
2020-04-27 11:34     ` Matthias Maennich
2020-04-27 16:01       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 09/21] Use regex::match wrapper instead of regexec Giuliano Procida
2020-04-27 11:38     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 10/21] Refactor read_parameter_spec_from_string logic Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 11/21] Compile suppression regexes earlier Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 12/21] Reduce direct access to suppression priv_ members Giuliano Procida
2020-04-27 11:54     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 13/21] Move match methods from priv to suppression_base Giuliano Procida
2020-04-27 11:55     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 14/21] Remove suppression types' priv class methods Giuliano Procida
2020-04-27 11:57     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 15/21] abg-suppression.cc: More consistent regex matching Giuliano Procida
2020-04-27 12:07     ` Matthias Maennich
2020-04-27 16:18       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 16/21] abg-tools-utils.cc: Assert generated regexes OK Giuliano Procida
2020-04-27 12:08     ` Matthias Maennich
2020-04-27 16:21       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 17/21] Refactor suppression property string parsing Giuliano Procida
2020-04-27 12:17     ` Matthias Maennich
2020-04-27 16:42       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 18/21] Refactor suppression property regex parsing Giuliano Procida
2020-04-27 14:55     ` Matthias Maennich
2020-04-27 16:59       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 19/21] Warn if user-supplied regexes fail to compile Giuliano Procida
2020-04-27 15:36     ` Matthias Maennich
2020-05-01  8:49       ` Giuliano Procida
2020-04-24  9:21   ` [PATCH v3 20/21] Default construct suppression types Giuliano Procida
2020-04-27 15:40     ` Matthias Maennich
2020-04-24  9:21   ` [PATCH v3 21/21] Remove unused suppression type priv constructors Giuliano Procida
2020-04-27 15:41     ` Matthias Maennich
2020-05-04 12:34   ` [PATCH v4 00/15] Simplify regex and suppression parsing Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 01/15] Tidy #includes in a few files Giuliano Procida
2020-05-04 12:49       ` Matthias Maennich
2020-05-11 13:24       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 02/15] Document ^_^ regex in generate_from_strings Giuliano Procida
2020-05-04 12:49       ` Matthias Maennich
2020-05-11 13:32       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 03/15] Escape names used in symbol whitelisting regex Giuliano Procida
2020-05-04 12:57       ` Matthias Maennich
2020-05-04 16:45         ` [PATCH v5 " Giuliano Procida
2020-05-11 13:59           ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 04/15] abg-suppression.cc: More uniform variable naming Giuliano Procida
2020-05-11 14:04       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 05/15] diff suppression: Fix handling of change kinds Giuliano Procida
2020-05-04 13:04       ` Matthias Maennich
2020-05-11 14:15       ` Dodji Seketeli
2020-05-11 15:47         ` Giuliano Procida
2020-05-11 17:53           ` Dodji Seketeli
2020-05-12  9:54             ` Giuliano Procida
2020-05-12 10:14               ` [PATCH v5 05/15] Tidy checks for sufficient suppression properties Giuliano Procida
2020-05-12 16:11                 ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 06/15] Add POSIX regex wrapper functions Giuliano Procida
2020-05-11 16:37       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 07/15] Use regex::compile wrapper instead of regcomp Giuliano Procida
2020-05-11 16:38       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 08/15] Use regex::match wrapper instead of regexec Giuliano Procida
2020-05-12 16:35       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 09/15] Refactor read_parameter_spec_from_string logic Giuliano Procida
2020-05-13  7:51       ` Dodji Seketeli
2020-05-04 12:34     ` [PATCH v4 10/15] Compile suppression regexes earlier Giuliano Procida
2020-05-04 13:14       ` Matthias Maennich
2020-05-13  8:07       ` Dodji Seketeli
2020-05-13 15:36         ` Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 11/15] Reduce direct access to suppression priv_ members Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 12/15] Move match methods from priv to suppression_base Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 13/15] Remove suppression type priv class methods Giuliano Procida
2020-05-04 12:34     ` [PATCH v4 14/15] abg-suppression.cc: More consistent regex matching Giuliano Procida
2020-05-04 13:17       ` Matthias Maennich
2020-05-04 12:34     ` [PATCH v4 15/15] abg-tools-utils.cc: Assert generated regexes OK Giuliano Procida

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200423154441.170531-2-gprocida@google.com \
    --to=gprocida@google.com \
    --cc=dodji@seketeli.org \
    --cc=kernel-team@android.com \
    --cc=libabigail@sourceware.org \
    --cc=maennich@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).