From: Kris Warkentin Date: Mon, 24 Feb 2003 19:11:04 +0000 (+0000) Subject: added target specific solib find hook X-Git-Tag: binutils-2_14-branchpoint~722 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2610b0bff45198901e9816974317481c62d68e1e;p=platform%2Fupstream%2Fbinutils.git added target specific solib find hook --- 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 + * 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 + * MAINTAINERS: Add myself to Write After section 2003-02-23 Stephane Carrez 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