bfinish writes to random addresses.

Daniel Jacobowitz drow@false.org
Tue Jul 25 16:20:00 GMT 2006


On Tue, Jul 25, 2006 at 05:01:30PM +0100, Greg Law wrote:
> I guess one option would be to use a hardware breakpoint when setting 
> breakpoints based on such "derived" addresses.  At least that way it's 
> non-destructive if gdb gets it wrong.

Every address where GDB sets any breakpoint is "derived" in that sense.
And there aren't very many hardware breakpoints, if any.

> Having gdb check the return address looks like a sensible code address 
> might also be worthwhile.  Of course this will not fix all cases, 
> especially if the calculated return address happens to point into the 
> middle of an instruction.  But hopefully in reality most things that 
> look like pointers to code will actually be pointers to code, and so 
> properly aligned, and the breakpoint will just go to the wrong place, 
> rather than clobbering random data.

... Properly aligned?  You're talking about %ebp so I assume you're
talking about x86, and instructions have no alignment on this
architecture.

Warning when returning from something with a symbol to something
without a symbol is an interesting suggestion.  Does anyone else have
comments?  Should this warn?

(gdb) bt
#0 foo()
#1 0x4000000 in ???
(gdb) finish

-- 
Daniel Jacobowitz
CodeSourcery



More information about the Gdb mailing list