Previous: Write the Derived Creation Routine, Up: Deriving a New Hash Table Type


2.18.4.3 Write other derived routines

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.