diff options
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/solib.c | 5 | ||||
-rw-r--r-- | gdb/solist.h | 8 |
3 files changed, 20 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d181a53..82ab0d3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2003-02-24 Kris Warkentin <kewarken@qnx.com> + * solib.c (solib_open): call target defined search function after + failing with solib-search-path + * solist.h (target_so_ops): add find_and_open_solib function hook, + create define TARGET_SO_FIND_AND_OPEN_SOLIB + +2003-02-24 Kris Warkentin <kewarken@qnx.com> + * MAINTAINERS: Add myself to Write After section 2003-02-23 Stephane Carrez <stcarrez@nerim.fr> diff --git a/gdb/solib.c b/gdb/solib.c index da71798..289b84f 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -160,6 +160,11 @@ solib_open (char *in_pathname, char **found_pathname) 1, lbasename (in_pathname), O_RDONLY, 0, &temp_pathname); + /* If not found, try to use target supplied solib search method */ + if (found_file < 0 && TARGET_SO_FIND_AND_OPEN_SOLIB != NULL) + found_file = TARGET_SO_FIND_AND_OPEN_SOLIB + (in_pathname, O_RDONLY, &temp_pathname); + /* If not found, next search the inferior's $PATH environment variable. */ if (found_file < 0 && solib_search_path != NULL) found_file = openp (get_in_environ (inferior_environ, "PATH"), diff --git a/gdb/solist.h b/gdb/solist.h index dd1100c..8e5c432 100644 --- a/gdb/solist.h +++ b/gdb/solist.h @@ -99,6 +99,12 @@ struct target_so_ops /* Determine if PC lies in the dynamic symbol resolution code of the run time loader */ int (*in_dynsym_resolve_code) (CORE_ADDR pc); + + /* Extra hook for finding and opening a solib. Convenience function + for remote debuggers finding host libs */ + int (*find_and_open_solib) (char *soname, + unsigned o_flags, char **temp_pathname); + }; void free_so (struct so_list *so); @@ -122,5 +128,7 @@ extern struct target_so_ops *current_target_so_ops; (current_target_so_ops->open_symbol_file_object) #define TARGET_SO_IN_DYNSYM_RESOLVE_CODE \ (current_target_so_ops->in_dynsym_resolve_code) +#define TARGET_SO_FIND_AND_OPEN_SOLIB \ + (current_target_so_ops->find_and_open_solib) #endif |