This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit/ia64] print minimal symbol's address correctly


Hello,

I discovered a recent regression on ia64 which is a combination of
two factors: 

  - A recent change that was made in write_exp_msymbol to add the conversion
    of the msymbol address from a function descriptor to the actual address.

  - A recent change in ia64_convert_from_func_ptr_addr that treated
    addresses pointing at non-executable sections as function descriptors.
    The intent of this change was to handle descriptors that are stored
    outside the .opd section (found during shared library handling).

Clearly, my change was introducing a heuristic, and the heuristic
was assuming that we knew that the address is pointing to a function
or its descriptor.  Unfortunately, this is not necessarily the case
when we're trying to print the address of a minimal symbol. The example
I stumbled on is trying to print the address of "constraint_error".
But there are several tests in our testsuite that now fail because
of this reason.

What I did was improve the heuristic a bit: If the address is inside
a non-executable section, then treat as a descriptor iff the target
address resides inside an executable section.

2008-05-28  Joel Brobecker  <brobecker@adacore.com>

        * ia64-tdep.c (ia64_convert_from_func_ptr_addr): Improve the heuristic
        that identifies function descriptors outside of the .opd section.

Tested on x86-linux; it fixes 20 regressions inside catch_ex.exp,
asm-source.exp and nodebug.exp. Checked in.

-- 
Joel

Attachment: ce.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]