[hurd,commited] hurd: Rework generating errno.h

Message ID 20230806203633.2154738-1-samuel.thibault@ens-lyon.org
State Committed
Commit 53850f044f65dd11efdf67a2ab214d312295d85c
Headers
Series [hurd,commited] hurd: Rework generating errno.h |

Checks

Context Check Description
redhat-pt-bot/TryBot-apply_patch fail Patch failed to apply to master at the time it was sent
redhat-pt-bot/TryBot-32bit fail Patch series failed to apply
linaro-tcwg-bot/tcwg_glibc_check--master-arm warning Patch failed to apply
linaro-tcwg-bot/tcwg_glibc_build--master-aarch64 warning Patch failed to apply
linaro-tcwg-bot/tcwg_glibc_check--master-aarch64 warning Patch failed to apply
linaro-tcwg-bot/tcwg_glibc_build--master-arm warning Patch failed to apply

Commit Message

Samuel Thibault Aug. 6, 2023, 8:36 p.m. UTC
  We only need to give to gawk the headers that actually define error
numbers, so let's rather filter out the other included headers early.
---
 sysdeps/mach/hurd/Makefile     | 30 ++++++++++++++++++------------
 sysdeps/mach/hurd/bits/errno.h | 24 ------------------------
 sysdeps/mach/hurd/errnos.awk   |  6 +-----
 3 files changed, 19 insertions(+), 41 deletions(-)
  

Patch

diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile
index 5bc682a397..029dac4bc7 100644
--- a/sysdeps/mach/hurd/Makefile
+++ b/sysdeps/mach/hurd/Makefile
@@ -66,26 +66,32 @@  errno.texinfo = $(..)manual/errno.texi
 
 hurd = $(..)sysdeps/mach/hurd
 
-define mach-errno-h
-($(foreach h,mach/message.h \
+mach-errno-h = \
+	     mach/message.h \
 	     mach/kern_return.h \
 	     mach/mig_errors.h \
-	     device/device_types.h,\
- echo '#include <$h>';\
- ))
-endef
+	     device/device_types.h
 
 # We use the compiler to generate a list of absolute file names for
 # the headers we want to search for Mach error codes, listed above (and
 # incidentally, all other headers those include).
 -include $(common-objpfx)errnos.d
 $(common-objpfx)errnos.d: $(mach-errnos-deps)
-	$(mach-errno-h) | \
-	$(CC) $(CFLAGS) \
-	    $(subst -include $(common-objpfx)libc-modules.h,,$(CPPFLAGS)) \
-	    -M -x c - | \
-	sed $(sed-remove-objpfx) -e 's,- *:,mach-errnos-deps :=,' \
-	    -e 's, \.\./, $(..),g' > $@t
+	echo -n "mach-errnos-deps := " > $@t
+	for h in $(mach-errno-h) ; do \
+		echo "#include <$$h>" \
+		| $(CC) $(CFLAGS) \
+		    $(subst -include $(common-objpfx)libc-modules.h,,$(CPPFLAGS)) \
+		    -M -x c - \
+		| sed $(sed-remove-objpfx) \
+		    -e 's, \.\./, $(..),g' \
+		    -e 's,\\$$,,g' \
+		    -e 's, ,\n,g' \
+		| grep "$$h$$" \
+		| tr '\n' ' ' \
+		  >> $@t ; \
+	done
+	echo >> $@t
 	mv -f $@t $@
 
 $(hurd)/bits/errno.h: $(common-objpfx)stamp-errnos ;
diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
index a0794f96aa..3b54f5855e 100644
--- a/sysdeps/mach/hurd/bits/errno.h
+++ b/sysdeps/mach/hurd/bits/errno.h
@@ -1,33 +1,9 @@ 
 /* This file generated by errnos.awk from
      errno.texi
-     stdc-predef.h
-     libc-symbols.h
      mach/message.h
      mach/kern_return.h
-     mach/port.h
-     mach/boolean.h
-     stdint.h
-     ../stdlib/stdint.h
-     ../bits/libc-header-start.h
-     features.h
-     features-time64.h
-     ../sysdeps/generic/features-time64.h
-     sys/cdefs.h
-     ../misc/sys/cdefs.h
-     ../sysdeps/x86/bits/wordsize.h
-     ../sysdeps/ieee754/ldbl-96/bits/long-double.h
-     gnu/stubs.h
-     bits/types.h
-     ../posix/bits/types.h
-     ../sysdeps/mach/hurd/bits/timesize.h
-     ../sysdeps/mach/hurd/bits/typesizes.h
-     ../bits/time64.h
-     ../bits/wchar.h
-     ../bits/stdint-intn.h
-     ../bits/stdint-uintn.h
      mach/mig_errors.h
      device/device_types.h
-     mach/std_types.h
    Do not edit this file; edit errnos.awk and regenerate it.  */
 
 #ifndef _BITS_ERRNO_H
diff --git a/sysdeps/mach/hurd/errnos.awk b/sysdeps/mach/hurd/errnos.awk
index b9f717c1af..507e9d26ff 100644
--- a/sysdeps/mach/hurd/errnos.awk
+++ b/sysdeps/mach/hurd/errnos.awk
@@ -23,12 +23,8 @@  BEGIN {
     for (i = 1; i < ARGC; i++)
       {
 	arg = ARGV[i];
-	sub(/.*(manual|include)\//, "", arg);
+	sub(/.*(manual|include|-gnu)\//, "", arg);
 	if (arg ~ /.*errnos.d/) continue;
-	# Those not not actually define anything for errno.h
-	if (arg ~ /mach\/.*\/kern_return.h/) continue;
-	if (arg ~ /mach\/.*\/boolean.h/) continue;
-	if (arg ~ /mach\/.*\/vm_types.h/) continue;
 	print "     " arg;
       }
     print "   Do not edit this file; edit errnos.awk and regenerate it.  */";