added target specific solib find hook
This commit is contained in:
parent
07c6e93658
commit
2610b0bff4
3 changed files with 20 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
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>
|
2003-02-24 Kris Warkentin <kewarken@qnx.com>
|
||||||
|
|
||||||
* MAINTAINERS: Add myself to Write After section
|
* MAINTAINERS: Add myself to Write After section
|
||||||
|
|
|
@ -160,6 +160,11 @@ solib_open (char *in_pathname, char **found_pathname)
|
||||||
1, lbasename (in_pathname), O_RDONLY, 0,
|
1, lbasename (in_pathname), O_RDONLY, 0,
|
||||||
&temp_pathname);
|
&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 not found, next search the inferior's $PATH environment variable. */
|
||||||
if (found_file < 0 && solib_search_path != NULL)
|
if (found_file < 0 && solib_search_path != NULL)
|
||||||
found_file = openp (get_in_environ (inferior_environ, "PATH"),
|
found_file = openp (get_in_environ (inferior_environ, "PATH"),
|
||||||
|
|
|
@ -99,6 +99,12 @@ struct target_so_ops
|
||||||
/* Determine if PC lies in the dynamic symbol resolution code of
|
/* Determine if PC lies in the dynamic symbol resolution code of
|
||||||
the run time loader */
|
the run time loader */
|
||||||
int (*in_dynsym_resolve_code) (CORE_ADDR pc);
|
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);
|
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)
|
(current_target_so_ops->open_symbol_file_object)
|
||||||
#define TARGET_SO_IN_DYNSYM_RESOLVE_CODE \
|
#define TARGET_SO_IN_DYNSYM_RESOLVE_CODE \
|
||||||
(current_target_so_ops->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
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue