This is the mail archive of the gdb-patches@sourceware.org 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: Remove 'run cleanup chain'


Jim Blandy wrote:

> 
> Vladimir Prus <vladimir at codesourcery.com> writes:
>> GDB now has a special 'run cleanup chain', but it seems to
>> be not really needed.
>>
>> This cleanup chain is only used to call clear_solib in response
>> to 'run' command. However:
>>    - Just calling clear_solib is much simpler
>>    - We need to call clear_solib for attach, too, and it's done
>>    via direct call, so it's better to have run be similar to
>>    attach.
>>
>> There's comment in jv-lang.c that hints that the run cleanup can
>> be useful, but is broken, and the code containing the
>> comment is not actually used itself.
>>
>> So, it seems to me that carrying this general code for the
>> sake of a single client that is only complicated as result is not good,
>> here's a patch to remove run cleanup chain. OK?
> 
> This needs a ChangeLog entry.  :)

Thanks, the patch with ChangeLog entry that I've checked in is attached.

- Volodya



? .git
? 0001-Remove-CLEAR_SOLIB-use.patch
? 0002-Remove-run_cleanup.patch
? 0003-Prevent-clear_command-from-directly-modifying-breakp.patch
? A.diff
? clear_solib_final.diff
? run_cleanup_final.diff
Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/ChangeLog,v
retrieving revision 1.770
diff -u -p -r1.770 ChangeLog
--- ChangeLog	15 Nov 2007 06:14:25 -0000	1.770
+++ ChangeLog	15 Nov 2007 06:23:16 -0000
@@ -1,5 +1,20 @@
 2007-10-15  Vladimir Prus  <vladimir@codesourcery.com>
 
+	Remove 'run_cleanup'.
+	* defs.h (do_run_cleanups, make_run_cleanup): Remove
+	declarations.
+	* infcmd.c (run_command_1): Call clear_solib instead
+	of do_run_cleanups.
+	* jv-lang.c (java_rerun_cleanup): Remove, for lack of
+	any use.
+	* solib.c (solib_cleanup_queued, do_clear_solib): Remove.
+	(update_solib_lib): Don't setup run cleanup.
+	(no_shared_libraries): Call clear_solib, not do_clear_solib.
+	* utils.c (run_cleanup_chain, make_run_cleanup)
+	(do_run_cleanups): Remove.
+		
+2007-10-15  Vladimir Prus  <vladimir@codesourcery.com>
+
 	Remove CLEAR_SOLIB use.
 	* corelow.c (core_close): Don't check for CLEAR_SOLIB.
 	* infcmd.c (attach_command): Likewise.
Index: gdb/defs.h
===================================================================
RCS file: /cvs/src/src/gdb/defs.h,v
retrieving revision 1.210
diff -u -p -r1.210 defs.h
--- gdb/defs.h	13 Oct 2007 00:06:52 -0000	1.210
+++ gdb/defs.h	15 Nov 2007 06:23:17 -0000
@@ -347,7 +347,6 @@ extern char *safe_strerror (int);
 
 extern void do_cleanups (struct cleanup *);
 extern void do_final_cleanups (struct cleanup *);
-extern void do_run_cleanups (struct cleanup *);
 extern void do_exec_cleanups (struct cleanup *);
 extern void do_exec_error_cleanups (struct cleanup *);
 
@@ -383,8 +382,6 @@ extern struct cleanup *make_final_cleanu
 extern struct cleanup *make_my_cleanup (struct cleanup **,
 					make_cleanup_ftype *, void *);
 
-extern struct cleanup *make_run_cleanup (make_cleanup_ftype *, void *);
-
 extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
 extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
 
Index: gdb/infcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/infcmd.c,v
retrieving revision 1.163
diff -u -p -r1.163 infcmd.c
--- gdb/infcmd.c	15 Nov 2007 06:14:26 -0000	1.163
+++ gdb/infcmd.c	15 Nov 2007 06:23:17 -0000
@@ -482,7 +482,7 @@ run_command_1 (char *args, int from_tty,
   /* Purge old solib objfiles. */
   objfile_purge_solibs ();
 
-  do_run_cleanups (NULL);
+  clear_solib ();
 
   /* The comment here used to read, "The exec file is re-read every
      time we do a generic_mourn_inferior, so we just have to worry
Index: gdb/jv-lang.c
===================================================================
RCS file: /cvs/src/src/gdb/jv-lang.c,v
retrieving revision 1.51
diff -u -p -r1.51 jv-lang.c
--- gdb/jv-lang.c	2 Nov 2007 19:34:11 -0000	1.51
+++ gdb/jv-lang.c	15 Nov 2007 06:23:18 -0000
@@ -1133,25 +1133,3 @@ _initialize_java_language (void)
 
   add_language (&java_language_defn);
 }
-
-/* Cleanup code that should be run on every "run".
-   We should use make_run_cleanup to have this be called.
-   But will that mess up values in value histry?  FIXME */
-
-extern void java_rerun_cleanup (void);
-void
-java_rerun_cleanup (void)
-{
-  if (class_symtab != NULL)
-    {
-      free_symtab (class_symtab);	/* ??? */
-      class_symtab = NULL;
-    }
-  if (dynamics_objfile != NULL)
-    {
-      free_objfile (dynamics_objfile);
-      dynamics_objfile = NULL;
-    }
-
-  java_object_type = NULL;
-}
Index: gdb/solib.c
===================================================================
RCS file: /cvs/src/src/gdb/solib.c,v
retrieving revision 1.98
diff -u -p -r1.98 solib.c
--- gdb/solib.c	24 Oct 2007 21:07:30 -0000	1.98
+++ gdb/solib.c	15 Nov 2007 06:23:19 -0000
@@ -86,12 +86,8 @@ struct target_so_ops *current_target_so_
 
 static struct so_list *so_list_head;	/* List of known shared objects */
 
-static int solib_cleanup_queued = 0;	/* make_run_cleanup called */
-
 /* Local function prototypes */
 
-static void do_clear_solib (void *);
-
 /* If non-empty, this is a search path for loading non-absolute shared library
    symbol files.  This takes precedence over the environment variables PATH
    and LD_LIBRARY_PATH.  */
@@ -506,15 +502,6 @@ update_solib_list (int from_tty, struct 
 		  "Error reading attached process's symbol file.\n",
 		  RETURN_MASK_ALL);
 
-  /* Since this function might actually add some elements to the
-     so_list_head list, arrange for it to be cleaned up when
-     appropriate.  */
-  if (!solib_cleanup_queued)
-    {
-      make_run_cleanup (do_clear_solib, NULL);
-      solib_cleanup_queued = 1;
-    }
-
   /* GDB and the inferior's dynamic linker each maintain their own
      list of currently loaded shared objects; we want to bring the
      former in sync with the latter.  Scan both lists, seeing which
@@ -866,13 +853,6 @@ clear_solib (void)
   ops->clear_solib ();
 }
 
-static void
-do_clear_solib (void *dummy)
-{
-  solib_cleanup_queued = 0;
-  clear_solib ();
-}
-
 /* GLOBAL FUNCTION
 
    solib_create_inferior_hook -- shared library startup support
@@ -955,7 +935,7 @@ void
 no_shared_libraries (char *ignored, int from_tty)
 {
   objfile_purge_solibs ();
-  do_clear_solib (NULL);
+  clear_solib ();
 }
 
 static void
Index: gdb/utils.c
===================================================================
RCS file: /cvs/src/src/gdb/utils.c,v
retrieving revision 1.181
diff -u -p -r1.181 utils.c
--- gdb/utils.c	23 Aug 2007 18:08:46 -0000	1.181
+++ gdb/utils.c	15 Nov 2007 06:23:19 -0000
@@ -96,7 +96,6 @@ static void set_width (void);
 
 static struct cleanup *cleanup_chain;	/* cleaned up after a failed command */
 static struct cleanup *final_cleanup_chain;	/* cleaned up when gdb exits */
-static struct cleanup *run_cleanup_chain;	/* cleaned up on each 'run' */
 static struct cleanup *exec_cleanup_chain;	/* cleaned up on each execution command */
 /* cleaned up on each error from within an execution command */
 static struct cleanup *exec_error_cleanup_chain;
@@ -210,12 +209,6 @@ make_final_cleanup (make_cleanup_ftype *
 }
 
 struct cleanup *
-make_run_cleanup (make_cleanup_ftype *function, void *arg)
-{
-  return make_my_cleanup (&run_cleanup_chain, function, arg);
-}
-
-struct cleanup *
 make_exec_cleanup (make_cleanup_ftype *function, void *arg)
 {
   return make_my_cleanup (&exec_cleanup_chain, function, arg);
@@ -324,12 +317,6 @@ do_final_cleanups (struct cleanup *old_c
 }
 
 void
-do_run_cleanups (struct cleanup *old_chain)
-{
-  do_my_cleanups (&run_cleanup_chain, old_chain);
-}
-
-void
 do_exec_cleanups (struct cleanup *old_chain)
 {
   do_my_cleanups (&exec_cleanup_chain, old_chain);


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