This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] Entry point update with "run" command
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: Luis Machado <luisgpm at linux dot vnet dot ibm dot com>
- Cc: gdb-patches at sourceware dot org
- Date: Sat, 26 Apr 2008 15:22:25 +0200
- Subject: Re: [RFC] Entry point update with "run" command
- References: <1209052694.18229.6.camel@gargoyle.br.ibm.com>
On Thu, 24 Apr 2008 17:58:14 +0200, Luis Machado wrote:
> Hi folks,
>
> It seems GDB doesn't really update the entry point of an object file if
> we "reload" the modified binary through the "run" command.
There is a problem whole EXEC_BFD becomes stale - using the more general
attached patch.
Still I agree it is a hack as besides whole reload-on-change is a hack also GDB
still misses some real OO framework.
Regards,
Jan
2007-10-29 Jan Kratochvil <jan.kratochvil@redhat.com>
* symfile.c (reread_symbols): Reread also EXEC_BFD if changed.
2008-04-11 Jan Kratochvil <jan.kratochvil@redhat.com>
* symfile.c (reread_symbols): Reload whole EXEC_BFD by the EXEC module
as its in-place patching did cause regressions.
Testcase: Regressed by the gdb-6.7 version of `gdb-6.3-pie-20050110.patch':
Running ../../../gdb/testsuite/gdb.base/reread.exp ...
PASS: gdb.base/reread.exp: breakpoint foo in first file (PRMS 13484)
PASS: gdb.base/reread.exp: run to foo() (PRMS 13484)
-PASS: gdb.base/reread.exp: run to foo() second time
+FAIL: gdb.base/reread.exp: run to foo() second time
PASS: gdb.base/reread.exp: second pass: breakpoint foo in first file
-PASS: gdb.base/reread.exp: second pass: run to foo()
-PASS: gdb.base/reread.exp: second pass: continue to completion
-PASS: gdb.base/reread.exp: second pass: run to foo() second time
+FAIL: gdb.base/reread.exp: second pass: run to foo()
+FAIL: gdb.base/reread.exp: second pass: continue to completion
+FAIL: gdb.base/reread.exp: second pass: run to foo() second time
--- gdb-6.7-orig/gdb/symfile.c 2007-10-29 01:04:35.000000000 +0100
+++ gdb-6.7-patched/gdb/symfile.c 2007-10-29 01:03:13.000000000 +0100
@@ -2810,6 +2810,12 @@ reread_symbols (void)
/* We need to do this whenever any symbols go away. */
make_cleanup (clear_symtab_users_cleanup, 0 /*ignore*/);
+ if (exec_bfd != NULL && strcmp (bfd_get_filename (objfile->obfd),
+ bfd_get_filename (exec_bfd)) == 0)
+ {
+ exec_ops.to_open (bfd_get_filename (objfile->obfd), 0);
+ }
+
/* Clean up any state BFD has sitting around. We don't need
to close the descriptor but BFD lacks a way of closing the
BFD without closing the descriptor. */