On Wed, 2006-05-24 at 22:26 -0400, Daniel Jacobowitz wrote: > On Wed, May 24, 2006 at 04:26:11PM -0700, PAUL GILLIAM wrote: > > + interp_sect = bfd_get_section_by_name (tmp_bfd, ".plt"); > > > + interp_sect = bfd_get_section_by_name (tmp_bfd, ".opd"); > > Magic names... These aren't magic: they are common to all 64-bit ELF ABIs. Well, ok: maybe they're enchanted. > > > + if (interp_sect != 0) > > + { > > + /* Try to convert the function descriptor we found above, into > > + the address we need. It will be relocated below by adding > > + "load_addr" to it. */ > > + char *buf = alloca (sizeof (LONGEST)); > > + if (bfd_get_section_contents (tmp_bfd, interp_sect, buf, > > + sym_addr - sect_offset, > > + sizeof (LONGEST))) > > + sym_addr = extract_unsigned_integer (buf, sizeof (LONGEST)); > > + else > > + sym_addr = 0; > > + } > > + } > > + > > ... and a magic load; you have no idea what the format of a function > descriptor is, at this point. > uffda! I'm afraid I was just a little bit ppc64-centric. > Can you make convert_from_func_ptr_addr do what you need? It needs a > target_ops; conveniently you've got one (tmp_bfd_target). Some targets > use a memory read function which honors the supplied target_ops, others > don't. rs6000's doesn't so you'd need to fix that. > Yes! Thank you: "gdbarch_convert_from_func_ptr_addr()" does exactly what I want. And while it's true that "rs6000_convert_from_func_ptr_addr()" does not use the target_ops, "ppc64_linux_convert_from_func_ptr_addr()" does and that is the version that is invoked on the configuration reporting the error I am trying to fix. I went ahead and converted "rs6000_convert_from_func_ptr_addr()" to use target_ops, but because I have no way to test the change, I thought it best to make it a separate patch. So is it OK to commit the solib-svr4.c patch? Does anyone want to test the rs6000-tdep.c patch and commit it? -=# Paul #=- PS: Uffda is the word a Swed would exclaim when examining the bottom of their shoe after stepping in a fresh cow-pie or after a similarly annoying event.