[applied] ir: Add new environment::get_type_id_from_type

Message ID 87h6titwh4.fsf@redhat.com
State New
Headers
Series [applied] ir: Add new environment::get_type_id_from_type |

Commit Message

Dodji Seketeli April 14, 2023, 1:38 p.m. UTC
  Hello,

While debugging some issues, I felt the need to easily get the type-id
from a given ir::type_base* from within the debugger.

I have thus added this new environment::get_type_id_from_type member
function.

	* include/abg-ir.h (environment::get_pointer_type_id_map): Declare
	...
	* src/abg-ir.cc (environment::get_pointer_type_id_map): ... this
	new member function.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
---
 include/abg-ir.h |  3 +++
 src/abg-ir.cc    | 19 +++++++++++++++++++
 2 files changed, 22 insertions(+)
  

Patch

diff --git a/include/abg-ir.h b/include/abg-ir.h
index d25e3a8c..263bff5e 100644
--- a/include/abg-ir.h
+++ b/include/abg-ir.h
@@ -253,6 +253,9 @@  public:
   string
   get_type_id_from_pointer(uintptr_t ptr);
 
+  string
+  get_type_id_from_type(const type_base *ptr);
+
   uintptr_t
   get_canonical_type_from_type_id(const char*);
 #endif
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 64dfee79..4da8c461 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -3944,6 +3944,25 @@  environment::get_type_id_from_pointer(uintptr_t ptr)
   return "";
 }
 
+/// Getter of the type-id that corresponds to the value of an
+/// abigail::ir::type_base that was created from the abixml reader.
+///
+/// That value is retrieved from the map returned from
+/// environment::get_pointer_type_id_map().
+///
+/// That map is populated at abixml reading time, (by build_type())
+/// when a given XML element representing a type is read into a
+/// corresponding abigail::ir::type_base.
+///
+/// This is used only for the purpose of debugging the
+/// self-comparison process.  That is, when invoking "abidw
+/// --debug-abidiff".
+///
+/// @return the type-id strings that corresponds
+string
+environment::get_type_id_from_type(const type_base *t)
+{return get_type_id_from_pointer(reinterpret_cast<uintptr_t>(t));}
+
 /// Getter of the canonical type of the artifact designated by a
 /// type-id.
 ///