* i386-linux-nat.c (ps_get_thread_area): Don't define as extern.

Only define PTRACE_GET_THREAD_AREA is not already defined.
Various style fixes in code and comments and some additional
spelling fixes in comments.  Move after functions dealing with
debug registers.
* x86-64-linux-nat.c (ps_get_thread_area): Don't define as extern.
Fix coding-style.
This commit is contained in:
Mark Kettenis 2003-08-31 15:18:58 +00:00
parent bda34dc2c9
commit 5bca7895b7
3 changed files with 53 additions and 39 deletions

View File

@ -1,5 +1,13 @@
2003-08-31 Mark Kettenis <kettenis@gnu.org>
* i386-linux-nat.c (ps_get_thread_area): Don't define as extern.
Only define PTRACE_GET_THREAD_AREA is not already defined.
Various style fixes in code and comments and some additional
spelling fixes in comments. Move after functions dealing with
debug registers.
* x86-64-linux-nat.c (ps_get_thread_area): Don't define as extern.
Fix coding-style.
* alphafbsd-tdep.c (alphafbsd_sigcontext_addr): Use
frame_unwind_register_unsigned instead of
frame_unwind_unsigned_register.

View File

@ -687,41 +687,6 @@ i386_linux_dr_set (int regnum, unsigned long value)
perror_with_name ("Couldn't write debug register");
}
/* Called by libthread_db. Return's a pointer to the thread local
storage (or it's descriptor). */
extern ps_err_e
ps_get_thread_area(const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
/* NOTE: cagney/2003-08-26: The definition of this buffer is found
in the kernel header <asm-i386/ldt.h>. It, after padding, is 4 x
4 byte integers in size: "entry_number", "base_addr", "limit",
and a bunch of status bits.
The values returned by this ptrace call should be part of the
regcache buffer, and ps_get_thread_area should channel its
request through the regcache. That way remote targets could
provide the value using the remote protocol and not this direct
call.
Is this function needed? I'm guessing that the "base" is the
address of a a descriptor that libthread_db uses to find the
thread local address base that GDB needs. Perhaphs that
descriptor is defined by the ABI. Anyway, given that
libthread_db calls this function without prompting (gdb
requesting tls base) I guess it needs info in there anyway. */
unsigned int desc[4];
gdb_assert (sizeof (int) == 4);
#define PTRACE_GET_THREAD_AREA 25
if (ptrace (PTRACE_GET_THREAD_AREA,
lwpid, (void *) idx, (unsigned long) &desc) < 0)
return PS_ERR;
*(int *)base = desc[1];
return PS_OK;
}
void
i386_linux_dr_set_control (unsigned long control)
{
@ -751,6 +716,46 @@ i386_linux_dr_get_status (void)
}
/* Called by libthread_db. Returns a pointer to the thread local
storage (or its descriptor). */
ps_err_e
ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
/* NOTE: cagney/2003-08-26: The definition of this buffer is found
in the kernel header <asm-i386/ldt.h>. It, after padding, is 4 x
4 byte integers in size: `entry_number', `base_addr', `limit',
and a bunch of status bits.
The values returned by this ptrace call should be part of the
regcache buffer, and ps_get_thread_area should channel its
request through the regcache. That way remote targets could
provide the value using the remote protocol and not this direct
call.
Is this function needed? I'm guessing that the `base' is the
address of a a descriptor that libthread_db uses to find the
thread local address base that GDB needs. Perhaphs that
descriptor is defined by the ABI. Anyway, given that
libthread_db calls this function without prompting (gdb
requesting tls base) I guess it needs info in there anyway. */
unsigned int desc[4];
gdb_assert (sizeof (int) == 4);
#ifndef PTRACE_GET_THREAD_AREA
#define PTRACE_GET_THREAD_AREA 25
#endif
if (ptrace (PTRACE_GET_THREAD_AREA, lwpid,
(void *) idx, (unsigned long) &desc) < 0)
return PS_ERR;
*(int *)base = desc[1];
return PS_OK;
}
/* Interpreting register set info found in core files. */
/* Provide registers to GDB from a core file.

View File

@ -348,12 +348,12 @@ x86_64_linux_dr_get_status (void)
{
return x86_64_linux_dr_get (DR_STATUS);
}
extern ps_err_e
ps_err_e
ps_get_thread_area (const struct ps_prochandle *ph,
lwpid_t lwpid, int idx, void **base)
{
/* This definition comes from prctl.h, but some kernels may not have it. */
#ifndef PTRACE_ARCH_PRCTL
#define PTRACE_ARCH_PRCTL 30
@ -367,17 +367,18 @@ ps_get_thread_area (const struct ps_prochandle *ph,
{
case FS:
if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_FS) == 0)
return PS_OK;
return PS_OK;
break;
case GS:
if (ptrace (PTRACE_ARCH_PRCTL, lwpid, base, ARCH_GET_GS) == 0)
return PS_OK;
return PS_OK;
break;
default: /* Should not happen. */
return PS_BADADDR;
}
return PS_ERR; /* ptrace failed. */
}
void
child_post_startup_inferior (ptid_t ptid)