Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jan Kratochvil <jan.kratochvil@redhat.com>
To: Luis Machado <luisgpm@linux.vnet.ibm.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFC] Entry point update with "run" command
Date: Sat, 26 Apr 2008 13:42:00 -0000	[thread overview]
Message-ID: <20080426132225.GA16017@host0.dyn.jankratochvil.net> (raw)
In-Reply-To: <1209052694.18229.6.camel@gargoyle.br.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 429 bytes --]

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

[-- Attachment #2: gdb-6.7-reread-exec_bfd.patch --]
[-- Type: text/plain, Size: 1799 bytes --]

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.  */

  reply	other threads:[~2008-04-26 13:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-24 16:45 Luis Machado
2008-04-26 13:42 ` Jan Kratochvil [this message]
2008-05-01 16:19   ` Luis Machado
2008-05-02 15:46   ` Daniel Jacobowitz
2008-05-04 15:23     ` Jan Kratochvil
2008-05-02 15:45 ` Daniel Jacobowitz
2008-05-05 19:17   ` Luis Machado

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080426132225.GA16017@host0.dyn.jankratochvil.net \
    --to=jan.kratochvil@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=luisgpm@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox