aboutsummaryrefslogtreecommitdiff
path: root/gdb/addrmap.c
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-08-04 14:29:47 +0200
committerTom de Vries <tdevries@suse.de>2021-08-04 14:29:47 +0200
commit5b3ef0a5952eaf912da343505eff9d0a29334751 (patch)
treed9cd55e1760949110d1c8651126ffeed3e147e54 /gdb/addrmap.c
parentf897689c880ed1049b708e6c1f9745c8604808e3 (diff)
downloadgdb-5b3ef0a5952eaf912da343505eff9d0a29334751.zip
gdb-5b3ef0a5952eaf912da343505eff9d0a29334751.tar.gz
gdb-5b3ef0a5952eaf912da343505eff9d0a29334751.tar.bz2
[gdb/symtab] Use lambda function instead of addrmap_foreach_check
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.
Diffstat (limited to 'gdb/addrmap.c')
-rw-r--r--gdb/addrmap.c51
1 files changed, 21 insertions, 30 deletions
diff --git a/gdb/addrmap.c b/gdb/addrmap.c
index 2cb4726..2281782 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);