about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2018-04-24 16:33:47 +0000
committerJoseph Myers <joseph@codesourcery.com>2018-04-24 16:33:47 +0000
commit5e14bb97937dda422effcf2750b40e342e83ccc8 (patch)
treeb0a48ddf807874758183dff8cb33abc0fb64793b
parente5aea5c314f1f2c4e31e2ca29578ca1a9f2b9b55 (diff)
downloadglibc-5e14bb97937dda422effcf2750b40e342e83ccc8.tar.gz
glibc-5e14bb97937dda422effcf2750b40e342e83ccc8.tar.xz
glibc-5e14bb97937dda422effcf2750b40e342e83ccc8.zip
Fix Hurd glibc build with GCC 8.
The build of glibc for Hurd has been failing with GCC mainline because
of the checks that aliases have the same type as the symbol aliased;
the Hurd dl-sysdep.c has a macro that defines aliases without using
the proper type.  When GCC 8 branches (soon), I intend to make it the
default version in build-many-glibcs.py, so these failures would mean
the default build-many-glibcs.py build fails for Hurd again.

This patch fixes the Hurd build with GCC 8 by changing the macro that
defines the problem aliases to use the correct type for them.  An
include of <not-errno.h> is needed to avoid this use of typeof
resulting in an error for __access_noerrno not being declared.

Tested compilation for i686-gnu with build-many-glibcs.py.

	* sysdeps/mach/hurd/dl-sysdep.c: Include <not-errno.h>.
	(check_no_hidden): Use type of original function when declaring
	alias.
-rw-r--r--ChangeLog4
-rw-r--r--sysdeps/mach/hurd/dl-sysdep.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 67c129b47d..efa8d39391 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2018-04-24  Joseph Myers  <joseph@codesourcery.com>
 
+	* sysdeps/mach/hurd/dl-sysdep.c: Include <not-errno.h>.
+	(check_no_hidden): Use type of original function when declaring
+	alias.
+
 	* sysdeps/unix/sysv/linux/sys/ptrace.h
 	(PTRACE_SECCOMP_GET_METADATA): New enum value and macro.
 	* sysdeps/unix/sysv/linux/bits/ptrace-shared.h
diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index cbf4e05862..547108805e 100644
--- a/sysdeps/mach/hurd/dl-sysdep.c
+++ b/sysdeps/mach/hurd/dl-sysdep.c
@@ -46,6 +46,7 @@
 #include <dl-procinfo.h>
 
 #include <dl-tunables.h>
+#include <not-errno.h>
 
 extern void __mach_init (void);
 
@@ -278,8 +279,9 @@ _dl_sysdep_start_cleanup (void)
 
 /* This macro checks that the function does not get renamed to be hidden: we do
    need these to be overridable by libc's.  */
-#define check_no_hidden(name) \
-static void __check_##name##_no_hidden(void) __attribute__((alias(#name)));
+#define check_no_hidden(name)				\
+  static __typeof (name) __check_##name##_no_hidden	\
+       __attribute__ ((alias (#name)));
 
 /* Open FILE_NAME and return a Hurd I/O for it in *PORT, or return an
    error.  If STAT is non-zero, stat the file into that stat buffer.  */