public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs
@ 2023-06-06  8:51 Matthias Männich
  2023-06-06  8:51 ` [PATCH 2/2] symtab reader: fix symtab iterator to support C++20 Matthias Männich
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Matthias Männich @ 2023-06-06  8:51 UTC (permalink / raw)
  To: libabigail; +Cc: dodji, gprocida, kernel-team, maennich

From: Matthias Maennich <maennich@google.com>

That is to increase readability and to incrementally modernize the code base.

	* abg-symtab-reader.h: replace typedefs by corresponding using
	  declarations.

Signed-off-by: Matthias Maennich <maennich@google.com>
---
 src/abg-symtab-reader.h | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/abg-symtab-reader.h b/src/abg-symtab-reader.h
index 2e13e7f9976f..7477cca5a6f0 100644
--- a/src/abg-symtab-reader.h
+++ b/src/abg-symtab-reader.h
@@ -99,7 +99,7 @@ private:
 /// Base iterator for our custom iterator based on whatever the const_iterator
 /// is for a vector of symbols.
 /// As of writing this, std::vector<elf_symbol_sptr>::const_iterator.
-typedef elf_symbols::const_iterator base_iterator;
+using base_iterator = elf_symbols::const_iterator;
 
 /// An iterator to walk a vector of elf_symbols filtered by symtab_filter.
 ///
@@ -110,11 +110,11 @@ typedef elf_symbols::const_iterator base_iterator;
 class symtab_iterator : public base_iterator
 {
 public:
-  typedef base_iterator::value_type	 value_type;
-  typedef base_iterator::reference	 reference;
-  typedef base_iterator::pointer	 pointer;
-  typedef base_iterator::difference_type difference_type;
-  typedef std::forward_iterator_tag	 iterator_category;
+  using value_type = base_iterator::value_type;
+  using reference = base_iterator::reference;
+  using pointer = base_iterator::pointer;
+  using difference_type = base_iterator::difference_type;
+  using iterator_category = std::forward_iterator_tag;
 
   /// Construct the iterator based on a pair of underlying iterators and a
   /// symtab_filter object. Immediately fast forward to the next element that
@@ -172,7 +172,7 @@ private:
 
 /// Convenience declaration of a unique_ptr<symtab>
 class symtab;
-typedef std::unique_ptr<symtab> symtab_ptr;
+using symtab_ptr = std::unique_ptr<symtab>;
 
 /// symtab is the actual data container of the symtab_reader implementation.
 ///
@@ -201,7 +201,7 @@ typedef std::unique_ptr<symtab> symtab_ptr;
 class symtab
 {
 public:
-  typedef std::function<bool(const elf_symbol_sptr&)> symbol_predicate;
+  using symbol_predicate = std::function<bool(const elf_symbol_sptr&)>;
 
   /// Indicate whether any (kernel) symbols have been seen at construction.
   ///
@@ -215,7 +215,7 @@ public:
 
   /// The (only) iterator type we offer is a const_iterator implemented by the
   /// symtab_iterator.
-  typedef symtab_iterator const_iterator;
+  using const_iterator = symtab_iterator;
 
   /// Obtain an iterator to the beginning of the symtab according to the filter
   /// criteria. Whenever this iterator advances, it skips elements that do not
@@ -271,12 +271,12 @@ private:
   bool has_ksymtab_entries_;
 
   /// Lookup map name->symbol(s)
-  typedef std::unordered_map<std::string, std::vector<elf_symbol_sptr>>
-		       name_symbol_map_type;
+  using name_symbol_map_type =
+      std::unordered_map<std::string, std::vector<elf_symbol_sptr>>;
   name_symbol_map_type name_symbol_map_;
 
   /// Lookup map addr->symbol
-  typedef std::unordered_map<GElf_Addr, elf_symbol_sptr> addr_symbol_map_type;
+  using addr_symbol_map_type = std::unordered_map<GElf_Addr, elf_symbol_sptr>;
   addr_symbol_map_type addr_symbol_map_;
 
   /// Lookup map function entry address -> symbol
-- 
2.41.0.rc0.172.g3f132b7071-goog


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

* [PATCH 2/2] symtab reader: fix symtab iterator to support C++20
  2023-06-06  8:51 [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Matthias Männich
@ 2023-06-06  8:51 ` Matthias Männich
  2023-06-07  6:53   ` Giuliano Procida
  2023-06-07 14:46   ` Dodji Seketeli
  2023-06-07  6:52 ` [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Giuliano Procida
  2023-06-07 14:46 ` Dodji Seketeli
  2 siblings, 2 replies; 6+ messages in thread
From: Matthias Männich @ 2023-06-06  8:51 UTC (permalink / raw)
  To: libabigail; +Cc: dodji, gprocida, kernel-team, maennich

From: Matthias Maennich <maennich@google.com>

Inheriting from std::vector::iterator causes the type to advertise
itself as a contiguous iterator. This causes a compilation error in
newer versions of libc++ that try to use contiguous-iterator-specific
optimizations in those situations. Fixed thus by explicitly specifying
the interator_concept tag.

	* abg-symtab-reader.h (symtab_iterator): Specify
	  iterator_concept as forward_iterator to support C++20 compilation.

Signed-off-by: Matthias Maennich <maennich@google.com>
---
 src/abg-symtab-reader.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/abg-symtab-reader.h b/src/abg-symtab-reader.h
index 7477cca5a6f0..888a56822224 100644
--- a/src/abg-symtab-reader.h
+++ b/src/abg-symtab-reader.h
@@ -115,6 +115,7 @@ public:
   using pointer = base_iterator::pointer;
   using difference_type = base_iterator::difference_type;
   using iterator_category = std::forward_iterator_tag;
+  using iterator_concept = std::forward_iterator_tag;
 
   /// Construct the iterator based on a pair of underlying iterators and a
   /// symtab_filter object. Immediately fast forward to the next element that
-- 
2.41.0.rc0.172.g3f132b7071-goog


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

* Re: [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs
  2023-06-06  8:51 [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Matthias Männich
  2023-06-06  8:51 ` [PATCH 2/2] symtab reader: fix symtab iterator to support C++20 Matthias Männich
@ 2023-06-07  6:52 ` Giuliano Procida
  2023-06-07 14:46 ` Dodji Seketeli
  2 siblings, 0 replies; 6+ messages in thread
From: Giuliano Procida @ 2023-06-07  6:52 UTC (permalink / raw)
  To: Matthias Männich; +Cc: libabigail, dodji, kernel-team

On Tue, 6 Jun 2023 at 09:52, Matthias Männich <maennich@google.com> wrote:
>
> From: Matthias Maennich <maennich@google.com>
>
> That is to increase readability and to incrementally modernize the code base.
>
>         * abg-symtab-reader.h: replace typedefs by corresponding using
>           declarations.
>
> Signed-off-by: Matthias Maennich <maennich@google.com>

Reviewed-by: Giuliano Procida <gprocida@google.com>

> ---
>  src/abg-symtab-reader.h | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/src/abg-symtab-reader.h b/src/abg-symtab-reader.h
> index 2e13e7f9976f..7477cca5a6f0 100644
> --- a/src/abg-symtab-reader.h
> +++ b/src/abg-symtab-reader.h
> @@ -99,7 +99,7 @@ private:
>  /// Base iterator for our custom iterator based on whatever the const_iterator
>  /// is for a vector of symbols.
>  /// As of writing this, std::vector<elf_symbol_sptr>::const_iterator.
> -typedef elf_symbols::const_iterator base_iterator;
> +using base_iterator = elf_symbols::const_iterator;
>
>  /// An iterator to walk a vector of elf_symbols filtered by symtab_filter.
>  ///
> @@ -110,11 +110,11 @@ typedef elf_symbols::const_iterator base_iterator;
>  class symtab_iterator : public base_iterator
>  {
>  public:
> -  typedef base_iterator::value_type     value_type;
> -  typedef base_iterator::reference      reference;
> -  typedef base_iterator::pointer        pointer;
> -  typedef base_iterator::difference_type difference_type;
> -  typedef std::forward_iterator_tag     iterator_category;
> +  using value_type = base_iterator::value_type;
> +  using reference = base_iterator::reference;
> +  using pointer = base_iterator::pointer;
> +  using difference_type = base_iterator::difference_type;
> +  using iterator_category = std::forward_iterator_tag;
>
>    /// Construct the iterator based on a pair of underlying iterators and a
>    /// symtab_filter object. Immediately fast forward to the next element that
> @@ -172,7 +172,7 @@ private:
>
>  /// Convenience declaration of a unique_ptr<symtab>
>  class symtab;
> -typedef std::unique_ptr<symtab> symtab_ptr;
> +using symtab_ptr = std::unique_ptr<symtab>;
>
>  /// symtab is the actual data container of the symtab_reader implementation.
>  ///
> @@ -201,7 +201,7 @@ typedef std::unique_ptr<symtab> symtab_ptr;
>  class symtab
>  {
>  public:
> -  typedef std::function<bool(const elf_symbol_sptr&)> symbol_predicate;
> +  using symbol_predicate = std::function<bool(const elf_symbol_sptr&)>;
>
>    /// Indicate whether any (kernel) symbols have been seen at construction.
>    ///
> @@ -215,7 +215,7 @@ public:
>
>    /// The (only) iterator type we offer is a const_iterator implemented by the
>    /// symtab_iterator.
> -  typedef symtab_iterator const_iterator;
> +  using const_iterator = symtab_iterator;
>
>    /// Obtain an iterator to the beginning of the symtab according to the filter
>    /// criteria. Whenever this iterator advances, it skips elements that do not
> @@ -271,12 +271,12 @@ private:
>    bool has_ksymtab_entries_;
>
>    /// Lookup map name->symbol(s)
> -  typedef std::unordered_map<std::string, std::vector<elf_symbol_sptr>>
> -                      name_symbol_map_type;
> +  using name_symbol_map_type =
> +      std::unordered_map<std::string, std::vector<elf_symbol_sptr>>;
>    name_symbol_map_type name_symbol_map_;
>
>    /// Lookup map addr->symbol
> -  typedef std::unordered_map<GElf_Addr, elf_symbol_sptr> addr_symbol_map_type;
> +  using addr_symbol_map_type = std::unordered_map<GElf_Addr, elf_symbol_sptr>;
>    addr_symbol_map_type addr_symbol_map_;
>
>    /// Lookup map function entry address -> symbol
> --
> 2.41.0.rc0.172.g3f132b7071-goog
>

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

* Re: [PATCH 2/2] symtab reader: fix symtab iterator to support C++20
  2023-06-06  8:51 ` [PATCH 2/2] symtab reader: fix symtab iterator to support C++20 Matthias Männich
@ 2023-06-07  6:53   ` Giuliano Procida
  2023-06-07 14:46   ` Dodji Seketeli
  1 sibling, 0 replies; 6+ messages in thread
From: Giuliano Procida @ 2023-06-07  6:53 UTC (permalink / raw)
  To: Matthias Männich; +Cc: libabigail, dodji, kernel-team

On Tue, 6 Jun 2023 at 09:52, Matthias Männich <maennich@google.com> wrote:
>
> From: Matthias Maennich <maennich@google.com>
>
> Inheriting from std::vector::iterator causes the type to advertise
> itself as a contiguous iterator. This causes a compilation error in
> newer versions of libc++ that try to use contiguous-iterator-specific
> optimizations in those situations. Fixed thus by explicitly specifying
> the interator_concept tag.
>
>         * abg-symtab-reader.h (symtab_iterator): Specify
>           iterator_concept as forward_iterator to support C++20 compilation.
>
> Signed-off-by: Matthias Maennich <maennich@google.com>

Reviewed-by: Giuliano Procida <gprocida@google.com>

> ---
>  src/abg-symtab-reader.h | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/src/abg-symtab-reader.h b/src/abg-symtab-reader.h
> index 7477cca5a6f0..888a56822224 100644
> --- a/src/abg-symtab-reader.h
> +++ b/src/abg-symtab-reader.h
> @@ -115,6 +115,7 @@ public:
>    using pointer = base_iterator::pointer;
>    using difference_type = base_iterator::difference_type;
>    using iterator_category = std::forward_iterator_tag;
> +  using iterator_concept = std::forward_iterator_tag;
>
>    /// Construct the iterator based on a pair of underlying iterators and a
>    /// symtab_filter object. Immediately fast forward to the next element that
> --
> 2.41.0.rc0.172.g3f132b7071-goog
>

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

* Re: [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs
  2023-06-06  8:51 [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Matthias Männich
  2023-06-06  8:51 ` [PATCH 2/2] symtab reader: fix symtab iterator to support C++20 Matthias Männich
  2023-06-07  6:52 ` [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Giuliano Procida
@ 2023-06-07 14:46 ` Dodji Seketeli
  2 siblings, 0 replies; 6+ messages in thread
From: Dodji Seketeli @ 2023-06-07 14:46 UTC (permalink / raw)
  To: Matthias Männich; +Cc: libabigail, gprocida, kernel-team

"Matthias Männich" <maennich@google.com> a écrit:

> From: Matthias Maennich <maennich@google.com>
>
> That is to increase readability and to incrementally modernize the code base.
>
> 	* abg-symtab-reader.h: replace typedefs by corresponding using
> 	  declarations.
>
> Signed-off-by: Matthias Maennich <maennich@google.com>

Applied to master, thanks!

[...]

Cheers,

-- 
		Dodji

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

* Re: [PATCH 2/2] symtab reader: fix symtab iterator to support C++20
  2023-06-06  8:51 ` [PATCH 2/2] symtab reader: fix symtab iterator to support C++20 Matthias Männich
  2023-06-07  6:53   ` Giuliano Procida
@ 2023-06-07 14:46   ` Dodji Seketeli
  1 sibling, 0 replies; 6+ messages in thread
From: Dodji Seketeli @ 2023-06-07 14:46 UTC (permalink / raw)
  To: Matthias Männich; +Cc: libabigail, gprocida, kernel-team

"Matthias Männich" <maennich@google.com> a écrit:

> From: Matthias Maennich <maennich@google.com>
>
> Inheriting from std::vector::iterator causes the type to advertise
> itself as a contiguous iterator. This causes a compilation error in
> newer versions of libc++ that try to use contiguous-iterator-specific
> optimizations in those situations. Fixed thus by explicitly specifying
> the interator_concept tag.
>
> 	* abg-symtab-reader.h (symtab_iterator): Specify
> 	  iterator_concept as forward_iterator to support C++20 compilation.
>
> Signed-off-by: Matthias Maennich <maennich@google.com>

Applied to master, thanks!

[...]

Cheers,

-- 
		Dodji

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

end of thread, other threads:[~2023-06-07 14:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-06  8:51 [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Matthias Männich
2023-06-06  8:51 ` [PATCH 2/2] symtab reader: fix symtab iterator to support C++20 Matthias Männich
2023-06-07  6:53   ` Giuliano Procida
2023-06-07 14:46   ` Dodji Seketeli
2023-06-07  6:52 ` [PATCH 1/2] symtab reader: use C++11 `using` syntax instead of typedefs Giuliano Procida
2023-06-07 14:46 ` Dodji Seketeli

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).