From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 70021 invoked by alias); 28 Sep 2018 14:50:23 -0000 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 Received: (qmail 69905 invoked by uid 89); 28 Sep 2018 14:50:22 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 28 Sep 2018 14:50:14 +0000 Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 96ACE307D845 for ; Fri, 28 Sep 2018 14:50:13 +0000 (UTC) Received: from blade.nx (ovpn-117-194.ams2.redhat.com [10.36.117.194]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3587B3091375 for ; Fri, 28 Sep 2018 14:50:13 +0000 (UTC) Received: from blade.com (localhost [127.0.0.1]) by blade.nx (Postfix) with ESMTP id 5E82080B0922 for ; Fri, 28 Sep 2018 15:50:12 +0100 (BST) From: Gary Benson To: gdb-patches@sourceware.org Subject: [PATCH 2/5] Add workaround from gdbserver's gdb_proc_service.h to GDB Date: Fri, 28 Sep 2018 14:50:00 -0000 Message-Id: <1538146201-16374-3-git-send-email-gbenson@redhat.com> In-Reply-To: <1538146201-16374-1-git-send-email-gbenson@redhat.com> References: <1538146201-16374-1-git-send-email-gbenson@redhat.com> X-IsSubscribed: yes X-SW-Source: 2018-09/txt/msg00896.txt.bz2 This commit adds a workaround from gdbserver's gdb_proc_service.h to GDB's. It doesn't seem to have been needed on any glibc as far back as 2001, but it's possibly required for other C libraries so I've retained it. gdb/ChangeLog: * configure.ac: Check if sys/procfs.h defines elf_fpregset_t. (AC_CHECK_HEADERS): Check for linux/elf.h. * configure, config.in: Rebuild. * gdb_proc_service.h: Include linux/elf.h if sys/procfs.h doesn't define elf_fpregset_t. --- gdb/ChangeLog | 8 ++++++++ gdb/config.in | 6 ++++++ gdb/configure | 39 ++++++++++++++++++++++++++++++++++++++- gdb/configure.ac | 3 ++- gdb/gdb_proc_service.h | 9 +++++++++ 5 files changed, 63 insertions(+), 2 deletions(-) diff --git a/gdb/config.in b/gdb/config.in index 01acda1..fc7c859 100644 --- a/gdb/config.in +++ b/gdb/config.in @@ -156,6 +156,9 @@ /* Define if ELF support should be included. */ #undef HAVE_ELF +/* Define if has elf_fpregset_t. */ +#undef HAVE_ELF_FPREGSET_T + /* Define to 1 if you have the header file. */ #undef HAVE_ELF_HP_H @@ -261,6 +264,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LIBUNWIND_IA64_H +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_ELF_H + /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_PERF_EVENT_H diff --git a/gdb/configure b/gdb/configure index a5d6e74..4a725f6 100755 --- a/gdb/configure +++ b/gdb/configure @@ -12165,7 +12165,7 @@ fi # elf_hp.h is for HP/UX 64-bit shared library support. for ac_header in nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \ - thread_db.h \ + thread_db.h linux/elf.h \ sys/file.h sys/filio.h sys/ioctl.h sys/param.h \ sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \ sys/reg.h sys/debugreg.h sys/select.h \ @@ -14636,6 +14636,43 @@ $as_echo "#define HAVE_PSADDR_T 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_psaddr_t" >&5 $as_echo "$bfd_cv_have_sys_procfs_type_psaddr_t" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_fpregset_t in sys/procfs.h" >&5 +$as_echo_n "checking for elf_fpregset_t in sys/procfs.h... " >&6; } + if ${bfd_cv_have_sys_procfs_type_elf_fpregset_t+:} false; 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 () +{ +elf_fpregset_t avar + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bfd_cv_have_sys_procfs_type_elf_fpregset_t=yes +else + bfd_cv_have_sys_procfs_type_elf_fpregset_t=no + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + if test $bfd_cv_have_sys_procfs_type_elf_fpregset_t = yes; then + +$as_echo "#define HAVE_ELF_FPREGSET_T 1" >>confdefs.h + + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&5 +$as_echo "$bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&6; } + diff --git a/gdb/configure.ac b/gdb/configure.ac index 66fc6c6..a469d0a 100644 --- a/gdb/configure.ac +++ b/gdb/configure.ac @@ -1296,7 +1296,7 @@ fi AC_HEADER_STDC # elf_hp.h is for HP/UX 64-bit shared library support. AC_CHECK_HEADERS([nlist.h machine/reg.h poll.h sys/poll.h proc_service.h \ - thread_db.h \ + thread_db.h linux/elf.h \ sys/file.h sys/filio.h sys/ioctl.h sys/param.h \ sys/resource.h sys/procfs.h sys/ptrace.h ptrace.h \ sys/reg.h sys/debugreg.h sys/select.h \ @@ -1528,6 +1528,7 @@ if test "$ac_cv_header_sys_procfs_h" = yes; then BFD_HAVE_SYS_PROCFS_TYPE(prgregset32_t) BFD_HAVE_SYS_PROCFS_TYPE(lwpid_t) BFD_HAVE_SYS_PROCFS_TYPE(psaddr_t) + BFD_HAVE_SYS_PROCFS_TYPE(elf_fpregset_t) dnl Check for broken prfpregset_t type diff --git a/gdb/gdb_proc_service.h b/gdb/gdb_proc_service.h index 39f0e03..ee9358d 100644 --- a/gdb/gdb_proc_service.h +++ b/gdb/gdb_proc_service.h @@ -64,6 +64,15 @@ EXTERN_C_POP #include #endif +/* Not all platforms bring in via . If + 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 +# endif +#endif + EXTERN_C_PUSH /* Functions in this interface return one of these status codes. */ -- 1.8.3.1