gdb: have mdict_size always return a symbol count
authorAndrew Burgess <aburgess@redhat.com>
Fri, 19 May 2023 20:42:39 +0000 (21:42 +0100)
committerAndrew Burgess <aburgess@redhat.com>
Tue, 4 Jul 2023 11:07:16 +0000 (12:07 +0100)
commitb8c2de06bcbc13a1a6b93163cf675272d7eada9f
treeb8a35c8831b8aae1f4029a65cca03fe393d277d5
parenta34339a82fab6aacb87d0b2338fcf8812260286b
gdb: have mdict_size always return a symbol count

In the next commit we would like to have mdict_size return the number
of symbols in the dictionary, currently mdict_size is just a
heuristic, sometimes it returns the number of symbols, and sometimes
the number of buckets in a hashing dictionary (see size_hashed in
dictionary.c).

Currently this vague notion of size is good enough, the only place
mdict_size is used is in a maintenance command in order to print a
message containing the size of the dictionary ... so we don't really
care that the value isn't correct.

However, in the next commit we do want the size returned to be the
number of symbols in the dictionary, so this commit makes mdict_size
return the symbol count in all cases.

The new use is still not on a hot path -- it's going to be a Python
__repr__ method, so all I do in this commit is have size_hashed walk
the dictionary and count the entries, obviously this could be slow if
we have a large number of symbols, but for now I'm not worrying about
that case.  We could always store the symbol count if we wanted, but
that would increase the size of every dictionary for a use case that
isn't going to be hit that often.

I've updated the text in 'maint print symbols' so that we don't talk
about the size being 'syms/buckets', but just 'symbols' now.
gdb/dictionary.c
gdb/dictionary.h
gdb/symmisc.c