This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] Replace deprecated_target_new_objfile_hook by observer?
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: drow at false dot org (Daniel Jacobowitz)
- Cc: brobecker at adacore dot com (Joel Brobecker), gdb-patches at sources dot redhat dot com
- Date: Wed, 18 Oct 2006 18:29:02 +0200 (CEST)
- Subject: Re: [RFC] Replace deprecated_target_new_objfile_hook by observer?
Daniel Jacobowitz wrote:
> There Be Dragons! Note that there is a case where the remote objfile
> hook does _not_ call the next thing on the chain. This is somewhat
> deliberate, in that it's what prevents thread-db from being enabled
> when talking to gdbserver, and somewhat accidental, in that I'm sure it
> wasn't meant to work this way. But we'll need to do some rearranging
> in order to keep the current state of affairs working.
I've run into this in my work on GDB support for the Cell BE (which is
getting a lot closer to a state where we can try to submit it, b.t.w.).
We're working on providing code overlay support for the Cell SPEs, and
to support this in the debugger, I needed to hook into the objfile chain;
I ran into exactly the problem you describe above.
To fix this, I'm currently using this patch, which attempts to express
more directly that linux-thread-db should not be used if the target is
remote:
diff -urN gdb-orig/gdb/linux-thread-db.c gdb-6.5/gdb/linux-thread-db.c
--- gdb-orig/gdb/linux-thread-db.c 2006-05-06 00:42:43.000000000 +0200
+++ gdb-6.5/gdb/linux-thread-db.c 2006-09-25 02:12:11.382901136 +0200
@@ -669,6 +669,10 @@
if (!target_has_execution)
return;
+ /* Don't attempt to use thread_db for remote targets. */
+ if (!target_can_run (¤t_target))
+ return;
+
/* Initialize the structure that identifies the child process. */
proc_handle.pid = GET_PID (inferior_ptid);
diff -urN gdb-orig/gdb/remote.c gdb-6.5/gdb/remote.c
--- gdb-orig/gdb/remote.c 2006-05-05 22:08:45.000000000 +0200
+++ gdb-6.5/gdb/remote.c 2006-09-25 02:12:11.449890952 +0200
@@ -5466,8 +5466,7 @@
remote_check_symbols (objfile);
}
/* Call predecessor on chain, if any. */
- if (remote_new_objfile_chain != 0 &&
- remote_desc == 0)
+ if (remote_new_objfile_chain)
remote_new_objfile_chain (objfile);
}
Does this look reasonable?
Bye,
Ulrich
--
Dr. Ulrich Weigand
Linux on zSeries Development
Ulrich.Weigand@de.ibm.com