This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [GDB][PR gdb/20457] Fix builds broken by proc-service changes.
- From: Yao Qi <qiyaoltc at gmail dot com>
- To: Matthew Wahab <matthew dot wahab at foss dot arm dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Mon, 15 Aug 2016 12:47:48 +0100
- Subject: Re: [GDB][PR gdb/20457] Fix builds broken by proc-service changes.
- Authentication-results: sourceware.org; auth=none
- References: <57ADDA16.9060201@foss.arm.com>
On Fri, Aug 12, 2016 at 3:15 PM, Matthew Wahab
<matthew.wahab@foss.arm.com> wrote:
> Hello,
>
> GLIBC BZ#20311 introduced a change to install proc_service.h so that gdb
> didn't have to use the version it embeds in gdb_proc_service.h. The
> embedded version is guarded by HAVE_PROC_SERVICE_H and
> gdb_proc_service.h has a number other of includes and definitions, all
> of which are uncondional except for an include for gregset.h. This is
> only included if HAVE_PROC_SERIVCE_H is not defined.
>
> This causes a build failure when cross compiling gdb with the latest
> glibc because type definitions in gregset are used independently of
> HAVE_PROC_SERIVCE_H. In particular, they are used in gdb_proc_service.h
> when PRFPREGSET_T_BROKEN is set.
>
> The error messages on the failure are
> ----
> binutils-gdb/gdb/gdb_proc_service.h:173:9: error: ‘gdb_fpregset_t’ does
> not name a type; did you mean ‘elf_fpregset_t’?
> typedef gdb_fpregset_t gdb_prfpregset_t;
> ^~~~~~~~~~~~~~
> elf_fpregset_t
>
> binutils-gdb/gdb/gdb_proc_service.h:173:9: error: ‘gdb_fpregset_t’ does
> not name a type; did you mean ‘elf_fpregset_t’?
> typedef gdb_fpregset_t gdb_prfpregset_t;
> ^~~~~~~~~~~~~~
> elf_fpregset_t
>
> binutils-gdb/gdb/proc-service.c:218:15: error: ‘gdb_prfpregset_t’ does
> not name a type; did you mean ‘gdb_fpregset_t’?
> const gdb_prfpregset_t *fpregset)
> ^~~~~~~~~~~~~~~~
> gdb_fpregset_t
> ----
>
> This patch moves the include for gregset.h to before the code guarded by
> HAVE_PROC_SERIVCE_H, so that it is always included. This is enough to
> fix the build.
Hi Matthew,
Could you please copy these words above to commit log? They are very
useful.
>
> The macro PRFPREGSET_T_BROKEN is set by the configure script which uses
> AC_TRY_RUN to test the sizeof (prfregset_t) and is always set for
> cross-compiled builds. It's probably better to do the test using
> AC_CHECK_SIZEOF, so that cross-compiled build get the correct value.
> I'll send a follow-up patch to do that.
Thanks for doing this...
>
> Tested by building gdb for target and host aarch64-none-linux-gnu
> against previous and current glibc and by cross-compiling for
> aarch64-none-linux-gnu with new glibc on an x86_64-pc-linux-gnu host.
>
> Is this ok?
Yes, it is OK. Please push it in to both master and 7.12 branch.
--
Yao (齐尧)