diff options
author | Kevin Buettner <kevinb@redhat.com> | 2000-10-30 23:31:17 +0000 |
---|---|---|
committer | Kevin Buettner <kevinb@redhat.com> | 2000-10-30 23:31:17 +0000 |
commit | 749499cbc4bbd424e9724cd1ded6fd8db340f1ad (patch) | |
tree | bc470d599b076ad88f5cd7e4ff033e7235f562c5 /gdb/solist.h | |
parent | 0cf9d59bcb201be4433464a8b49c8bc7f3225419 (diff) | |
download | gdb-749499cbc4bbd424e9724cd1ded6fd8db340f1ad.zip gdb-749499cbc4bbd424e9724cd1ded6fd8db340f1ad.tar.gz gdb-749499cbc4bbd424e9724cd1ded6fd8db340f1ad.tar.bz2 |
solib.c relocation improvements
Diffstat (limited to 'gdb/solist.h')
-rw-r--r-- | gdb/solist.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/gdb/solist.h b/gdb/solist.h index 784ea1b..e55190d 100644 --- a/gdb/solist.h +++ b/gdb/solist.h @@ -54,7 +54,6 @@ struct so_list are initialized when we actually add it to our symbol tables. */ bfd *abfd; - CORE_ADDR lmend; /* upper addr bound of mapped object */ char symbols_loaded; /* flag: symbols read in yet? */ char from_tty; /* flag: print msgs? */ struct objfile *objfile; /* objfile for loaded lib */ @@ -65,12 +64,30 @@ struct so_list struct target_so_ops { - CORE_ADDR (*lm_addr) (struct so_list *so); + /* Adjust the section binding addresses by the base address at + which the object was actually mapped. */ + void (*relocate_section_addresses) (struct so_list *so, + struct section_table *); + + /* Free the the link map info and any other private data + structures associated with a so_list entry. */ void (*free_so) (struct so_list *so); + + /* Reset or free private data structures not associated with + so_list entries. */ void (*clear_solib) (void); + + /* Target dependent code to run after child process fork. */ void (*solib_create_inferior_hook) (void); + + /* Do additional symbol handling, lookup, etc. after symbols + for a shared object have been loaded. */ void (*special_symbol_handling) (void); + + /* Construct a list of the currently loaded shared objects. */ struct so_list *(*current_sos) (void); + + /* Find, open, and read the symbols for the main executable. */ int (*open_symbol_file_object) (void *from_ttyp); }; @@ -79,7 +96,8 @@ void free_so (struct so_list *so); /* FIXME: gdbarch needs to control this variable */ extern struct target_so_ops *current_target_so_ops; -#define TARGET_SO_LM_ADDR (current_target_so_ops->lm_addr) +#define TARGET_SO_RELOCATE_SECTION_ADDRESSES \ + (current_target_so_ops->relocate_section_addresses) #define TARGET_SO_FREE_SO (current_target_so_ops->free_so) #define TARGET_SO_CLEAR_SOLIB (current_target_so_ops->clear_solib) #define TARGET_SO_SOLIB_CREATE_INFERIOR_HOOK \ |