[GDB] Fix builds broken by proc-service changes.
authorMatthew Wahab <matthew.wahab@arm.com>
Mon, 15 Aug 2016 12:09:04 +0000 (13:09 +0100)
committerMatthew Wahab <matthew.wahab@arm.com>
Mon, 15 Aug 2016 12:09:04 +0000 (13:09 +0100)
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.

2016-08-15  Matthew Wahab  <matthew.wahab@arm.com>

PR gdb/20457
* gdb_proc_service.h: Add an include of gregset.h
        [!HAVE_PROC_SERVICE_H]: Remove the include of gregset.h.

gdb/ChangeLog
gdb/gdb_proc_service.h

index 62aa129..bdb5453 100644 (file)
@@ -1,3 +1,9 @@
+2016-08-15  Matthew Wahab  <matthew.wahab@arm.com>
+
+       PR gdb/20457
+       * gdb_proc_service.h: Add an include of gregset.h
+        [!HAVE_PROC_SERVICE_H]: Remove the include of gregset.h.
+
 2016-08-15  Yao Qi  <yao.qi@linaro.org>
 
        * location.c (explicit_location_lex_one): Compare the return
index 04d3c03..38b98fc 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <sys/types.h>
 
+#include "gregset.h"
+
 #ifdef HAVE_PROC_SERVICE_H
 
 /* glibc's proc_service.h doesn't wrap itself with extern "C".  Need
@@ -60,8 +62,6 @@ EXTERN_C_POP
 #include <sys/procfs.h>
 #endif
 
-#include "gregset.h"
-
 EXTERN_C_PUSH
 
 /* Functions in this interface return one of these status codes.  */