You will want to write other routines for your new hash table, as well.
You will want an initialization routine which calls the
initialization routine of the hash table you are deriving from
and initializes any other local fields. For the linker hash
table, this is _bfd_link_hash_table_init
in linker.c
.
You will want a lookup routine which calls the lookup routine
of the hash table you are deriving from and casts the result.
The linker hash table uses bfd_link_hash_lookup
in
linker.c
(this actually takes an additional argument which
it uses to decide how to return the looked up value).
You may want a traversal routine. This should just call the
traversal routine of the hash table you are deriving from with
appropriate casts. The linker hash table uses
bfd_link_hash_traverse
in linker.c
.
These routines may simply be defined as macros. For example,
the a.out backend linker hash table, which is derived from the
linker hash table, uses macros for the lookup and traversal
routines. These are aout_link_hash_lookup
and
aout_link_hash_traverse
in aoutx.h.