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]
Other format: [Raw text]

Re: [RFC] Unconditionally include shared library code


ar.sibelius.xs4all.nl (root@elgar.sibelius.xs4all.nl [192.168.0.2])
	by sibelius.xs4all.nl (8.13.0/8.13.0) with ESMTP id j48LkCpZ015976;
	Sun, 8 May 2005 23:46:12 +0200 (CEST)
Received: from elgar.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1])
	by elgar.sibelius.xs4all.nl (8.13.4/8.13.3) with ESMTP id j48LkCXv027024;
	Sun, 8 May 2005 23:46:12 +0200 (CEST)
Received: (from kettenis@localhost)
	by elgar.sibelius.xs4all.nl (8.13.4/8.13.4/Submit) id j48Lk8TZ022794;
	Sun, 8 May 2005 23:46:08 +0200 (CEST)
Date: Sun, 8 May 2005 23:46:08 +0200 (CEST)
Message-Id: <200505082146.j48Lk8TZ022794@elgar.sibelius.xs4all.nl>
From: Mark Kettenis <mark.kettenis@xs4all.nl>
To: drow@false.org
CC: gdb-patches@sources.redhat.com
In-reply-to: <20050508145627.GA9122@nevyn.them.org> (message from Daniel
	Jacobowitz on Sun, 8 May 2005 10:56:27 -0400)
Subject: Re: [RFC] Unconditionally include shared library code
References: <200505021251.j42CpxIZ010109@elgar.sibelius.xs4all.nl> <200505081315.j48DF8AG030440@elgar.sibelius.xs4all.nl> <20050508135839.GA7384@nevyn.them.org> <200505081421.j48ELoGI020668@elgar.sibelius.xs4all.nl> <20050508144020.GA8650@nevyn.them.org> <200505081451.j48EpPTO013691@elgar.sibelius.xs4all.nl> <20050508145627.GA9122@nevyn.them.org>

   Date: Sun, 8 May 2005 10:56:27 -0400
   From: Daniel Jacobowitz <drow@false.org>

   On Sun, May 08, 2005 at 04:51:25PM +0200, Mark Kettenis wrote:
   > Hmm, that'd work.  We'll have to face the inconsistent interface issue
   > eventually, but it's a seperate issue indeed.  Any objection if I
   > introduce a config/tm-solib.h and use that?  Its purpose is a bit more
   > clear, and the risk of abuse is smaller.  The mechanical update is not
   > without risk, but I'm willing to take it.  Deal?

   I like it.  It is indeed a tm file and shouldn't be used any other way.

I reworked the patch to avoid shlib.[ch].  Looking at the changes I
think the risk of changing solib.h into tm-solib.h under config/ is
riskier than leaving config/ alone and simply removing the #defines
from solib.h.  I'm moving towards checking in the attached patch at
the end of the coming week.

Mark


Index: ChangeLog
from  Mark Kettenis  <kettenis@gnu.org>

	* solib.h (CLEAR_SOLIB, SOLIB_ADD)
	(SOLIB_CREATE_INFERIOR_HOOK, SOLIB_REMOVE_INFERIOR_HOOK)
	(SOLIB_IN_DYNAMIC_LINKER, SOLIB_RESTART)
	(DISABLE_UNSETTABLE_BREAK, PC_SOLIB)
	(IN_SOLIB_DYNSYM_RESOLVE_CODE): Remove defines and orphaned
	comments.
	* breakpoint.c: Include "solib.h".
	(insert_bp_location) [!DISABLE_UNSETTABLE_BREAK]: Call
	solib_address.
	(remove_solib_event_breakpoints, create_solib_event_breakpoint)
	(disable_breakpoints_in_shlibs)
	(disable_breakpoints_in_unloaded_shlib)
	(re_enable_breakpoints_in_shlibs): Compile if SOLIB_ADD isn't
	defined. If PC_SOLIB isn't defined, call solib_address.
	(_initialize_breakpoint): Unconditionally install observer.
	* corelow.c: Include "solib.h".
	[SOLIB_ADD] (solib_add_stub): Remove prototype.
	(core_close) [!CLEAR_SOLIB]: Call clear_solib.
	(solib_add_stub) [!SOLIB_ADD] Call solib_add.
	(core_open): Unconditionally call solib_add_stub.
	* fork-child.c: Include "solib.h".
	(fork_inferior) [!SOLIB_CREATE_INFERIOR_HOOK]: Call
	solib_create_inferior_hook.
	* infcmd.c: Include "solib.h".
	(attach_command) [!SOLIB_ADD]: Call shlib_rescan.  Unconditionally
	call re_enable_breakpoints_in_shlibs.
	* infrun.c: Include "solib.h".
	(SOLIB_IN_SYNSYM_RESOLVE_CODE): Don't define if not already
	defined.
	(stop_on_solib_events, show_stop_on_solib_events): Include
	unconditionally.
	(follow_exec) [!SOLIB_CREATE_INFERIOR_HOOK]: Call
	solib_create_inferior_hook.
	(handle_inferior_event) [!SOLIB_ADD]: Call shlib_add.
	[!IN_SOLIB_DYNSYM_RESOLVE_CODE]: Call in_solib_dynsym_resolve_code.
	(_initialize_infrun): Unconditionally add "stop_on_solib-events"
	command.
	* remote.c: Include "solib.h".
	(remote_open_1): Unconditionally call no_shared_libraries.
	[!SOLIB_CREATE_INFERIOR_HOOK] Call solib_create_inferior_hook.
	* stack.c: Include "solib.h".
	(print_frame) [!PC_SOLIB] Call shlib_for_pc.
	* xcoffsolib.c (no_shared_libraries): Remove function.
	* Makefile.in (SFILES): Add solib.c.
	(ALLDEPFILES): Remove solib.c.
	(COMMON_OBS): Add solib.o.
	(breakpoint.o, corelow.o, fork-chiled.o, infcmd.o, infrun.o)
	(remote.o, stack.o): Update dependencies.

Index: solib.h
===================================================================
RCS file: /cvs/src/src/gdb/solib.h,v
retrieving revision 1.14
diff -u -p -r1.14 solib.h
--- solib.h 14 Jan 2005 02:04:02 -0000 1.14
+++ solib.h 8 May 2005 21:38:11 -0000
@@ -30,15 +30,10 @@ struct target_ops;
 /* Called when we free all symtabs, to free the shared library information
    as well. */
 
-#define CLEAR_SOLIB			clear_solib
-
 extern void clear_solib (void);
 
 /* Called to add symbols from a shared library to gdb's symbol table. */
 
-#define SOLIB_ADD(filename, from_tty, targ, readsyms) \
-    solib_add (filename, from_tty, targ, readsyms)
-
 extern void solib_add (char *, int, struct target_ops *, int);
 extern int solib_read_symbols (struct so_list *, int);
 
@@ -47,64 +42,16 @@ extern int solib_read_symbols (struct so
    addresses to which they are linked, and sufficient information to
    read in their symbols at a later time.  */
 
-#define SOLIB_CREATE_INFERIOR_HOOK(PID)	solib_create_inferior_hook ()
-
-/* Function to be called to remove the connection between debugger and
-   dynamic linker that was established by SOLIB_CREATE_INFERIOR_HOOK.
-   (This operation does not remove shared library information from
-   the debugger, as CLEAR_SOLIB does.)
-
-   This functionality is presently not implemented for this target.
- */
-#define SOLIB_REMOVE_INFERIOR_HOOK(PID) (0)
-
-extern void solib_create_inferior_hook (void);	/* solib.c */
-
-/* This function returns TRUE if pc is the address of an instruction that
-   lies within the dynamic linker (such as the event hook, or the dld
-   itself).
-
-   This function must be used only when a dynamic linker event has been
-   caught, and the inferior is being stepped out of the hook, or undefined
-   results are guaranteed.
-
-   Presently, this functionality is not implemented.
- */
-
-/*
-   #define SOLIB_IN_DYNAMIC_LINKER(pid,pc) \
-   error("catch of library loads/unloads not yet implemented on this platform")
- */
-
-#define SOLIB_IN_DYNAMIC_LINKER(pid,pc) \
-(0)
-
-/* This function must be called when the inferior is killed, and the program
-   restarted.  This is not the same as CLEAR_SOLIB, in that it doesn't discard
-   any symbol tables.
-
-   Presently, this functionality is not implemented.
- */
-#define SOLIB_RESTART() \
-  (0)
-
-/* If we can't set a breakpoint, and it's in a shared library, just
-   disable it.  */
-
-#define DISABLE_UNSETTABLE_BREAK(addr)	(solib_address(addr) != NULL)
-
-extern char *solib_address (CORE_ADDR);	/* solib.c */
+extern void solib_create_inferior_hook (void);
 
 /* If ADDR lies in a shared library, return its name.  */
 
-#define PC_SOLIB(addr)	solib_address (addr)
+extern char *solib_address (CORE_ADDR);
 
 /* Return 1 if PC lies in the dynamic symbol resolution code of the
    run time loader.  */
 
-#define IN_SOLIB_DYNSYM_RESOLVE_CODE(pc) in_solib_dynsym_resolve_code (pc)
-
-extern int in_solib_dynsym_resolve_code (CORE_ADDR);	/* solib.c */
+extern int in_solib_dynsym_resolve_code (CORE_ADDR);
 
 /* Discard symbols that were auto-loaded from shared libraries. */
 
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.213
diff -u -p -r1.213 breakpoint.c
--- breakpoint.c 26 Apr 2005 05:03:35 -0000 1.213
+++ breakpoint.c 8 May 2005 21:38:16 -0000
@@ -49,6 +49,7 @@
 #include "cli/cli-script.h"
 #include "gdb_assert.h"
 #include "block.h"
+#include "solib.h"
 #include "solist.h"
 #include "observer.h"
 #include "exceptions.h"
@@ -853,8 +854,13 @@ insert_bp_location (struct bp_location *
       if (val)
 	{
 	  /* Can't set the breakpoint.  */
+	  if (
 #if defined (DISABLE_UNSETTABLE_BREAK)
-	  if (DISABLE_UNSETTABLE_BREAK (bpt->address))
+	      DISABLE_UNSETTABLE_BREAK (bpt->address)
+#else
+	      solib_address (bpt->address)
+#endif
+	      )
 	    {
 	      /* See also: disable_breakpoints_in_shlibs. */
 	      val = 0;
@@ -872,7 +878,6 @@ insert_bp_location (struct bp_location *
 				  "breakpoint #%d\n", bpt->owner->number);
 	    }
 	  else
-#endif
 	    {
 #ifdef ONE_PROCESS_WRITETEXT
 	      *process_warning = 1;
@@ -4330,7 +4335,6 @@ resolve_pending_breakpoint (struct break
   return rc;
 }
 
-#ifdef SOLIB_ADD
 void
 remove_solib_event_breakpoints (void)
 {
@@ -4362,12 +4366,14 @@ disable_breakpoints_in_shlibs (int silen
   /* See also: insert_breakpoints, under DISABLE_UNSETTABLE_BREAK. */
   ALL_BREAKPOINTS (b)
   {
-#if defined (PC_SOLIB)
-    if (((b->type == bp_breakpoint) ||
-	 (b->type == bp_hardware_breakpoint)) &&
-	breakpoint_enabled (b) &&
-	!b->loc->duplicate &&
-	PC_SOLIB (b->loc->address))
+    if (((b->type == bp_breakpoint) || (b->type == bp_hardware_breakpoint))
+	&& breakpoint_enabled (b) && !b->loc->duplicate
+#ifdef PC_SOLIB
+	&& PC_SOLIB (b->loc->address)
+#else
+	&& solib_address (b->loc->address)
+#endif
+	)
       {
 	b->enable_state = bp_shlib_disabled;
 	if (!silent)
@@ -4381,7 +4387,6 @@ disable_breakpoints_in_shlibs (int silen
 	    warning (_("breakpoint #%d "), b->number);
 	  }
       }
-#endif
   }
 }
 
@@ -4394,18 +4399,19 @@ disable_breakpoints_in_unloaded_shlib (s
   struct breakpoint *b;
   int disabled_shlib_breaks = 0;
 
-#if defined (PC_SOLIB)
   /* See also: insert_breakpoints, under DISABLE_UNSETTABLE_BREAK.  */
   ALL_BREAKPOINTS (b)
   {
     if ((b->loc->loc_type == bp_loc_hardware_breakpoint
 	|| b->loc->loc_type == bp_loc_software_breakpoint)
-	&& breakpoint_enabled (b) 
-	&& !b->loc->duplicate)
+	&& breakpoint_enabled (b) && !b->loc->duplicate)
       {
+#ifdef PC_SOLIB
 	char *so_name = PC_SOLIB (b->loc->address);
-	if (so_name 
-	    && !strcmp (so_name, solib->so_name))
+#else
+	char *so_name = solib_address (b->loc->address);
+#endif
+	if (so_name && !strcmp (so_name, solib->so_name))
           {
 	    b->enable_state = bp_shlib_disabled;
 	    /* At this point, we cannot rely on remove_breakpoint
@@ -4422,7 +4428,6 @@ disable_breakpoints_in_unloaded_shlib (s
 	  }
       }
   }
-#endif
 }
 
 /* Try to reenable any breakpoints in shared libraries.  */
@@ -4437,9 +4442,13 @@ re_enable_breakpoints_in_shlibs (void)
       {
 	char buf[1], *lib;
 	
-	/* Do not reenable the breakpoint if the shared library
-	   is still not mapped in.  */
+	/* Do not reenable the breakpoint if the shared library is
+	   still not mapped in.  */
+#ifdef PC_SOLIB
 	lib = PC_SOLIB (b->loc->address);
+#else
+	lib = solib_address (b->loc->address);
+#endif
 	if (lib != NULL && target_read_memory (b->loc->address, buf, 1) == 0)
 	  b->enable_state = bp_enabled;
       }
@@ -4451,8 +4460,6 @@ re_enable_breakpoints_in_shlibs (void)
   }
 }
 
-#endif
-
 static void
 solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname,
 		     char *cond_string, enum bptype bp_kind)
@@ -7632,9 +7639,7 @@ _initialize_breakpoint (void)
   static struct cmd_list_element *breakpoint_show_cmdlist;
   struct cmd_list_element *c;
 
-#ifdef SOLIB_ADD
   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
-#endif
 
   breakpoint_chain = 0;
   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
Index: corelow.c
===================================================================
RCS file: /cvs/src/src/gdb/corelow.c,v
retrieving revision 1.48
diff -u -p -r1.48 corelow.c
--- corelow.c 1 May 2005 19:58:52 -0000 1.48
+++ corelow.c 8 May 2005 21:38:16 -0000
@@ -46,6 +46,7 @@
 #include "observer.h"
 #include "gdb_assert.h"
 #include "exceptions.h"
+#include "solib.h"
 
 #ifndef O_BINARY
 #define O_BINARY 0
@@ -73,10 +74,6 @@ struct gdbarch *core_gdbarch = NULL;
 
 static void core_files_info (struct target_ops *);
 
-#ifdef SOLIB_ADD
-static int solib_add_stub (void *);
-#endif
-
 static struct core_fns *sniff_core_bfd (bfd *);
 
 static int gdb_check_format (bfd *);
@@ -212,6 +209,8 @@ core_close (int quitting)
          comments in clear_solib in solib.c. */
 #ifdef CLEAR_SOLIB
       CLEAR_SOLIB ();
+#else
+      clear_solib ();
 #endif
 
       name = bfd_get_filename (core_bfd);
@@ -237,18 +236,20 @@ core_close_cleanup (void *ignore)
   core_close (0/*ignored*/);
 }
 
-#ifdef SOLIB_ADD
 /* Stub function for catch_errors around shared library hacking.  FROM_TTYP
    is really an int * which points to from_tty.  */
 
 static int
 solib_add_stub (void *from_ttyp)
 {
+#ifdef SOLIB_ADD
   SOLIB_ADD (NULL, *(int *) from_ttyp, &current_target, auto_solib_add);
+#else
+  solib_add (NULL, *(int *)from_ttyp, &current_target, auto_solib_add);
+#endif
   re_enable_breakpoints_in_shlibs ();
   return 0;
 }
-#endif /* SOLIB_ADD */
 
 /* Look for sections whose names start with `.reg/' so that we can extract the
    list of threads in a core file.  */
@@ -396,10 +397,7 @@ core_open (char *filename, int from_tty)
       target_fetch_registers (-1);
 
       /* Add symbols and section mappings for any shared libraries.  */
-#ifdef SOLIB_ADD
-      catch_errors (solib_add_stub, &from_tty, (char *) 0,
-		    RETURN_MASK_ALL);
-#endif
+      catch_errors (solib_add_stub, &from_tty, (char *) 0, RETURN_MASK_ALL);
 
       /* Now, set up the frame cache, and print the top of stack.  */
       flush_cached_frames ();
Index: fork-child.c
===================================================================
RCS file: /cvs/src/src/gdb/fork-child.c,v
retrieving revision 1.25
diff -u -p -r1.25 fork-child.c
--- fork-child.c 11 Feb 2005 18:13:49 -0000 1.25
+++ fork-child.c 8 May 2005 21:38:16 -0000
@@ -33,6 +33,7 @@
 #include "terminal.h"
 #include "gdbthread.h"
 #include "command.h" /* for dont_repeat () */
+#include "solib.h"
 
 #include <signal.h>
 
@@ -404,6 +405,8 @@ fork_inferior (char *exec_file_arg, char
 
 #ifdef SOLIB_CREATE_INFERIOR_HOOK
   SOLIB_CREATE_INFERIOR_HOOK (pid);
+#else
+  solib_create_inferior_hook ();
 #endif
 }
 
Index: infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.136
diff -u -p -r1.136 infcmd.c
--- infcmd.c 8 Mar 2005 22:17:34 -0000 1.136
+++ infcmd.c 8 May 2005 21:38:17 -0000
@@ -44,6 +44,7 @@
 #include "regcache.h"
 #include "reggroups.h"
 #include "block.h"
+#include "solib.h"
 #include <ctype.h>
 #include "gdb_assert.h"
 
@@ -1805,6 +1806,8 @@ attach_command (char *args, int from_tty
   */
 #ifdef CLEAR_SOLIB
       CLEAR_SOLIB ();
+#else
+      clear_solib ();
 #endif
 
   target_attach (args, from_tty);
@@ -1864,8 +1867,10 @@ attach_command (char *args, int from_tty
 #ifdef SOLIB_ADD
   /* Add shared library symbols from the newly attached process, if any.  */
   SOLIB_ADD ((char *) 0, from_tty, &current_target, auto_solib_add);
-  re_enable_breakpoints_in_shlibs ();
+#else
+  solib_add (NULL, from_tty, &current_target, auto_solib_add);
 #endif
+  re_enable_breakpoints_in_shlibs ();
 
   /* Take any necessary post-attaching actions for this platform.
    */
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.200
diff -u -p -r1.200 infrun.c
--- infrun.c 2 May 2005 23:56:36 -0000 1.200
+++ infrun.c 8 May 2005 21:38:20 -0000
@@ -45,6 +45,8 @@
 #include "value.h"
 #include "observer.h"
 #include "language.h"
+#include "solib.h"
+
 #include "gdb_assert.h"
 
 /* Prototypes for local functions */
@@ -160,10 +162,6 @@ show_debug_infrun (struct ui_file *file,
    signalling an error, which will obscure the change in the
    inferior's state.  */
 
-#ifndef IN_SOLIB_DYNSYM_RESOLVE_CODE
-#define IN_SOLIB_DYNSYM_RESOLVE_CODE(pc) 0
-#endif
-
 /* This function returns TRUE if pc is the address of an instruction
    that lies within the dynamic linker (such as the event hook, or the
    dld itself).
@@ -253,7 +251,6 @@ static struct symbol *step_start_functio
 
 static int trap_expected;
 
-#ifdef SOLIB_ADD
 /* Nonzero if we want to give control to the user when we're notified
    of shared library events by the dynamic linker.  */
 static int stop_on_solib_events;
@@ -264,7 +261,6 @@ show_stop_on_solib_events (struct ui_fil
   fprintf_filtered (file, _("Stopping for shared library events is %s.\n"),
 		    value);
 }
-#endif
 
 /* Nonzero means expecting a trace trap
    and should stop the inferior and return silently when it happens.  */
@@ -448,6 +444,8 @@ follow_exec (int pid, char *execd_pathna
 #endif
 #ifdef SOLIB_CREATE_INFERIOR_HOOK
   SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
+#else
+  solib_create_inferior_hook ();
 #endif
 
   /* Reinsert all breakpoints.  (Those which were symbolic have
@@ -2132,7 +2130,6 @@ process_event_stop_test:
 
       case BPSTAT_WHAT_CHECK_SHLIBS:
       case BPSTAT_WHAT_CHECK_SHLIBS_RESUME_FROM_HOOK:
-#ifdef SOLIB_ADD
 	{
           if (debug_infrun)
 	    fprintf_unfiltered (gdb_stdlog, "infrun: BPSTATE_WHAT_CHECK_SHLIBS\n");
@@ -2163,7 +2160,11 @@ process_event_stop_test:
 	     exec/process stratum, instead relying on the target stack
 	     to propagate relevant changes (stop, section table
 	     changed, ...) up to other layers.  */
+#ifdef SOLIB_ADD
 	  SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
+#else
+	  solib_add (NULL, 0, &current_target, auto_solib_add);
+#endif
 	  target_terminal_inferior ();
 
 	  /* Try to reenable shared library breakpoints, additional
@@ -2222,7 +2223,6 @@ process_event_stop_test:
 	      break;
 	    }
 	}
-#endif
 	break;
 
       case BPSTAT_WHAT_LAST:
@@ -2311,7 +2311,12 @@ process_event_stop_test:
      until we exit the run time loader code and reach the callee's
      address.  */
   if (step_over_calls == STEP_OVER_UNDEBUGGABLE
-      && IN_SOLIB_DYNSYM_RESOLVE_CODE (stop_pc))
+#ifdef IN_SOLIB_DYNSYM_RESOLVE_CODE
+      && IN_SOLIB_DYNSYM_RESOLVE_CODE (stop_pc)
+#else
+      && in_solib_dynsym_resolve_code (stop_pc)
+#endif
+      )
     {
       CORE_ADDR pc_after_resolver =
 	gdbarch_skip_solib_resolver (current_gdbarch, stop_pc);
@@ -2395,7 +2400,13 @@ process_event_stop_test:
       if (real_stop_pc != 0)
 	ecs->stop_func_start = real_stop_pc;
 
-      if (IN_SOLIB_DYNSYM_RESOLVE_CODE (ecs->stop_func_start))
+      if (
+#ifdef IN_SOLIB_DYNSYM_RESOLVE_CODE
+	  IN_SOLIB_DYNSYM_RESOLVE_CODE (ecs->stop_func_start)
+#else
+	  in_solib_dynsym_resolve_code (ecs->stop_func_start)
+#endif
+)
 	{
 	  struct symtab_and_line sr_sal;
 	  init_sal (&sr_sal);
@@ -3919,7 +3930,6 @@ When non-zero, inferior specific debuggi
   signal_stop[TARGET_SIGNAL_CANCEL] = 0;
   signal_print[TARGET_SIGNAL_CANCEL] = 0;
 
-#ifdef SOLIB_ADD
   add_setshow_zinteger_cmd ("stop-on-solib-events", class_support,
 			    &stop_on_solib_events, _("\
 Set stopping for shared library events."), _("\
@@ -3930,7 +3940,6 @@ to the user would be loading/unloading o
 			    NULL,
 			    show_stop_on_solib_events,
 			    &setlist, &showlist);
-#endif
 
   add_setshow_enum_cmd ("follow-fork-mode", class_run,
 			follow_fork_mode_kind_names,
Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.188
diff -u -p -r1.188 remote.c
--- remote.c 1 May 2005 19:58:54 -0000 1.188
+++ remote.c 8 May 2005 21:38:23 -0000
@@ -42,6 +42,7 @@
 #include "value.h"
 #include "gdb_assert.h"
 #include "observer.h"
+#include "solib.h"
 
 #include <ctype.h>
 #include <sys/time.h>
@@ -2258,10 +2259,8 @@ remote_open_1 (char *name, int from_tty,
       wait_forever_enabled_p = 0;
     }
 
-#ifdef SOLIB_CREATE_INFERIOR_HOOK
   /* First delete any symbols previously loaded from shared libraries.  */
   no_shared_libraries (NULL, 0);
-#endif
 
   /* Start the remote connection.  If error() or QUIT, discard this
      target (we'd otherwise be in an inconsistent state) and then
@@ -2300,7 +2299,7 @@ remote_open_1 (char *name, int from_tty,
       putpkt ("!");
       getpkt (buf, (rs->remote_packet_size), 0);
     }
-#ifdef SOLIB_CREATE_INFERIOR_HOOK
+
   /* FIXME: need a master target_open vector from which all
      remote_opens can be called, so that stuff like this can
      go there.  Failing that, the following code must be copied
@@ -2310,10 +2309,13 @@ remote_open_1 (char *name, int from_tty,
   /* Set up to detect and load shared libraries.  */
   if (exec_bfd) 	/* No use without an exec file.  */
     {
+#ifdef SOLIB_CREATE_INFERIOR_HOOK
       SOLIB_CREATE_INFERIOR_HOOK (PIDGET (inferior_ptid));
+#else
+      solib_create_inferior_hook ();
+#endif
       remote_check_symbols (symfile_objfile);
     }
-#endif
 
   observer_notify_inferior_created (&current_target, from_tty);
 }
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.130
diff -u -p -r1.130 stack.c
--- stack.c 28 Feb 2005 17:00:49 -0000 1.130
+++ stack.c 8 May 2005 21:38:24 -0000
@@ -46,6 +46,7 @@
 #include "exceptions.h"
 #include "reggroups.h"
 #include "regcache.h"
+#include "solib.h"
 
 /* Prototypes for exported functions. */
 
@@ -686,10 +687,13 @@ print_frame (struct frame_info *fi, 
       annotate_frame_source_end ();
     }
 
-#ifdef PC_SOLIB
   if (!funname || (!sal.symtab || !sal.symtab->filename))
     {
+#ifdef PC_SOLIB
       char *lib = PC_SOLIB (get_frame_pc (fi));
+#else
+      char *lib = solib_address (get_frame_pc (fi));
+#endif
       if (lib)
 	{
 	  annotate_frame_where ();
@@ -698,7 +702,6 @@ print_frame (struct frame_info *fi, 
 	  ui_out_field_string (uiout, "from", lib);
 	}
     }
-#endif /* PC_SOLIB */
 
   /* do_cleanups will call ui_out_tuple_end() for us.  */
   do_cleanups (list_chain);
Index: xcoffsolib.c
===================================================================
RCS file: /cvs/src/src/gdb/xcoffsolib.c,v
retrieving revision 1.17
diff -u -p -r1.17 xcoffsolib.c
--- xcoffsolib.c 18 Feb 2005 15:25:31 -0000 1.17
+++ xcoffsolib.c 8 May 2005 21:38:24 -0000
@@ -157,24 +157,6 @@ sharedlibrary_command (char *pattern, in
   }
 }
 
-/* LOCAL FUNCTION
-
-   no_shared_libraries -- handle command to explicitly discard symbols
-   from shared libraries.
-
-   DESCRIPTION
-
-   Implements the command "nosharedlibrary", which discards symbols
-   that have been auto-loaded from shared libraries.  Symbols from
-   shared libraries that were added by explicit request of the user
-   are not discarded.  Also called from remote.c.  */
-
-void
-no_shared_libraries (char *ignored, int from_tty)
-{
-  /* FIXME */
-}
-
 void
 _initialize_xcoffsolib (void)
 {
Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.726
diff -u -p -r1.726 Makefile.in
--- Makefile.in 2 May 2005 12:05:11 -0000 1.726
+++ Makefile.in 8 May 2005 21:38:27 -0000
@@ -545,7 +545,8 @@ SFILES = ada-exp.y ada-lang.c ada-typepr
 	regcache.c reggroups.c remote.c remote-fileio.c \
 	scm-exp.c scm-lang.c scm-valprint.c \
 	sentinel-frame.c \
-	serial.c ser-base.c ser-unix.c source.c \
+	serial.c ser-base.c ser-unix.c \
+	solib.c solib-null.c source.c \
 	stabsread.c stack.c std-regs.c symfile.c symfile-mem.c symmisc.c \
 	symtab.c \
 	target.c thread.c top.c tracepoint.c \
@@ -938,7 +939,8 @@ COMMON_OBS = $(DEPFILES) $(YYOBJ) \
 	cp-namespace.o \
 	reggroups.o regset.o \
 	trad-frame.o \
-	tramp-frame.o
+	tramp-frame.o \
+	solib.o solib-null.o
 
 TSOBS = inflow.o
 
@@ -1436,7 +1438,7 @@ ALLDEPFILES = \
 	s390-tdep.c s390-nat.c \
 	ser-go32.c ser-pipe.c ser-tcp.c \
 	sh-tdep.c sh64-tdep.c shnbsd-tdep.c shnbsd-nat.c \
-	solib.c solib-irix.c solib-svr4.c solib-sunos.c \
+	solib-irix.c solib-svr4.c solib-sunos.c \
 	sparc-linux-tdep.c sparc-nat.c sparc-sol2-nat.c sparc-sol2-tdep.c \
 	sparc-tdep.c sparc-sol2-nat.c sparc-sol2-tdep.c sparc64-linux-nat.c \
 	sparc64-linux-tdep.c sparc64-nat.c sparc64-sol2-tdep.c \
@@ -1772,8 +1774,8 @@ breakpoint.o: breakpoint.c $(defs_h) $(s
 	$(command_h) $(inferior_h) $(gdbthread_h) $(target_h) $(language_h) \
 	$(gdb_string_h) $(demangle_h) $(annotate_h) $(symfile_h) \
 	$(objfiles_h) $(source_h) $(linespec_h) $(completer_h) $(gdb_h) \
-	$(ui_out_h) $(cli_script_h) $(gdb_assert_h) $(block_h) $(solist_h) \
-	$(observer_h) $(exceptions_h) $(gdb_events_h)
+	$(ui_out_h) $(cli_script_h) $(gdb_assert_h) $(block_h) $(solib_h) \
+	$(solist_h) $(observer_h) $(exceptions_h) $(gdb_events_h)
 bsd-kvm.o: bsd-kvm.c $(defs_h) $(cli_cmds_h) $(command_h) $(frame_h) \
 	$(regcache_h) $(target_h) $(value_h) $(gdbcore_h) $(gdb_assert_h) \
 	$(readline_h) $(bsd_kvm_h)
@@ -1821,7 +1823,7 @@ corelow.o: corelow.c $(defs_h) $(arch_ut
 	$(inferior_h) $(symtab_h) $(command_h) $(bfd_h) $(target_h) \
 	$(gdbcore_h) $(gdbthread_h) $(regcache_h) $(regset_h) $(symfile_h) \
 	$(exec_h) $(readline_h) $(observer_h) $(gdb_assert_h) \
-	$(exceptions_h)
+	$(exceptions_h) $(solib_h)
 core-regset.o: core-regset.c $(defs_h) $(command_h) $(gdbcore_h) \
 	$(inferior_h) $(target_h) $(gdb_string_h) $(gregset_h)
 cp-abi.o: cp-abi.c $(defs_h) $(value_h) $(cp_abi_h) $(command_h) $(gdbcmd_h) \
@@ -1938,7 +1940,7 @@ f-lang.o: f-lang.c $(defs_h) $(gdb_strin
 	$(valprint_h) $(value_h)
 fork-child.o: fork-child.c $(defs_h) $(gdb_string_h) $(frame_h) \
 	$(inferior_h) $(target_h) $(gdb_wait_h) $(gdb_vfork_h) $(gdbcore_h) \
-	$(terminal_h) $(gdbthread_h) $(command_h)
+	$(terminal_h) $(gdbthread_h) $(command_h) $(solib_h)
 frame-base.o: frame-base.c $(defs_h) $(frame_base_h) $(frame_h) \
 	$(gdb_obstack_h)
 frame.o: frame.c $(defs_h) $(frame_h) $(target_h) $(value_h) $(inferior_h) \
@@ -2108,7 +2110,7 @@ infcmd.o: infcmd.c $(defs_h) $(gdb_strin
 	$(symfile_h) $(gdbcore_h) $(target_h) $(language_h) $(symfile_h) \
 	$(objfiles_h) $(completer_h) $(ui_out_h) $(event_top_h) \
 	$(parser_defs_h) $(regcache_h) $(reggroups_h) $(block_h) \
-	$(gdb_assert_h)
+	$(solib_h) $(gdb_assert_h)
 inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(target_h) $(event_loop_h) \
 	$(event_top_h) $(inf_loop_h) $(remote_h) $(exceptions_h)
 inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
@@ -2124,7 +2126,7 @@ infrun.o: infrun.c $(defs_h) $(gdb_strin
 	$(inferior_h) $(exceptions_h) $(breakpoint_h) $(gdb_wait_h) \
 	$(gdbcore_h) $(gdbcmd_h) $(cli_script_h) $(target_h) $(gdbthread_h) \
 	$(annotate_h) $(symfile_h) $(top_h) $(inf_loop_h) $(regcache_h) \
-	$(value_h) $(observer_h) $(language_h) $(gdb_assert_h)
+	$(value_h) $(observer_h) $(language_h) $(solib_h) $(gdb_assert_h)
 inftarg.o: inftarg.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
 	$(gdbcore_h) $(command_h) $(gdb_stat_h) $(observer_h) $(gdb_wait_h) \
 	$(inflow_h)
@@ -2410,7 +2412,7 @@ remote.o: remote.c $(defs_h) $(gdb_strin
 	$(symfile_h) $(exceptions_h) $(target_h) $(gdbcmd_h) $(objfiles_h) \
 	$(gdb_stabs_h) $(gdbthread_h) $(remote_h) $(regcache_h) $(value_h) \
 	$(gdb_assert_h) $(event_loop_h) $(event_top_h) $(inf_loop_h) \
-	$(serial_h) $(gdbcore_h) $(remote_fileio_h) $(observer_h)
+	$(serial_h) $(gdbcore_h) $(remote_fileio_h) $(solib_h) $(observer_h)
 remote-e7000.o: remote-e7000.c $(defs_h) $(gdbcore_h) $(gdbarch_h) \
 	$(inferior_h) $(target_h) $(value_h) $(command_h) $(gdb_string_h) \
 	$(exceptions_h) $(gdbcmd_h) $(serial_h) $(remote_utils_h) \
@@ -2625,7 +2627,7 @@ stack.o: stack.c $(defs_h) $(gdb_string_
 	$(gdbcore_h) $(target_h) $(source_h) $(breakpoint_h) $(demangle_h) \
 	$(inferior_h) $(annotate_h) $(ui_out_h) $(block_h) $(stack_h) \
 	$(gdb_assert_h) $(dictionary_h) $(exceptions_h) $(reggroups_h) \
-	$(regcache_h)
+	$(regcache_h) $(solib_h)
 std-regs.o: std-regs.c $(defs_h) $(user_regs_h) $(frame_h) $(gdbtypes_h) \
 	$(value_h) $(gdb_string_h)
 stop-gdb.o: stop-gdb.c $(defs_h)


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