Fix Hurd glibc build with GCC 8 [committed]

Message ID alpine.DEB.2.20.1804241634040.15101@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers April 24, 2018, 4:34 p.m. UTC
  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.  Committed.

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.
  

Comments

Samuel Thibault April 24, 2018, 4:46 p.m. UTC | #1
Joseph Myers, le mar. 24 avril 2018 16:34:22 +0000, a ecrit:
> Tested compilation for i686-gnu with build-many-glibcs.py.  Committed.

Thanks :)
  

Patch

diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
index cbf4e05..5471088 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.  */