From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9016 invoked by alias); 19 Jul 2002 23:04:15 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 9009 invoked from network); 19 Jul 2002 23:04:15 -0000 Received: from unknown (HELO cygnus.com) (205.180.83.203) by sources.redhat.com with SMTP; 19 Jul 2002 23:04:15 -0000 Received: from redhat.com (reddwarf.sfbay.redhat.com [172.16.24.50]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id QAA15794; Fri, 19 Jul 2002 16:04:14 -0700 (PDT) Message-ID: <3D3896DA.7EE844A8@redhat.com> Date: Fri, 19 Jul 2002 17:42:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. X-Accept-Language: en MIME-Version: 1.0 To: gdb-patches@sources.redhat.com CC: kevinb@redhat.com Subject: fourth and last patch to aix-thread.c Content-Type: multipart/mixed; boundary="------------D254033B0E705D0AD79EC2E6" X-SW-Source: 2002-07/txt/msg00427.txt.bz2 This is a multi-part message in MIME format. --------------D254033B0E705D0AD79EC2E6 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-length: 363 Hi Kevin, This is the last one, I promise. I thought some of the identifiers in aix-thread were a little un-informative and/or inconsistant with other target modules, so I offer you this renaming. And I humbly beg your pardon, but I was unable to resist sneaking a few whitespace clean-ups in there too. If you like, I'll re-submit them separately. Michael --------------D254033B0E705D0AD79EC2E6 Content-Type: text/plain; charset=us-ascii; name="rename2.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="rename2.patch" Content-length: 21680 2002-07-19 Michael Snyder * aix-thread.c (ops): Rename to pthdebug_ops. (base_ops): Rename to base_target. (ops_attach): Rename to pthdebug_attach. (ops_detach): Rename to pthdebug_detach. (ops_resume): Rename to pthdebug_detach. (ops_wait): Rename to pthdebug_wait. (ops_kill): Rename to pthdebug_kill. (init_ops): Rename to init_pthdebug_ops. (ops_fetch_register): Rename to pthdebug_fetch_register. (ops_store_register): Rename to pthdebug_store_register. (ops_mourn_inferior): Rename to pthdebug_mourn_inferior. (ops_thread_alive): Rename to pthdebug_thread_alive. (ops_extra_thread_info: Rename to pthdebug_extra_thread_info. (ops_pid_to_str): Rename to pthdebug_pid_to_str. (ops_xfer_memory): Rename to pthdebug_xfer_memory. (fetch_regs_lib): Rename to fetch_regs_user_thread. (fetch_regs_kern): Rename to fetch_regs_kernel_thread. (store_regs_lib): Rename to store_regs_user_thread. (store_regs_kern): Rename to store_regs_kernel_thread. Index: aix-thread.c =================================================================== RCS file: /es/scratch/msnyder/cvsroot/aix/threads/aix-thread.c,v retrieving revision 1.4 retrieving revision 1.6 diff -p -r1.4 -r1.6 *** aix-thread.c 2002/07/18 17:02:13 1.4 --- aix-thread.c 2002/07/19 12:25:08 1.6 *************** struct pd_thread { *** 108,120 **** /* This module's target-specific operations, active while pd_able is true. */ ! static struct target_ops ops; /* Copy of the target over which ops is pushed. This is more convenient than a pointer to child_ops or core_ops, because they lack current_target's default callbacks. */ ! static struct target_ops base_ops; /* Address of the function that libpthread will call when libpthdebug is ready to be initialized. */ --- 108,120 ---- /* This module's target-specific operations, active while pd_able is true. */ ! static struct target_ops pthdebug_ops; /* Copy of the target over which ops is pushed. This is more convenient than a pointer to child_ops or core_ops, because they lack current_target's default callbacks. */ ! static struct target_ops base_target; /* Address of the function that libpthread will call when libpthdebug is ready to be initialized. */ *************** ptrace32 (int req, int id, int *addr, in *** 265,271 **** { errno = 0; return ptrace_check (req, id, ! ptrace (req, id, (int *)addr, data, buf)); } /* If *PIDP is a composite process/thread id, convert it to a --- 265,271 ---- { errno = 0; return ptrace_check (req, id, ! ptrace (req, id, (int *) addr, data, buf)); } /* If *PIDP is a composite process/thread id, convert it to a *************** pdc_read_regs (pthdb_user_t user, *** 350,356 **** if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, "pdc_read_regs tid=%d flags=%llx\n", ! (int)tid, flags); /* General-purpose registers. */ if (flags & PTHDB_FLAG_GPRS) --- 350,356 ---- if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, "pdc_read_regs tid=%d flags=%llx\n", ! (int) tid, flags); /* General-purpose registers. */ if (flags & PTHDB_FLAG_GPRS) *************** pdc_write_regs (pthdb_user_t user, *** 416,437 **** if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, "pdc_write_regs tid=%d flags=%llx\n", ! (int)tid, flags); /* General-purpose registers. */ if (flags & PTHDB_FLAG_GPRS) { if (arch64) ptrace64aix (PTT_WRITE_GPRS, tid, ! (unsigned long)context->gpr, 0, NULL); else ! ptrace32 (PTT_WRITE_GPRS, tid, (int *)context->gpr, 0, NULL); } /* Floating-point registers. */ if (flags & PTHDB_FLAG_FPRS) { ! ptrace32 (PTT_WRITE_FPRS, tid, (int *)context->fpr, 0, NULL); } /* Special-purpose registers. */ --- 416,437 ---- if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, "pdc_write_regs tid=%d flags=%llx\n", ! (int) tid, flags); /* General-purpose registers. */ if (flags & PTHDB_FLAG_GPRS) { if (arch64) ptrace64aix (PTT_WRITE_GPRS, tid, ! (unsigned long) context->gpr, 0, NULL); else ! ptrace32 (PTT_WRITE_GPRS, tid, (int *) context->gpr, 0, NULL); } /* Floating-point registers. */ if (flags & PTHDB_FLAG_FPRS) { ! ptrace32 (PTT_WRITE_FPRS, tid, (int *) context->fpr, 0, NULL); } /* Special-purpose registers. */ *************** pdc_write_regs (pthdb_user_t user, *** 444,450 **** } else { ! ptrace32 (PTT_WRITE_SPRS, tid, (int *)&context->msr, 0, NULL); } } return 0; --- 444,450 ---- } else { ! ptrace32 (PTT_WRITE_SPRS, tid, (int *) &context->msr, 0, NULL); } } return 0; *************** pd_enable (void) *** 875,882 **** return; /* Prepare for thread debugging. */ ! base_ops = current_target; ! push_target (&ops); pd_able = 1; /* If we're debugging a core file or an attached inferior, the --- 875,882 ---- return; /* Prepare for thread debugging. */ ! base_target = current_target; ! push_target (&pthdebug_ops); pd_able = 1; /* If we're debugging a core file or an attached inferior, the *************** pd_disable (void) *** 895,901 **** if (pd_active) pd_deactivate (); pd_able = 0; ! unpush_target (&ops); } /* target_new_objfile_hook callback. --- 895,901 ---- if (pd_active) pd_deactivate (); pd_able = 0; ! unpush_target (&pthdebug_ops); } /* target_new_objfile_hook callback. *************** new_objfile (struct objfile *objfile) *** 920,945 **** /* Attach to process specified by ARGS. */ static void ! ops_attach (char *args, int from_tty) { ! base_ops.to_attach (args, from_tty); pd_activate (1); } ! /* Detach from the process attached to by ops_attach(). */ static void ! ops_detach (char *args, int from_tty) { pd_deactivate (); ! base_ops.to_detach (args, from_tty); } /* Tell the inferior process to continue running thread PID if != -1 and all threads otherwise. */ static void ! ops_resume (ptid_t ptid, int step, enum target_signal sig) { struct thread_info *thread; pthdb_tid_t tid[2]; --- 920,945 ---- /* Attach to process specified by ARGS. */ static void ! pthdebug_attach (char *args, int from_tty) { ! base_target.to_attach (args, from_tty); pd_activate (1); } ! /* Detach from the process attached to by pthdebug_attach(). */ static void ! pthdebug_detach (char *args, int from_tty) { pd_deactivate (); ! base_target.to_detach (args, from_tty); } /* Tell the inferior process to continue running thread PID if != -1 and all threads otherwise. */ static void ! pthdebug_resume (ptid_t ptid, int step, enum target_signal sig) { struct thread_info *thread; pthdb_tid_t tid[2]; *************** ops_resume (ptid_t ptid, int step, enum *** 948,954 **** { struct cleanup *cleanup = save_inferior_ptid (); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! base_ops.to_resume (ptid, step, sig); do_cleanups (cleanup); } else --- 948,954 ---- { struct cleanup *cleanup = save_inferior_ptid (); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! base_target.to_resume (ptid, step, sig); do_cleanups (cleanup); } else *************** ops_resume (ptid_t ptid, int step, enum *** 966,975 **** if (arch64) ptrace64aix (PTT_CONTINUE, tid[0], 1, ! target_signal_to_host (sig), (int *)tid); else ptrace32 (PTT_CONTINUE, tid[0], (int *) 1, ! target_signal_to_host (sig), (int *)tid); } } --- 966,975 ---- if (arch64) ptrace64aix (PTT_CONTINUE, tid[0], 1, ! target_signal_to_host (sig), (int *) tid); else ptrace32 (PTT_CONTINUE, tid[0], (int *) 1, ! target_signal_to_host (sig), (int *) tid); } } *************** ops_resume (ptid_t ptid, int step, enum *** 978,991 **** thread. */ static ptid_t ! ops_wait (ptid_t ptid, struct target_waitstatus *status) { struct cleanup *cleanup = save_inferior_ptid (); pid_to_prc (&ptid); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! ptid = base_ops.to_wait (ptid, status); do_cleanups (cleanup); if (PIDGET (ptid) == -1) --- 978,991 ---- thread. */ static ptid_t ! pthdebug_wait (ptid_t ptid, struct target_waitstatus *status) { struct cleanup *cleanup = save_inferior_ptid (); pid_to_prc (&ptid); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! ptid = base_target.to_wait (ptid, status); do_cleanups (cleanup); if (PIDGET (ptid) == -1) *************** supply_sprs32 (uint32_t iar, uint32_t ms *** 1072,1084 **** function. */ static void ! fetch_regs_lib (pthdb_pthread_t pdtid) { int status, i; pthdb_context_t ctx; if (debug_aix_thread) ! fprintf_unfiltered (gdb_stdlog, "fetch_regs_lib %lx\n", (long)pdtid); status = pthdb_pthread_context (pd_session, pdtid, &ctx); if (status != PTHDB_SUCCESS) error ("aix-thread: fetch_registers: pthdb_pthread_context returned %s", --- 1072,1085 ---- function. */ static void ! fetch_regs_user_thread (pthdb_pthread_t pdtid) { int status, i; pthdb_context_t ctx; if (debug_aix_thread) ! fprintf_unfiltered (gdb_stdlog, ! "fetch_regs_user_thread %lx\n", (long) pdtid); status = pthdb_pthread_context (pd_session, pdtid, &ctx); if (status != PTHDB_SUCCESS) error ("aix-thread: fetch_registers: pthdb_pthread_context returned %s", *************** fetch_regs_lib (pthdb_pthread_t pdtid) *** 1120,1126 **** be retrieved. */ static void ! fetch_regs_kern (int regno, pthdb_tid_t tid) { uint64_t gprs64[32]; uint32_t gprs32[32]; --- 1121,1127 ---- be retrieved. */ static void ! fetch_regs_kernel_thread (int regno, pthdb_tid_t tid) { uint64_t gprs64[32]; uint32_t gprs32[32]; *************** fetch_regs_kern (int regno, pthdb_tid_t *** 1131,1138 **** if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, ! "fetch_regs_kern tid=%lx regno=%d arch64=%d\n", ! (long)tid, regno, arch64); /* General-purpose registers. */ if (regno == -1 || regno < FP0_REGNUM) --- 1132,1139 ---- if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, ! "fetch_regs_kernel_thread tid=%lx regno=%d arch64=%d\n", ! (long) tid, regno, arch64); /* General-purpose registers. */ if (regno == -1 || regno < FP0_REGNUM) *************** fetch_regs_kern (int regno, pthdb_tid_t *** 1192,1213 **** thread/process specified by inferior_ptid. */ static void ! ops_fetch_registers (int regno) { struct thread_info *thread; pthdb_tid_t tid; if (!PD_TID (inferior_ptid)) ! base_ops.to_fetch_registers (regno); else { thread = find_thread_pid (inferior_ptid); tid = thread->private->tid; if (tid == PTHDB_INVALID_TID) ! fetch_regs_lib (thread->private->pdtid); else ! fetch_regs_kern (regno, tid); } } --- 1193,1214 ---- thread/process specified by inferior_ptid. */ static void ! pthdebug_fetch_registers (int regno) { struct thread_info *thread; pthdb_tid_t tid; if (!PD_TID (inferior_ptid)) ! base_target.to_fetch_registers (regno); else { thread = find_thread_pid (inferior_ptid); tid = thread->private->tid; if (tid == PTHDB_INVALID_TID) ! fetch_regs_user_thread (thread->private->pdtid); else ! fetch_regs_kernel_thread (regno, tid); } } *************** fill_sprs32 (uint32_t *iar, uint32_t *ms *** 1294,1300 **** but I doubt it's worth the effort. */ static void ! store_regs_lib (pthdb_pthread_t pdtid) { int status, i; pthdb_context_t ctx; --- 1295,1301 ---- but I doubt it's worth the effort. */ static void ! store_regs_user_thread (pthdb_pthread_t pdtid) { int status, i; pthdb_context_t ctx; *************** store_regs_lib (pthdb_pthread_t pdtid) *** 1304,1310 **** if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, ! "store_regs_lib %lx\n", (long)pdtid); /* Retrieve the thread's current context for its non-register values. */ --- 1305,1311 ---- if (debug_aix_thread) fprintf_unfiltered (gdb_stdlog, ! "store_regs_user_thread %lx\n", (long) pdtid); /* Retrieve the thread's current context for its non-register values. */ *************** store_regs_lib (pthdb_pthread_t pdtid) *** 1374,1380 **** group. */ static void ! store_regs_kern (int regno, pthdb_tid_t tid) { uint64_t gprs64[32]; uint32_t gprs32[32]; --- 1375,1381 ---- group. */ static void ! store_regs_kernel_thread (int regno, pthdb_tid_t tid) { uint64_t gprs64[32]; uint32_t gprs32[32]; *************** store_regs_kern (int regno, pthdb_tid_t *** 1384,1391 **** int i; if (debug_aix_thread) ! fprintf_unfiltered (gdb_stdlog, "store_regs_kern tid=%lx regno=%d\n", ! (long)tid, regno); /* General-purpose registers. */ if (regno == -1 || regno < FP0_REGNUM) --- 1385,1393 ---- int i; if (debug_aix_thread) ! fprintf_unfiltered (gdb_stdlog, ! "store_regs_kernel_thread tid=%lx regno=%d\n", ! (long) tid, regno); /* General-purpose registers. */ if (regno == -1 || regno < FP0_REGNUM) *************** store_regs_kern (int regno, pthdb_tid_t *** 1452,1473 **** thread/process specified by inferior_ptid. */ static void ! ops_store_registers (int regno) { struct thread_info *thread; pthdb_tid_t tid; if (!PD_TID (inferior_ptid)) ! base_ops.to_store_registers (regno); else { thread = find_thread_pid (inferior_ptid); tid = thread->private->tid; if (tid == PTHDB_INVALID_TID) ! store_regs_lib (thread->private->pdtid); else ! store_regs_kern (regno, tid); } } --- 1454,1475 ---- thread/process specified by inferior_ptid. */ static void ! pthdebug_store_registers (int regno) { struct thread_info *thread; pthdb_tid_t tid; if (!PD_TID (inferior_ptid)) ! base_target.to_store_registers (regno); else { thread = find_thread_pid (inferior_ptid); tid = thread->private->tid; if (tid == PTHDB_INVALID_TID) ! store_regs_user_thread (thread->private->pdtid); else ! store_regs_kernel_thread (regno, tid); } } *************** ops_store_registers (int regno) *** 1475,1490 **** address MEMADDR if WRITE and vice versa otherwise. */ static int ! ops_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write, ! struct mem_attrib *attrib, ! struct target_ops *target) { int n; struct cleanup *cleanup = save_inferior_ptid (); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! n = base_ops.to_xfer_memory (memaddr, myaddr, len, ! write, attrib, &base_ops); do_cleanups (cleanup); return n; --- 1477,1492 ---- address MEMADDR if WRITE and vice versa otherwise. */ static int ! pthdebug_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write, ! struct mem_attrib *attrib, ! struct target_ops *target) { int n; struct cleanup *cleanup = save_inferior_ptid (); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! n = base_target.to_xfer_memory (memaddr, myaddr, len, ! write, attrib, &base_target); do_cleanups (cleanup); return n; *************** ops_xfer_memory (CORE_ADDR memaddr, char *** 1493,1523 **** /* Kill and forget about the inferior process. */ static void ! ops_kill (void) { struct cleanup *cleanup = save_inferior_ptid (); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! base_ops.to_kill (); do_cleanups (cleanup); } /* Clean up after the inferior exits. */ static void ! ops_mourn_inferior (void) { pd_deactivate (); ! base_ops.to_mourn_inferior (); } /* Return whether thread PID is still valid. */ static int ! ops_thread_alive (ptid_t ptid) { if (!PD_TID (ptid)) ! return base_ops.to_thread_alive (ptid); /* We update the thread list every time the child stops, so all valid threads should be in the thread list. */ --- 1495,1525 ---- /* Kill and forget about the inferior process. */ static void ! pthdebug_kill (void) { struct cleanup *cleanup = save_inferior_ptid (); inferior_ptid = pid_to_ptid (PIDGET (inferior_ptid)); ! base_target.to_kill (); do_cleanups (cleanup); } /* Clean up after the inferior exits. */ static void ! pthdebug_mourn_inferior (void) { pd_deactivate (); ! base_target.to_mourn_inferior (); } /* Return whether thread PID is still valid. */ static int ! pthdebug_thread_alive (ptid_t ptid) { if (!PD_TID (ptid)) ! return base_target.to_thread_alive (ptid); /* We update the thread list every time the child stops, so all valid threads should be in the thread list. */ *************** ops_thread_alive (ptid_t ptid) *** 1528,1539 **** "info threads" output. */ static char * ! ops_pid_to_str (ptid_t ptid) { static char *ret = NULL; if (!PD_TID (ptid)) ! return base_ops.to_pid_to_str (ptid); /* Free previous return value; a new one will be allocated by xasprintf(). */ --- 1530,1541 ---- "info threads" output. */ static char * ! pthdebug_pid_to_str (ptid_t ptid) { static char *ret = NULL; if (!PD_TID (ptid)) ! return base_target.to_pid_to_str (ptid); /* Free previous return value; a new one will be allocated by xasprintf(). */ *************** ops_pid_to_str (ptid_t ptid) *** 1547,1553 **** THREAD, for use in "info threads" output. */ static char * ! ops_extra_thread_info (struct thread_info *thread) { struct ui_file *buf; int status; --- 1549,1555 ---- THREAD, for use in "info threads" output. */ static char * ! pthdebug_extra_thread_info (struct thread_info *thread) { struct ui_file *buf; int status; *************** ops_extra_thread_info (struct thread_inf *** 1600,1630 **** return ret; } ! /* Initialize target ops. */ static void ! init_ops (void) { ! ops.to_shortname = "aix-threads"; ! ops.to_longname = "AIX pthread support"; ! ops.to_doc = "AIX pthread support"; ! ! ops.to_attach = ops_attach; ! ops.to_detach = ops_detach; ! ops.to_resume = ops_resume; ! ops.to_wait = ops_wait; ! ops.to_fetch_registers = ops_fetch_registers; ! ops.to_store_registers = ops_store_registers; ! ops.to_xfer_memory = ops_xfer_memory; ! /* No need for ops.to_create_inferior, because we activate thread debugging when the inferior reaches pd_brk_addr. */ ! ops.to_kill = ops_kill; ! ops.to_mourn_inferior = ops_mourn_inferior; ! ops.to_thread_alive = ops_thread_alive; ! ops.to_pid_to_str = ops_pid_to_str; ! ops.to_extra_thread_info = ops_extra_thread_info; ! ops.to_stratum = thread_stratum; ! ops.to_magic = OPS_MAGIC; } /* Module startup initialization function, automagically called by --- 1602,1632 ---- return ret; } ! /* Initialize target pthdebug_ops. */ static void ! init_pthdebug_ops (void) { ! pthdebug_ops.to_shortname = "aix-threads"; ! pthdebug_ops.to_longname = "AIX pthread support"; ! pthdebug_ops.to_doc = "AIX pthread support"; ! ! pthdebug_ops.to_attach = ops_attach; ! pthdebug_ops.to_detach = ops_detach; ! pthdebug_ops.to_resume = ops_resume; ! pthdebug_ops.to_wait = ops_wait; ! pthdebug_ops.to_fetch_registers = ops_fetch_registers; ! pthdebug_ops.to_store_registers = ops_store_registers; ! pthdebug_ops.to_xfer_memory = ops_xfer_memory; ! /* No need for pthdebug_ops.to_create_inferior, because we activate thread debugging when the inferior reaches pd_brk_addr. */ ! pthdebug_ops.to_kill = ops_kill; ! pthdebug_ops.to_mourn_inferior = ops_mourn_inferior; ! pthdebug_ops.to_thread_alive = ops_thread_alive; ! pthdebug_ops.to_pid_to_str = ops_pid_to_str; ! pthdebug_ops.to_extra_thread_info = ops_extra_thread_info; ! pthdebug_ops.to_stratum = thread_stratum; ! pthdebug_ops.to_magic = OPS_MAGIC; } /* Module startup initialization function, automagically called by *************** init_ops (void) *** 1633,1640 **** void _initialize_aix_thread (void) { ! init_ops (); ! add_target (&ops); /* Notice when object files get loaded and unloaded. */ target_new_objfile_chain = target_new_objfile_hook; --- 1635,1642 ---- void _initialize_aix_thread (void) { ! init_pthdebug_ops (); ! add_target (&pthdebug_ops); /* Notice when object files get loaded and unloaded. */ target_new_objfile_chain = target_new_objfile_hook; --------------D254033B0E705D0AD79EC2E6--