2003-04-17 Jeff Johnston <jjohnstn@redhat.com>

* thread-db.c: Reindented.
This commit is contained in:
Jeff Johnston 2003-04-17 17:30:02 +00:00
parent 530b167e9a
commit b4acd5590b
2 changed files with 70 additions and 59 deletions

View file

@ -1,3 +1,7 @@
2003-04-17 Jeff Johnston <jjohnstn@redhat.com>
* thread-db.c: Reindented.
2003-04-17 Jeff Johnston <jjohnstn@redhat.com> 2003-04-17 Jeff Johnston <jjohnstn@redhat.com>
* gdb_indent.sh: Recognize td_thrhandle_t, td_event_msg_t, * gdb_indent.sh: Recognize td_thrhandle_t, td_event_msg_t,

View file

@ -54,7 +54,7 @@ static struct target_ops thread_db_ops;
static struct target_ops *target_beneath; static struct target_ops *target_beneath;
/* Pointer to the next function on the objfile event chain. */ /* Pointer to the next function on the objfile event chain. */
static void (*target_new_objfile_chain) (struct objfile *objfile); static void (*target_new_objfile_chain) (struct objfile * objfile);
/* Non-zero if we're using this module's target vector. */ /* Non-zero if we're using this module's target vector. */
static int using_thread_db; static int using_thread_db;
@ -80,15 +80,16 @@ static td_thragent_t *thread_agent;
static td_err_e (*td_init_p) (void); static td_err_e (*td_init_p) (void);
static td_err_e (*td_ta_new_p) (struct ps_prochandle *ps, td_thragent_t **ta); static td_err_e (*td_ta_new_p) (struct ps_prochandle * ps,
td_thragent_t **ta);
static td_err_e (*td_ta_map_id2thr_p) (const td_thragent_t *ta, thread_t pt, static td_err_e (*td_ta_map_id2thr_p) (const td_thragent_t *ta, thread_t pt,
td_thrhandle_t *__th); td_thrhandle_t *__th);
static td_err_e (*td_ta_map_lwp2thr_p) (const td_thragent_t *ta, lwpid_t lwpid, static td_err_e (*td_ta_map_lwp2thr_p) (const td_thragent_t *ta,
td_thrhandle_t *th); lwpid_t lwpid, td_thrhandle_t *th);
static td_err_e (*td_ta_thr_iter_p) (const td_thragent_t *ta, static td_err_e (*td_ta_thr_iter_p) (const td_thragent_t *ta,
td_thr_iter_f *callback, td_thr_iter_f *callback, void *cbdata_p,
void *cbdata_p, td_thr_state_e state, td_thr_state_e state, int ti_pri,
int ti_pri, sigset_t *ti_sigmask_p, sigset_t *ti_sigmask_p,
unsigned int ti_user_flags); unsigned int ti_user_flags);
static td_err_e (*td_ta_event_addr_p) (const td_thragent_t *ta, static td_err_e (*td_ta_event_addr_p) (const td_thragent_t *ta,
td_event_e event, td_notify_t *ptr); td_event_e event, td_notify_t *ptr);
@ -108,12 +109,12 @@ static td_err_e (*td_thr_setfpregs_p) (const td_thrhandle_t *th,
const gdb_prfpregset_t *fpregs); const gdb_prfpregset_t *fpregs);
static td_err_e (*td_thr_setgregs_p) (const td_thrhandle_t *th, static td_err_e (*td_thr_setgregs_p) (const td_thrhandle_t *th,
prgregset_t gregs); prgregset_t gregs);
static td_err_e (*td_thr_event_enable_p) (const td_thrhandle_t *th, int event); static td_err_e (*td_thr_event_enable_p) (const td_thrhandle_t *th,
int event);
static td_err_e (*td_thr_tls_get_addr_p) (const td_thrhandle_t *th, static td_err_e (*td_thr_tls_get_addr_p) (const td_thrhandle_t *th,
void *map_address, void *map_address,
size_t offset, size_t offset, void **address);
void **address);
/* Location of the thread creation event breakpoint. The code at this /* Location of the thread creation event breakpoint. The code at this
location in the child process will be called by the pthread library location in the child process will be called by the pthread library
@ -150,8 +151,8 @@ static void attach_thread (ptid_t ptid, const td_thrhandle_t *th_p,
struct private_thread_info struct private_thread_info
{ {
/* Cached thread state. */ /* Cached thread state. */
unsigned int th_valid : 1; unsigned int th_valid:1;
unsigned int ti_valid : 1; unsigned int ti_valid:1;
td_thrhandle_t th; td_thrhandle_t th;
td_thrinfo_t ti; td_thrinfo_t ti;
@ -255,7 +256,7 @@ thread_get_info_callback (const td_thrhandle_t *thp, void *infop)
err = td_thr_get_info_p (thp, &ti); err = td_thr_get_info_p (thp, &ti);
if (err != TD_OK) if (err != TD_OK)
error ("thread_get_info_callback: cannot get thread info: %s", error ("thread_get_info_callback: cannot get thread info: %s",
thread_db_err_str (err)); thread_db_err_str (err));
/* Fill the cache. */ /* Fill the cache. */
@ -297,7 +298,8 @@ thread_db_map_id2thr (struct thread_info *thread_info, int fatal)
{ {
if (fatal) if (fatal)
error ("Cannot find thread %ld: %s", error ("Cannot find thread %ld: %s",
(long) GET_THREAD (thread_info->ptid), thread_db_err_str (err)); (long) GET_THREAD (thread_info->ptid),
thread_db_err_str (err));
} }
else else
thread_info->private->th_valid = 1; thread_info->private->th_valid = 1;
@ -311,12 +313,13 @@ thread_db_get_info (struct thread_info *thread_info)
if (thread_info->private->ti_valid) if (thread_info->private->ti_valid)
return &thread_info->private->ti; return &thread_info->private->ti;
if (! thread_info->private->th_valid) if (!thread_info->private->th_valid)
thread_db_map_id2thr (thread_info, 1); thread_db_map_id2thr (thread_info, 1);
err = td_thr_get_info_p (&thread_info->private->th, &thread_info->private->ti); err =
td_thr_get_info_p (&thread_info->private->th, &thread_info->private->ti);
if (err != TD_OK) if (err != TD_OK)
error ("thread_db_get_info: cannot get thread info: %s", error ("thread_db_get_info: cannot get thread info: %s",
thread_db_err_str (err)); thread_db_err_str (err));
thread_info->private->ti_valid = 1; thread_info->private->ti_valid = 1;
@ -381,9 +384,9 @@ thread_db_load (void)
handle = dlopen (LIBTHREAD_DB_SO, RTLD_NOW); handle = dlopen (LIBTHREAD_DB_SO, RTLD_NOW);
if (handle == NULL) if (handle == NULL)
{ {
fprintf_filtered (gdb_stderr, "\n\ndlopen failed on '%s' - %s\n", fprintf_filtered (gdb_stderr, "\n\ndlopen failed on '%s' - %s\n",
LIBTHREAD_DB_SO, dlerror ()); LIBTHREAD_DB_SO, dlerror ());
fprintf_filtered (gdb_stderr, fprintf_filtered (gdb_stderr,
"GDB will not be able to debug pthreads.\n\n"); "GDB will not be able to debug pthreads.\n\n");
return 0; return 0;
} }
@ -653,7 +656,7 @@ thread_db_new_objfile (struct objfile *objfile)
break; break;
} }
quit: quit:
if (target_new_objfile_chain) if (target_new_objfile_chain)
target_new_objfile_chain (objfile); target_new_objfile_chain (objfile);
} }
@ -704,7 +707,7 @@ thread_db_attach (char *args, int from_tty)
/* ...and perform the remaining initialization steps. */ /* ...and perform the remaining initialization steps. */
enable_thread_event_reporting (); enable_thread_event_reporting ();
thread_db_find_new_threads(); thread_db_find_new_threads ();
} }
static void static void
@ -789,7 +792,7 @@ check_event (ptid_t ptid)
err = td_thr_get_info_p (msg.th_p, &ti); err = td_thr_get_info_p (msg.th_p, &ti);
if (err != TD_OK) if (err != TD_OK)
error ("check_event: cannot get thread info: %s", error ("check_event: cannot get thread info: %s",
thread_db_err_str (err)); thread_db_err_str (err));
ptid = BUILD_THREAD (ti.ti_tid, GET_PID (ptid)); ptid = BUILD_THREAD (ti.ti_tid, GET_PID (ptid));
@ -864,8 +867,7 @@ thread_db_wait (ptid_t ptid, struct target_waitstatus *ourstatus)
static int static int
thread_db_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write, thread_db_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write,
struct mem_attrib *attrib, struct mem_attrib *attrib, struct target_ops *target)
struct target_ops *target)
{ {
struct cleanup *old_chain = save_inferior_ptid (); struct cleanup *old_chain = save_inferior_ptid ();
int xfer; int xfer;
@ -880,7 +882,9 @@ thread_db_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write,
inferior_ptid = lwp_from_thread (inferior_ptid); inferior_ptid = lwp_from_thread (inferior_ptid);
} }
xfer = target_beneath->to_xfer_memory (memaddr, myaddr, len, write, attrib, target); xfer =
target_beneath->to_xfer_memory (memaddr, myaddr, len, write, attrib,
target);
do_cleanups (old_chain); do_cleanups (old_chain);
return xfer; return xfer;
@ -1021,16 +1025,18 @@ thread_db_thread_alive (ptid_t ptid)
thread_info = find_thread_pid (ptid); thread_info = find_thread_pid (ptid);
thread_db_map_id2thr (thread_info, 0); thread_db_map_id2thr (thread_info, 0);
if (! thread_info->private->th_valid) if (!thread_info->private->th_valid)
return 0; return 0;
err = td_thr_validate_p (&thread_info->private->th); err = td_thr_validate_p (&thread_info->private->th);
if (err != TD_OK) if (err != TD_OK)
return 0; return 0;
if (! thread_info->private->ti_valid) if (!thread_info->private->ti_valid)
{ {
err = td_thr_get_info_p (&thread_info->private->th, &thread_info->private->ti); err =
td_thr_get_info_p (&thread_info->private->th,
&thread_info->private->ti);
if (err != TD_OK) if (err != TD_OK)
return 0; return 0;
thread_info->private->ti_valid = 1; thread_info->private->ti_valid = 1;
@ -1058,7 +1064,7 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
err = td_thr_get_info_p (th_p, &ti); err = td_thr_get_info_p (th_p, &ti);
if (err != TD_OK) if (err != TD_OK)
error ("find_new_threads_callback: cannot get thread info: %s", error ("find_new_threads_callback: cannot get thread info: %s",
thread_db_err_str (err)); thread_db_err_str (err));
if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE) if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
@ -1097,9 +1103,10 @@ thread_db_pid_to_str (ptid_t ptid)
thread_info = find_thread_pid (ptid); thread_info = find_thread_pid (ptid);
thread_db_map_id2thr (thread_info, 0); thread_db_map_id2thr (thread_info, 0);
if (! thread_info->private->th_valid) if (!thread_info->private->th_valid)
{ {
snprintf (buf, sizeof (buf), "Thread %ld (Missing)", GET_THREAD (ptid)); snprintf (buf, sizeof (buf), "Thread %ld (Missing)",
GET_THREAD (ptid));
return buf; return buf;
} }
@ -1113,7 +1120,8 @@ thread_db_pid_to_str (ptid_t ptid)
else else
{ {
snprintf (buf, sizeof (buf), "Thread %ld (%s)", snprintf (buf, sizeof (buf), "Thread %ld (%s)",
(long) ti_p->ti_tid, thread_db_state_str (ti_p->ti_state)); (long) ti_p->ti_tid,
thread_db_state_str (ti_p->ti_state));
} }
return buf; return buf;
@ -1130,7 +1138,7 @@ thread_db_pid_to_str (ptid_t ptid)
static CORE_ADDR static CORE_ADDR
thread_db_get_thread_local_address (ptid_t ptid, struct objfile *objfile, thread_db_get_thread_local_address (ptid_t ptid, struct objfile *objfile,
CORE_ADDR offset) CORE_ADDR offset)
{ {
if (is_thread (ptid)) if (is_thread (ptid))
{ {
@ -1141,20 +1149,20 @@ thread_db_get_thread_local_address (ptid_t ptid, struct objfile *objfile,
struct thread_info *thread_info; struct thread_info *thread_info;
/* glibc doesn't provide the needed interface. */ /* glibc doesn't provide the needed interface. */
if (! td_thr_tls_get_addr_p) if (!td_thr_tls_get_addr_p)
error ("Cannot find thread-local variables in this thread library."); error ("Cannot find thread-local variables in this thread library.");
/* Get the address of the link map for this objfile. */ /* Get the address of the link map for this objfile. */
lm = svr4_fetch_objfile_link_map (objfile); lm = svr4_fetch_objfile_link_map (objfile);
/* Whoops, we couldn't find one. Bail out. */ /* Whoops, we couldn't find one. Bail out. */
if (!lm) if (!lm)
{ {
if (objfile_is_library) if (objfile_is_library)
error ("Cannot find shared library `%s' link_map in dynamic" error ("Cannot find shared library `%s' link_map in dynamic"
" linker's module list", objfile->name); " linker's module list", objfile->name);
else else
error ("Cannot find executable file `%s' link_map in dynamic" error ("Cannot find executable file `%s' link_map in dynamic"
" linker's module list", objfile->name); " linker's module list", objfile->name);
} }
@ -1169,21 +1177,21 @@ thread_db_get_thread_local_address (ptid_t ptid, struct objfile *objfile,
#ifdef THREAD_DB_HAS_TD_NOTALLOC #ifdef THREAD_DB_HAS_TD_NOTALLOC
/* The memory hasn't been allocated, yet. */ /* The memory hasn't been allocated, yet. */
if (err == TD_NOTALLOC) if (err == TD_NOTALLOC)
{ {
/* Now, if libthread_db provided the initialization image's /* Now, if libthread_db provided the initialization image's
address, we *could* try to build a non-lvalue value from address, we *could* try to build a non-lvalue value from
the initialization image. */ the initialization image. */
if (objfile_is_library) if (objfile_is_library)
error ("The inferior has not yet allocated storage for" error ("The inferior has not yet allocated storage for"
" thread-local variables in\n" " thread-local variables in\n"
"the shared library `%s'\n" "the shared library `%s'\n"
"for the thread %ld", "for the thread %ld",
objfile->name, (long) GET_THREAD (ptid)); objfile->name, (long) GET_THREAD (ptid));
else else
error ("The inferior has not yet allocated storage for" error ("The inferior has not yet allocated storage for"
" thread-local variables in\n" " thread-local variables in\n"
"the executable `%s'\n" "the executable `%s'\n"
"for the thread %ld", "for the thread %ld",
objfile->name, (long) GET_THREAD (ptid)); objfile->name, (long) GET_THREAD (ptid));
} }
#endif #endif
@ -1195,14 +1203,12 @@ thread_db_get_thread_local_address (ptid_t ptid, struct objfile *objfile,
error ("Cannot find thread-local storage for thread %ld, " error ("Cannot find thread-local storage for thread %ld, "
"shared library %s:\n%s", "shared library %s:\n%s",
(long) GET_THREAD (ptid), (long) GET_THREAD (ptid),
objfile->name, objfile->name, thread_db_err_str (err));
thread_db_err_str (err));
else else
error ("Cannot find thread-local storage for thread %ld, " error ("Cannot find thread-local storage for thread %ld, "
"executable file %s:\n%s", "executable file %s:\n%s",
(long) GET_THREAD (ptid), (long) GET_THREAD (ptid),
objfile->name, objfile->name, thread_db_err_str (err));
thread_db_err_str (err));
} }
/* Cast assuming host == target. Joy. */ /* Cast assuming host == target. Joy. */
@ -1210,7 +1216,8 @@ thread_db_get_thread_local_address (ptid_t ptid, struct objfile *objfile,
} }
if (target_beneath->to_get_thread_local_address) if (target_beneath->to_get_thread_local_address)
return target_beneath->to_get_thread_local_address (ptid, objfile, offset); return target_beneath->to_get_thread_local_address (ptid, objfile,
offset);
error ("Cannot find thread-local values on this target."); error ("Cannot find thread-local values on this target.");
} }