- /* A callback function to read in the dynamic symbols of an object
- which is dynamically linked. This returns the number of symbols
- read (or -1 on error) and sets *SYMS to a buffer holding an array
- of external_nlist structures and *STRS and *STRSIZE to the
- associated string table. (This interface works for SunOS, but
- can be changed if some other interface is better for some other
- shared library implementation). */
- bfd_size_type (*read_dynamic_symbols) PARAMS ((bfd *,
- struct external_nlist **syms,
- char **strs,
- bfd_size_type *strsize));
-
- /* A callback function to read in the dynamic relocs of an object
- which is dynamically linked. This returns the number of relocs
- read (or -1 on error) and sets *RELOCS to a buffer holding an
- array of external reloc structures (the type depends upon the
- type of object file). */
- bfd_size_type (*read_dynamic_relocs) PARAMS ((bfd *, PTR *relocs));
+ /* Callback from the add symbols phase of the linker code to handle
+ a dynamic object. */
+ boolean (*add_dynamic_symbols) PARAMS ((bfd *, struct bfd_link_info *,
+ struct external_nlist **,
+ bfd_size_type *, char **));
+
+ /* Callback from the add symbols phase of the linker code to handle
+ adding a single symbol to the global linker hash table. */
+ boolean (*add_one_symbol) PARAMS ((struct bfd_link_info *, bfd *,
+ const char *, flagword, asection *,
+ bfd_vma, const char *, boolean,
+ boolean,
+ struct bfd_link_hash_entry **));
+
+ /* Called to handle linking a dynamic object. */
+ boolean (*link_dynamic_object) PARAMS ((struct bfd_link_info *, bfd *));
+
+ /* Called for each global symbol being written out by the linker.
+ This should write out the dynamic symbol information. */
+ boolean (*write_dynamic_symbol) PARAMS ((bfd *, struct bfd_link_info *,
+ struct aout_link_hash_entry *));
+
+ /* If this callback is not NULL, the linker calls it for each reloc.
+ RELOC is a pointer to the unswapped reloc. If *SKIP is set to
+ true, the reloc will be skipped. *RELOCATION may be changed to
+ change the effects of the relocation. */
+ boolean (*check_dynamic_reloc) PARAMS ((struct bfd_link_info *info,
+ bfd *input_bfd,
+ asection *input_section,
+ struct aout_link_hash_entry *h,
+ PTR reloc, bfd_byte *contents,
+ boolean *skip,
+ bfd_vma *relocation));
+
+ /* Called at the end of a link to finish up any dynamic linking
+ information. */
+ boolean (*finish_dynamic_link) PARAMS ((bfd *, struct bfd_link_info *));