Re: [PATCH] Fixes problem setting breakpoint in dynamic loader

Joseph S. Myers
2007-06-14T23:38:41Z

On Fri, 27 Apr 2007, Thiago Jung Bauermann wrote:

> Hi folks,
>
> This is a re-submission of:
>
> http://sourceware.org/ml/gdb-patches/2006-07/msg00264.html

This doesn't work properly for me. There seem to be at least two problems
with relying on the implicit conversion by
ppc_linux_convert_from_func_ptr_addr done when setting a breakpoint:

* ppc_linux_convert_from_func_ptr_addr relies on being able to find the
function descriptor address in a section table, but doesn't have current
information about the load address of ld.so which has only just been
determined in enable_break.

* The function descriptor in ld.so has not yet been relocated (as part of
ld.so applying relocations to itself) at the time this breakpoint is set.
So after the address is extracted from the function descriptor, the load
address of ld.so must be added to it again. (I think this provides an
answer to Andreas's question in
<http://sourceware.org/ml/gdb-patches/2006-07/msg00183.html>: the explicit
conversion is needed so that this relocation applies when load_addr gets
added to the address later before the breakpoint is set.)

I have a patch version partly based on the earlier revision
<http://sourceware.org/ml/gdb-patches/2006-07/msg00019.html> which does
set the breakpoint correctly, but I still have other GDB problems I'm
investigating with that patch applied.

--
Joseph S. Myers
joseph@codesourcery.com