public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [committed][gdb/symtab] Use lambda function instead of addrmap_foreach_check
@ 2021-08-04 12:30 Tom de Vries
  0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2021-08-04 12:30 UTC (permalink / raw)
  To: gdb-patches

Hi,

Use a lambda function instead of addrmap_foreach_check,
which removes the need for static variables.

Also remove unnecessary static on local var temp_obstack in test_addrmap.

Committed to trunk.

Thanks,
- Tom

[gdb/symtab] Use lambda function instead of addrmap_foreach_check

gdb/ChangeLog:

2021-08-04  Tom de Vries  <tdevries@suse.de>

	* addrmap.c (addrmap_foreach_check): Remove.
	(array, val1, val2): Move ...
	(test_addrmap): ... here.  Remove static on temp_obstack.  Use lambda
	function instead of addrmap_foreach_check.

---
 gdb/addrmap.c | 51 +++++++++++++++++++++------------------------------
 1 file changed, 21 insertions(+), 30 deletions(-)

diff --git a/gdb/addrmap.c b/gdb/addrmap.c
index 2cb472604f4..22817824cdc 100644
--- a/gdb/addrmap.c
+++ b/gdb/addrmap.c
@@ -611,41 +611,20 @@ core_addr (void *p)
     }									\
   while (0)
 
-/* We'll verify using the addresses of the elements of this array.  */
-static char *array;
-/* We'll verify using these values stored into the map.  */
-static void *val1;
-static void *val2;
-
-/* Callback for addrmap_foreach to check transitions.  */
-
-static int
-addrmap_foreach_check (CORE_ADDR start_addr, void *obj)
-{
-  if (start_addr == core_addr (nullptr))
-    SELF_CHECK (obj == nullptr);
-  else if (start_addr == core_addr (&array[10]))
-    SELF_CHECK (obj == val1);
-  else if (start_addr == core_addr (&array[13]))
-    SELF_CHECK (obj == nullptr);
-  else
-    SELF_CHECK (false);
-  return 0;
-}
-
 /* Entry point for addrmap unit tests.  */
 
 static void
 test_addrmap ()
 {
-  /* Initialize static variables.  */
-  char local_array[20];
-  array = local_array;
-  val1 = &array[1];
-  val2 = &array[2];
+  /* We'll verify using the addresses of the elements of this array.  */
+  char array[20];
+
+  /* We'll verify using these values stored into the map.  */
+  void *val1 = &array[1];
+  void *val2 = &array[2];
 
   /* Create mutable addrmap.  */
-  static struct obstack temp_obstack;
+  struct obstack temp_obstack;
   obstack_init (&temp_obstack);
   struct addrmap *map = addrmap_create_mutable (&temp_obstack);
   SELF_CHECK (map != nullptr);
@@ -668,8 +647,20 @@ test_addrmap ()
   CHECK_ADDRMAP_FIND (map2, array, 13, 19, nullptr);
 
   /* Iterate over both addrmaps.  */
-  SELF_CHECK (addrmap_foreach (map, addrmap_foreach_check) == 0);
-  SELF_CHECK (addrmap_foreach (map2, addrmap_foreach_check) == 0);
+  auto callback = [&] (CORE_ADDR start_addr, void *obj)
+    {
+      if (start_addr == core_addr (nullptr))
+	SELF_CHECK (obj == nullptr);
+      else if (start_addr == core_addr (&array[10]))
+	SELF_CHECK (obj == val1);
+      else if (start_addr == core_addr (&array[13]))
+	SELF_CHECK (obj == nullptr);
+      else
+	SELF_CHECK (false);
+      return 0;
+    };
+  SELF_CHECK (addrmap_foreach (map, callback) == 0);
+  SELF_CHECK (addrmap_foreach (map2, callback) == 0);
 
   /* Relocate fixed addrmap.  */
   addrmap_relocate (map2, 1);

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-08-04 12:30 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-04 12:30 [committed][gdb/symtab] Use lambda function instead of addrmap_foreach_check Tom de Vries

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