mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 10:35:12 +08:00
Get rid of the global "base_target" and use "find_target_beneath"
to find the underlying target. * dec-thread.c (base_target): Delete. (enable_dec_thread): Remove assignement to base_target. (dec_thread_detach, dec_thread_wait, dec_thread_wait) (dec_thread_fetch_registers, dec_thread_store_registers) (dec_thread_mourn_inferior, dec_thread_pid_to_str): Update the function profile if necessary. Use find_target_beneath to call the same method but from the underlying target, removing the need for "base_target". * dec-thread.c (dec_thread_get_regsets, dec_thread_set_regsets): Fix a copy/paste error in a few debug traces... * solib-osf.c (init_so): Use a simpler method for computing the size of lm_info structure. This also gets rid of warning emitted by the compiler.
This commit is contained in:
parent
32fc0df94f
commit
b254c0b2b1
@ -1,3 +1,23 @@
|
||||
2009-03-05 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
Get rid of the global "base_target" and use "find_target_beneath"
|
||||
to find the underlying target.
|
||||
* dec-thread.c (base_target): Delete.
|
||||
(enable_dec_thread): Remove assignement to base_target.
|
||||
(dec_thread_detach, dec_thread_wait, dec_thread_wait)
|
||||
(dec_thread_fetch_registers, dec_thread_store_registers)
|
||||
(dec_thread_mourn_inferior, dec_thread_pid_to_str):
|
||||
Update the function profile if necessary.
|
||||
Use find_target_beneath to call the same method but from
|
||||
the underlying target, removing the need for "base_target".
|
||||
|
||||
* dec-thread.c (dec_thread_get_regsets, dec_thread_set_regsets):
|
||||
Fix a copy/paste error in a few debug traces...
|
||||
|
||||
* solib-osf.c (init_so): Use a simpler method for computing
|
||||
the size of lm_info structure. This also gets rid of warning
|
||||
emitted by the compiler.
|
||||
|
||||
2009-03-05 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* breakpoint.c (check_duplicates_for): Skip permanent breakpoints
|
||||
|
@ -40,9 +40,6 @@ pthreadDebugContext_t debug_context;
|
||||
/* The dec-thread target_ops structure. */
|
||||
static struct target_ops dec_thread_ops;
|
||||
|
||||
/* A copy of the target_ops over which our dec_thread_ops is pushed. */
|
||||
static struct target_ops base_target;
|
||||
|
||||
/* Print a debug trace if DEBUG_DEC_THREAD is set (its value is adjusted
|
||||
by the user using "set debug dec-thread ..."). */
|
||||
|
||||
@ -253,7 +250,6 @@ enable_dec_thread (void)
|
||||
return;
|
||||
}
|
||||
|
||||
base_target = current_target;
|
||||
push_target (&dec_thread_ops);
|
||||
dec_thread_active = 1;
|
||||
|
||||
@ -424,12 +420,14 @@ resync_thread_list (void)
|
||||
/* The "to_detach" method of the dec_thread_ops. */
|
||||
|
||||
static void
|
||||
dec_thread_detach (char *args, int from_tty)
|
||||
dec_thread_detach (struct target_ops *ops, char *args, int from_tty)
|
||||
{
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
debug ("dec_thread_detach");
|
||||
|
||||
disable_dec_thread ();
|
||||
base_target.to_detach (&base_target, args, from_tty);
|
||||
beneath->to_detach (beneath, args, from_tty);
|
||||
}
|
||||
|
||||
/* Return the ptid of the thread that is currently active. */
|
||||
@ -457,14 +455,14 @@ dec_thread_wait (struct target_ops *ops,
|
||||
ptid_t ptid, struct target_waitstatus *status)
|
||||
{
|
||||
ptid_t active_ptid;
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
debug ("dec_thread_wait");
|
||||
|
||||
ptid = base_target.to_wait (&base_target, ptid, status);
|
||||
ptid = beneath->to_wait (beneath, ptid, status);
|
||||
|
||||
/* The ptid returned by the base_target is the ptid of the process.
|
||||
We need to find which thread is currently active and return its
|
||||
ptid. */
|
||||
/* The ptid returned by the target beneath us is the ptid of the process.
|
||||
We need to find which thread is currently active and return its ptid. */
|
||||
resync_thread_list ();
|
||||
active_ptid = get_active_ptid ();
|
||||
if (ptid_equal (active_ptid, null_ptid))
|
||||
@ -487,7 +485,7 @@ dec_thread_get_regsets (pthreadDebugId_t tid, gdb_gregset_t *gregset,
|
||||
res = pthreadDebugThdGetReg (debug_context, tid, ®s);
|
||||
if (res != ESUCCESS)
|
||||
{
|
||||
debug ("dec_thread_fetch_registers: pthreadDebugThdGetReg -> %d", res);
|
||||
debug ("dec_thread_get_regsets: pthreadDebugThdGetReg -> %d", res);
|
||||
return -1;
|
||||
}
|
||||
memcpy (gregset->regs, ®s, sizeof (regs));
|
||||
@ -495,7 +493,7 @@ dec_thread_get_regsets (pthreadDebugId_t tid, gdb_gregset_t *gregset,
|
||||
res = pthreadDebugThdGetFreg (debug_context, tid, &fregs);
|
||||
if (res != ESUCCESS)
|
||||
{
|
||||
debug ("dec_thread_fetch_registers: pthreadDebugThdGetFreg -> %d", res);
|
||||
debug ("dec_thread_get_regsets: pthreadDebugThdGetFreg -> %d", res);
|
||||
return -1;
|
||||
}
|
||||
memcpy (fpregset->regs, &fregs, sizeof (fregs));
|
||||
@ -510,7 +508,8 @@ dec_thread_get_regsets (pthreadDebugId_t tid, gdb_gregset_t *gregset,
|
||||
registers. */
|
||||
|
||||
static void
|
||||
dec_thread_fetch_registers (struct regcache *regcache, int regno)
|
||||
dec_thread_fetch_registers (struct target_ops *ops,
|
||||
struct regcache *regcache, int regno)
|
||||
{
|
||||
pthreadDebugId_t tid = ptid_get_tid (inferior_ptid);
|
||||
gregset_t gregset;
|
||||
@ -522,7 +521,9 @@ dec_thread_fetch_registers (struct regcache *regcache, int regno)
|
||||
|
||||
if (tid == 0 || ptid_equal (inferior_ptid, get_active_ptid ()))
|
||||
{
|
||||
base_target.to_fetch_registers (regcache, regno);
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
beneath->to_fetch_registers (beneath, regcache, regno);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -550,7 +551,7 @@ dec_thread_set_regsets (pthreadDebugId_t tid, gdb_gregset_t gregset,
|
||||
res = pthreadDebugThdSetReg (debug_context, tid, ®s);
|
||||
if (res != ESUCCESS)
|
||||
{
|
||||
debug ("dec_thread_fetch_registers: pthreadDebugThdSetReg -> %d", res);
|
||||
debug ("dec_thread_set_regsets: pthreadDebugThdSetReg -> %d", res);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -558,7 +559,7 @@ dec_thread_set_regsets (pthreadDebugId_t tid, gdb_gregset_t gregset,
|
||||
res = pthreadDebugThdSetFreg (debug_context, tid, &fregs);
|
||||
if (res != ESUCCESS)
|
||||
{
|
||||
debug ("dec_thread_fetch_registers: pthreadDebugThdSetFreg -> %d", res);
|
||||
debug ("dec_thread_set_regsets: pthreadDebugThdSetFreg -> %d", res);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -571,7 +572,8 @@ dec_thread_set_regsets (pthreadDebugId_t tid, gdb_gregset_t gregset,
|
||||
just one register, we store all the registers. */
|
||||
|
||||
static void
|
||||
dec_thread_store_registers (struct regcache *regcache, int regno)
|
||||
dec_thread_store_registers (struct target_ops *ops,
|
||||
struct regcache *regcache, int regno)
|
||||
{
|
||||
pthreadDebugId_t tid = ptid_get_tid (inferior_ptid);
|
||||
gregset_t gregset;
|
||||
@ -582,7 +584,9 @@ dec_thread_store_registers (struct regcache *regcache, int regno)
|
||||
|
||||
if (tid == 0 || ptid_equal (inferior_ptid, get_active_ptid ()))
|
||||
{
|
||||
base_target.to_store_registers (regcache, regno);
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
beneath->to_store_registers (beneath, regcache, regno);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -601,17 +605,19 @@ dec_thread_store_registers (struct regcache *regcache, int regno)
|
||||
/* The "to_mourn_inferior" method of the dec_thread_ops. */
|
||||
|
||||
static void
|
||||
dec_thread_mourn_inferior (void)
|
||||
dec_thread_mourn_inferior (struct target_ops *ops)
|
||||
{
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
debug ("dec_thread_mourn_inferior");
|
||||
|
||||
disable_dec_thread ();
|
||||
base_target.to_mourn_inferior (&base_target);
|
||||
beneath->to_mourn_inferior (beneath);
|
||||
}
|
||||
|
||||
/* The "to_thread_alive" method of the dec_thread_ops. */
|
||||
static int
|
||||
dec_thread_thread_alive (ptid_t ptid)
|
||||
dec_thread_thread_alive (struct target_ops *ops, ptid_t ptid)
|
||||
{
|
||||
debug ("dec_thread_thread_alive (tid=%ld)", ptid_get_tid (ptid));
|
||||
|
||||
@ -628,7 +634,11 @@ dec_thread_pid_to_str (struct target_ops *ops, ptid_t ptid)
|
||||
static char *ret = NULL;
|
||||
|
||||
if (ptid_get_tid (ptid) == 0)
|
||||
return base_target.to_pid_to_str (&base_target, ptid);
|
||||
{
|
||||
struct target_ops *beneath = find_target_beneath (ops);
|
||||
|
||||
return beneath->to_pid_to_str (beneath, ptid);
|
||||
}
|
||||
|
||||
/* Free previous return value; a new one will be allocated by
|
||||
xstrprintf(). */
|
||||
|
@ -424,8 +424,8 @@ init_so (struct so_list *so, char *name, int isloader, int nsecs)
|
||||
memcpy (so->so_name, so->so_original_name, namelen + 1);
|
||||
|
||||
/* Allocate section space. */
|
||||
so->lm_info = xmalloc ((unsigned) &(((struct lm_info *)0)->secs) +
|
||||
nsecs * sizeof *so->lm_info);
|
||||
so->lm_info = xmalloc (sizeof (struct lm_info)
|
||||
+ (nsecs - 1) * sizeof (struct lm_sec));
|
||||
so->lm_info->isloader = isloader;
|
||||
so->lm_info->nsecs = nsecs;
|
||||
for (i = 0; i < nsecs; i++)
|
||||
|
Loading…
Reference in New Issue
Block a user