This is the mail archive of the 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: [rfc][patch] Eliminate quadratic slow-down on number of solibs.

Paul Pluzhnikov wrote:

> 2009-05-12  Paul Pluzhnikov  <>
> 	* breakpoint.h: Add breakpoint_re_set_objfile prototype.
> 	* breakpoint.c (create_overlay_event_breakpoint): Renamed
> 	from create_overlay_event_breakpoint_1, old
> 	create_overlay_event_breakpoint deleted.
> 	(breakpoint_re_set_objfile): Don't rescan all objfiles
> 	unnecessarily.
> 	(breakpoint_re_set): New function.
> 	* symfile.c (new_symfile_objfile): Call breakpoint_re_set_objfile
> 	instead of breakpoint_re_set.
> 	* objfiles.c (objfile_relocate): Likewise.

Maybe I'm missing something here, but this seems to break overlay
support.  Assume that _ovly_debug_event is defined in objfile A,
and breakpoint_re_set_objfile is called for objfile B.  The logic
in breakpoint_re_set_one will unconditionally delete all instances
of bp_overlay_event breakpoints, including the one in objfile A,
because it assumes they will be reset later.

However, after your change only objfile B is scanned for that symbol;
as it is not found there, the overlay event breakpoint will simply
not be reset.

I guess the situation for Cell/B.E. applications with multiple SPU
contexts would be even worse.  In this case, we have multiple objfiles
each defining its own instance of _ovly_debug_event, and for proper
operation of overlay debugging each of those instances need to carry
a breakpoint.

Before your patch, breakpoint_re_set would first delete all instances
of the overlay event breakpoint, and subsequently reset them all.
After your patch, breakpoint_re_set_objfile will *still* delete *all*
instances, but will subsequently reset at most one of them  ...

How is this supposed to work?  If you're going to reset only breakpoints
from one objfile, maybe you should likewise *delete* only breakpoints
from that objfile?


  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE

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