Index: sol-thread.c =================================================================== RCS file: /cvs/src/src/gdb/sol-thread.c,v retrieving revision 1.63 diff -u -p -r1.63 sol-thread.c --- sol-thread.c 23 Jan 2008 11:26:28 -0000 1.63 +++ sol-thread.c 12 Mar 2008 18:39:54 -0000 @@ -1283,9 +1283,12 @@ ps_pdmodel (gdb_ps_prochandle_t ph, int } #endif /* PR_MODEL_LP64 */ -#ifdef TM_I386SOL2_H +#if (defined(__i386__) || defined(__x86_64__)) && defined (sun) -/* Reads the local descriptor table of a LWP. */ +/* Reads the local descriptor table of a LWP. + + This function is necessary on x86-solaris only. Without it, the loading + of libthread_db would fail because of ps_lgetLDT being undefined. */ ps_err_e ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid, @@ -1311,7 +1314,7 @@ ps_lgetLDT (gdb_ps_prochandle_t ph, lwpi /* LDT not found. */ return PS_ERR; } -#endif /* TM_I386SOL2_H */ +#endif /* Convert PTID to printable form. */ Index: procfs.c =================================================================== RCS file: /cvs/src/src/gdb/procfs.c,v retrieving revision 1.85 diff -u -p -r1.85 procfs.c --- procfs.c 25 Jan 2008 00:09:49 -0000 1.85 +++ procfs.c 12 Mar 2008 18:39:55 -0000 @@ -2919,7 +2919,7 @@ proc_set_watchpoint (procinfo *pi, CORE_ #endif } -#ifdef TM_I386SOL2_H /* Is it hokey to use this? */ +#if (defined(__i386__) || defined(__x86_64__)) && defined (sun) #include @@ -3011,7 +3011,45 @@ proc_get_LDT_entry (procinfo *pi, int ke #endif } -#endif /* TM_I386SOL2_H */ +/* + * Function: procfs_find_LDT_entry + * + * Input: + * ptid_t ptid; // The GDB-style pid-plus-LWP. + * + * Return: + * pointer to the corresponding LDT entry. + */ + +struct ssd * +procfs_find_LDT_entry (ptid_t ptid) +{ + gdb_gregset_t *gregs; + int key; + procinfo *pi; + + /* Find procinfo for the lwp. */ + if ((pi = find_procinfo (PIDGET (ptid), TIDGET (ptid))) == NULL) + { + warning (_("procfs_find_LDT_entry: could not find procinfo for %d:%d."), + PIDGET (ptid), TIDGET (ptid)); + return NULL; + } + /* get its general registers. */ + if ((gregs = proc_get_gregs (pi)) == NULL) + { + warning (_("procfs_find_LDT_entry: could not read gregs for %d:%d."), + PIDGET (ptid), TIDGET (ptid)); + return NULL; + } + /* Now extract the GS register's lower 16 bits. */ + key = (*gregs)[GS] & 0xffff; + + /* Find the matching entry and return it. */ + return proc_get_LDT_entry (pi, key); +} + +#endif /* =============== END, non-thread part of /proc "MODULE" =============== */ @@ -5331,46 +5369,6 @@ procfs_stopped_by_watchpoint (ptid_t pti return 0; } -#ifdef TM_I386SOL2_H -/* - * Function: procfs_find_LDT_entry - * - * Input: - * ptid_t ptid; // The GDB-style pid-plus-LWP. - * - * Return: - * pointer to the corresponding LDT entry. - */ - -struct ssd * -procfs_find_LDT_entry (ptid_t ptid) -{ - gdb_gregset_t *gregs; - int key; - procinfo *pi; - - /* Find procinfo for the lwp. */ - if ((pi = find_procinfo (PIDGET (ptid), TIDGET (ptid))) == NULL) - { - warning (_("procfs_find_LDT_entry: could not find procinfo for %d:%d."), - PIDGET (ptid), TIDGET (ptid)); - return NULL; - } - /* get its general registers. */ - if ((gregs = proc_get_gregs (pi)) == NULL) - { - warning (_("procfs_find_LDT_entry: could not read gregs for %d:%d."), - PIDGET (ptid), TIDGET (ptid)); - return NULL; - } - /* Now extract the GS register's lower 16 bits. */ - key = (*gregs)[GS] & 0xffff; - - /* Find the matching entry and return it. */ - return proc_get_LDT_entry (pi, key); -} -#endif /* TM_I386SOL2_H */ - /* * Memory Mappings Functions: */