This is the mail archive of the gdb-patches@sources.redhat.com 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]

Re: [5.1/breakpoint] shlib patch?


FYI,

I've checked in the attached. 5.1 and trunk.

Andrew
2001-11-11  Andrew Cagney  <ac131313@redhat.com>

	From Mark Kettenis  <kettenis@gnu.org>:
	* breakpoint.c (breakpoint_re_set_one): Don't discard SHLIB
	breakpoints when they fail.

Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.51.2.1
diff -p -r1.51.2.1 breakpoint.c
*** breakpoint.c	2001/08/02 12:05:56	1.51.2.1
--- breakpoint.c	2001/11/11 16:33:51
*************** breakpoint_re_set_one (PTR bint)
*** 7009,7018 ****
  	  delete_breakpoint (b);
  	  return 0;
  	}
!       /* In case we have a problem, disable this breakpoint.  We'll restore
!          its status if we succeed.  */
        save_enable = b->enable_state;
!       b->enable_state = bp_disabled;
  
        set_language (b->language);
        input_radix = b->input_radix;
--- 7009,7040 ----
  	  delete_breakpoint (b);
  	  return 0;
  	}
!       /* HACK: cagney/2001-11-11: kettenis/2001-11-11: MarkK wrote:
! 
! 	 ``And a hack it is, although Apple's Darwin version of GDB
! 	 contains an almost identical hack to implement a "future
! 	 break" command.  It seems to work in many real world cases,
! 	 but it is easy to come up with a test case where the patch
! 	 doesn't help at all.''
! 
! 	 ``It seems that the way GDB implements breakpoints - in -
! 	 shared - libraries was designed for a.out shared library
! 	 systems (SunOS 4) where shared libraries were loaded at a
! 	 fixed address in memory.  Since ELF shared libraries can (and
! 	 will) be loaded at any address in memory, things break.
! 	 Fixing this is not trivial.  Therefore, I'm not sure whether
! 	 we should add this hack to the branch only.  I cannot
! 	 guarantee that things will be fixed on the trunk in the near
! 	 future.''
! 
!          In case we have a problem, disable this breakpoint.  We'll
!          restore its status if we succeed.  Don't disable a
!          shlib_disabled breakpoint though.  There's a fair chance we
!          can't re-set it if the shared library it's in hasn't been
!          loaded yet.  */
        save_enable = b->enable_state;
!       if (b->enable_state != bp_shlib_disabled)
!         b->enable_state = bp_disabled;
  
        set_language (b->language);
        input_radix = b->input_radix;

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