Made changes to shared library support and added more of the support needed

for AIX/IA-64.
This commit is contained in:
Kevin Buettner
2001-02-22 03:01:27 +00:00
parent 33d01f331b
commit d7fa2ae254
15 changed files with 471 additions and 22 deletions

View File

@@ -1085,24 +1085,28 @@ match_main (char *soname)
}
#ifdef SVR4_SHARED_LIBS
/* Return 1 if PC lies in the dynamic symbol resolution code of the
SVR4 run time loader. */
#ifdef SVR4_SHARED_LIBS
static CORE_ADDR interp_text_sect_low;
static CORE_ADDR interp_text_sect_high;
static CORE_ADDR interp_plt_sect_low;
static CORE_ADDR interp_plt_sect_high;
int
in_svr4_dynsym_resolve_code (CORE_ADDR pc)
static int
svr4_in_dynsym_resolve_code (CORE_ADDR pc)
{
return ((pc >= interp_text_sect_low && pc < interp_text_sect_high)
|| (pc >= interp_plt_sect_low && pc < interp_plt_sect_high)
|| in_plt_section (pc, NULL));
}
#endif
#else /* !SVR4_SHARED_LIBS */
static int
svr4_in_dynsym_resolve_code (CORE_ADDR pc)
{
return 0;
}
#endif /* SVR4_SHARED_LIBS */
/*
@@ -1303,7 +1307,7 @@ enable_break (void)
load_addr = read_pc () - tmp_bfd->start_address;
/* Record the relocated start and end address of the dynamic linker
text and plt section for in_svr4_dynsym_resolve_code. */
text and plt section for svr4_in_dynsym_resolve_code. */
interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
if (interp_sect)
{
@@ -1694,6 +1698,8 @@ _initialize_svr4_solib (void)
svr4_so_ops.special_symbol_handling = svr4_special_symbol_handling;
svr4_so_ops.current_sos = svr4_current_sos;
svr4_so_ops.open_symbol_file_object = open_symbol_file_object;
svr4_so_ops.open_symbol_file_object = open_symbol_file_object;
svr4_so_ops.in_dynsym_resolve_code = svr4_in_dynsym_resolve_code;
/* FIXME: Don't do this here. *_gdbarch_init() should set so_ops. */
current_target_so_ops = &svr4_so_ops;