I have removed the previous attempts from the bug tracker and am starting over with this one. :ADDPATCH PowerPC-64: The problem: On PowerPC-64, with 64-bit executables, GDB has been giving this message for a while: warning: Unable to find dynamic linker breakpoint function. GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code. This is because "enable_break()" in solib-svr4.c was looking for the symbol "._dl_debug_state" in the 64-bit dynamic loader and not finding it. This should not be a surprise because these 'dot' symbols have not been generated by the linker for a while. The reason that the non-'dot' symbol was also passed by is that it points into a data section and the existing code only checked code sections. The fix: I changed the local routine bfd_lookup_symbol() and the call to it so that the symbol is looked for in both code and data sections. If we find a symbol in a code section, we're done: we have an address where we can set the breakpoint. If we find a symbol in a data section, then we must be on a system that uses function descriptors. Again we're done: we just use the address of the function descriptor and depend on adjust_breakpoint() to do the right thing. Doing things this way means we can forget that there ever where 'dot' symbols (at least in this case). Of course for this to work, adjust_breakpoint must do the right thing. I believe it does for architectures that use function descriptors, except for ppc-32. The reason ppc-32 was being ignored was that its function descriptors where executable and we could pretend that the function address pointed to it's entry point. But now, with the new "secure PLT's" feature, ppc-32 function descriptors can be in a data section. With this new type of ppc-32 function descriptor, adjust_breakpoint must get involved and know how to "dereference" them. So I changed ppc64_linux_convert_from_func_ptr_addr() to just ppc_linux_convert_from_func_ptr_addr() and taught it how to deal with ppc-32 function descriptors, using the word size to know which it's dealing with: ppc-32 or ppc-64. I also needed to change ppc_linux_init_abi so that the newly updated ppc_linux_convert_from_func_ptr_addr() would be plugged into "gdbarch_convert_from_func_ptr_addr" for both ppc-64 and ppc-32. I have attached the patch: OK to commit? -=# Paul #=- PS: In a previous reincarnation of this patch, rs6000-tdep.c was modified, but that is not needed with this version.