X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Faddrmap.c;h=db6f160b506f9c6ddeeb8dbdc889e96de5cec386;hb=348fe36b1d64f12c60e08f6313520b3191663063;hp=c8fee389f70e69ff0e6be5ba7630cb0689760fc1;hpb=ecd75fc8eed3bde86036141228074a20e55dcfc9;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/addrmap.c b/gdb/addrmap.c index c8fee389f7..db6f160b50 100644 --- a/gdb/addrmap.c +++ b/gdb/addrmap.c @@ -1,6 +1,6 @@ /* addrmap.c --- implementation of address map data structure. - Copyright (C) 2007-2014 Free Software Foundation, Inc. + Copyright (C) 2007-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -18,14 +18,14 @@ along with this program. If not, see . */ #include "defs.h" - -#include - #include "splay-tree.h" #include "gdb_obstack.h" #include "addrmap.h" -#include "gdb_assert.h" +/* Make sure splay trees can actually hold the values we want to + store in them. */ +gdb_static_assert (sizeof (splay_tree_key) >= sizeof (CORE_ADDR *)); +gdb_static_assert (sizeof (splay_tree_value) >= sizeof (void *)); /* The "abstract class". */ @@ -34,14 +34,14 @@ implementation. */ struct addrmap_funcs { - void (*set_empty) (struct addrmap *this, + void (*set_empty) (struct addrmap *self, CORE_ADDR start, CORE_ADDR end_inclusive, void *obj); - void *(*find) (struct addrmap *this, CORE_ADDR addr); - struct addrmap *(*create_fixed) (struct addrmap *this, + void *(*find) (struct addrmap *self, CORE_ADDR addr); + struct addrmap *(*create_fixed) (struct addrmap *self, struct obstack *obstack); - void (*relocate) (struct addrmap *this, CORE_ADDR offset); - int (*foreach) (struct addrmap *this, addrmap_foreach_fn fn, void *data); + void (*relocate) (struct addrmap *self, CORE_ADDR offset); + int (*foreach) (struct addrmap *self, addrmap_foreach_fn fn, void *data); }; @@ -118,7 +118,7 @@ struct addrmap_fixed static void -addrmap_fixed_set_empty (struct addrmap *this, +addrmap_fixed_set_empty (struct addrmap *self, CORE_ADDR start, CORE_ADDR end_inclusive, void *obj) { @@ -129,9 +129,9 @@ addrmap_fixed_set_empty (struct addrmap *this, static void * -addrmap_fixed_find (struct addrmap *this, CORE_ADDR addr) +addrmap_fixed_find (struct addrmap *self, CORE_ADDR addr) { - struct addrmap_fixed *map = (struct addrmap_fixed *) this; + struct addrmap_fixed *map = (struct addrmap_fixed *) self; struct addrmap_transition *bottom = &map->transitions[0]; struct addrmap_transition *top = &map->transitions[map->num_transitions - 1]; @@ -162,7 +162,7 @@ addrmap_fixed_find (struct addrmap *this, CORE_ADDR addr) static struct addrmap * -addrmap_fixed_create_fixed (struct addrmap *this, struct obstack *obstack) +addrmap_fixed_create_fixed (struct addrmap *self, struct obstack *obstack) { internal_error (__FILE__, __LINE__, _("addrmap_create_fixed is not implemented yet " @@ -171,9 +171,9 @@ addrmap_fixed_create_fixed (struct addrmap *this, struct obstack *obstack) static void -addrmap_fixed_relocate (struct addrmap *this, CORE_ADDR offset) +addrmap_fixed_relocate (struct addrmap *self, CORE_ADDR offset) { - struct addrmap_fixed *map = (struct addrmap_fixed *) this; + struct addrmap_fixed *map = (struct addrmap_fixed *) self; size_t i; for (i = 0; i < map->num_transitions; i++) @@ -182,10 +182,10 @@ addrmap_fixed_relocate (struct addrmap *this, CORE_ADDR offset) static int -addrmap_fixed_foreach (struct addrmap *this, addrmap_foreach_fn fn, +addrmap_fixed_foreach (struct addrmap *self, addrmap_foreach_fn fn, void *data) { - struct addrmap_fixed *map = (struct addrmap_fixed *) this; + struct addrmap_fixed *map = (struct addrmap_fixed *) self; size_t i; for (i = 0; i < map->num_transitions; i++) @@ -249,7 +249,7 @@ struct addrmap_mutable static splay_tree_key allocate_key (struct addrmap_mutable *map, CORE_ADDR addr) { - CORE_ADDR *key = obstack_alloc (map->obstack, sizeof (*key)); + CORE_ADDR *key = XOBNEW (map->obstack, CORE_ADDR); *key = addr; return (splay_tree_key) key; @@ -320,26 +320,26 @@ addrmap_splay_tree_insert (struct addrmap_mutable *map, tree node at ADDR, even if it would represent a "transition" from one value to the same value. */ static void -force_transition (struct addrmap_mutable *this, CORE_ADDR addr) +force_transition (struct addrmap_mutable *self, CORE_ADDR addr) { splay_tree_node n - = addrmap_splay_tree_lookup (this, addr); + = addrmap_splay_tree_lookup (self, addr); if (! n) { - n = addrmap_splay_tree_predecessor (this, addr); - addrmap_splay_tree_insert (this, addr, + n = addrmap_splay_tree_predecessor (self, addr); + addrmap_splay_tree_insert (self, addr, n ? addrmap_node_value (n) : NULL); } } static void -addrmap_mutable_set_empty (struct addrmap *this, +addrmap_mutable_set_empty (struct addrmap *self, CORE_ADDR start, CORE_ADDR end_inclusive, void *obj) { - struct addrmap_mutable *map = (struct addrmap_mutable *) this; + struct addrmap_mutable *map = (struct addrmap_mutable *) self; splay_tree_node n, next; void *prior_value; @@ -389,7 +389,7 @@ addrmap_mutable_set_empty (struct addrmap *this, static void * -addrmap_mutable_find (struct addrmap *this, CORE_ADDR addr) +addrmap_mutable_find (struct addrmap *self, CORE_ADDR addr) { /* Not needed yet. */ internal_error (__FILE__, __LINE__, @@ -427,24 +427,24 @@ splay_foreach_copy (splay_tree_node n, void *closure) static struct addrmap * -addrmap_mutable_create_fixed (struct addrmap *this, struct obstack *obstack) +addrmap_mutable_create_fixed (struct addrmap *self, struct obstack *obstack) { - struct addrmap_mutable *mutable = (struct addrmap_mutable *) this; + struct addrmap_mutable *mutable_obj = (struct addrmap_mutable *) self; struct addrmap_fixed *fixed; size_t num_transitions; + size_t alloc_len; /* Count the number of transitions in the tree. */ num_transitions = 0; - splay_tree_foreach (mutable->tree, splay_foreach_count, &num_transitions); + splay_tree_foreach (mutable_obj->tree, splay_foreach_count, &num_transitions); /* Include an extra entry for the transition at zero (which fixed maps have, but mutable maps do not.) */ num_transitions++; - fixed = obstack_alloc (obstack, - (sizeof (*fixed) - + (num_transitions - * sizeof (fixed->transitions[0])))); + alloc_len = sizeof (*fixed) + + (num_transitions * sizeof (fixed->transitions[0])); + fixed = (struct addrmap_fixed *) obstack_alloc (obstack, alloc_len); fixed->addrmap.funcs = &addrmap_fixed_funcs; fixed->num_transitions = 1; fixed->transitions[0].addr = 0; @@ -452,7 +452,7 @@ addrmap_mutable_create_fixed (struct addrmap *this, struct obstack *obstack) /* Copy all entries from the splay tree to the array, in order of increasing address. */ - splay_tree_foreach (mutable->tree, splay_foreach_copy, fixed); + splay_tree_foreach (mutable_obj->tree, splay_foreach_copy, fixed); /* We should have filled the array. */ gdb_assert (fixed->num_transitions == num_transitions); @@ -462,7 +462,7 @@ addrmap_mutable_create_fixed (struct addrmap *this, struct obstack *obstack) static void -addrmap_mutable_relocate (struct addrmap *this, CORE_ADDR offset) +addrmap_mutable_relocate (struct addrmap *self, CORE_ADDR offset) { /* Not needed yet. */ internal_error (__FILE__, __LINE__, @@ -484,7 +484,8 @@ struct mutable_foreach_data static int addrmap_mutable_foreach_worker (splay_tree_node node, void *data) { - struct mutable_foreach_data *foreach_data = data; + struct mutable_foreach_data *foreach_data + = (struct mutable_foreach_data *) data; return foreach_data->fn (foreach_data->data, addrmap_node_key (node), @@ -493,15 +494,15 @@ addrmap_mutable_foreach_worker (splay_tree_node node, void *data) static int -addrmap_mutable_foreach (struct addrmap *this, addrmap_foreach_fn fn, +addrmap_mutable_foreach (struct addrmap *self, addrmap_foreach_fn fn, void *data) { - struct addrmap_mutable *mutable = (struct addrmap_mutable *) this; + struct addrmap_mutable *mutable_obj = (struct addrmap_mutable *) self; struct mutable_foreach_data foreach_data; foreach_data.fn = fn; foreach_data.data = data; - return splay_tree_foreach (mutable->tree, addrmap_mutable_foreach_worker, + return splay_tree_foreach (mutable_obj->tree, addrmap_mutable_foreach_worker, &foreach_data); } @@ -519,7 +520,7 @@ static const struct addrmap_funcs addrmap_mutable_funcs = static void * splay_obstack_alloc (int size, void *closure) { - struct addrmap_mutable *map = closure; + struct addrmap_mutable *map = (struct addrmap_mutable *) closure; splay_tree_node n; /* We should only be asked to allocate nodes and larger things. @@ -541,8 +542,8 @@ splay_obstack_alloc (int size, void *closure) static void splay_obstack_free (void *obj, void *closure) { - struct addrmap_mutable *map = closure; - splay_tree_node n = obj; + struct addrmap_mutable *map = (struct addrmap_mutable *) closure; + splay_tree_node n = (splay_tree_node) obj; /* We've asserted in the allocation function that we only allocate nodes or larger things, so it should be safe to put whatever @@ -572,7 +573,7 @@ splay_compare_CORE_ADDR_ptr (splay_tree_key ak, splay_tree_key bk) struct addrmap * addrmap_create_mutable (struct obstack *obstack) { - struct addrmap_mutable *map = obstack_alloc (obstack, sizeof (*map)); + struct addrmap_mutable *map = XOBNEW (obstack, struct addrmap_mutable); map->addrmap.funcs = &addrmap_mutable_funcs; map->obstack = obstack; @@ -591,19 +592,3 @@ addrmap_create_mutable (struct obstack *obstack) return (struct addrmap *) map; } - - - -/* Initialization. */ - -/* Provide a prototype to silence -Wmissing-prototypes. */ -extern initialize_file_ftype _initialize_addrmap; - -void -_initialize_addrmap (void) -{ - /* Make sure splay trees can actually hold the values we want to - store in them. */ - gdb_assert (sizeof (splay_tree_key) >= sizeof (CORE_ADDR *)); - gdb_assert (sizeof (splay_tree_value) >= sizeof (void *)); -}