[hurd,commited] hurd: Enable x86_64 build script

Message ID 20230502202424.1350288-1-samuel.thibault@ens-lyon.org
State Committed, archived
Headers
Series [hurd,commited] hurd: Enable x86_64 build script |

Checks

Context Check Description
dj/TryBot-apply_patch fail Patch failed to apply to master at the time it was sent

Commit Message

Samuel Thibault May 2, 2023, 8:24 p.m. UTC
  This now passes crossbuilds.
---
 NEWS                         | 5 +++++
 README                       | 2 +-
 scripts/build-many-glibcs.py | 3 +++
 3 files changed, 9 insertions(+), 1 deletion(-)
  

Comments

Joseph Myers May 9, 2023, 9:53 p.m. UTC | #1
I'm observing that build-many-glibcs.py runs can end up with modifications 
to the source directory (which later cause problems with updating the 
glibc checkout):

diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
index 069865189f..3b6363568d 100644
--- a/sysdeps/mach/hurd/bits/errno.h
+++ b/sysdeps/mach/hurd/bits/errno.h
@@ -4,11 +4,11 @@
      libc-symbols.h
      mach/message.h
      mach/kern_return.h
-     mach/i386/kern_return.h
+     mach/x86_64/kern_return.h
      mach/port.h
      mach/boolean.h
-     mach/i386/boolean.h
-     mach/i386/vm_types.h
+     mach/x86_64/boolean.h
+     mach/x86_64/vm_types.h
      stdint.h
      ../stdlib/stdint.h
      ../bits/libc-header-start.h

What this suggests to me is that the contents generated for 
sysdeps/mach/hurd/bits/errno.h depend on the system for which glibc is 
configured - which is never appropriate for a file in the source 
directory.  Either you need separate files for i386 and x86_64, or the 
contents need to avoid depending on the architecture, or the file needs to 
become purely a build-tree (and installed) file and not checked in.
  
Samuel Thibault May 10, 2023, 11:55 p.m. UTC | #2
Hello,

Joseph Myers, le mar. 09 mai 2023 21:53:26 +0000, a ecrit:
> I'm observing that build-many-glibcs.py runs can end up with modifications 
> to the source directory (which later cause problems with updating the 
> glibc checkout):

Ah, indeed, kern_return.h happens to be pulling machine-specific
headers, but that doesn't matter for the errno.h content. I have thus
ruled them out from the comment.

Samuel
  

Patch

diff --git a/NEWS b/NEWS
index 40964d2ee0..054d81fc81 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,11 @@  Major new features:
 * A new tunable, glibc.pthread.stack_hugetlb, can be used to disable
   Transparent Huge Pages (THP) in stack allocation at pthread_create.
 
+* Support for x86_64 running on Hurd has been added.  This port requires
+  as least binutils 2.40 and GCC 13:
+
+    - x86_64-gnu
+
 Deprecated and removed features, and other changes affecting compatibility:
 
 * In the Linux kernel for the hppa/parisc architecture some of the
diff --git a/README b/README
index 63f3a1bebf..9532b97986 100644
--- a/README
+++ b/README
@@ -12,7 +12,7 @@  implement the operating system behavior seen by user applications.
 In GNU/Hurd systems, it works with a microkernel and Hurd servers.
 
 The GNU C Library implements much of the POSIX.1 functionality in the
-GNU/Hurd system, using configurations i[4567]86-*-gnu.
+GNU/Hurd system, using configurations i[4567]86-*-gnu and x86_64-gnu.
 
 When working with Linux kernels, this version of the GNU C Library
 requires Linux kernel version 3.2 or later.
diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 97b6862167..95726c4a29 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -465,6 +465,9 @@  class Context(object):
                                        'ccopts': '-m32 -march=i486'},
                                       {'arch': 'i586',
                                        'ccopts': '-m32 -march=i586'}])
+        self.add_config(arch='x86_64',
+                        os_name='gnu',
+                        gcc_cfg=['--disable-multilib'])
 
     def add_config(self, **args):
         """Add an individual build configuration."""