From 5bca7895b748abc3e01c88221778bda7e5ad3185 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Sun, 31 Aug 2003 15:18:58 +0000 Subject: [PATCH] * 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. --- gdb/ChangeLog | 8 +++++ gdb/i386-linux-nat.c | 75 ++++++++++++++++++++++-------------------- gdb/x86-64-linux-nat.c | 9 ++--- 3 files changed, 53 insertions(+), 39 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 99805b582d7..2f3e2bc03ee 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,13 @@ 2003-08-31 Mark Kettenis + * 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. diff --git a/gdb/i386-linux-nat.c b/gdb/i386-linux-nat.c index dbf91b7658e..e7a85fa70c7 100644 --- a/gdb/i386-linux-nat.c +++ b/gdb/i386-linux-nat.c @@ -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 . 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 . 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. diff --git a/gdb/x86-64-linux-nat.c b/gdb/x86-64-linux-nat.c index 733abdcb42c..a21ac1373ff 100644 --- a/gdb/x86-64-linux-nat.c +++ b/gdb/x86-64-linux-nat.c @@ -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) -- 2.30.2