diff options
author | Joel Brobecker <brobecker@gnat.com> | 2008-03-12 20:03:12 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2008-03-12 20:03:12 +0000 |
commit | 9cfad774a6a940f4dd0faf602b439098d10d0535 (patch) | |
tree | d7fb45b81f3aa8da1faa94ca3c42313ed4036e32 | |
parent | ca794e09d07742be351bfc2ca2178ca2904ae71e (diff) | |
download | gdb-9cfad774a6a940f4dd0faf602b439098d10d0535.zip gdb-9cfad774a6a940f4dd0faf602b439098d10d0535.tar.gz gdb-9cfad774a6a940f4dd0faf602b439098d10d0535.tar.bz2 |
* 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.
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/procfs.c | 82 | ||||
-rw-r--r-- | gdb/sol-thread.c | 9 |
3 files changed, 53 insertions, 45 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 526bbb0..be0e954 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +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-10 Matt Rice <ratmice@gmail.com> * dwarf2read.c (set_cu_language): Add DW_LANG_ObjC. diff --git a/gdb/procfs.c b/gdb/procfs.c index bde710a..72d72cc 100644 --- a/gdb/procfs.c +++ b/gdb/procfs.c @@ -2919,7 +2919,7 @@ proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, int len, int wflags) #endif } -#ifdef TM_I386SOL2_H /* Is it hokey to use this? */ +#if (defined(__i386__) || defined(__x86_64__)) && defined (sun) #include <sys/sysi86.h> @@ -3011,7 +3011,45 @@ proc_get_LDT_entry (procinfo *pi, int key) #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 ptid) 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: */ diff --git a/gdb/sol-thread.c b/gdb/sol-thread.c index 796065d..bf31fa0 100644 --- a/gdb/sol-thread.c +++ b/gdb/sol-thread.c @@ -1283,9 +1283,12 @@ ps_pdmodel (gdb_ps_prochandle_t ph, int *data_model) } #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, lwpid_t lwpid, /* LDT not found. */ return PS_ERR; } -#endif /* TM_I386SOL2_H */ +#endif /* Convert PTID to printable form. */ |