This is the mail archive of the gdb@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]

Re: Assertion Fail: FDE != NULL in Cyclops64


>>>>> "Brian" == Brian Heilig <bheilig@etinternational.com> writes:

Brian> I am receiving an assertion violation, "fde != NULL" on my Cyclops64
Brian> system. This occurs in the function "dwarf2_frame" in "dwarf2_frame.c"
Brian> while attempting to single step through memmove.

Brian> I found that memmove (and other functions) were not compiled with debug
Brian> information. Since these were hand optimized routines in assembly it
Brian> would be very difficult to add debugging information.

Brian> On a plain Linux test I get "Single stepping until exit from function
Brian> foo, which has no line number information." That's what my Cyclops64
Brian> system should do.

Brian> When I perform a readelf on my Cyclops64 executable there are holes in
Brian> the .debug_frame section where memmove (and the others) should be. It
Brian> looks like gdb assumes there are no holes, so I'm guessing the problem
Brian> is somewhere in my tool chain. Can someone direct me to the right spot?

I am not overly familiar with this code, but I think the logic behind
this assert is that we should only end up in dwarf2_frame_cache if a
DWARF frame was detected, and the DWARF frame sniffers use
dwarf2_frame_find_fde to decide whether this happened.

In other words, if the assert trips then that means there is some kind
of bug in gdb -- because dwarf2_frame_find_fde returned different
results for the same PC.

I would probably start by putting a breakpoint in dwarf2_frame_sniffer
to see what happens there, or maybe by finding out where the frame comes
from in dwarf2_frame_cache.

Tom


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