[RFA] win32: bfd_cache_close after kill

Jerome Guitton guitton@act-europe.fr
Thu Jul 29 14:04:00 GMT 2004


Andrew Cagney (cagney@gnu.org):

> >>When the inferior is killed, it is safe the release the different file
> >>>handles that BFD keeps open. It is particularly useful on Win32 (and
> >>>presumably on HP UX) to be able to recompile and restart a new debugging
> >>>session without quitting GDB...
> >
> >
> Can it now go in the symbol-table reader that opened the file?

I finally had time (at last!) to complete the implementation. New patch in
attachment. Still no regression on i686 linux. OK to apply? 

-- 
Jerome
-------------- next part --------------
2004-07-29  Jerome Guitton  <guitton@gnat.com>

	* inflow.c (kill_command): release file handles in BFD.
	* exec.c (exec_file_attach): release exec_bfd file handle.
	* symfile.c (symbol_file_add_with_addrs_or_offsets): release
	bfd file handle.
	* Makefile.in: Update inflow.c's dependencies.

Index: Makefile.in
===================================================================
RCS file: /cvs/src/src/gdb/Makefile.in,v
retrieving revision 1.596
diff -u -p -r1.596 Makefile.in
--- Makefile.in	23 Jul 2004 10:33:36 -0000	1.596
+++ Makefile.in	29 Jul 2004 13:48:09 -0000
@@ -1974,7 +1974,7 @@ inf-loop.o: inf-loop.c $(defs_h) $(infer
 	$(event_top_h) $(inf_loop_h) $(remote_h)
 inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
 	$(serial_h) $(terminal_h) $(target_h) $(gdbthread_h) $(gdb_string_h) \
-	$(inflow_h)
+	$(inflow_h) $(bfd_h)
 infptrace.o: infptrace.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
 	$(gdb_string_h) $(regcache_h) $(gdb_wait_h) $(command_h) \
 	$(gdb_dirent_h) $(gdbcore_h) $(gdb_stat_h)
Index: exec.c
===================================================================
RCS file: /cvs/src/src/gdb/exec.c,v
retrieving revision 1.38
diff -u -p -r1.38 exec.c
--- exec.c	26 Jul 2004 14:52:59 -0000	1.38
+++ exec.c	29 Jul 2004 13:48:09 -0000
@@ -270,6 +270,8 @@ exec_file_attach (char *filename, int fr
       if (deprecated_exec_file_display_hook)
 	(*deprecated_exec_file_display_hook) (filename);
     }
+  if (exec_bfd)
+    bfd_cache_close (exec_bfd);
 }
 
 /*  Process the first arg in ARGS as the new exec file.
Index: inflow.c
===================================================================
RCS file: /cvs/src/src/gdb/inflow.c,v
retrieving revision 1.22
diff -u -p -r1.22 inflow.c
--- inflow.c	28 Apr 2004 16:36:25 -0000	1.22
+++ inflow.c	29 Jul 2004 13:48:09 -0000
@@ -21,6 +21,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
+#include "bfd.h"
 #include "frame.h"
 #include "inferior.h"
 #include "command.h"
@@ -597,6 +598,8 @@ kill_command (char *arg, int from_tty)
       else
 	print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC);
     }
+
+  bfd_cache_close_all ();
 }
 
 /* Call set_sigint_trap when you need to pass a signal on to an attached
Index: symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.135
diff -u -p -r1.135 symfile.c
--- symfile.c	26 Jul 2004 14:53:05 -0000	1.135
+++ symfile.c	29 Jul 2004 13:48:10 -0000
@@ -894,6 +894,7 @@ symbol_file_add_with_addrs_or_offsets (b
   if (deprecated_target_new_objfile_hook)
     deprecated_target_new_objfile_hook (objfile);
 
+  bfd_cache_close (abfd);
   return (objfile);
 }
 


More information about the Gdb-patches mailing list