From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20643 invoked by alias); 11 Oct 2009 22:10:19 -0000 Received: (qmail 20633 invoked by uid 22791); 11 Oct 2009 22:10:17 -0000 X-SWARE-Spam-Status: No, hits=-2.5 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sun, 11 Oct 2009 22:10:11 +0000 Received: (qmail 11930 invoked from network); 11 Oct 2009 22:10:08 -0000 Received: from unknown (HELO orlando) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 11 Oct 2009 22:10:08 -0000 From: Pedro Alves To: Paul Pluzhnikov Subject: Re: Put a NT_PSTATUS note on solaris cores. Date: Sun, 11 Oct 2009 22:10:00 -0000 User-Agent: KMail/1.9.10 Cc: gdb-patches@sourceware.org, Daniel Gutson References: <200910090236.10584.pedro@codesourcery.com> <8ac60eac0910111421p6afbfbe9ha4544bddc75943ab@mail.gmail.com> In-Reply-To: <8ac60eac0910111421p6afbfbe9ha4544bddc75943ab@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200910112310.26463.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2009-10/txt/msg00214.txt.bz2 On Sunday 11 October 2009 22:21:14, Paul Pluzhnikov wrote: > On Thu, Oct 8, 2009 at 6:36 PM, Pedro Alves wrot= e: >=20 > > 2009-10-09 =A0Pedro Alves =A0 > > > > =A0 =A0 =A0 =A0gdb/ > > =A0 =A0 =A0 =A0* procfs.c (procfs_make_note_section): Always output a N= T_PSTATUS > > =A0 =A0 =A0 =A0note when NEW_PROC_API is defined. >=20 > This causes build failure on 32-bit solaris-10: Meeh. I guess I'll just revert this until the below is resolved, since I made GDB cope without this note. > conftest.c:81: error: `pstatus_t' undeclared (first use in this function) >=20 > This appears to be a bfd configury bug: AFAIC, pstatus_t is defined if > '#include , but not if '#include ', because > the former defines _STRUCTURED_PROC to 1, and the latter to 0. >=20 > Not sure what the proper fix is. Ah, this rings a bell. We have the patch below as local change here. Sorry I didn't notice this. This was needed to make solaris gdb grok system gcore generated cores correctly. It basically switches GDB to output the "new" core format using lwpstatus_t notes, if it is already assuming the new procfs format (NEW_PROC_API). It may be perhaps better to make bfd and gdb's configury to try including if available, and fall back to otherwise, if available. I'm not sure why things weren't done that way. This way does look a bit simpler, though not as clean. Maybe Daniel remembers (?). --=20 Pedro Alves 2009-06-03 Daniel Gutson gdb/ * procfs.c (procfs_do_thread_registers): If NEW_PROC_API is defined, use elfcore_write_lwpstatus. bfd/ * elf.c: Define _STRUCTURED_PROC before including sys/procfs.h. * bfd.m4 (BFD_HAVE_SYS_PROCFS_TYPE): Define _STRUCTURED_PROC before including procfs.h. (BFD_HAVE_SYS_PROCFS_TYPE_MEMBER): Likewise. * configure.in: Added autoconf probe for the pr_fpreg member. * configure: Regenerated. * config.in: Regenerated. --- bfd/bfd.m4 | 4 +++ bfd/config.in | 3 ++ bfd/configure | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++= +++++ bfd/configure.in | 1=20 bfd/elf.c | 2 + gdb/procfs.c | 2 - 6 files changed, 80 insertions(+), 1 deletion(-) Index: src/gdb/procfs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src.orig/gdb/procfs.c 2009-10-09 02:55:25.000000000 +0100 +++ src/gdb/procfs.c 2009-10-11 22:47:49.000000000 +0100 @@ -6063,7 +6063,7 @@ procfs_do_thread_registers (bfd *obfd, p merged_pid =3D TIDGET (ptid) << 16 | PIDGET (ptid); =20 fill_gregset (regcache, &gregs, -1); -#if defined (UNIXWARE) +#if defined (UNIXWARE) || defined (NEW_PROC_API) note_data =3D (char *) elfcore_write_lwpstatus (obfd, note_data, note_size, Index: src/bfd/elf.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src.orig/bfd/elf.c 2009-09-28 18:03:35.000000000 +0100 +++ src/bfd/elf.c 2009-10-11 22:46:55.000000000 +0100 @@ -7420,6 +7420,8 @@ _bfd_elf_rel_vtable_reloc_fn out details about the corefile. */ =20 #ifdef HAVE_SYS_PROCFS_H +/* Needed for new procfs interface on sparc-solaris. */ +# define _STRUCTURED_PROC 1 # include #endif =20 Index: src/bfd/bfd.m4 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src.orig/bfd/bfd.m4 2009-09-14 18:36:15.000000000 +0100 +++ src/bfd/bfd.m4 2009-10-11 22:46:55.000000000 +0100 @@ -8,6 +8,8 @@ AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE], AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_$1, [AC_TRY_COMPILE([ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include ], [$1 avar], bfd_cv_have_sys_procfs_type_$1=3Dyes, @@ -27,6 +29,8 @@ AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE_MEMBE AC_CACHE_VAL(bfd_cv_have_sys_procfs_type_member_$1_$2, [AC_TRY_COMPILE([ #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include ], [$1 avar; void* aref =3D (void*) &avar.$2], bfd_cv_have_sys_procfs_type_member_$1_$2=3Dyes, Index: src/bfd/configure.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src.orig/bfd/configure.in 2009-09-30 02:36:48.000000000 +0100 +++ src/bfd/configure.in 2009-10-11 22:46:55.000000000 +0100 @@ -500,6 +500,7 @@ changequote([,])dnl BFD_HAVE_SYS_PROCFS_TYPE(lwpxstatus_t) BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_context) BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_reg) + BFD_HAVE_SYS_PROCFS_TYPE_MEMBER(lwpstatus_t, pr_fpreg) BFD_HAVE_SYS_PROCFS_TYPE(win32_pstatus_t) fi fi Index: src/bfd/configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src.orig/bfd/configure 2009-09-30 02:36:48.000000000 +0100 +++ src/bfd/configure 2009-10-11 22:48:22.000000000 +0100 @@ -13923,6 +13923,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -13958,6 +13960,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -13993,6 +13997,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14028,6 +14034,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14063,6 +14071,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14098,6 +14108,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14133,6 +14145,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14168,6 +14182,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14203,6 +14219,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14238,6 +14256,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14273,6 +14293,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14308,6 +14330,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14343,6 +14367,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14378,6 +14404,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14413,6 +14441,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () @@ -14439,6 +14469,43 @@ $as_echo "#define HAVE_LWPSTATUS_T_PR_RE { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_= type_member_lwpstatus_t_pr_reg" >&5 $as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_reg" >&6; } =20 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lwpstatus_t.pr_f= preg in sys/procfs.h" >&5 +$as_echo_n "checking for lwpstatus_t.pr_fpreg in sys/procfs.h... " >&6; } + if test "${bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg+set}" = =3D set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 +#include +int +main () +{ +lwpstatus_t avar; void* aref =3D (void*) &avar.pr_fpreg + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg=3Dyes +else + bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg=3Dno + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + if test $bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg =3D yes;= then + +$as_echo "#define HAVE_LWPSTATUS_T_PR_FPREG 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_= type_member_lwpstatus_t_pr_fpreg" >&5 +$as_echo "$bfd_cv_have_sys_procfs_type_member_lwpstatus_t_pr_fpreg" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for win32_pstatus_t = in sys/procfs.h" >&5 $as_echo_n "checking for win32_pstatus_t in sys/procfs.h... " >&6; } if test "${bfd_cv_have_sys_procfs_type_win32_pstatus_t+set}" =3D set; the= n : @@ -14448,6 +14515,8 @@ else /* end confdefs.h. */ =20 #define _SYSCALL32 +/* Needed for new procfs interface on sparc-solaris. */ +#define _STRUCTURED_PROC 1 #include int main () Index: src/bfd/config.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- src.orig/bfd/config.in 2009-09-14 18:36:15.000000000 +0100 +++ src/bfd/config.in 2009-10-11 22:46:55.000000000 +0100 @@ -114,6 +114,9 @@ /* Define if has lwpstatus_t.pr_context. */ #undef HAVE_LWPSTATUS_T_PR_CONTEXT =20 +/* Define if has lwpstatus_t.pr_fpreg. */ +#undef HAVE_LWPSTATUS_T_PR_FPREG + /* Define if has lwpstatus_t.pr_reg. */ #undef HAVE_LWPSTATUS_T_PR_REG =20