mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
* configure.ac: Remove checks for prfpregset_t.
* gdb_proc_service.h: New file. * linux-i386-low.c, linux-x86-64-low.c, thread-db.c: Use the new "gdb_proc_service.h". * proc-service.c: Likewise. (ps_pglobal_lookup, ps_pdread, ps_pdwrite): Use psaddr_t. (ps_lgetfpregs, ps_lsetfpregs): Use a void* argument. * Makefile.in (gdb_proc_service_h): Updated. * configure, config.in: Regenerated.
This commit is contained in:
parent
dc60ece87d
commit
0050a760a7
@ -1,3 +1,15 @@
|
||||
2006-03-15 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* configure.ac: Remove checks for prfpregset_t.
|
||||
* gdb_proc_service.h: New file.
|
||||
* linux-i386-low.c, linux-x86-64-low.c, thread-db.c: Use the
|
||||
new "gdb_proc_service.h".
|
||||
* proc-service.c: Likewise.
|
||||
(ps_pglobal_lookup, ps_pdread, ps_pdwrite): Use psaddr_t.
|
||||
(ps_lgetfpregs, ps_lsetfpregs): Use a void* argument.
|
||||
* Makefile.in (gdb_proc_service_h): Updated.
|
||||
* configure, config.in: Regenerated.
|
||||
|
||||
2006-03-03 Daniel Jacobowitz <dan@codesourcery.com>
|
||||
|
||||
* remote-utils.c (prepare_resume_reply): Move declaration
|
||||
|
@ -242,7 +242,7 @@ version.o: version.c $(server_h)
|
||||
# will remove them.
|
||||
MAKEOVERRIDES=
|
||||
|
||||
gdb_proc_service_h = $(srcdir)/../gdb_proc_service.h $(srcdir)/../gregset.h
|
||||
gdb_proc_service_h = $(srcdir)/gdb_proc_service.h
|
||||
regdat_sh = $(srcdir)/../regformats/regdat.sh
|
||||
regdef_h = $(srcdir)/../regformats/regdef.h
|
||||
regcache_h = $(srcdir)/regcache.h
|
||||
|
@ -25,9 +25,6 @@
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define if <sys/procfs.h> has prfpregset_t. */
|
||||
#undef HAVE_PRFPREGSET_T
|
||||
|
||||
/* Define if <sys/procfs.h> has prgregset_t. */
|
||||
#undef HAVE_PRGREGSET_T
|
||||
|
||||
@ -104,8 +101,5 @@
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define if the prfpregset_t type is broken. */
|
||||
#undef PRFPREGSET_T_BROKEN
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
125
gdb/gdbserver/configure
vendored
125
gdb/gdbserver/configure
vendored
@ -3544,131 +3544,6 @@ _ACEOF
|
||||
echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prgregset_t" >&5
|
||||
echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prgregset_t" >&6
|
||||
|
||||
echo "$as_me:$LINENO: checking for prfpregset_t in sys/procfs.h" >&5
|
||||
echo $ECHO_N "checking for prfpregset_t in sys/procfs.h... $ECHO_C" >&6
|
||||
if test "${bfd_cv_have_sys_procfs_type_prfpregset_t+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
#define _SYSCALL32
|
||||
#include <sys/procfs.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
prfpregset_t avar
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
bfd_cv_have_sys_procfs_type_prfpregset_t=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
bfd_cv_have_sys_procfs_type_prfpregset_t=no
|
||||
|
||||
fi
|
||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
|
||||
if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_PRFPREGSET_T 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $bfd_cv_have_sys_procfs_type_prfpregset_t" >&5
|
||||
echo "${ECHO_T}$bfd_cv_have_sys_procfs_type_prfpregset_t" >&6
|
||||
|
||||
|
||||
|
||||
|
||||
if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
|
||||
echo "$as_me:$LINENO: checking whether prfpregset_t type is broken" >&5
|
||||
echo $ECHO_N "checking whether prfpregset_t type is broken... $ECHO_C" >&6
|
||||
if test "${gdb_cv_prfpregset_t_broken+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
if test "$cross_compiling" = yes; then
|
||||
gdb_cv_prfpregset_t_broken=yes
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <sys/procfs.h>
|
||||
int main ()
|
||||
{
|
||||
if (sizeof (prfpregset_t) == sizeof (void *))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
gdb_cv_prfpregset_t_broken=no
|
||||
else
|
||||
echo "$as_me: program exited with status $ac_status" >&5
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
( exit $ac_status )
|
||||
gdb_cv_prfpregset_t_broken=yes
|
||||
fi
|
||||
rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$as_me:$LINENO: result: $gdb_cv_prfpregset_t_broken" >&5
|
||||
echo "${ECHO_T}$gdb_cv_prfpregset_t_broken" >&6
|
||||
if test $gdb_cv_prfpregset_t_broken = yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define PRFPREGSET_T_BROKEN 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "$as_me:$LINENO: checking for elf_fpregset_t in sys/procfs.h" >&5
|
||||
echo $ECHO_N "checking for elf_fpregset_t in sys/procfs.h... $ECHO_C" >&6
|
||||
if test "${bfd_cv_have_sys_procfs_type_elf_fpregset_t+set}" = set; then
|
||||
|
@ -1,5 +1,6 @@
|
||||
dnl Autoconf configure script for GDB server.
|
||||
dnl Copyright (C) 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
dnl Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006
|
||||
dnl Free Software Foundation, Inc.
|
||||
dnl
|
||||
dnl This file is part of GDB.
|
||||
dnl
|
||||
@ -88,35 +89,6 @@ if test "$ac_cv_header_sys_procfs_h" = yes; then
|
||||
BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t)
|
||||
BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t)
|
||||
BFD_HAVE_SYS_PROCFS_TYPE(prgregset_t)
|
||||
BFD_HAVE_SYS_PROCFS_TYPE(prfpregset_t)
|
||||
|
||||
dnl Check for broken prfpregset_t type
|
||||
|
||||
dnl For Linux/i386, glibc 2.1.3 was released with a bogus
|
||||
dnl prfpregset_t type (it's a typedef for the pointer to a struct
|
||||
dnl instead of the struct itself). We detect this here, and work
|
||||
dnl around it in gdb_proc_service.h.
|
||||
|
||||
if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then
|
||||
AC_MSG_CHECKING(whether prfpregset_t type is broken)
|
||||
AC_CACHE_VAL(gdb_cv_prfpregset_t_broken,
|
||||
[AC_TRY_RUN([#include <sys/procfs.h>
|
||||
int main ()
|
||||
{
|
||||
if (sizeof (prfpregset_t) == sizeof (void *))
|
||||
return 1;
|
||||
return 0;
|
||||
}],
|
||||
gdb_cv_prfpregset_t_broken=no,
|
||||
gdb_cv_prfpregset_t_broken=yes,
|
||||
gdb_cv_prfpregset_t_broken=yes)])
|
||||
AC_MSG_RESULT($gdb_cv_prfpregset_t_broken)
|
||||
if test $gdb_cv_prfpregset_t_broken = yes; then
|
||||
AC_DEFINE(PRFPREGSET_T_BROKEN, 1,
|
||||
[Define if the prfpregset_t type is broken.])
|
||||
fi
|
||||
fi
|
||||
|
||||
BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t)
|
||||
fi
|
||||
|
||||
|
75
gdb/gdbserver/gdb_proc_service.h
Normal file
75
gdb/gdbserver/gdb_proc_service.h
Normal file
@ -0,0 +1,75 @@
|
||||
/* <proc_service.h> replacement for systems that don't have it.
|
||||
Copyright (C) 2000, 2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02110-1301, USA. */
|
||||
|
||||
#ifndef GDB_PROC_SERVICE_H
|
||||
#define GDB_PROC_SERVICE_H
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef HAVE_PROC_SERVICE_H
|
||||
#include <proc_service.h>
|
||||
#else
|
||||
|
||||
#ifdef HAVE_SYS_PROCFS_H
|
||||
#include <sys/procfs.h>
|
||||
#endif
|
||||
|
||||
/* Not all platforms bring in <linux/elf.h> via <sys/procfs.h>. If
|
||||
<sys/procfs.h> wasn't enough to find elf_fpregset_t, try the kernel
|
||||
headers also (but don't if we don't need to). */
|
||||
#ifndef HAVE_ELF_FPREGSET_T
|
||||
# ifdef HAVE_LINUX_ELF_H
|
||||
# include <linux/elf.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
PS_OK, /* Success. */
|
||||
PS_ERR, /* Generic error. */
|
||||
PS_BADPID, /* Bad process handle. */
|
||||
PS_BADLID, /* Bad LWP id. */
|
||||
PS_BADADDR, /* Bad address. */
|
||||
PS_NOSYM, /* Symbol not found. */
|
||||
PS_NOFREGS /* FPU register set not available. */
|
||||
} ps_err_e;
|
||||
|
||||
#ifndef HAVE_LWPID_T
|
||||
typedef unsigned int lwpid_t;
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_PSADDR_T
|
||||
typedef unsigned long psaddr_t;
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_PRGREGSET_T
|
||||
typedef elf_gregset_t prgregset_t;
|
||||
#endif
|
||||
|
||||
#endif /* HAVE_PROC_SERVICE_H */
|
||||
|
||||
/* Structure that identifies the target process. */
|
||||
struct ps_prochandle
|
||||
{
|
||||
/* The process id is all we need. */
|
||||
pid_t pid;
|
||||
};
|
||||
|
||||
#endif /* gdb_proc_service.h */
|
@ -1,5 +1,5 @@
|
||||
/* GNU/Linux/i386 specific low level interface, for the remote server for GDB.
|
||||
Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2004, 2005
|
||||
Copyright (C) 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
@ -23,19 +23,7 @@
|
||||
#include "linux-low.h"
|
||||
#include "i387-fp.h"
|
||||
|
||||
/* Correct for all GNU/Linux targets (for quite some time). */
|
||||
#define GDB_GREGSET_T elf_gregset_t
|
||||
#define GDB_FPREGSET_T elf_fpregset_t
|
||||
|
||||
#ifndef HAVE_ELF_FPREGSET_T
|
||||
/* Make sure we have said types. Not all platforms bring in <linux/elf.h>
|
||||
via <sys/procfs.h>. */
|
||||
#ifdef HAVE_LINUX_ELF_H
|
||||
#include <linux/elf.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../gdb_proc_service.h"
|
||||
#include "gdb_proc_service.h"
|
||||
|
||||
#include <sys/ptrace.h>
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* GNU/Linux/x86-64 specific low level interface, for the remote server
|
||||
for GDB.
|
||||
Copyright (C) 2002, 2004, 2005
|
||||
Copyright (C) 2002, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
@ -24,19 +24,7 @@
|
||||
#include "linux-low.h"
|
||||
#include "i387-fp.h"
|
||||
|
||||
/* Correct for all GNU/Linux targets (for quite some time). */
|
||||
#define GDB_GREGSET_T elf_gregset_t
|
||||
#define GDB_FPREGSET_T elf_fpregset_t
|
||||
|
||||
#ifndef HAVE_ELF_FPREGSET_T
|
||||
/* Make sure we have said types. Not all platforms bring in <linux/elf.h>
|
||||
via <sys/procfs.h>. */
|
||||
#ifdef HAVE_LINUX_ELF_H
|
||||
#include <linux/elf.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../gdb_proc_service.h"
|
||||
#include "gdb_proc_service.h"
|
||||
|
||||
#include <sys/reg.h>
|
||||
#include <sys/procfs.h>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* libthread_db helper functions for the remote server for GDB.
|
||||
Copyright (C) 2002, 2004, 2005
|
||||
Copyright (C) 2002, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Contributed by MontaVista Software.
|
||||
@ -29,19 +29,7 @@
|
||||
|
||||
#include "linux-low.h"
|
||||
|
||||
/* Correct for all GNU/Linux targets (for quite some time). */
|
||||
#define GDB_GREGSET_T elf_gregset_t
|
||||
#define GDB_FPREGSET_T elf_fpregset_t
|
||||
|
||||
#ifndef HAVE_ELF_FPREGSET_T
|
||||
/* Make sure we have said types. Not all platforms bring in <linux/elf.h>
|
||||
via <sys/procfs.h>. */
|
||||
#ifdef HAVE_LINUX_ELF_H
|
||||
#include <linux/elf.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../gdb_proc_service.h"
|
||||
#include "gdb_proc_service.h"
|
||||
|
||||
typedef struct ps_prochandle *gdb_ps_prochandle_t;
|
||||
typedef void *gdb_ps_read_buf_t;
|
||||
@ -75,14 +63,14 @@ gregset_info(void)
|
||||
|
||||
ps_err_e
|
||||
ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
|
||||
const char *name, paddr_t *sym_addr)
|
||||
const char *name, psaddr_t *sym_addr)
|
||||
{
|
||||
CORE_ADDR addr;
|
||||
|
||||
if (look_up_one_symbol (name, &addr) == 0)
|
||||
return PS_NOSYM;
|
||||
|
||||
*sym_addr = (paddr_t) (unsigned long) addr;
|
||||
*sym_addr = (psaddr_t) (unsigned long) addr;
|
||||
return PS_OK;
|
||||
}
|
||||
|
||||
@ -90,20 +78,20 @@ ps_pglobal_lookup (gdb_ps_prochandle_t ph, const char *obj,
|
||||
them into BUF. */
|
||||
|
||||
ps_err_e
|
||||
ps_pdread (gdb_ps_prochandle_t ph, paddr_t addr,
|
||||
ps_pdread (gdb_ps_prochandle_t ph, psaddr_t addr,
|
||||
gdb_ps_read_buf_t buf, gdb_ps_size_t size)
|
||||
{
|
||||
read_inferior_memory (addr, buf, size);
|
||||
read_inferior_memory ((unsigned long) addr, buf, size);
|
||||
return PS_OK;
|
||||
}
|
||||
|
||||
/* Write SIZE bytes from BUF into the target process PH at address ADDR. */
|
||||
|
||||
ps_err_e
|
||||
ps_pdwrite (gdb_ps_prochandle_t ph, paddr_t addr,
|
||||
ps_pdwrite (gdb_ps_prochandle_t ph, psaddr_t addr,
|
||||
gdb_ps_write_buf_t buf, gdb_ps_size_t size)
|
||||
{
|
||||
return write_inferior_memory (addr, buf, size);
|
||||
return write_inferior_memory ((unsigned long) addr, buf, size);
|
||||
}
|
||||
|
||||
/* Get the general registers of LWP LWPID within the target process PH
|
||||
@ -149,8 +137,7 @@ ps_lsetregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, const prgregset_t gregset)
|
||||
process PH and store them in FPREGSET. */
|
||||
|
||||
ps_err_e
|
||||
ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||
gdb_prfpregset_t *fpregset)
|
||||
ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, void *fpregset)
|
||||
{
|
||||
/* Unneeded. */
|
||||
return PS_ERR;
|
||||
@ -160,8 +147,7 @@ ps_lgetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||
process PH from FPREGSET. */
|
||||
|
||||
ps_err_e
|
||||
ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid,
|
||||
const gdb_prfpregset_t *fpregset)
|
||||
ps_lsetfpregs (gdb_ps_prochandle_t ph, lwpid_t lwpid, void *fpregset)
|
||||
{
|
||||
/* Unneeded. */
|
||||
return PS_ERR;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Thread management interface, for the remote server for GDB.
|
||||
Copyright (C) 2002, 2004, 2005
|
||||
Copyright (C) 2002, 2004, 2005, 2006
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
Contributed by MontaVista Software.
|
||||
@ -31,19 +31,7 @@ extern int debug_threads;
|
||||
#include <thread_db.h>
|
||||
#endif
|
||||
|
||||
/* Correct for all GNU/Linux targets (for quite some time). */
|
||||
#define GDB_GREGSET_T elf_gregset_t
|
||||
#define GDB_FPREGSET_T elf_fpregset_t
|
||||
|
||||
#ifndef HAVE_ELF_FPREGSET_T
|
||||
/* Make sure we have said types. Not all platforms bring in <linux/elf.h>
|
||||
via <sys/procfs.h>. */
|
||||
#ifdef HAVE_LINUX_ELF_H
|
||||
#include <linux/elf.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../gdb_proc_service.h"
|
||||
#include "gdb_proc_service.h"
|
||||
|
||||
/* Structure that identifies the child process for the
|
||||
<proc_service.h> interface. */
|
||||
|
Loading…
Reference in New Issue
Block a user