]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
[gdb/symtab] Use lambda function instead of addrmap_foreach_check
authorTom de Vries <tdevries@suse.de>
Wed, 4 Aug 2021 12:29:47 +0000 (14:29 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 4 Aug 2021 12:29:47 +0000 (14:29 +0200)
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.

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

index 2cb472604f479c396d127fe0b6b406e464238cff..22817824cdc9befb7c4374a55fb2d0b850301652 100644 (file)
@@ -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);