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: [PATCH] solib-svr4: Avoid unwanted shlib internal BPs When debugging Linux kernel or u-boot

On 06/01/2012 04:01 PM, Joakim Tjernlund wrote:

> gdb mistakenly inserts a special shared library BP even though
> there area no such libs in either linux or u-boot.
> Fix by testing for presence.

Thanks.  I've ran it through the testsuite just in case; no regressions.

Anyone know of any reason we shouldn't put this in?  I don't know the
history of these particular fallbacks, and don't know which hosts or
conditions might need them.  I've found this as further back as
around gdb-4.9 (1993), where we had:

/* On SVR4 systems, for the initial implementation, use some runtime startup
   symbol as the "startup mapping complete" breakpoint address.  The models
   for SunOS and SVR4 dynamic linking debugger support are different in that
   SunOS hits one breakpoint when all mapping is complete while using the SVR4
   debugger support takes two breakpoint hits for each file mapped, and
   there is no way to know when the "last" one is hit.  Both these
   mechanisms should be tied to a "breakpoint service routine" that
   gets automatically executed whenever one of the breakpoints indicating
   a change in mapping is hit.  This is a future enhancement.  (FIXME) */

#define BKPT_AT_SYMBOL 1

#if defined (BKPT_AT_SYMBOL) && defined (SVR4_SHARED_LIBS)
static char *bkpt_names[] = {
  SOLIB_BKPT_NAME,              /* Prefer configured name if it exists. */

and at that point solib.c was a mess used by both SVR4 and a.out SunOS.

(Incidentally, the present solib-sunos.c is only really used on a.out BSD
targets, not by Solaris.)

I've written a ChangeLog entry for you.  Please see the gdb/CONTRIBUTE
for the next time.  Thanks.

2012-06-01  Joakim Tjernlund  <>

	* solib-svr4.c (enable_break): Don't fallback to setting the solib
	event breakpoint at _start, __start or main if a program
	interpreter is not found.

diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c
index bd0141a..307e483 100644
--- a/gdb/solib-svr4.c
+++ b/gdb/solib-svr4.c
@@ -1707,7 +1707,7 @@ enable_break (struct svr4_info *info, int from_tty)

-  if (!current_inferior ()->attach_flag)
+  if (interp_name != NULL && !current_inferior ()->attach_flag)
       for (bkpt_namep = bkpt_names; *bkpt_namep != NULL; bkpt_namep++)

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