* sol-thread.c: Replace use of TM_I386SOL2_H by an expression
that is true only on x86-solaris and x86_64-solaris. * procfs.c: Likewise. Move procfs_find_LDT_entry up together with proc_get_LDT_entry.
This commit is contained in:
parent
83116857a3
commit
965b60eecb
3 changed files with 54 additions and 46 deletions
|
@ -1,4 +1,11 @@
|
||||||
2008-03-12 Thiago Jung Bauermann <bauerman.ibm.com>
|
2008-02-12 Joel Brobecker <brobecker@gnat.com>
|
||||||
|
|
||||||
|
* sol-thread.c: Replace use of TM_I386SOL2_H by an expression
|
||||||
|
that is true only on x86-solaris and x86_64-solaris.
|
||||||
|
* procfs.c: Likewise. Move procfs_find_LDT_entry up together
|
||||||
|
with proc_get_LDT_entry.
|
||||||
|
|
||||||
|
2008-03-12 Thiago Jung Bauermann <bauerman@br.ibm.com>
|
||||||
|
|
||||||
* configure.ac (AC_CHECK_FUNCS): Add check for setsid.
|
* configure.ac (AC_CHECK_FUNCS): Add check for setsid.
|
||||||
* config.in, configure: Regenerate.
|
* config.in, configure: Regenerate.
|
||||||
|
|
82
gdb/procfs.c
82
gdb/procfs.c
|
@ -2919,7 +2919,7 @@ proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, int len, int wflags)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TM_I386SOL2_H /* Is it hokey to use this? */
|
#if (defined(__i386__) || defined(__x86_64__)) && defined (sun)
|
||||||
|
|
||||||
#include <sys/sysi86.h>
|
#include <sys/sysi86.h>
|
||||||
|
|
||||||
|
@ -3011,7 +3011,45 @@ proc_get_LDT_entry (procinfo *pi, int key)
|
||||||
#endif
|
#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" =============== */
|
/* =============== END, non-thread part of /proc "MODULE" =============== */
|
||||||
|
|
||||||
|
@ -5331,46 +5369,6 @@ procfs_stopped_by_watchpoint (ptid_t ptid)
|
||||||
return 0;
|
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:
|
* Memory Mappings Functions:
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1283,9 +1283,12 @@ ps_pdmodel (gdb_ps_prochandle_t ph, int *data_model)
|
||||||
}
|
}
|
||||||
#endif /* PR_MODEL_LP64 */
|
#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_err_e
|
||||||
ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||||
|
@ -1311,7 +1314,7 @@ ps_lgetLDT (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||||
/* LDT not found. */
|
/* LDT not found. */
|
||||||
return PS_ERR;
|
return PS_ERR;
|
||||||
}
|
}
|
||||||
#endif /* TM_I386SOL2_H */
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Convert PTID to printable form. */
|
/* Convert PTID to printable form. */
|
||||||
|
|
Loading…
Reference in a new issue