public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v3 0/6] The remaining x86_64-gnu patches
@ 2023-04-29 20:18 Sergey Bugaev
  2023-04-29 20:18 ` [PATCH v3 1/6] hurd: Implement sigreturn for x86_64 Sergey Bugaev
                   ` (6 more replies)
  0 siblings, 7 replies; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

These are the patches that I have locally that have not (yet) been
pushed. Most of them I have already sent previously, but have made
changes to since then. Please see the notes on individual patches.

I'm putting "v3" on the whole series because some of the patches here
have already been through v1 and v2.

If these patches are pushed, it should be possible for anyone to build
x86_64-gnu glibc just out of Git master, without having to dig through
the mailing list archive for uncommited patches.

Sergey

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 1/6] hurd: Implement sigreturn for x86_64
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
@ 2023-04-29 20:18 ` Sergey Bugaev
  2023-04-30 23:06   ` Samuel Thibault
  2023-04-29 20:18 ` [PATCH v3 2/6] hurd: Implement longjmp " Sergey Bugaev
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
This incorporates back the fix made to the i386 version: we do need to call
_hurd_self_sigstate () once after all.

 sysdeps/mach/hurd/x86_64/sigreturn.c | 162 +++++++++++++++++++++++++++
 1 file changed, 162 insertions(+)
 create mode 100644 sysdeps/mach/hurd/x86_64/sigreturn.c

diff --git a/sysdeps/mach/hurd/x86_64/sigreturn.c b/sysdeps/mach/hurd/x86_64/sigreturn.c
new file mode 100644
index 00000000..82247e3c
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/sigreturn.c
@@ -0,0 +1,162 @@
+/* Copyright (C) 1991-2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <hurd.h>
+#include <hurd/signal.h>
+#include <hurd/msg.h>
+#include <stdlib.h>
+
+/* This is run on the thread stack after restoring it, to be able to
+   unlock SS off sigstack.  */
+void
+__sigreturn2 (struct hurd_sigstate *ss, uintptr_t *usp,
+              struct sigcontext *scp)
+{
+  mach_port_t reply_port;
+  _hurd_sigstate_unlock (ss);
+
+  /* Destroy the MiG reply port used by the signal handler, and restore the
+     reply port in use by the thread when interrupted.
+
+     We cannot use the original reply port for our RPCs that we do here, since
+     we could unexpectedly receive/consume a reply message meant for the user
+     (in particular, msg_sig_post_reply), and also since we would deallocate
+     the port if *our* RPC fails, which we don't want to do since the user
+     still has the old name.  And so, temporarily set MACH_PORT_DEAD as our
+     reply name, and make sure destroying the port is the very last RPC we
+     do.  */
+  reply_port = THREAD_GETMEM (THREAD_SELF, reply_port);
+  THREAD_SETMEM (THREAD_SELF, reply_port, MACH_PORT_DEAD);
+  if (__glibc_likely (MACH_PORT_VALID (reply_port)))
+    (void) __mach_port_mod_refs (__mach_task_self (), reply_port,
+                                 MACH_PORT_RIGHT_RECEIVE, -1);
+  THREAD_SETMEM (THREAD_SELF, reply_port, scp->sc_reply_port);
+
+  asm volatile (
+                /* Point the stack to the register dump.  */
+                "movq %0, %%rsp\n"
+                /* Pop off the registers.  */
+                "popq %%r8\n"
+                "popq %%r9\n"
+                "popq %%r10\n"
+                "popq %%r11\n"
+                "popq %%r12\n"
+                "popq %%r13\n"
+                "popq %%r14\n"
+                "popq %%r15\n"
+                "popq %%rdi\n"
+                "popq %%rsi\n"
+                "popq %%rbp\n"
+                "popq %%rbx\n"
+                "popq %%rdx\n"
+                "popq %%rcx\n"
+                "popq %%rax\n"
+                "popfq\n"
+                /* Restore %rip and %rsp with a single instruction.  */
+                "retq $128" :
+                : "rm" (usp));
+  __builtin_unreachable ();
+}
+
+int
+__sigreturn (struct sigcontext *scp)
+{
+  struct hurd_sigstate *ss;
+  struct hurd_userlink *link = (void *) &scp[1];
+
+  if (__glibc_unlikely (scp == NULL || (scp->sc_mask & _SIG_CANT_MASK)))
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  ss = _hurd_self_sigstate ();
+  _hurd_sigstate_lock (ss);
+
+  /* Remove the link on the `active resources' chain added by
+     _hurd_setup_sighandler.  Its purpose was to make sure
+     that we got called; now we have, it is done.  */
+  _hurd_userlink_unlink (link);
+
+  /* Restore the set of blocked signals, and the intr_port slot.  */
+  ss->blocked = scp->sc_mask;
+  ss->intr_port = scp->sc_intr_port;
+
+  /* Check for pending signals that were blocked by the old set.  */
+  if (_hurd_sigstate_pending (ss) & ~ss->blocked)
+    {
+      /* There are pending signals that just became unblocked.  Wake up the
+	 signal thread to deliver them.  But first, squirrel away SCP where
+	 the signal thread will notice it if it runs another handler, and
+	 arrange to have us called over again in the new reality.  */
+      ss->context = scp;
+      _hurd_sigstate_unlock (ss);
+      __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());
+      /* If a pending signal was handled, sig_post never returned.
+	 If it did return, the pending signal didn't run a handler;
+	 proceed as usual.  */
+      _hurd_sigstate_lock (ss);
+      ss->context = NULL;
+    }
+
+  if (scp->sc_onstack)
+    ss->sigaltstack.ss_flags &= ~SS_ONSTACK;
+
+  if (scp->sc_fpused)
+    /* Restore the FPU state.  Mach conveniently stores the state
+       in the format the i387 `frstor' instruction uses to restore it.  */
+    asm volatile ("frstor %0" : : "m" (scp->sc_fpsave));
+
+  {
+    /* There are convenient instructions to pop state off the stack, so we
+       copy the registers onto the user's stack, switch there, pop and
+       return.  */
+
+    uintptr_t *usp = (uintptr_t *) scp->sc_ursp - 128;
+
+    *--usp = scp->sc_rip;
+    *--usp = scp->sc_rfl;
+    *--usp = scp->sc_rax;
+    *--usp = scp->sc_rcx;
+    *--usp = scp->sc_rdx;
+    *--usp = scp->sc_rbx;
+    *--usp = scp->sc_rbp;
+    *--usp = scp->sc_rsi;
+    *--usp = scp->sc_rdi;
+    *--usp = scp->sc_r15;
+    *--usp = scp->sc_r14;
+    *--usp = scp->sc_r13;
+    *--usp = scp->sc_r12;
+    *--usp = scp->sc_r11;
+    *--usp = scp->sc_r10;
+    *--usp = scp->sc_r9;
+    *--usp = scp->sc_r8;
+
+    /* Switch to the user's stack that we have just prepared, and call
+       __sigreturn2.  Clobber "memory" to make sure GCC flushes the stack
+       setup to actual memory.  We align the stack as per the ABI, but pass
+       the original usp to __sigreturn2 as an argument.  */
+    asm volatile ("movq %1, %%rsp\n"
+                  "andq $-16, %%rsp\n"
+                  "call __sigreturn2" :
+                  : "D" (ss), "S" (usp), "d" (scp)
+                  : "memory");
+    __builtin_unreachable ();
+  }
+}
+
+weak_alias (__sigreturn, sigreturn)
-- 
2.40.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 2/6] hurd: Implement longjmp for x86_64
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
  2023-04-29 20:18 ` [PATCH v3 1/6] hurd: Implement sigreturn for x86_64 Sergey Bugaev
@ 2023-04-29 20:18 ` Sergey Bugaev
  2023-04-30 23:16   ` Samuel Thibault
  2023-04-29 20:18 ` [RFC PATCH v3 3/6] hurd: Replace reply port with a dead name on failed interruption Sergey Bugaev
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

Checked on x86_64-gnu.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
I have checked that setjmp/longjmp actually works sucessfully, with both
__longjmp and ____longjmp_chk. I have not been able to check w/ sigaltstack
because we don't yet have the proc server and signals.

Changes since v1:
- drop the separate non-PIC version, we can always use %rip-relative access
  on x86_64, and that's what the compiler generates anyway even with -fno-pic;
- use "cmpb $0, __libc_tls_initialized(%rip)" over
  "movb __libc_tls_initialized(%rip), %r10b; testb %r10b, %r10b" -- the former
  is what the compiler generates, so better be consistent.

 sysdeps/mach/hurd/x86_64/____longjmp_chk.S | 118 +++++++++++++++++++++
 sysdeps/mach/hurd/x86_64/__longjmp.S       |  96 +++++++++++++++++
 2 files changed, 214 insertions(+)
 create mode 100644 sysdeps/mach/hurd/x86_64/____longjmp_chk.S
 create mode 100644 sysdeps/mach/hurd/x86_64/__longjmp.S

diff --git a/sysdeps/mach/hurd/x86_64/____longjmp_chk.S b/sysdeps/mach/hurd/x86_64/____longjmp_chk.S
new file mode 100644
index 00000000..935b8575
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/____longjmp_chk.S
@@ -0,0 +1,118 @@
+/* Checked longjmp support.  x86_64 Hurd version.
+   Copyright (C) 2001-2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include <pointer_guard.h>
+#include <jmpbuf-offsets.h>
+#include <asm-syntax.h>
+#include <tcb-offsets.h>
+#include <jmp_buf-ssp.h>
+#include <signal-defines.h>
+
+#define SS_ONSTACK 1
+
+/* Don't restore shadow stack register if shadow stack isn't enabled.  */
+#if !SHSTK_ENABLED
+# undef SHADOW_STACK_POINTER_OFFSET
+#endif
+
+	.section .rodata.str1.1,"aMS",@progbits,1
+	.type	longjmp_msg,@object
+longjmp_msg:
+	.string "longjmp causes uninitialized stack frame"
+	.size	longjmp_msg, .-longjmp_msg
+
+
+# define CALL_FAIL	sub	$8, %RSP_LP;				      \
+			cfi_remember_state;				      \
+			cfi_def_cfa_offset(16);				      \
+			lea	longjmp_msg(%rip), %RDI_LP;		      \
+			call	HIDDEN_JUMPTARGET(__fortify_fail);	      \
+			nop;						      \
+			cfi_restore_state
+
+/* Jump to the position specified by ENV, causing the
+   setjmp call there to return VAL, or 1 if VAL is 0.
+   void __longjmp (__jmp_buf env, int val).  */
+	.text
+ENTRY(____longjmp_chk)
+	/* Restore registers.  */
+	mov	(JB_RSP*8)(%rdi), %R8_LP
+	mov	(JB_RBP*8)(%rdi),%R9_LP
+	mov	(JB_PC*8)(%rdi), %RDX_LP
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (%R8_LP)
+	PTR_DEMANGLE (%R9_LP)
+	PTR_DEMANGLE (%RDX_LP)
+#endif
+
+#if !defined (SHARED) || IS_IN (rtld)
+	cmpb	$0, __libc_tls_initialized(%rip)
+	jz	.Lok		/* TLS not initialized yet */
+#endif
+
+	movq %fs:SIGSTATE_OFFSET, %R10_LP
+	testq %R10_LP, %R10_LP
+	jz	.Lok		/* sigstate not initialized yet */
+
+	testl	$SS_ONSTACK, (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
+	jnz	.Lonstack
+
+	/* We were on the main stack.  Jumping to a higher-address
+           frame is always allowed, otherwise it's not allowed.  */
+	cmp	%R8_LP, %RSP_LP
+	jbe	.Lok
+
+.Lfail:	CALL_FAIL
+
+.Lonstack:
+	cmpq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R8_LP
+	jb	.Loks		/* Jumping below the altstack, switch */
+
+	movq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R11_LP
+	addq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SIZE__OFFSET)(%R10_LP), %R11_LP
+	cmpq	%R11_LP, %R8_LP
+	jb	.Lok		/* Jumping inside the altstack, do not switch */
+
+	/* Jumping above the altstack, switch */
+
+.Loks:
+	andl	$~(SS_ONSTACK), (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
+
+.Lok:
+	/* We add unwind information for the target here.  */
+	cfi_def_cfa(%rdi, 0)
+	cfi_register(%rsp,%r8)
+	cfi_register(%rbp,%r9)
+	cfi_register(%rip,%rdx)
+	cfi_offset(%rbx,JB_RBX*8)
+	cfi_offset(%r12,JB_R12*8)
+	cfi_offset(%r13,JB_R13*8)
+	cfi_offset(%r14,JB_R14*8)
+	cfi_offset(%r15,JB_R15*8)
+	movq	(JB_RBX*8)(%rdi), %rbx
+	movq	(JB_R12*8)(%rdi), %r12
+	movq	(JB_R13*8)(%rdi), %r13
+	movq	(JB_R14*8)(%rdi), %r14
+	movq	(JB_R15*8)(%rdi), %r15
+	/* Set return value for setjmp.  */
+	movl	%esi, %eax
+	mov	%R8_LP, %RSP_LP
+	movq	%r9,%rbp
+	jmpq	*%rdx
+END (____longjmp_chk)
diff --git a/sysdeps/mach/hurd/x86_64/__longjmp.S b/sysdeps/mach/hurd/x86_64/__longjmp.S
new file mode 100644
index 00000000..389c1d16
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/__longjmp.S
@@ -0,0 +1,96 @@
+/* longjmp support.  x86_64/Hurd version.
+   Copyright (C) 2001-2023 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <https://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include <pointer_guard.h>
+#include <jmpbuf-offsets.h>
+#include <asm-syntax.h>
+#include <tcb-offsets.h>
+#include <jmp_buf-ssp.h>
+#include <signal-defines.h>
+
+#define SS_ONSTACK 1
+
+/* Don't restore shadow stack register if shadow stack isn't enabled.  */
+#if !SHSTK_ENABLED
+# undef SHADOW_STACK_POINTER_OFFSET
+#endif
+
+/* Jump to the position specified by ENV, causing the
+   setjmp call there to return VAL, or 1 if VAL is 0.
+   void __longjmp (__jmp_buf env, int val).  */
+	.text
+ENTRY(__longjmp)
+	/* Restore registers.  */
+	mov	(JB_RSP*8)(%rdi), %R8_LP
+	mov	(JB_RBP*8)(%rdi),%R9_LP
+	mov	(JB_PC*8)(%rdi), %RDX_LP
+#ifdef PTR_DEMANGLE
+	PTR_DEMANGLE (%R8_LP)
+	PTR_DEMANGLE (%R9_LP)
+	PTR_DEMANGLE (%RDX_LP)
+#endif
+
+#if !defined (SHARED) || IS_IN (rtld)
+	cmpb	$0, __libc_tls_initialized(%rip)
+	jz	.Lok		/* TLS not initialized yet */
+#endif
+
+	movq %fs:SIGSTATE_OFFSET, %R10_LP
+	testq %R10_LP, %R10_LP
+	jz	.Lok		/* sigstate not initialized yet */
+
+	testl	$SS_ONSTACK, (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
+	jz	.Lok
+
+.Lonstack:
+	cmpq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R8_LP
+	jb	.Loks		/* Jumping below the altstack, switch */
+
+	movq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R11_LP
+	addq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SIZE__OFFSET)(%R10_LP), %R11_LP
+	cmpq	%R11_LP, %R8_LP
+	jb	.Lok		/* Jumping inside the altstack, do not switch */
+
+	/* Jumping above the altstack, switch */
+
+.Loks:
+	andl	$~(SS_ONSTACK), (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
+
+.Lok:
+	/* We add unwind information for the target here.  */
+	cfi_def_cfa(%rdi, 0)
+	cfi_register(%rsp,%r8)
+	cfi_register(%rbp,%r9)
+	cfi_register(%rip,%rdx)
+	cfi_offset(%rbx,JB_RBX*8)
+	cfi_offset(%r12,JB_R12*8)
+	cfi_offset(%r13,JB_R13*8)
+	cfi_offset(%r14,JB_R14*8)
+	cfi_offset(%r15,JB_R15*8)
+	movq	(JB_RBX*8)(%rdi), %rbx
+	movq	(JB_R12*8)(%rdi), %r12
+	movq	(JB_R13*8)(%rdi), %r13
+	movq	(JB_R14*8)(%rdi), %r14
+	movq	(JB_R15*8)(%rdi), %r15
+	/* Set return value for setjmp.  */
+	movl	%esi, %eax
+	mov	%R8_LP, %RSP_LP
+	movq	%r9,%rbp
+	jmpq	*%rdx
+END (__longjmp)
-- 
2.40.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [RFC PATCH v3 3/6] hurd: Replace reply port with a dead name on failed interruption
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
  2023-04-29 20:18 ` [PATCH v3 1/6] hurd: Implement sigreturn for x86_64 Sergey Bugaev
  2023-04-29 20:18 ` [PATCH v3 2/6] hurd: Implement longjmp " Sergey Bugaev
@ 2023-04-29 20:18 ` Sergey Bugaev
  2023-05-01  1:20   ` Samuel Thibault
  2023-04-29 20:18 ` [PATCH v3 4/6] hurd: Add expected abilist files for x86_64 Sergey Bugaev
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

If we're trying to interrupt an interruptible RPC, but the server fails
to respond to our __interrupt_operation () call, we instead destroy the
reply port we were expecting the reply to the RPC on.

Instead of deallocating the name completely, replace it with a dead
name, so the name won't get reused for some other right, and deallocate
it in _hurd_intr_rpc_mach_msg once we return from the signal handler.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
This is not required for x86_64, but probably a good idea anyway. I have
checked that this does not fatally break things (this commit has been
sitting in my tree, getting built along with the other changes, for quite
some time without noticably breaking anything), but I have not run the
full testsuite. Please do that on your end.

 hurd/hurdsig.c                | 15 ++++++++++++---
 hurd/intr-msg.c               |  1 +
 sysdeps/mach/hurd/mig-reply.c | 25 +++++++------------------
 3 files changed, 20 insertions(+), 21 deletions(-)

diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index b3808f9e..78ea59d9 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -477,9 +477,18 @@ _hurdsig_abort_rpcs (struct hurd_sigstate *ss, int signo, int sigthread,
           if (reply)
             {
               /* The interrupt didn't work.
-                 Destroy the receive right the thread is blocked on.  */
-              __mach_port_destroy (__mach_task_self (), *reply);
-              *reply = MACH_PORT_NULL;
+                 Destroy the receive right the thread is blocked on, and
+                 replace it with a dead name to keep the name from reuse until
+                 the therad is done with it.  To do this atomically, first
+                 insert a send right, and then destroy the receive right,
+                 turning the send right into a dead name.  */
+              err = __mach_port_insert_right (__mach_task_self (),
+                                              *reply, *reply,
+                                              MACH_MSG_TYPE_MAKE_SEND);
+              assert_perror (err);
+              err = __mach_port_mod_refs (__mach_task_self (), *reply,
+                                          MACH_PORT_RIGHT_RECEIVE, -1);
+              assert_perror (err);
             }
 
           /* The system call return value register now contains
diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
index 1a086b51..716d87ab 100644
--- a/hurd/intr-msg.c
+++ b/hurd/intr-msg.c
@@ -305,6 +305,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
 	{
 	  /* Make sure we have a valid reply port.  The one we were using
 	     may have been destroyed by interruption.  */
+	  __mig_dealloc_reply_port (rcv_name);
 	  m->header.msgh_local_port = rcv_name = __mig_get_reply_port ();
 	  m->header.msgh_bits = msgh_bits;
 	  option = user_option;
diff --git a/sysdeps/mach/hurd/mig-reply.c b/sysdeps/mach/hurd/mig-reply.c
index 3fdee80e..7ea001df 100644
--- a/sysdeps/mach/hurd/mig-reply.c
+++ b/sysdeps/mach/hurd/mig-reply.c
@@ -69,29 +69,18 @@ __mig_dealloc_reply_port (mach_port_t arg)
   mach_port_t port = get_reply_port ();
 
   set_reply_port (MACH_PORT_NULL);	/* So the mod_refs RPC won't use it.  */
-
-  /* Normally, ARG should be the same as PORT that we store.  However, if a
-     signal has interrupted the RPC, the stored PORT has been deallocated and
-     reset to MACH_PORT_NULL (or possibly MACH_PORT_DEAD).  In this case the
-     MIG routine still has the old name, which it passes to us here.  We must
-     not deallocate (or otherwise touch) it, since it may be already allocated
-     to another port right.  Fortunately MIG itself doesn't do anything with
-     the reply port on errors either, other than immediately calling this
-     function.
-
-     And so:
-     1. Assert that things are sane, i.e. and PORT is either invalid or same
-        as ARG.
-     2. Only deallocate the name if our stored PORT still names it.  In that
-        case we're sure the right has not been deallocated / the name reused.
-    */
-
+  assert (port == arg);
   if (!MACH_PORT_VALID (port))
     return;
-  assert (port == arg);
 
   err = __mach_port_mod_refs (__mach_task_self (), port,
                               MACH_PORT_RIGHT_RECEIVE, -1);
+  if (err == KERN_INVALID_RIGHT)
+    /* It could be that during signal handling, the receive right had been
+       replaced with a dead name.  */
+    err = __mach_port_mod_refs (__mach_task_self (), port,
+                                MACH_PORT_RIGHT_DEAD_NAME, -1);
+
   assert_perror (err);
 }
 weak_alias (__mig_dealloc_reply_port, mig_dealloc_reply_port)
-- 
2.40.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 4/6] hurd: Add expected abilist files for x86_64
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
                   ` (2 preceding siblings ...)
  2023-04-29 20:18 ` [RFC PATCH v3 3/6] hurd: Replace reply port with a dead name on failed interruption Sergey Bugaev
@ 2023-04-29 20:18 ` Sergey Bugaev
  2023-04-30 23:18   ` Samuel Thibault
  2023-05-01 10:20   ` Samuel Thibault
  2023-04-29 20:18 ` [RFC PATCH v3 5/6] hurd: Make it possible to call memcpy very early Sergey Bugaev
                   ` (2 subsequent siblings)
  6 siblings, 2 replies; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

These were created by creating stub files, running 'make update-abi',
and reviewing the results.

Also, set baseline ABI to GLIBC_2.38, the (upcoming) first glibc
release to first have x86_64-gnu support.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---

Changes compared to v2:
- __pthread_self is now in libc.so, not libpthread.so
(I'm still not sure why this move is being done, though)

 sysdeps/mach/hurd/x86_64/ld.abilist           |   17 +
 .../mach/hurd/x86_64/libBrokenLocale.abilist  |    1 +
 sysdeps/mach/hurd/x86_64/libc.abilist         | 2121 +++++++++++++++++
 .../hurd/x86_64/libc_malloc_debug.abilist     |   26 +
 sysdeps/mach/hurd/x86_64/libcrypt.abilist     |    2 +
 sysdeps/mach/hurd/x86_64/libdl.abilist        |    0
 sysdeps/mach/hurd/x86_64/libm.abilist         | 1040 ++++++++
 sysdeps/mach/hurd/x86_64/libmvec.abilist      |  216 ++
 sysdeps/mach/hurd/x86_64/libpthread.abilist   |  175 ++
 sysdeps/mach/hurd/x86_64/libresolv.abilist    |   55 +
 sysdeps/mach/hurd/x86_64/librt.abilist        |   33 +
 sysdeps/mach/hurd/x86_64/shlib-versions       |    1 +
 12 files changed, 3687 insertions(+)
 create mode 100644 sysdeps/mach/hurd/x86_64/ld.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libc.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libcrypt.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libdl.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libm.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libmvec.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libpthread.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/libresolv.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/librt.abilist
 create mode 100644 sysdeps/mach/hurd/x86_64/shlib-versions

diff --git a/sysdeps/mach/hurd/x86_64/ld.abilist b/sysdeps/mach/hurd/x86_64/ld.abilist
new file mode 100644
index 00000000..2297a5f3
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/ld.abilist
@@ -0,0 +1,17 @@
+GLIBC_2.38 __close F
+GLIBC_2.38 __errno_location F
+GLIBC_2.38 __getpid F
+GLIBC_2.38 __libc_stack_end D 0x8
+GLIBC_2.38 __mmap F
+GLIBC_2.38 __open F
+GLIBC_2.38 __open64 F
+GLIBC_2.38 __pread64 F
+GLIBC_2.38 __read F
+GLIBC_2.38 __sbrk F
+GLIBC_2.38 __tls_get_addr F
+GLIBC_2.38 __write F
+GLIBC_2.38 __writev F
+GLIBC_2.38 _dl_mcount F
+GLIBC_2.38 _hurd_intr_rpc_mach_msg F
+GLIBC_2.38 _r_debug D 0x28
+GLIBC_2.38 abort F
diff --git a/sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist b/sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist
new file mode 100644
index 00000000..203836f5
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist
@@ -0,0 +1 @@
+GLIBC_2.38 __ctype_get_mb_cur_max F
diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
new file mode 100644
index 00000000..cafdd8a0
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libc.abilist
@@ -0,0 +1,2121 @@
+GLIBC_2.38 _Exit F
+GLIBC_2.38 _Fork F
+GLIBC_2.38 _IO_2_1_stderr_ D 0xe0
+GLIBC_2.38 _IO_2_1_stdin_ D 0xe0
+GLIBC_2.38 _IO_2_1_stdout_ D 0xe0
+GLIBC_2.38 _IO_adjust_column F
+GLIBC_2.38 _IO_adjust_wcolumn F
+GLIBC_2.38 _IO_default_doallocate F
+GLIBC_2.38 _IO_default_finish F
+GLIBC_2.38 _IO_default_pbackfail F
+GLIBC_2.38 _IO_default_uflow F
+GLIBC_2.38 _IO_default_xsgetn F
+GLIBC_2.38 _IO_default_xsputn F
+GLIBC_2.38 _IO_do_write F
+GLIBC_2.38 _IO_doallocbuf F
+GLIBC_2.38 _IO_fclose F
+GLIBC_2.38 _IO_fdopen F
+GLIBC_2.38 _IO_feof F
+GLIBC_2.38 _IO_ferror F
+GLIBC_2.38 _IO_fflush F
+GLIBC_2.38 _IO_fgetpos F
+GLIBC_2.38 _IO_fgetpos64 F
+GLIBC_2.38 _IO_fgets F
+GLIBC_2.38 _IO_file_attach F
+GLIBC_2.38 _IO_file_close F
+GLIBC_2.38 _IO_file_close_it F
+GLIBC_2.38 _IO_file_doallocate F
+GLIBC_2.38 _IO_file_finish F
+GLIBC_2.38 _IO_file_fopen F
+GLIBC_2.38 _IO_file_init F
+GLIBC_2.38 _IO_file_jumps D 0xa8
+GLIBC_2.38 _IO_file_open F
+GLIBC_2.38 _IO_file_overflow F
+GLIBC_2.38 _IO_file_read F
+GLIBC_2.38 _IO_file_seek F
+GLIBC_2.38 _IO_file_seekoff F
+GLIBC_2.38 _IO_file_setbuf F
+GLIBC_2.38 _IO_file_stat F
+GLIBC_2.38 _IO_file_sync F
+GLIBC_2.38 _IO_file_underflow F
+GLIBC_2.38 _IO_file_write F
+GLIBC_2.38 _IO_file_xsputn F
+GLIBC_2.38 _IO_flockfile F
+GLIBC_2.38 _IO_flush_all F
+GLIBC_2.38 _IO_flush_all_linebuffered F
+GLIBC_2.38 _IO_fopen F
+GLIBC_2.38 _IO_fprintf F
+GLIBC_2.38 _IO_fputs F
+GLIBC_2.38 _IO_fread F
+GLIBC_2.38 _IO_free_backup_area F
+GLIBC_2.38 _IO_free_wbackup_area F
+GLIBC_2.38 _IO_fsetpos F
+GLIBC_2.38 _IO_fsetpos64 F
+GLIBC_2.38 _IO_ftell F
+GLIBC_2.38 _IO_ftrylockfile F
+GLIBC_2.38 _IO_funlockfile F
+GLIBC_2.38 _IO_fwrite F
+GLIBC_2.38 _IO_getc F
+GLIBC_2.38 _IO_getline F
+GLIBC_2.38 _IO_getline_info F
+GLIBC_2.38 _IO_gets F
+GLIBC_2.38 _IO_init F
+GLIBC_2.38 _IO_init_marker F
+GLIBC_2.38 _IO_init_wmarker F
+GLIBC_2.38 _IO_iter_begin F
+GLIBC_2.38 _IO_iter_end F
+GLIBC_2.38 _IO_iter_file F
+GLIBC_2.38 _IO_iter_next F
+GLIBC_2.38 _IO_least_wmarker F
+GLIBC_2.38 _IO_link_in F
+GLIBC_2.38 _IO_list_all D 0x8
+GLIBC_2.38 _IO_list_lock F
+GLIBC_2.38 _IO_list_resetlock F
+GLIBC_2.38 _IO_list_unlock F
+GLIBC_2.38 _IO_marker_delta F
+GLIBC_2.38 _IO_marker_difference F
+GLIBC_2.38 _IO_padn F
+GLIBC_2.38 _IO_peekc_locked F
+GLIBC_2.38 _IO_popen F
+GLIBC_2.38 _IO_printf F
+GLIBC_2.38 _IO_proc_close F
+GLIBC_2.38 _IO_proc_open F
+GLIBC_2.38 _IO_putc F
+GLIBC_2.38 _IO_puts F
+GLIBC_2.38 _IO_remove_marker F
+GLIBC_2.38 _IO_seekmark F
+GLIBC_2.38 _IO_seekoff F
+GLIBC_2.38 _IO_seekpos F
+GLIBC_2.38 _IO_seekwmark F
+GLIBC_2.38 _IO_setb F
+GLIBC_2.38 _IO_setbuffer F
+GLIBC_2.38 _IO_setvbuf F
+GLIBC_2.38 _IO_sgetn F
+GLIBC_2.38 _IO_sprintf F
+GLIBC_2.38 _IO_sputbackc F
+GLIBC_2.38 _IO_sputbackwc F
+GLIBC_2.38 _IO_sscanf F
+GLIBC_2.38 _IO_str_init_readonly F
+GLIBC_2.38 _IO_str_init_static F
+GLIBC_2.38 _IO_str_overflow F
+GLIBC_2.38 _IO_str_pbackfail F
+GLIBC_2.38 _IO_str_seekoff F
+GLIBC_2.38 _IO_str_underflow F
+GLIBC_2.38 _IO_sungetc F
+GLIBC_2.38 _IO_sungetwc F
+GLIBC_2.38 _IO_switch_to_get_mode F
+GLIBC_2.38 _IO_switch_to_main_wget_area F
+GLIBC_2.38 _IO_switch_to_wbackup_area F
+GLIBC_2.38 _IO_switch_to_wget_mode F
+GLIBC_2.38 _IO_un_link F
+GLIBC_2.38 _IO_ungetc F
+GLIBC_2.38 _IO_unsave_markers F
+GLIBC_2.38 _IO_unsave_wmarkers F
+GLIBC_2.38 _IO_vfprintf F
+GLIBC_2.38 _IO_vsprintf F
+GLIBC_2.38 _IO_wdefault_doallocate F
+GLIBC_2.38 _IO_wdefault_finish F
+GLIBC_2.38 _IO_wdefault_pbackfail F
+GLIBC_2.38 _IO_wdefault_uflow F
+GLIBC_2.38 _IO_wdefault_xsgetn F
+GLIBC_2.38 _IO_wdefault_xsputn F
+GLIBC_2.38 _IO_wdo_write F
+GLIBC_2.38 _IO_wdoallocbuf F
+GLIBC_2.38 _IO_wfile_jumps D 0xa8
+GLIBC_2.38 _IO_wfile_overflow F
+GLIBC_2.38 _IO_wfile_seekoff F
+GLIBC_2.38 _IO_wfile_sync F
+GLIBC_2.38 _IO_wfile_underflow F
+GLIBC_2.38 _IO_wfile_xsputn F
+GLIBC_2.38 _IO_wmarker_delta F
+GLIBC_2.38 _IO_wsetb F
+GLIBC_2.38 _S_catch_exception_raise F
+GLIBC_2.38 _S_msg_add_auth F
+GLIBC_2.38 _S_msg_del_auth F
+GLIBC_2.38 _S_msg_describe_ports F
+GLIBC_2.38 _S_msg_get_dtable F
+GLIBC_2.38 _S_msg_get_env_variable F
+GLIBC_2.38 _S_msg_get_environment F
+GLIBC_2.38 _S_msg_get_fd F
+GLIBC_2.38 _S_msg_get_init_int F
+GLIBC_2.38 _S_msg_get_init_ints F
+GLIBC_2.38 _S_msg_get_init_port F
+GLIBC_2.38 _S_msg_get_init_ports F
+GLIBC_2.38 _S_msg_proc_newids F
+GLIBC_2.38 _S_msg_report_wait F
+GLIBC_2.38 _S_msg_set_dtable F
+GLIBC_2.38 _S_msg_set_env_variable F
+GLIBC_2.38 _S_msg_set_environment F
+GLIBC_2.38 _S_msg_set_fd F
+GLIBC_2.38 _S_msg_set_init_int F
+GLIBC_2.38 _S_msg_set_init_ints F
+GLIBC_2.38 _S_msg_set_init_port F
+GLIBC_2.38 _S_msg_set_init_ports F
+GLIBC_2.38 _S_msg_sig_post F
+GLIBC_2.38 _S_msg_sig_post_untraced F
+GLIBC_2.38 ___brk_addr D 0x8
+GLIBC_2.38 __argz_count F
+GLIBC_2.38 __argz_next F
+GLIBC_2.38 __argz_stringify F
+GLIBC_2.38 __asprintf F
+GLIBC_2.38 __asprintf_chk F
+GLIBC_2.38 __assert F
+GLIBC_2.38 __assert_fail F
+GLIBC_2.38 __assert_perror_fail F
+GLIBC_2.38 __backtrace F
+GLIBC_2.38 __backtrace_symbols F
+GLIBC_2.38 __backtrace_symbols_fd F
+GLIBC_2.38 __bsd_getpgrp F
+GLIBC_2.38 __bzero F
+GLIBC_2.38 __check_rhosts_file D 0x4
+GLIBC_2.38 __chk_fail F
+GLIBC_2.38 __close F
+GLIBC_2.38 __cmsg_nxthdr F
+GLIBC_2.38 __confstr_chk F
+GLIBC_2.38 __connect F
+GLIBC_2.38 __ctype_b_loc F
+GLIBC_2.38 __ctype_get_mb_cur_max F
+GLIBC_2.38 __ctype_tolower_loc F
+GLIBC_2.38 __ctype_toupper_loc F
+GLIBC_2.38 __cxa_at_quick_exit F
+GLIBC_2.38 __cxa_atexit F
+GLIBC_2.38 __cxa_finalize F
+GLIBC_2.38 __cxa_thread_atexit_impl F
+GLIBC_2.38 __cyg_profile_func_enter F
+GLIBC_2.38 __cyg_profile_func_exit F
+GLIBC_2.38 __daylight D 0x4
+GLIBC_2.38 __dcgettext F
+GLIBC_2.38 __dgettext F
+GLIBC_2.38 __dprintf_chk F
+GLIBC_2.38 __dup2 F
+GLIBC_2.38 __duplocale F
+GLIBC_2.38 __environ D 0x8
+GLIBC_2.38 __errno_location F
+GLIBC_2.38 __explicit_bzero_chk F
+GLIBC_2.38 __fbufsize F
+GLIBC_2.38 __fcntl F
+GLIBC_2.38 __fdelt_chk F
+GLIBC_2.38 __fdelt_warn F
+GLIBC_2.38 __fentry__ F
+GLIBC_2.38 __ffs F
+GLIBC_2.38 __fgets_chk F
+GLIBC_2.38 __fgets_unlocked_chk F
+GLIBC_2.38 __fgetws_chk F
+GLIBC_2.38 __fgetws_unlocked_chk F
+GLIBC_2.38 __finite F
+GLIBC_2.38 __finitef F
+GLIBC_2.38 __finitel F
+GLIBC_2.38 __flbf F
+GLIBC_2.38 __fork F
+GLIBC_2.38 __fpending F
+GLIBC_2.38 __fprintf_chk F
+GLIBC_2.38 __fpu_control D 0x2
+GLIBC_2.38 __fpurge F
+GLIBC_2.38 __fread_chk F
+GLIBC_2.38 __fread_unlocked_chk F
+GLIBC_2.38 __freadable F
+GLIBC_2.38 __freading F
+GLIBC_2.38 __freelocale F
+GLIBC_2.38 __fsetlocking F
+GLIBC_2.38 __fwprintf_chk F
+GLIBC_2.38 __fwritable F
+GLIBC_2.38 __fwriting F
+GLIBC_2.38 __getauxval F
+GLIBC_2.38 __getcwd_chk F
+GLIBC_2.38 __getdelim F
+GLIBC_2.38 __getdomainname_chk F
+GLIBC_2.38 __getgroups_chk F
+GLIBC_2.38 __gethostname_chk F
+GLIBC_2.38 __getlogin_r_chk F
+GLIBC_2.38 __getpagesize F
+GLIBC_2.38 __getpgid F
+GLIBC_2.38 __getpid F
+GLIBC_2.38 __gets_chk F
+GLIBC_2.38 __gettimeofday F
+GLIBC_2.38 __getwd_chk F
+GLIBC_2.38 __gmtime_r F
+GLIBC_2.38 __h_errno_location F
+GLIBC_2.38 __hurd_dfail F
+GLIBC_2.38 __hurd_fail F
+GLIBC_2.38 __hurd_sockfail F
+GLIBC_2.38 __isalnum_l F
+GLIBC_2.38 __isalpha_l F
+GLIBC_2.38 __isascii_l F
+GLIBC_2.38 __isblank_l F
+GLIBC_2.38 __iscntrl_l F
+GLIBC_2.38 __isctype F
+GLIBC_2.38 __isdigit_l F
+GLIBC_2.38 __isgraph_l F
+GLIBC_2.38 __isinf F
+GLIBC_2.38 __isinff F
+GLIBC_2.38 __isinfl F
+GLIBC_2.38 __islower_l F
+GLIBC_2.38 __isnan F
+GLIBC_2.38 __isnanf F
+GLIBC_2.38 __isnanf128 F
+GLIBC_2.38 __isnanl F
+GLIBC_2.38 __isoc23_fscanf F
+GLIBC_2.38 __isoc23_fwscanf F
+GLIBC_2.38 __isoc23_scanf F
+GLIBC_2.38 __isoc23_sscanf F
+GLIBC_2.38 __isoc23_strtoimax F
+GLIBC_2.38 __isoc23_strtol F
+GLIBC_2.38 __isoc23_strtol_l F
+GLIBC_2.38 __isoc23_strtoll F
+GLIBC_2.38 __isoc23_strtoll_l F
+GLIBC_2.38 __isoc23_strtoul F
+GLIBC_2.38 __isoc23_strtoul_l F
+GLIBC_2.38 __isoc23_strtoull F
+GLIBC_2.38 __isoc23_strtoull_l F
+GLIBC_2.38 __isoc23_strtoumax F
+GLIBC_2.38 __isoc23_swscanf F
+GLIBC_2.38 __isoc23_vfscanf F
+GLIBC_2.38 __isoc23_vfwscanf F
+GLIBC_2.38 __isoc23_vscanf F
+GLIBC_2.38 __isoc23_vsscanf F
+GLIBC_2.38 __isoc23_vswscanf F
+GLIBC_2.38 __isoc23_vwscanf F
+GLIBC_2.38 __isoc23_wcstoimax F
+GLIBC_2.38 __isoc23_wcstol F
+GLIBC_2.38 __isoc23_wcstol_l F
+GLIBC_2.38 __isoc23_wcstoll F
+GLIBC_2.38 __isoc23_wcstoll_l F
+GLIBC_2.38 __isoc23_wcstoul F
+GLIBC_2.38 __isoc23_wcstoul_l F
+GLIBC_2.38 __isoc23_wcstoull F
+GLIBC_2.38 __isoc23_wcstoull_l F
+GLIBC_2.38 __isoc23_wcstoumax F
+GLIBC_2.38 __isoc23_wscanf F
+GLIBC_2.38 __isoc99_fscanf F
+GLIBC_2.38 __isoc99_fwscanf F
+GLIBC_2.38 __isoc99_scanf F
+GLIBC_2.38 __isoc99_sscanf F
+GLIBC_2.38 __isoc99_swscanf F
+GLIBC_2.38 __isoc99_vfscanf F
+GLIBC_2.38 __isoc99_vfwscanf F
+GLIBC_2.38 __isoc99_vscanf F
+GLIBC_2.38 __isoc99_vsscanf F
+GLIBC_2.38 __isoc99_vswscanf F
+GLIBC_2.38 __isoc99_vwscanf F
+GLIBC_2.38 __isoc99_wscanf F
+GLIBC_2.38 __isprint_l F
+GLIBC_2.38 __ispunct_l F
+GLIBC_2.38 __isspace_l F
+GLIBC_2.38 __isupper_l F
+GLIBC_2.38 __iswalnum_l F
+GLIBC_2.38 __iswalpha_l F
+GLIBC_2.38 __iswblank_l F
+GLIBC_2.38 __iswcntrl_l F
+GLIBC_2.38 __iswctype F
+GLIBC_2.38 __iswctype_l F
+GLIBC_2.38 __iswdigit_l F
+GLIBC_2.38 __iswgraph_l F
+GLIBC_2.38 __iswlower_l F
+GLIBC_2.38 __iswprint_l F
+GLIBC_2.38 __iswpunct_l F
+GLIBC_2.38 __iswspace_l F
+GLIBC_2.38 __iswupper_l F
+GLIBC_2.38 __iswxdigit_l F
+GLIBC_2.38 __isxdigit_l F
+GLIBC_2.38 __libc_allocate_rtsig F
+GLIBC_2.38 __libc_calloc F
+GLIBC_2.38 __libc_current_sigrtmax F
+GLIBC_2.38 __libc_current_sigrtmin F
+GLIBC_2.38 __libc_free F
+GLIBC_2.38 __libc_freeres F
+GLIBC_2.38 __libc_init_first F
+GLIBC_2.38 __libc_mallinfo F
+GLIBC_2.38 __libc_malloc F
+GLIBC_2.38 __libc_mallopt F
+GLIBC_2.38 __libc_memalign F
+GLIBC_2.38 __libc_pvalloc F
+GLIBC_2.38 __libc_realloc F
+GLIBC_2.38 __libc_single_threaded D 0x1
+GLIBC_2.38 __libc_start_main F
+GLIBC_2.38 __libc_valloc F
+GLIBC_2.38 __longjmp_chk F
+GLIBC_2.38 __lseek F
+GLIBC_2.38 __mach_host_self_ D 0x4
+GLIBC_2.38 __mach_msg F
+GLIBC_2.38 __mach_msg_destroy F
+GLIBC_2.38 __mach_port_allocate F
+GLIBC_2.38 __mach_port_deallocate F
+GLIBC_2.38 __mach_port_insert_right F
+GLIBC_2.38 __mach_reply_port F
+GLIBC_2.38 __mach_task_self_ D 0x4
+GLIBC_2.38 __mach_thread_self F
+GLIBC_2.38 __mbrlen F
+GLIBC_2.38 __mbrtowc F
+GLIBC_2.38 __mbsnrtowcs_chk F
+GLIBC_2.38 __mbsrtowcs_chk F
+GLIBC_2.38 __mbstowcs_chk F
+GLIBC_2.38 __memcmpeq F
+GLIBC_2.38 __memcpy_chk F
+GLIBC_2.38 __memmove_chk F
+GLIBC_2.38 __mempcpy F
+GLIBC_2.38 __mempcpy_chk F
+GLIBC_2.38 __memset_chk F
+GLIBC_2.38 __mig_allocate F
+GLIBC_2.38 __mig_dealloc_reply_port F
+GLIBC_2.38 __mig_deallocate F
+GLIBC_2.38 __mig_get_reply_port F
+GLIBC_2.38 __mig_init F
+GLIBC_2.38 __mig_put_reply_port F
+GLIBC_2.38 __mig_strncpy F
+GLIBC_2.38 __mmap F
+GLIBC_2.38 __monstartup F
+GLIBC_2.38 __nanosleep F
+GLIBC_2.38 __newlocale F
+GLIBC_2.38 __nl_langinfo_l F
+GLIBC_2.38 __nss_configure_lookup F
+GLIBC_2.38 __nss_hostname_digits_dots F
+GLIBC_2.38 __obstack_printf_chk F
+GLIBC_2.38 __obstack_vprintf_chk F
+GLIBC_2.38 __open F
+GLIBC_2.38 __open64 F
+GLIBC_2.38 __open64_2 F
+GLIBC_2.38 __open_2 F
+GLIBC_2.38 __openat64_2 F
+GLIBC_2.38 __openat_2 F
+GLIBC_2.38 __overflow F
+GLIBC_2.38 __pipe F
+GLIBC_2.38 __poll F
+GLIBC_2.38 __poll_chk F
+GLIBC_2.38 __posix_getopt F
+GLIBC_2.38 __ppoll_chk F
+GLIBC_2.38 __pread64 F
+GLIBC_2.38 __pread64_chk F
+GLIBC_2.38 __pread_chk F
+GLIBC_2.38 __printf_chk F
+GLIBC_2.38 __printf_fp F
+GLIBC_2.38 __profile_frequency F
+GLIBC_2.38 __progname D 0x8
+GLIBC_2.38 __progname_full D 0x8
+GLIBC_2.38 __pthread_get_cleanup_stack F
+GLIBC_2.38 __pthread_self F
+GLIBC_2.38 __ptsname_r_chk F
+GLIBC_2.38 __pwrite64 F
+GLIBC_2.38 __rawmemchr F
+GLIBC_2.38 __rcmd_errstr D 0x8
+GLIBC_2.38 __read F
+GLIBC_2.38 __read_chk F
+GLIBC_2.38 __readlink_chk F
+GLIBC_2.38 __readlinkat_chk F
+GLIBC_2.38 __realpath_chk F
+GLIBC_2.38 __recv_chk F
+GLIBC_2.38 __recvfrom_chk F
+GLIBC_2.38 __register_atfork F
+GLIBC_2.38 __res_init F
+GLIBC_2.38 __res_nclose F
+GLIBC_2.38 __res_ninit F
+GLIBC_2.38 __res_randomid F
+GLIBC_2.38 __res_state F
+GLIBC_2.38 __sbrk F
+GLIBC_2.38 __sched_cpualloc F
+GLIBC_2.38 __sched_cpucount F
+GLIBC_2.38 __sched_cpufree F
+GLIBC_2.38 __sched_get_priority_max F
+GLIBC_2.38 __sched_get_priority_min F
+GLIBC_2.38 __sched_getparam F
+GLIBC_2.38 __sched_getscheduler F
+GLIBC_2.38 __sched_setscheduler F
+GLIBC_2.38 __sched_yield F
+GLIBC_2.38 __select F
+GLIBC_2.38 __send F
+GLIBC_2.38 __setpgid F
+GLIBC_2.38 __sigaction F
+GLIBC_2.38 __signbit F
+GLIBC_2.38 __signbitf F
+GLIBC_2.38 __signbitl F
+GLIBC_2.38 __sigpause F
+GLIBC_2.38 __sigsetjmp F
+GLIBC_2.38 __sigsuspend F
+GLIBC_2.38 __snprintf_chk F
+GLIBC_2.38 __sprintf_chk F
+GLIBC_2.38 __stack_chk_fail F
+GLIBC_2.38 __stpcpy F
+GLIBC_2.38 __stpcpy_chk F
+GLIBC_2.38 __stpncpy F
+GLIBC_2.38 __stpncpy_chk F
+GLIBC_2.38 __strcasecmp F
+GLIBC_2.38 __strcasecmp_l F
+GLIBC_2.38 __strcasestr F
+GLIBC_2.38 __strcat_chk F
+GLIBC_2.38 __strcoll_l F
+GLIBC_2.38 __strcpy_chk F
+GLIBC_2.38 __strdup F
+GLIBC_2.38 __strerror_r F
+GLIBC_2.38 __strfmon_l F
+GLIBC_2.38 __strftime_l F
+GLIBC_2.38 __strncasecmp_l F
+GLIBC_2.38 __strncat_chk F
+GLIBC_2.38 __strncpy_chk F
+GLIBC_2.38 __strndup F
+GLIBC_2.38 __strsep_g F
+GLIBC_2.38 __strtod_internal F
+GLIBC_2.38 __strtod_l F
+GLIBC_2.38 __strtof128_internal F
+GLIBC_2.38 __strtof_internal F
+GLIBC_2.38 __strtof_l F
+GLIBC_2.38 __strtok_r F
+GLIBC_2.38 __strtol_internal F
+GLIBC_2.38 __strtol_l F
+GLIBC_2.38 __strtold_internal F
+GLIBC_2.38 __strtold_l F
+GLIBC_2.38 __strtoll_internal F
+GLIBC_2.38 __strtoll_l F
+GLIBC_2.38 __strtoul_internal F
+GLIBC_2.38 __strtoul_l F
+GLIBC_2.38 __strtoull_internal F
+GLIBC_2.38 __strtoull_l F
+GLIBC_2.38 __strverscmp F
+GLIBC_2.38 __strxfrm_l F
+GLIBC_2.38 __swprintf_chk F
+GLIBC_2.38 __sysconf F
+GLIBC_2.38 __syslog_chk F
+GLIBC_2.38 __sysv_signal F
+GLIBC_2.38 __timezone D 0x8
+GLIBC_2.38 __toascii_l F
+GLIBC_2.38 __tolower_l F
+GLIBC_2.38 __toupper_l F
+GLIBC_2.38 __towctrans F
+GLIBC_2.38 __towctrans_l F
+GLIBC_2.38 __towlower_l F
+GLIBC_2.38 __towupper_l F
+GLIBC_2.38 __ttyname_r_chk F
+GLIBC_2.38 __tzname D 0x10
+GLIBC_2.38 __uflow F
+GLIBC_2.38 __underflow F
+GLIBC_2.38 __uselocale F
+GLIBC_2.38 __vasprintf_chk F
+GLIBC_2.38 __vdprintf_chk F
+GLIBC_2.38 __vfork F
+GLIBC_2.38 __vfprintf_chk F
+GLIBC_2.38 __vfscanf F
+GLIBC_2.38 __vfwprintf_chk F
+GLIBC_2.38 __vm_allocate F
+GLIBC_2.38 __vm_deallocate F
+GLIBC_2.38 __vm_page_size D 0x8
+GLIBC_2.38 __vprintf_chk F
+GLIBC_2.38 __vsnprintf F
+GLIBC_2.38 __vsnprintf_chk F
+GLIBC_2.38 __vsprintf_chk F
+GLIBC_2.38 __vsscanf F
+GLIBC_2.38 __vswprintf_chk F
+GLIBC_2.38 __vsyslog_chk F
+GLIBC_2.38 __vwprintf_chk F
+GLIBC_2.38 __wait F
+GLIBC_2.38 __waitpid F
+GLIBC_2.38 __wcpcpy_chk F
+GLIBC_2.38 __wcpncpy_chk F
+GLIBC_2.38 __wcrtomb_chk F
+GLIBC_2.38 __wcscasecmp_l F
+GLIBC_2.38 __wcscat_chk F
+GLIBC_2.38 __wcscoll_l F
+GLIBC_2.38 __wcscpy_chk F
+GLIBC_2.38 __wcsftime_l F
+GLIBC_2.38 __wcsncasecmp_l F
+GLIBC_2.38 __wcsncat_chk F
+GLIBC_2.38 __wcsncpy_chk F
+GLIBC_2.38 __wcsnrtombs_chk F
+GLIBC_2.38 __wcsrtombs_chk F
+GLIBC_2.38 __wcstod_internal F
+GLIBC_2.38 __wcstod_l F
+GLIBC_2.38 __wcstof128_internal F
+GLIBC_2.38 __wcstof_internal F
+GLIBC_2.38 __wcstof_l F
+GLIBC_2.38 __wcstol_internal F
+GLIBC_2.38 __wcstol_l F
+GLIBC_2.38 __wcstold_internal F
+GLIBC_2.38 __wcstold_l F
+GLIBC_2.38 __wcstoll_internal F
+GLIBC_2.38 __wcstoll_l F
+GLIBC_2.38 __wcstombs_chk F
+GLIBC_2.38 __wcstoul_internal F
+GLIBC_2.38 __wcstoul_l F
+GLIBC_2.38 __wcstoull_internal F
+GLIBC_2.38 __wcstoull_l F
+GLIBC_2.38 __wcsxfrm_l F
+GLIBC_2.38 __wctomb_chk F
+GLIBC_2.38 __wctrans_l F
+GLIBC_2.38 __wctype_l F
+GLIBC_2.38 __wmemcpy_chk F
+GLIBC_2.38 __wmemmove_chk F
+GLIBC_2.38 __wmempcpy_chk F
+GLIBC_2.38 __wmemset_chk F
+GLIBC_2.38 __woverflow F
+GLIBC_2.38 __wprintf_chk F
+GLIBC_2.38 __write F
+GLIBC_2.38 __writev F
+GLIBC_2.38 __wuflow F
+GLIBC_2.38 __wunderflow F
+GLIBC_2.38 __x86_get_cpuid_feature_leaf F
+GLIBC_2.38 __xpg_basename F
+GLIBC_2.38 __xpg_sigpause F
+GLIBC_2.38 __xpg_strerror_r F
+GLIBC_2.38 _dl_find_object F
+GLIBC_2.38 _dl_mcount_wrapper F
+GLIBC_2.38 _dl_mcount_wrapper_check F
+GLIBC_2.38 _environ D 0x8
+GLIBC_2.38 _exit F
+GLIBC_2.38 _flushlbf F
+GLIBC_2.38 _hurd_canonicalize_directory_name_internal F
+GLIBC_2.38 _hurd_critical_section_lock F
+GLIBC_2.38 _hurd_critical_section_unlock F
+GLIBC_2.38 _hurd_device_master D 0x4
+GLIBC_2.38 _hurd_dtable D 0x8
+GLIBC_2.38 _hurd_dtable_lock D 0x28
+GLIBC_2.38 _hurd_dtablesize D 0x4
+GLIBC_2.38 _hurd_exception2signal F
+GLIBC_2.38 _hurd_exec F
+GLIBC_2.38 _hurd_exec_paths F
+GLIBC_2.38 _hurd_fd_error F
+GLIBC_2.38 _hurd_fd_error_signal F
+GLIBC_2.38 _hurd_fd_get F
+GLIBC_2.38 _hurd_host_priv D 0x4
+GLIBC_2.38 _hurd_init F
+GLIBC_2.38 _hurd_intern_fd F
+GLIBC_2.38 _hurd_intr_rpc_mach_msg F
+GLIBC_2.38 _hurd_libc_proc_init F
+GLIBC_2.38 _hurd_msgport D 0x4
+GLIBC_2.38 _hurd_port_cleanup F
+GLIBC_2.38 _hurd_port_free F
+GLIBC_2.38 _hurd_port_get F
+GLIBC_2.38 _hurd_port_init F
+GLIBC_2.38 _hurd_port_locked_get F
+GLIBC_2.38 _hurd_port_locked_set F
+GLIBC_2.38 _hurd_port_move F
+GLIBC_2.38 _hurd_port_set F
+GLIBC_2.38 _hurd_ports D 0x8
+GLIBC_2.38 _hurd_ports_use F
+GLIBC_2.38 _hurd_proc_init F
+GLIBC_2.38 _hurd_raise_signal F
+GLIBC_2.38 _hurd_self_sigstate F
+GLIBC_2.38 _hurd_thread_sigstate F
+GLIBC_2.38 _hurd_userlink_clear F
+GLIBC_2.38 _hurd_userlink_link F
+GLIBC_2.38 _hurd_userlink_unlink F
+GLIBC_2.38 _hurdsig_fault_catch_exception_raise F
+GLIBC_2.38 _hurdsig_fault_env D 0x50
+GLIBC_2.38 _hurdsig_fault_preemptor D 0x30
+GLIBC_2.38 _hurdsig_interrupt_timeout D 0x4
+GLIBC_2.38 _libc_intl_domainname D 0x5
+GLIBC_2.38 _longjmp F
+GLIBC_2.38 _mcleanup F
+GLIBC_2.38 _mcount F
+GLIBC_2.38 _nl_default_dirname D 0xe
+GLIBC_2.38 _nl_domain_bindings D 0x8
+GLIBC_2.38 _nl_msg_cat_cntr D 0x4
+GLIBC_2.38 _obstack_allocated_p F
+GLIBC_2.38 _obstack_begin F
+GLIBC_2.38 _obstack_begin_1 F
+GLIBC_2.38 _obstack_free F
+GLIBC_2.38 _obstack_memory_used F
+GLIBC_2.38 _obstack_newchunk F
+GLIBC_2.38 _res D 0x238
+GLIBC_2.38 _res_hconf D 0x48
+GLIBC_2.38 _setjmp F
+GLIBC_2.38 _tolower F
+GLIBC_2.38 _toupper F
+GLIBC_2.38 a64l F
+GLIBC_2.38 abort F
+GLIBC_2.38 abs F
+GLIBC_2.38 accept F
+GLIBC_2.38 accept4 F
+GLIBC_2.38 access F
+GLIBC_2.38 acct F
+GLIBC_2.38 addmntent F
+GLIBC_2.38 addseverity F
+GLIBC_2.38 adjtime F
+GLIBC_2.38 alarm F
+GLIBC_2.38 aligned_alloc F
+GLIBC_2.38 alphasort F
+GLIBC_2.38 alphasort64 F
+GLIBC_2.38 arc4random F
+GLIBC_2.38 arc4random_buf F
+GLIBC_2.38 arc4random_uniform F
+GLIBC_2.38 argp_err_exit_status D 0x4
+GLIBC_2.38 argp_error F
+GLIBC_2.38 argp_failure F
+GLIBC_2.38 argp_help F
+GLIBC_2.38 argp_parse F
+GLIBC_2.38 argp_program_bug_address D 0x8
+GLIBC_2.38 argp_program_version D 0x8
+GLIBC_2.38 argp_program_version_hook D 0x8
+GLIBC_2.38 argp_state_help F
+GLIBC_2.38 argp_usage F
+GLIBC_2.38 argz_add F
+GLIBC_2.38 argz_add_sep F
+GLIBC_2.38 argz_append F
+GLIBC_2.38 argz_count F
+GLIBC_2.38 argz_create F
+GLIBC_2.38 argz_create_sep F
+GLIBC_2.38 argz_delete F
+GLIBC_2.38 argz_extract F
+GLIBC_2.38 argz_insert F
+GLIBC_2.38 argz_next F
+GLIBC_2.38 argz_replace F
+GLIBC_2.38 argz_stringify F
+GLIBC_2.38 asctime F
+GLIBC_2.38 asctime_r F
+GLIBC_2.38 asprintf F
+GLIBC_2.38 atof F
+GLIBC_2.38 atoi F
+GLIBC_2.38 atol F
+GLIBC_2.38 atoll F
+GLIBC_2.38 backtrace F
+GLIBC_2.38 backtrace_symbols F
+GLIBC_2.38 backtrace_symbols_fd F
+GLIBC_2.38 basename F
+GLIBC_2.38 bcmp F
+GLIBC_2.38 bcopy F
+GLIBC_2.38 bind F
+GLIBC_2.38 bind_textdomain_codeset F
+GLIBC_2.38 bindresvport F
+GLIBC_2.38 bindtextdomain F
+GLIBC_2.38 brk F
+GLIBC_2.38 bsd_signal F
+GLIBC_2.38 bsearch F
+GLIBC_2.38 btowc F
+GLIBC_2.38 bzero F
+GLIBC_2.38 c16rtomb F
+GLIBC_2.38 c32rtomb F
+GLIBC_2.38 c8rtomb F
+GLIBC_2.38 calloc F
+GLIBC_2.38 canonicalize_file_name F
+GLIBC_2.38 catclose F
+GLIBC_2.38 catgets F
+GLIBC_2.38 catopen F
+GLIBC_2.38 cfgetispeed F
+GLIBC_2.38 cfgetospeed F
+GLIBC_2.38 cfmakeraw F
+GLIBC_2.38 cfsetispeed F
+GLIBC_2.38 cfsetospeed F
+GLIBC_2.38 cfsetspeed F
+GLIBC_2.38 chdir F
+GLIBC_2.38 chflags F
+GLIBC_2.38 chmod F
+GLIBC_2.38 chown F
+GLIBC_2.38 chroot F
+GLIBC_2.38 clearenv F
+GLIBC_2.38 clearerr F
+GLIBC_2.38 clearerr_unlocked F
+GLIBC_2.38 clock F
+GLIBC_2.38 clock_getcpuclockid F
+GLIBC_2.38 clock_getres F
+GLIBC_2.38 clock_gettime F
+GLIBC_2.38 clock_nanosleep F
+GLIBC_2.38 clock_settime F
+GLIBC_2.38 close F
+GLIBC_2.38 close_range F
+GLIBC_2.38 closedir F
+GLIBC_2.38 closefrom F
+GLIBC_2.38 closelog F
+GLIBC_2.38 confstr F
+GLIBC_2.38 connect F
+GLIBC_2.38 copy_file_range F
+GLIBC_2.38 copysign F
+GLIBC_2.38 copysignf F
+GLIBC_2.38 copysignl F
+GLIBC_2.38 creat F
+GLIBC_2.38 creat64 F
+GLIBC_2.38 ctermid F
+GLIBC_2.38 ctime F
+GLIBC_2.38 ctime_r F
+GLIBC_2.38 cuserid F
+GLIBC_2.38 daemon F
+GLIBC_2.38 daylight D 0x4
+GLIBC_2.38 dcgettext F
+GLIBC_2.38 dcngettext F
+GLIBC_2.38 dgettext F
+GLIBC_2.38 difftime F
+GLIBC_2.38 directory_name_split F
+GLIBC_2.38 dirfd F
+GLIBC_2.38 dirname F
+GLIBC_2.38 div F
+GLIBC_2.38 dl_iterate_phdr F
+GLIBC_2.38 dladdr F
+GLIBC_2.38 dladdr1 F
+GLIBC_2.38 dlclose F
+GLIBC_2.38 dlerror F
+GLIBC_2.38 dlinfo F
+GLIBC_2.38 dlmopen F
+GLIBC_2.38 dlopen F
+GLIBC_2.38 dlsym F
+GLIBC_2.38 dlvsym F
+GLIBC_2.38 dn_comp F
+GLIBC_2.38 dn_expand F
+GLIBC_2.38 dn_skipname F
+GLIBC_2.38 dngettext F
+GLIBC_2.38 dprintf F
+GLIBC_2.38 drand48 F
+GLIBC_2.38 drand48_r F
+GLIBC_2.38 dup F
+GLIBC_2.38 dup2 F
+GLIBC_2.38 dup3 F
+GLIBC_2.38 duplocale F
+GLIBC_2.38 dysize F
+GLIBC_2.38 eaccess F
+GLIBC_2.38 ecvt F
+GLIBC_2.38 ecvt_r F
+GLIBC_2.38 endaliasent F
+GLIBC_2.38 endfsent F
+GLIBC_2.38 endgrent F
+GLIBC_2.38 endhostent F
+GLIBC_2.38 endmntent F
+GLIBC_2.38 endnetent F
+GLIBC_2.38 endnetgrent F
+GLIBC_2.38 endprotoent F
+GLIBC_2.38 endpwent F
+GLIBC_2.38 endrpcent F
+GLIBC_2.38 endservent F
+GLIBC_2.38 endsgent F
+GLIBC_2.38 endspent F
+GLIBC_2.38 endttyent F
+GLIBC_2.38 endusershell F
+GLIBC_2.38 endutent F
+GLIBC_2.38 endutxent F
+GLIBC_2.38 environ D 0x8
+GLIBC_2.38 envz_add F
+GLIBC_2.38 envz_entry F
+GLIBC_2.38 envz_get F
+GLIBC_2.38 envz_merge F
+GLIBC_2.38 envz_remove F
+GLIBC_2.38 envz_strip F
+GLIBC_2.38 erand48 F
+GLIBC_2.38 erand48_r F
+GLIBC_2.38 err F
+GLIBC_2.38 error F
+GLIBC_2.38 error_at_line F
+GLIBC_2.38 error_message_count D 0x4
+GLIBC_2.38 error_one_per_line D 0x4
+GLIBC_2.38 error_print_progname D 0x8
+GLIBC_2.38 errx F
+GLIBC_2.38 ether_aton F
+GLIBC_2.38 ether_aton_r F
+GLIBC_2.38 ether_hostton F
+GLIBC_2.38 ether_line F
+GLIBC_2.38 ether_ntoa F
+GLIBC_2.38 ether_ntoa_r F
+GLIBC_2.38 ether_ntohost F
+GLIBC_2.38 euidaccess F
+GLIBC_2.38 evc_wait F
+GLIBC_2.38 execl F
+GLIBC_2.38 execle F
+GLIBC_2.38 execlp F
+GLIBC_2.38 execv F
+GLIBC_2.38 execve F
+GLIBC_2.38 execveat F
+GLIBC_2.38 execvp F
+GLIBC_2.38 execvpe F
+GLIBC_2.38 exit F
+GLIBC_2.38 explicit_bzero F
+GLIBC_2.38 faccessat F
+GLIBC_2.38 fchdir F
+GLIBC_2.38 fchflags F
+GLIBC_2.38 fchmod F
+GLIBC_2.38 fchmodat F
+GLIBC_2.38 fchown F
+GLIBC_2.38 fchownat F
+GLIBC_2.38 fclose F
+GLIBC_2.38 fcloseall F
+GLIBC_2.38 fcntl F
+GLIBC_2.38 fcntl64 F
+GLIBC_2.38 fcvt F
+GLIBC_2.38 fcvt_r F
+GLIBC_2.38 fdatasync F
+GLIBC_2.38 fdopen F
+GLIBC_2.38 fdopendir F
+GLIBC_2.38 feof F
+GLIBC_2.38 feof_unlocked F
+GLIBC_2.38 ferror F
+GLIBC_2.38 ferror_unlocked F
+GLIBC_2.38 fexecve F
+GLIBC_2.38 fflush F
+GLIBC_2.38 fflush_unlocked F
+GLIBC_2.38 ffs F
+GLIBC_2.38 ffsl F
+GLIBC_2.38 ffsll F
+GLIBC_2.38 fgetc F
+GLIBC_2.38 fgetc_unlocked F
+GLIBC_2.38 fgetgrent F
+GLIBC_2.38 fgetgrent_r F
+GLIBC_2.38 fgetpos F
+GLIBC_2.38 fgetpos64 F
+GLIBC_2.38 fgetpwent F
+GLIBC_2.38 fgetpwent_r F
+GLIBC_2.38 fgets F
+GLIBC_2.38 fgets_unlocked F
+GLIBC_2.38 fgetsgent F
+GLIBC_2.38 fgetsgent_r F
+GLIBC_2.38 fgetspent F
+GLIBC_2.38 fgetspent_r F
+GLIBC_2.38 fgetwc F
+GLIBC_2.38 fgetwc_unlocked F
+GLIBC_2.38 fgetws F
+GLIBC_2.38 fgetws_unlocked F
+GLIBC_2.38 fgetxattr F
+GLIBC_2.38 file_name_lookup F
+GLIBC_2.38 file_name_lookup_under F
+GLIBC_2.38 file_name_path_lookup F
+GLIBC_2.38 file_name_split F
+GLIBC_2.38 fileno F
+GLIBC_2.38 fileno_unlocked F
+GLIBC_2.38 finite F
+GLIBC_2.38 finitef F
+GLIBC_2.38 finitel F
+GLIBC_2.38 flistxattr F
+GLIBC_2.38 flock F
+GLIBC_2.38 flockfile F
+GLIBC_2.38 fmemopen F
+GLIBC_2.38 fmtmsg F
+GLIBC_2.38 fnmatch F
+GLIBC_2.38 fopen F
+GLIBC_2.38 fopen64 F
+GLIBC_2.38 fopencookie F
+GLIBC_2.38 fopenport F
+GLIBC_2.38 fork F
+GLIBC_2.38 forkpty F
+GLIBC_2.38 fpathconf F
+GLIBC_2.38 fprintf F
+GLIBC_2.38 fputc F
+GLIBC_2.38 fputc_unlocked F
+GLIBC_2.38 fputs F
+GLIBC_2.38 fputs_unlocked F
+GLIBC_2.38 fputwc F
+GLIBC_2.38 fputwc_unlocked F
+GLIBC_2.38 fputws F
+GLIBC_2.38 fputws_unlocked F
+GLIBC_2.38 fread F
+GLIBC_2.38 fread_unlocked F
+GLIBC_2.38 free F
+GLIBC_2.38 freeaddrinfo F
+GLIBC_2.38 freeifaddrs F
+GLIBC_2.38 freelocale F
+GLIBC_2.38 fremovexattr F
+GLIBC_2.38 freopen F
+GLIBC_2.38 freopen64 F
+GLIBC_2.38 frexp F
+GLIBC_2.38 frexpf F
+GLIBC_2.38 frexpl F
+GLIBC_2.38 fscanf F
+GLIBC_2.38 fseek F
+GLIBC_2.38 fseeko F
+GLIBC_2.38 fseeko64 F
+GLIBC_2.38 fsetpos F
+GLIBC_2.38 fsetpos64 F
+GLIBC_2.38 fsetxattr F
+GLIBC_2.38 fstat F
+GLIBC_2.38 fstat64 F
+GLIBC_2.38 fstatat F
+GLIBC_2.38 fstatat64 F
+GLIBC_2.38 fstatfs F
+GLIBC_2.38 fstatfs64 F
+GLIBC_2.38 fstatvfs F
+GLIBC_2.38 fstatvfs64 F
+GLIBC_2.38 fsync F
+GLIBC_2.38 ftell F
+GLIBC_2.38 ftello F
+GLIBC_2.38 ftello64 F
+GLIBC_2.38 ftime F
+GLIBC_2.38 ftok F
+GLIBC_2.38 ftruncate F
+GLIBC_2.38 ftruncate64 F
+GLIBC_2.38 ftrylockfile F
+GLIBC_2.38 fts64_children F
+GLIBC_2.38 fts64_close F
+GLIBC_2.38 fts64_open F
+GLIBC_2.38 fts64_read F
+GLIBC_2.38 fts64_set F
+GLIBC_2.38 fts_children F
+GLIBC_2.38 fts_close F
+GLIBC_2.38 fts_open F
+GLIBC_2.38 fts_read F
+GLIBC_2.38 fts_set F
+GLIBC_2.38 ftw F
+GLIBC_2.38 ftw64 F
+GLIBC_2.38 funlockfile F
+GLIBC_2.38 futimens F
+GLIBC_2.38 futimes F
+GLIBC_2.38 futimesat F
+GLIBC_2.38 fwide F
+GLIBC_2.38 fwprintf F
+GLIBC_2.38 fwrite F
+GLIBC_2.38 fwrite_unlocked F
+GLIBC_2.38 fwscanf F
+GLIBC_2.38 gai_strerror F
+GLIBC_2.38 gcvt F
+GLIBC_2.38 get_avphys_pages F
+GLIBC_2.38 get_current_dir_name F
+GLIBC_2.38 get_nprocs F
+GLIBC_2.38 get_nprocs_conf F
+GLIBC_2.38 get_phys_pages F
+GLIBC_2.38 get_privileged_ports F
+GLIBC_2.38 getaddrinfo F
+GLIBC_2.38 getaliasbyname F
+GLIBC_2.38 getaliasbyname_r F
+GLIBC_2.38 getaliasent F
+GLIBC_2.38 getaliasent_r F
+GLIBC_2.38 getauth F
+GLIBC_2.38 getauxval F
+GLIBC_2.38 getc F
+GLIBC_2.38 getc_unlocked F
+GLIBC_2.38 getchar F
+GLIBC_2.38 getchar_unlocked F
+GLIBC_2.38 getcontext F
+GLIBC_2.38 getcrdir F
+GLIBC_2.38 getcttyid F
+GLIBC_2.38 getcwd F
+GLIBC_2.38 getcwdir F
+GLIBC_2.38 getdate F
+GLIBC_2.38 getdate_err D 0x4
+GLIBC_2.38 getdate_r F
+GLIBC_2.38 getdelim F
+GLIBC_2.38 getdirentries F
+GLIBC_2.38 getdirentries64 F
+GLIBC_2.38 getdomainname F
+GLIBC_2.38 getdport F
+GLIBC_2.38 getdtablesize F
+GLIBC_2.38 getegid F
+GLIBC_2.38 getentropy F
+GLIBC_2.38 getenv F
+GLIBC_2.38 geteuid F
+GLIBC_2.38 geteuids F
+GLIBC_2.38 getfsent F
+GLIBC_2.38 getfsfile F
+GLIBC_2.38 getfsspec F
+GLIBC_2.38 getgid F
+GLIBC_2.38 getgrent F
+GLIBC_2.38 getgrent_r F
+GLIBC_2.38 getgrgid F
+GLIBC_2.38 getgrgid_r F
+GLIBC_2.38 getgrnam F
+GLIBC_2.38 getgrnam_r F
+GLIBC_2.38 getgrouplist F
+GLIBC_2.38 getgroups F
+GLIBC_2.38 gethostbyaddr F
+GLIBC_2.38 gethostbyaddr_r F
+GLIBC_2.38 gethostbyname F
+GLIBC_2.38 gethostbyname2 F
+GLIBC_2.38 gethostbyname2_r F
+GLIBC_2.38 gethostbyname_r F
+GLIBC_2.38 gethostent F
+GLIBC_2.38 gethostent_r F
+GLIBC_2.38 gethostid F
+GLIBC_2.38 gethostname F
+GLIBC_2.38 getifaddrs F
+GLIBC_2.38 getipv4sourcefilter F
+GLIBC_2.38 getitimer F
+GLIBC_2.38 getline F
+GLIBC_2.38 getloadavg F
+GLIBC_2.38 getlogin F
+GLIBC_2.38 getlogin_r F
+GLIBC_2.38 getmntent F
+GLIBC_2.38 getmntent_r F
+GLIBC_2.38 getnameinfo F
+GLIBC_2.38 getnetbyaddr F
+GLIBC_2.38 getnetbyaddr_r F
+GLIBC_2.38 getnetbyname F
+GLIBC_2.38 getnetbyname_r F
+GLIBC_2.38 getnetent F
+GLIBC_2.38 getnetent_r F
+GLIBC_2.38 getnetgrent F
+GLIBC_2.38 getnetgrent_r F
+GLIBC_2.38 getopt F
+GLIBC_2.38 getopt_long F
+GLIBC_2.38 getopt_long_only F
+GLIBC_2.38 getpagesize F
+GLIBC_2.38 getpass F
+GLIBC_2.38 getpeername F
+GLIBC_2.38 getpgid F
+GLIBC_2.38 getpgrp F
+GLIBC_2.38 getpid F
+GLIBC_2.38 getppid F
+GLIBC_2.38 getpriority F
+GLIBC_2.38 getproc F
+GLIBC_2.38 getprotobyname F
+GLIBC_2.38 getprotobyname_r F
+GLIBC_2.38 getprotobynumber F
+GLIBC_2.38 getprotobynumber_r F
+GLIBC_2.38 getprotoent F
+GLIBC_2.38 getprotoent_r F
+GLIBC_2.38 getpt F
+GLIBC_2.38 getpw F
+GLIBC_2.38 getpwent F
+GLIBC_2.38 getpwent_r F
+GLIBC_2.38 getpwnam F
+GLIBC_2.38 getpwnam_r F
+GLIBC_2.38 getpwuid F
+GLIBC_2.38 getpwuid_r F
+GLIBC_2.38 getrandom F
+GLIBC_2.38 getresgid F
+GLIBC_2.38 getresuid F
+GLIBC_2.38 getrlimit F
+GLIBC_2.38 getrlimit64 F
+GLIBC_2.38 getrpcbyname F
+GLIBC_2.38 getrpcbyname_r F
+GLIBC_2.38 getrpcbynumber F
+GLIBC_2.38 getrpcbynumber_r F
+GLIBC_2.38 getrpcent F
+GLIBC_2.38 getrpcent_r F
+GLIBC_2.38 getrusage F
+GLIBC_2.38 gets F
+GLIBC_2.38 getservbyname F
+GLIBC_2.38 getservbyname_r F
+GLIBC_2.38 getservbyport F
+GLIBC_2.38 getservbyport_r F
+GLIBC_2.38 getservent F
+GLIBC_2.38 getservent_r F
+GLIBC_2.38 getsgent F
+GLIBC_2.38 getsgent_r F
+GLIBC_2.38 getsgnam F
+GLIBC_2.38 getsgnam_r F
+GLIBC_2.38 getsid F
+GLIBC_2.38 getsockname F
+GLIBC_2.38 getsockopt F
+GLIBC_2.38 getsourcefilter F
+GLIBC_2.38 getspent F
+GLIBC_2.38 getspent_r F
+GLIBC_2.38 getspnam F
+GLIBC_2.38 getspnam_r F
+GLIBC_2.38 getsubopt F
+GLIBC_2.38 gettext F
+GLIBC_2.38 gettimeofday F
+GLIBC_2.38 getttyent F
+GLIBC_2.38 getttynam F
+GLIBC_2.38 getuid F
+GLIBC_2.38 getumask F
+GLIBC_2.38 getusershell F
+GLIBC_2.38 getutent F
+GLIBC_2.38 getutent_r F
+GLIBC_2.38 getutid F
+GLIBC_2.38 getutid_r F
+GLIBC_2.38 getutline F
+GLIBC_2.38 getutline_r F
+GLIBC_2.38 getutmp F
+GLIBC_2.38 getutmpx F
+GLIBC_2.38 getutxent F
+GLIBC_2.38 getutxid F
+GLIBC_2.38 getutxline F
+GLIBC_2.38 getw F
+GLIBC_2.38 getwc F
+GLIBC_2.38 getwc_unlocked F
+GLIBC_2.38 getwchar F
+GLIBC_2.38 getwchar_unlocked F
+GLIBC_2.38 getwd F
+GLIBC_2.38 getxattr F
+GLIBC_2.38 glob F
+GLIBC_2.38 glob64 F
+GLIBC_2.38 glob_pattern_p F
+GLIBC_2.38 globfree F
+GLIBC_2.38 globfree64 F
+GLIBC_2.38 gmtime F
+GLIBC_2.38 gmtime_r F
+GLIBC_2.38 gnu_dev_major F
+GLIBC_2.38 gnu_dev_makedev F
+GLIBC_2.38 gnu_dev_minor F
+GLIBC_2.38 gnu_get_libc_release F
+GLIBC_2.38 gnu_get_libc_version F
+GLIBC_2.38 grantpt F
+GLIBC_2.38 group_member F
+GLIBC_2.38 gsignal F
+GLIBC_2.38 gtty F
+GLIBC_2.38 h_errlist D 0x28
+GLIBC_2.38 h_nerr D 0x4
+GLIBC_2.38 hasmntopt F
+GLIBC_2.38 hcreate F
+GLIBC_2.38 hcreate_r F
+GLIBC_2.38 hdestroy F
+GLIBC_2.38 hdestroy_r F
+GLIBC_2.38 herror F
+GLIBC_2.38 hsearch F
+GLIBC_2.38 hsearch_r F
+GLIBC_2.38 hstrerror F
+GLIBC_2.38 htonl F
+GLIBC_2.38 htons F
+GLIBC_2.38 hurd_catch_signal F
+GLIBC_2.38 hurd_check_cancel F
+GLIBC_2.38 hurd_directory_name_split F
+GLIBC_2.38 hurd_file_name_lookup F
+GLIBC_2.38 hurd_file_name_lookup_retry F
+GLIBC_2.38 hurd_file_name_path_lookup F
+GLIBC_2.38 hurd_file_name_split F
+GLIBC_2.38 hurd_preempt_signals F
+GLIBC_2.38 hurd_safe_copyin F
+GLIBC_2.38 hurd_safe_copyout F
+GLIBC_2.38 hurd_safe_memmove F
+GLIBC_2.38 hurd_safe_memset F
+GLIBC_2.38 hurd_sig_post F
+GLIBC_2.38 hurd_thread_cancel F
+GLIBC_2.38 hurd_thread_self F
+GLIBC_2.38 hurd_unpreempt_signals F
+GLIBC_2.38 iconv F
+GLIBC_2.38 iconv_close F
+GLIBC_2.38 iconv_open F
+GLIBC_2.38 if_freenameindex F
+GLIBC_2.38 if_indextoname F
+GLIBC_2.38 if_nameindex F
+GLIBC_2.38 if_nametoindex F
+GLIBC_2.38 imaxabs F
+GLIBC_2.38 imaxdiv F
+GLIBC_2.38 in6addr_any D 0x10
+GLIBC_2.38 in6addr_loopback D 0x10
+GLIBC_2.38 index F
+GLIBC_2.38 inet6_opt_append F
+GLIBC_2.38 inet6_opt_find F
+GLIBC_2.38 inet6_opt_finish F
+GLIBC_2.38 inet6_opt_get_val F
+GLIBC_2.38 inet6_opt_init F
+GLIBC_2.38 inet6_opt_next F
+GLIBC_2.38 inet6_opt_set_val F
+GLIBC_2.38 inet6_option_alloc F
+GLIBC_2.38 inet6_option_append F
+GLIBC_2.38 inet6_option_find F
+GLIBC_2.38 inet6_option_init F
+GLIBC_2.38 inet6_option_next F
+GLIBC_2.38 inet6_option_space F
+GLIBC_2.38 inet6_rth_add F
+GLIBC_2.38 inet6_rth_getaddr F
+GLIBC_2.38 inet6_rth_init F
+GLIBC_2.38 inet6_rth_reverse F
+GLIBC_2.38 inet6_rth_segments F
+GLIBC_2.38 inet6_rth_space F
+GLIBC_2.38 inet_addr F
+GLIBC_2.38 inet_aton F
+GLIBC_2.38 inet_lnaof F
+GLIBC_2.38 inet_makeaddr F
+GLIBC_2.38 inet_netof F
+GLIBC_2.38 inet_network F
+GLIBC_2.38 inet_nsap_addr F
+GLIBC_2.38 inet_nsap_ntoa F
+GLIBC_2.38 inet_ntoa F
+GLIBC_2.38 inet_ntop F
+GLIBC_2.38 inet_pton F
+GLIBC_2.38 initgroups F
+GLIBC_2.38 initstate F
+GLIBC_2.38 initstate_r F
+GLIBC_2.38 innetgr F
+GLIBC_2.38 insque F
+GLIBC_2.38 ioctl F
+GLIBC_2.38 iruserok F
+GLIBC_2.38 iruserok_af F
+GLIBC_2.38 isalnum F
+GLIBC_2.38 isalnum_l F
+GLIBC_2.38 isalpha F
+GLIBC_2.38 isalpha_l F
+GLIBC_2.38 isascii F
+GLIBC_2.38 isatty F
+GLIBC_2.38 isblank F
+GLIBC_2.38 isblank_l F
+GLIBC_2.38 iscntrl F
+GLIBC_2.38 iscntrl_l F
+GLIBC_2.38 isctype F
+GLIBC_2.38 isdigit F
+GLIBC_2.38 isdigit_l F
+GLIBC_2.38 isfdtype F
+GLIBC_2.38 isgraph F
+GLIBC_2.38 isgraph_l F
+GLIBC_2.38 isinf F
+GLIBC_2.38 isinff F
+GLIBC_2.38 isinfl F
+GLIBC_2.38 islower F
+GLIBC_2.38 islower_l F
+GLIBC_2.38 isnan F
+GLIBC_2.38 isnanf F
+GLIBC_2.38 isnanl F
+GLIBC_2.38 isprint F
+GLIBC_2.38 isprint_l F
+GLIBC_2.38 ispunct F
+GLIBC_2.38 ispunct_l F
+GLIBC_2.38 isspace F
+GLIBC_2.38 isspace_l F
+GLIBC_2.38 isupper F
+GLIBC_2.38 isupper_l F
+GLIBC_2.38 iswalnum F
+GLIBC_2.38 iswalnum_l F
+GLIBC_2.38 iswalpha F
+GLIBC_2.38 iswalpha_l F
+GLIBC_2.38 iswblank F
+GLIBC_2.38 iswblank_l F
+GLIBC_2.38 iswcntrl F
+GLIBC_2.38 iswcntrl_l F
+GLIBC_2.38 iswctype F
+GLIBC_2.38 iswctype_l F
+GLIBC_2.38 iswdigit F
+GLIBC_2.38 iswdigit_l F
+GLIBC_2.38 iswgraph F
+GLIBC_2.38 iswgraph_l F
+GLIBC_2.38 iswlower F
+GLIBC_2.38 iswlower_l F
+GLIBC_2.38 iswprint F
+GLIBC_2.38 iswprint_l F
+GLIBC_2.38 iswpunct F
+GLIBC_2.38 iswpunct_l F
+GLIBC_2.38 iswspace F
+GLIBC_2.38 iswspace_l F
+GLIBC_2.38 iswupper F
+GLIBC_2.38 iswupper_l F
+GLIBC_2.38 iswxdigit F
+GLIBC_2.38 iswxdigit_l F
+GLIBC_2.38 isxdigit F
+GLIBC_2.38 isxdigit_l F
+GLIBC_2.38 jrand48 F
+GLIBC_2.38 jrand48_r F
+GLIBC_2.38 kill F
+GLIBC_2.38 killpg F
+GLIBC_2.38 l64a F
+GLIBC_2.38 labs F
+GLIBC_2.38 lchmod F
+GLIBC_2.38 lchown F
+GLIBC_2.38 lckpwdf F
+GLIBC_2.38 lcong48 F
+GLIBC_2.38 lcong48_r F
+GLIBC_2.38 ldexp F
+GLIBC_2.38 ldexpf F
+GLIBC_2.38 ldexpl F
+GLIBC_2.38 ldiv F
+GLIBC_2.38 lfind F
+GLIBC_2.38 lgetxattr F
+GLIBC_2.38 link F
+GLIBC_2.38 linkat F
+GLIBC_2.38 listen F
+GLIBC_2.38 listxattr F
+GLIBC_2.38 llabs F
+GLIBC_2.38 lldiv F
+GLIBC_2.38 llistxattr F
+GLIBC_2.38 localeconv F
+GLIBC_2.38 localtime F
+GLIBC_2.38 localtime_r F
+GLIBC_2.38 lockf F
+GLIBC_2.38 lockf64 F
+GLIBC_2.38 login F
+GLIBC_2.38 login_tty F
+GLIBC_2.38 logout F
+GLIBC_2.38 logwtmp F
+GLIBC_2.38 longjmp F
+GLIBC_2.38 lrand48 F
+GLIBC_2.38 lrand48_r F
+GLIBC_2.38 lremovexattr F
+GLIBC_2.38 lsearch F
+GLIBC_2.38 lseek F
+GLIBC_2.38 lseek64 F
+GLIBC_2.38 lsetxattr F
+GLIBC_2.38 lstat F
+GLIBC_2.38 lstat64 F
+GLIBC_2.38 lutimes F
+GLIBC_2.38 mach_error F
+GLIBC_2.38 mach_error_string F
+GLIBC_2.38 mach_error_type F
+GLIBC_2.38 mach_host_self F
+GLIBC_2.38 mach_msg F
+GLIBC_2.38 mach_msg_destroy F
+GLIBC_2.38 mach_msg_receive F
+GLIBC_2.38 mach_msg_send F
+GLIBC_2.38 mach_msg_server F
+GLIBC_2.38 mach_msg_server_timeout F
+GLIBC_2.38 mach_open_devstream F
+GLIBC_2.38 mach_port_allocate F
+GLIBC_2.38 mach_port_allocate_name F
+GLIBC_2.38 mach_port_deallocate F
+GLIBC_2.38 mach_port_insert_right F
+GLIBC_2.38 mach_print F
+GLIBC_2.38 mach_reply_port F
+GLIBC_2.38 mach_setup_thread F
+GLIBC_2.38 mach_setup_tls F
+GLIBC_2.38 mach_task_self F
+GLIBC_2.38 mach_thread_self F
+GLIBC_2.38 madvise F
+GLIBC_2.38 makecontext F
+GLIBC_2.38 mallinfo F
+GLIBC_2.38 mallinfo2 F
+GLIBC_2.38 malloc F
+GLIBC_2.38 malloc_info F
+GLIBC_2.38 malloc_stats F
+GLIBC_2.38 malloc_trim F
+GLIBC_2.38 malloc_usable_size F
+GLIBC_2.38 mallopt F
+GLIBC_2.38 mblen F
+GLIBC_2.38 mbrlen F
+GLIBC_2.38 mbrtoc16 F
+GLIBC_2.38 mbrtoc32 F
+GLIBC_2.38 mbrtoc8 F
+GLIBC_2.38 mbrtowc F
+GLIBC_2.38 mbsinit F
+GLIBC_2.38 mbsnrtowcs F
+GLIBC_2.38 mbsrtowcs F
+GLIBC_2.38 mbstowcs F
+GLIBC_2.38 mbtowc F
+GLIBC_2.38 mcheck F
+GLIBC_2.38 mcheck_check_all F
+GLIBC_2.38 mcheck_pedantic F
+GLIBC_2.38 mcount F
+GLIBC_2.38 memalign F
+GLIBC_2.38 memccpy F
+GLIBC_2.38 memchr F
+GLIBC_2.38 memcmp F
+GLIBC_2.38 memcpy F
+GLIBC_2.38 memfrob F
+GLIBC_2.38 memmem F
+GLIBC_2.38 memmove F
+GLIBC_2.38 mempcpy F
+GLIBC_2.38 memrchr F
+GLIBC_2.38 memset F
+GLIBC_2.38 mig_allocate F
+GLIBC_2.38 mig_dealloc_reply_port F
+GLIBC_2.38 mig_deallocate F
+GLIBC_2.38 mig_get_reply_port F
+GLIBC_2.38 mig_init F
+GLIBC_2.38 mig_put_reply_port F
+GLIBC_2.38 mig_strncpy F
+GLIBC_2.38 mincore F
+GLIBC_2.38 mkdir F
+GLIBC_2.38 mkdirat F
+GLIBC_2.38 mkdtemp F
+GLIBC_2.38 mkfifo F
+GLIBC_2.38 mkfifoat F
+GLIBC_2.38 mknod F
+GLIBC_2.38 mknodat F
+GLIBC_2.38 mkostemp F
+GLIBC_2.38 mkostemp64 F
+GLIBC_2.38 mkostemps F
+GLIBC_2.38 mkostemps64 F
+GLIBC_2.38 mkstemp F
+GLIBC_2.38 mkstemp64 F
+GLIBC_2.38 mkstemps F
+GLIBC_2.38 mkstemps64 F
+GLIBC_2.38 mktemp F
+GLIBC_2.38 mktime F
+GLIBC_2.38 mlock F
+GLIBC_2.38 mlockall F
+GLIBC_2.38 mmap F
+GLIBC_2.38 mmap64 F
+GLIBC_2.38 modf F
+GLIBC_2.38 modff F
+GLIBC_2.38 modfl F
+GLIBC_2.38 moncontrol F
+GLIBC_2.38 monstartup F
+GLIBC_2.38 mprobe F
+GLIBC_2.38 mprotect F
+GLIBC_2.38 mrand48 F
+GLIBC_2.38 mrand48_r F
+GLIBC_2.38 mremap F
+GLIBC_2.38 msgctl F
+GLIBC_2.38 msgget F
+GLIBC_2.38 msgrcv F
+GLIBC_2.38 msgsnd F
+GLIBC_2.38 msync F
+GLIBC_2.38 mtrace F
+GLIBC_2.38 munlock F
+GLIBC_2.38 munlockall F
+GLIBC_2.38 munmap F
+GLIBC_2.38 muntrace F
+GLIBC_2.38 nanosleep F
+GLIBC_2.38 newlocale F
+GLIBC_2.38 nftw F
+GLIBC_2.38 nftw64 F
+GLIBC_2.38 ngettext F
+GLIBC_2.38 nice F
+GLIBC_2.38 nl_langinfo F
+GLIBC_2.38 nl_langinfo_l F
+GLIBC_2.38 nrand48 F
+GLIBC_2.38 nrand48_r F
+GLIBC_2.38 ns_name_compress F
+GLIBC_2.38 ns_name_ntop F
+GLIBC_2.38 ns_name_pack F
+GLIBC_2.38 ns_name_pton F
+GLIBC_2.38 ns_name_skip F
+GLIBC_2.38 ns_name_uncompress F
+GLIBC_2.38 ns_name_unpack F
+GLIBC_2.38 ntohl F
+GLIBC_2.38 ntohs F
+GLIBC_2.38 obstack_alloc_failed_handler D 0x8
+GLIBC_2.38 obstack_exit_failure D 0x4
+GLIBC_2.38 obstack_free F
+GLIBC_2.38 obstack_printf F
+GLIBC_2.38 obstack_vprintf F
+GLIBC_2.38 on_exit F
+GLIBC_2.38 open F
+GLIBC_2.38 open64 F
+GLIBC_2.38 open_memstream F
+GLIBC_2.38 open_wmemstream F
+GLIBC_2.38 openat F
+GLIBC_2.38 openat64 F
+GLIBC_2.38 opendir F
+GLIBC_2.38 openlog F
+GLIBC_2.38 openport F
+GLIBC_2.38 openpty F
+GLIBC_2.38 optarg D 0x8
+GLIBC_2.38 opterr D 0x4
+GLIBC_2.38 optind D 0x4
+GLIBC_2.38 optopt D 0x4
+GLIBC_2.38 parse_printf_format F
+GLIBC_2.38 pathconf F
+GLIBC_2.38 pause F
+GLIBC_2.38 pclose F
+GLIBC_2.38 perror F
+GLIBC_2.38 pid2task F
+GLIBC_2.38 pipe F
+GLIBC_2.38 pipe2 F
+GLIBC_2.38 poll F
+GLIBC_2.38 popen F
+GLIBC_2.38 posix_fadvise F
+GLIBC_2.38 posix_fadvise64 F
+GLIBC_2.38 posix_fallocate F
+GLIBC_2.38 posix_fallocate64 F
+GLIBC_2.38 posix_madvise F
+GLIBC_2.38 posix_memalign F
+GLIBC_2.38 posix_openpt F
+GLIBC_2.38 posix_spawn F
+GLIBC_2.38 posix_spawn_file_actions_addchdir_np F
+GLIBC_2.38 posix_spawn_file_actions_addclose F
+GLIBC_2.38 posix_spawn_file_actions_addclosefrom_np F
+GLIBC_2.38 posix_spawn_file_actions_adddup2 F
+GLIBC_2.38 posix_spawn_file_actions_addfchdir_np F
+GLIBC_2.38 posix_spawn_file_actions_addopen F
+GLIBC_2.38 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.38 posix_spawn_file_actions_destroy F
+GLIBC_2.38 posix_spawn_file_actions_init F
+GLIBC_2.38 posix_spawnattr_destroy F
+GLIBC_2.38 posix_spawnattr_getflags F
+GLIBC_2.38 posix_spawnattr_getpgroup F
+GLIBC_2.38 posix_spawnattr_getschedparam F
+GLIBC_2.38 posix_spawnattr_getschedpolicy F
+GLIBC_2.38 posix_spawnattr_getsigdefault F
+GLIBC_2.38 posix_spawnattr_getsigmask F
+GLIBC_2.38 posix_spawnattr_init F
+GLIBC_2.38 posix_spawnattr_setflags F
+GLIBC_2.38 posix_spawnattr_setpgroup F
+GLIBC_2.38 posix_spawnattr_setschedparam F
+GLIBC_2.38 posix_spawnattr_setschedpolicy F
+GLIBC_2.38 posix_spawnattr_setsigdefault F
+GLIBC_2.38 posix_spawnattr_setsigmask F
+GLIBC_2.38 posix_spawnp F
+GLIBC_2.38 ppoll F
+GLIBC_2.38 pread F
+GLIBC_2.38 pread64 F
+GLIBC_2.38 preadv F
+GLIBC_2.38 preadv2 F
+GLIBC_2.38 preadv64 F
+GLIBC_2.38 preadv64v2 F
+GLIBC_2.38 printf F
+GLIBC_2.38 printf_size F
+GLIBC_2.38 printf_size_info F
+GLIBC_2.38 profil F
+GLIBC_2.38 program_invocation_name D 0x8
+GLIBC_2.38 program_invocation_short_name D 0x8
+GLIBC_2.38 pselect F
+GLIBC_2.38 psiginfo F
+GLIBC_2.38 psignal F
+GLIBC_2.38 pthread_attr_destroy F
+GLIBC_2.38 pthread_attr_getdetachstate F
+GLIBC_2.38 pthread_attr_getinheritsched F
+GLIBC_2.38 pthread_attr_getschedparam F
+GLIBC_2.38 pthread_attr_getschedpolicy F
+GLIBC_2.38 pthread_attr_getscope F
+GLIBC_2.38 pthread_attr_init F
+GLIBC_2.38 pthread_attr_setdetachstate F
+GLIBC_2.38 pthread_attr_setinheritsched F
+GLIBC_2.38 pthread_attr_setschedparam F
+GLIBC_2.38 pthread_attr_setschedpolicy F
+GLIBC_2.38 pthread_attr_setscope F
+GLIBC_2.38 pthread_cond_broadcast F
+GLIBC_2.38 pthread_cond_destroy F
+GLIBC_2.38 pthread_cond_init F
+GLIBC_2.38 pthread_cond_signal F
+GLIBC_2.38 pthread_cond_timedwait F
+GLIBC_2.38 pthread_cond_wait F
+GLIBC_2.38 pthread_condattr_destroy F
+GLIBC_2.38 pthread_condattr_init F
+GLIBC_2.38 pthread_equal F
+GLIBC_2.38 pthread_exit F
+GLIBC_2.38 pthread_getschedparam F
+GLIBC_2.38 pthread_mutex_destroy F
+GLIBC_2.38 pthread_mutex_init F
+GLIBC_2.38 pthread_mutex_lock F
+GLIBC_2.38 pthread_mutex_unlock F
+GLIBC_2.38 pthread_self F
+GLIBC_2.38 pthread_setcancelstate F
+GLIBC_2.38 pthread_setcanceltype F
+GLIBC_2.38 pthread_setschedparam F
+GLIBC_2.38 ptrace F
+GLIBC_2.38 ptsname F
+GLIBC_2.38 ptsname_r F
+GLIBC_2.38 putc F
+GLIBC_2.38 putc_unlocked F
+GLIBC_2.38 putchar F
+GLIBC_2.38 putchar_unlocked F
+GLIBC_2.38 putenv F
+GLIBC_2.38 putgrent F
+GLIBC_2.38 putpwent F
+GLIBC_2.38 puts F
+GLIBC_2.38 putsgent F
+GLIBC_2.38 putspent F
+GLIBC_2.38 pututline F
+GLIBC_2.38 pututxline F
+GLIBC_2.38 putw F
+GLIBC_2.38 putwc F
+GLIBC_2.38 putwc_unlocked F
+GLIBC_2.38 putwchar F
+GLIBC_2.38 putwchar_unlocked F
+GLIBC_2.38 pvalloc F
+GLIBC_2.38 pwrite F
+GLIBC_2.38 pwrite64 F
+GLIBC_2.38 pwritev F
+GLIBC_2.38 pwritev2 F
+GLIBC_2.38 pwritev64 F
+GLIBC_2.38 pwritev64v2 F
+GLIBC_2.38 qecvt F
+GLIBC_2.38 qecvt_r F
+GLIBC_2.38 qfcvt F
+GLIBC_2.38 qfcvt_r F
+GLIBC_2.38 qgcvt F
+GLIBC_2.38 qsort F
+GLIBC_2.38 qsort_r F
+GLIBC_2.38 quick_exit F
+GLIBC_2.38 raise F
+GLIBC_2.38 rand F
+GLIBC_2.38 rand_r F
+GLIBC_2.38 random F
+GLIBC_2.38 random_r F
+GLIBC_2.38 rawmemchr F
+GLIBC_2.38 rcmd F
+GLIBC_2.38 rcmd_af F
+GLIBC_2.38 re_comp F
+GLIBC_2.38 re_compile_fastmap F
+GLIBC_2.38 re_compile_pattern F
+GLIBC_2.38 re_exec F
+GLIBC_2.38 re_match F
+GLIBC_2.38 re_match_2 F
+GLIBC_2.38 re_search F
+GLIBC_2.38 re_search_2 F
+GLIBC_2.38 re_set_registers F
+GLIBC_2.38 re_set_syntax F
+GLIBC_2.38 re_syntax_options D 0x8
+GLIBC_2.38 read F
+GLIBC_2.38 readdir F
+GLIBC_2.38 readdir64 F
+GLIBC_2.38 readdir64_r F
+GLIBC_2.38 readdir_r F
+GLIBC_2.38 readlink F
+GLIBC_2.38 readlinkat F
+GLIBC_2.38 readv F
+GLIBC_2.38 realloc F
+GLIBC_2.38 reallocarray F
+GLIBC_2.38 realpath F
+GLIBC_2.38 reboot F
+GLIBC_2.38 recv F
+GLIBC_2.38 recvfrom F
+GLIBC_2.38 recvmmsg F
+GLIBC_2.38 recvmsg F
+GLIBC_2.38 regcomp F
+GLIBC_2.38 regerror F
+GLIBC_2.38 regexec F
+GLIBC_2.38 regfree F
+GLIBC_2.38 register_printf_function F
+GLIBC_2.38 register_printf_modifier F
+GLIBC_2.38 register_printf_specifier F
+GLIBC_2.38 register_printf_type F
+GLIBC_2.38 remap_file_pages F
+GLIBC_2.38 remove F
+GLIBC_2.38 removexattr F
+GLIBC_2.38 remque F
+GLIBC_2.38 rename F
+GLIBC_2.38 renameat F
+GLIBC_2.38 renameat2 F
+GLIBC_2.38 res_dnok F
+GLIBC_2.38 res_hnok F
+GLIBC_2.38 res_mailok F
+GLIBC_2.38 res_mkquery F
+GLIBC_2.38 res_nmkquery F
+GLIBC_2.38 res_nquery F
+GLIBC_2.38 res_nquerydomain F
+GLIBC_2.38 res_nsearch F
+GLIBC_2.38 res_nsend F
+GLIBC_2.38 res_ownok F
+GLIBC_2.38 res_query F
+GLIBC_2.38 res_querydomain F
+GLIBC_2.38 res_search F
+GLIBC_2.38 res_send F
+GLIBC_2.38 revoke F
+GLIBC_2.38 rewind F
+GLIBC_2.38 rewinddir F
+GLIBC_2.38 rexec F
+GLIBC_2.38 rexec_af F
+GLIBC_2.38 rexecoptions D 0x4
+GLIBC_2.38 rindex F
+GLIBC_2.38 rmdir F
+GLIBC_2.38 rpmatch F
+GLIBC_2.38 rresvport F
+GLIBC_2.38 rresvport_af F
+GLIBC_2.38 ruserok F
+GLIBC_2.38 ruserok_af F
+GLIBC_2.38 ruserpass F
+GLIBC_2.38 sbrk F
+GLIBC_2.38 scalbn F
+GLIBC_2.38 scalbnf F
+GLIBC_2.38 scalbnl F
+GLIBC_2.38 scandir F
+GLIBC_2.38 scandir64 F
+GLIBC_2.38 scandirat F
+GLIBC_2.38 scandirat64 F
+GLIBC_2.38 scanf F
+GLIBC_2.38 sched_get_priority_max F
+GLIBC_2.38 sched_get_priority_min F
+GLIBC_2.38 sched_getaffinity F
+GLIBC_2.38 sched_getparam F
+GLIBC_2.38 sched_getscheduler F
+GLIBC_2.38 sched_rr_get_interval F
+GLIBC_2.38 sched_setaffinity F
+GLIBC_2.38 sched_setparam F
+GLIBC_2.38 sched_setscheduler F
+GLIBC_2.38 sched_yield F
+GLIBC_2.38 secure_getenv F
+GLIBC_2.38 seed48 F
+GLIBC_2.38 seed48_r F
+GLIBC_2.38 seekdir F
+GLIBC_2.38 select F
+GLIBC_2.38 semctl F
+GLIBC_2.38 semget F
+GLIBC_2.38 semop F
+GLIBC_2.38 semtimedop F
+GLIBC_2.38 send F
+GLIBC_2.38 sendfile F
+GLIBC_2.38 sendfile64 F
+GLIBC_2.38 sendmmsg F
+GLIBC_2.38 sendmsg F
+GLIBC_2.38 sendto F
+GLIBC_2.38 setaliasent F
+GLIBC_2.38 setauth F
+GLIBC_2.38 setbuf F
+GLIBC_2.38 setbuffer F
+GLIBC_2.38 setcontext F
+GLIBC_2.38 setcrdir F
+GLIBC_2.38 setcttyid F
+GLIBC_2.38 setcwdir F
+GLIBC_2.38 setdomainname F
+GLIBC_2.38 setegid F
+GLIBC_2.38 setenv F
+GLIBC_2.38 seteuid F
+GLIBC_2.38 seteuids F
+GLIBC_2.38 setfsent F
+GLIBC_2.38 setgid F
+GLIBC_2.38 setgrent F
+GLIBC_2.38 setgroups F
+GLIBC_2.38 sethostent F
+GLIBC_2.38 sethostid F
+GLIBC_2.38 sethostname F
+GLIBC_2.38 setipv4sourcefilter F
+GLIBC_2.38 setitimer F
+GLIBC_2.38 setjmp F
+GLIBC_2.38 setlinebuf F
+GLIBC_2.38 setlocale F
+GLIBC_2.38 setlogin F
+GLIBC_2.38 setlogmask F
+GLIBC_2.38 setmntent F
+GLIBC_2.38 setnetent F
+GLIBC_2.38 setnetgrent F
+GLIBC_2.38 setpgid F
+GLIBC_2.38 setpgrp F
+GLIBC_2.38 setpriority F
+GLIBC_2.38 setproc F
+GLIBC_2.38 setprotoent F
+GLIBC_2.38 setpwent F
+GLIBC_2.38 setregid F
+GLIBC_2.38 setresgid F
+GLIBC_2.38 setresuid F
+GLIBC_2.38 setreuid F
+GLIBC_2.38 setrlimit F
+GLIBC_2.38 setrlimit64 F
+GLIBC_2.38 setrpcent F
+GLIBC_2.38 setservent F
+GLIBC_2.38 setsgent F
+GLIBC_2.38 setsid F
+GLIBC_2.38 setsockopt F
+GLIBC_2.38 setsourcefilter F
+GLIBC_2.38 setspent F
+GLIBC_2.38 setstate F
+GLIBC_2.38 setstate_r F
+GLIBC_2.38 settimeofday F
+GLIBC_2.38 setttyent F
+GLIBC_2.38 setuid F
+GLIBC_2.38 setusershell F
+GLIBC_2.38 setutent F
+GLIBC_2.38 setutxent F
+GLIBC_2.38 setvbuf F
+GLIBC_2.38 setxattr F
+GLIBC_2.38 sgetsgent F
+GLIBC_2.38 sgetsgent_r F
+GLIBC_2.38 sgetspent F
+GLIBC_2.38 sgetspent_r F
+GLIBC_2.38 shm_open F
+GLIBC_2.38 shm_unlink F
+GLIBC_2.38 shmat F
+GLIBC_2.38 shmctl F
+GLIBC_2.38 shmdt F
+GLIBC_2.38 shmget F
+GLIBC_2.38 shutdown F
+GLIBC_2.38 sigabbrev_np F
+GLIBC_2.38 sigaction F
+GLIBC_2.38 sigaddset F
+GLIBC_2.38 sigaltstack F
+GLIBC_2.38 sigandset F
+GLIBC_2.38 sigblock F
+GLIBC_2.38 sigdelset F
+GLIBC_2.38 sigdescr_np F
+GLIBC_2.38 sigemptyset F
+GLIBC_2.38 sigfillset F
+GLIBC_2.38 siggetmask F
+GLIBC_2.38 sighold F
+GLIBC_2.38 sigignore F
+GLIBC_2.38 siginterrupt F
+GLIBC_2.38 sigisemptyset F
+GLIBC_2.38 sigismember F
+GLIBC_2.38 siglongjmp F
+GLIBC_2.38 signal F
+GLIBC_2.38 sigorset F
+GLIBC_2.38 sigpause F
+GLIBC_2.38 sigpending F
+GLIBC_2.38 sigprocmask F
+GLIBC_2.38 sigqueue F
+GLIBC_2.38 sigrelse F
+GLIBC_2.38 sigreturn F
+GLIBC_2.38 sigset F
+GLIBC_2.38 sigsetmask F
+GLIBC_2.38 sigstack F
+GLIBC_2.38 sigsuspend F
+GLIBC_2.38 sigtimedwait F
+GLIBC_2.38 sigwait F
+GLIBC_2.38 sigwaitinfo F
+GLIBC_2.38 sleep F
+GLIBC_2.38 snprintf F
+GLIBC_2.38 sockatmark F
+GLIBC_2.38 socket F
+GLIBC_2.38 socketpair F
+GLIBC_2.38 sprintf F
+GLIBC_2.38 sprofil F
+GLIBC_2.38 srand F
+GLIBC_2.38 srand48 F
+GLIBC_2.38 srand48_r F
+GLIBC_2.38 srandom F
+GLIBC_2.38 srandom_r F
+GLIBC_2.38 sscanf F
+GLIBC_2.38 ssignal F
+GLIBC_2.38 stat F
+GLIBC_2.38 stat64 F
+GLIBC_2.38 statfs F
+GLIBC_2.38 statfs64 F
+GLIBC_2.38 statvfs F
+GLIBC_2.38 statvfs64 F
+GLIBC_2.38 statx F
+GLIBC_2.38 stderr D 0x8
+GLIBC_2.38 stdin D 0x8
+GLIBC_2.38 stdout D 0x8
+GLIBC_2.38 stpcpy F
+GLIBC_2.38 stpncpy F
+GLIBC_2.38 strcasecmp F
+GLIBC_2.38 strcasecmp_l F
+GLIBC_2.38 strcasestr F
+GLIBC_2.38 strcat F
+GLIBC_2.38 strchr F
+GLIBC_2.38 strchrnul F
+GLIBC_2.38 strcmp F
+GLIBC_2.38 strcoll F
+GLIBC_2.38 strcoll_l F
+GLIBC_2.38 strcpy F
+GLIBC_2.38 strcspn F
+GLIBC_2.38 strdup F
+GLIBC_2.38 strerror F
+GLIBC_2.38 strerror_l F
+GLIBC_2.38 strerror_r F
+GLIBC_2.38 strerrordesc_np F
+GLIBC_2.38 strerrorname_np F
+GLIBC_2.38 strfmon F
+GLIBC_2.38 strfmon_l F
+GLIBC_2.38 strfromd F
+GLIBC_2.38 strfromf F
+GLIBC_2.38 strfromf128 F
+GLIBC_2.38 strfromf32 F
+GLIBC_2.38 strfromf32x F
+GLIBC_2.38 strfromf64 F
+GLIBC_2.38 strfromf64x F
+GLIBC_2.38 strfroml F
+GLIBC_2.38 strfry F
+GLIBC_2.38 strftime F
+GLIBC_2.38 strftime_l F
+GLIBC_2.38 strlen F
+GLIBC_2.38 strncasecmp F
+GLIBC_2.38 strncasecmp_l F
+GLIBC_2.38 strncat F
+GLIBC_2.38 strncmp F
+GLIBC_2.38 strncpy F
+GLIBC_2.38 strndup F
+GLIBC_2.38 strnlen F
+GLIBC_2.38 strpbrk F
+GLIBC_2.38 strptime F
+GLIBC_2.38 strptime_l F
+GLIBC_2.38 strrchr F
+GLIBC_2.38 strsep F
+GLIBC_2.38 strsignal F
+GLIBC_2.38 strspn F
+GLIBC_2.38 strstr F
+GLIBC_2.38 strtod F
+GLIBC_2.38 strtod_l F
+GLIBC_2.38 strtof F
+GLIBC_2.38 strtof128 F
+GLIBC_2.38 strtof128_l F
+GLIBC_2.38 strtof32 F
+GLIBC_2.38 strtof32_l F
+GLIBC_2.38 strtof32x F
+GLIBC_2.38 strtof32x_l F
+GLIBC_2.38 strtof64 F
+GLIBC_2.38 strtof64_l F
+GLIBC_2.38 strtof64x F
+GLIBC_2.38 strtof64x_l F
+GLIBC_2.38 strtof_l F
+GLIBC_2.38 strtoimax F
+GLIBC_2.38 strtok F
+GLIBC_2.38 strtok_r F
+GLIBC_2.38 strtol F
+GLIBC_2.38 strtol_l F
+GLIBC_2.38 strtold F
+GLIBC_2.38 strtold_l F
+GLIBC_2.38 strtoll F
+GLIBC_2.38 strtoll_l F
+GLIBC_2.38 strtoq F
+GLIBC_2.38 strtoul F
+GLIBC_2.38 strtoul_l F
+GLIBC_2.38 strtoull F
+GLIBC_2.38 strtoull_l F
+GLIBC_2.38 strtoumax F
+GLIBC_2.38 strtouq F
+GLIBC_2.38 strverscmp F
+GLIBC_2.38 strxfrm F
+GLIBC_2.38 strxfrm_l F
+GLIBC_2.38 stty F
+GLIBC_2.38 swab F
+GLIBC_2.38 swapcontext F
+GLIBC_2.38 swprintf F
+GLIBC_2.38 swscanf F
+GLIBC_2.38 swtch F
+GLIBC_2.38 swtch_pri F
+GLIBC_2.38 symlink F
+GLIBC_2.38 symlinkat F
+GLIBC_2.38 sync F
+GLIBC_2.38 syncfs F
+GLIBC_2.38 syscall F
+GLIBC_2.38 sysconf F
+GLIBC_2.38 syslog F
+GLIBC_2.38 system F
+GLIBC_2.38 sysv_signal F
+GLIBC_2.38 task2pid F
+GLIBC_2.38 task_create F
+GLIBC_2.38 task_set_special_port F
+GLIBC_2.38 task_suspend F
+GLIBC_2.38 task_terminate F
+GLIBC_2.38 tcdrain F
+GLIBC_2.38 tcflow F
+GLIBC_2.38 tcflush F
+GLIBC_2.38 tcgetattr F
+GLIBC_2.38 tcgetpgrp F
+GLIBC_2.38 tcgetsid F
+GLIBC_2.38 tcsendbreak F
+GLIBC_2.38 tcsetattr F
+GLIBC_2.38 tcsetpgrp F
+GLIBC_2.38 tdelete F
+GLIBC_2.38 tdestroy F
+GLIBC_2.38 telldir F
+GLIBC_2.38 tempnam F
+GLIBC_2.38 textdomain F
+GLIBC_2.38 tfind F
+GLIBC_2.38 thrd_current F
+GLIBC_2.38 thrd_equal F
+GLIBC_2.38 thrd_sleep F
+GLIBC_2.38 thrd_yield F
+GLIBC_2.38 thread_depress_abort F
+GLIBC_2.38 thread_switch F
+GLIBC_2.38 time F
+GLIBC_2.38 timegm F
+GLIBC_2.38 timelocal F
+GLIBC_2.38 times F
+GLIBC_2.38 timespec_get F
+GLIBC_2.38 timespec_getres F
+GLIBC_2.38 timezone D 0x8
+GLIBC_2.38 tmpfile F
+GLIBC_2.38 tmpfile64 F
+GLIBC_2.38 tmpnam F
+GLIBC_2.38 tmpnam_r F
+GLIBC_2.38 toascii F
+GLIBC_2.38 tolower F
+GLIBC_2.38 tolower_l F
+GLIBC_2.38 toupper F
+GLIBC_2.38 toupper_l F
+GLIBC_2.38 towctrans F
+GLIBC_2.38 towctrans_l F
+GLIBC_2.38 towlower F
+GLIBC_2.38 towlower_l F
+GLIBC_2.38 towupper F
+GLIBC_2.38 towupper_l F
+GLIBC_2.38 truncate F
+GLIBC_2.38 truncate64 F
+GLIBC_2.38 tsearch F
+GLIBC_2.38 ttyname F
+GLIBC_2.38 ttyname_r F
+GLIBC_2.38 ttyslot F
+GLIBC_2.38 twalk F
+GLIBC_2.38 twalk_r F
+GLIBC_2.38 tzname D 0x10
+GLIBC_2.38 tzset F
+GLIBC_2.38 ualarm F
+GLIBC_2.38 ulckpwdf F
+GLIBC_2.38 ulimit F
+GLIBC_2.38 umask F
+GLIBC_2.38 uname F
+GLIBC_2.38 ungetc F
+GLIBC_2.38 ungetwc F
+GLIBC_2.38 unlink F
+GLIBC_2.38 unlinkat F
+GLIBC_2.38 unlockpt F
+GLIBC_2.38 unsetenv F
+GLIBC_2.38 updwtmp F
+GLIBC_2.38 updwtmpx F
+GLIBC_2.38 uselocale F
+GLIBC_2.38 usleep F
+GLIBC_2.38 utime F
+GLIBC_2.38 utimensat F
+GLIBC_2.38 utimes F
+GLIBC_2.38 utmpname F
+GLIBC_2.38 utmpxname F
+GLIBC_2.38 valloc F
+GLIBC_2.38 vasprintf F
+GLIBC_2.38 vdprintf F
+GLIBC_2.38 verr F
+GLIBC_2.38 verrx F
+GLIBC_2.38 versionsort F
+GLIBC_2.38 versionsort64 F
+GLIBC_2.38 vfork F
+GLIBC_2.38 vfprintf F
+GLIBC_2.38 vfscanf F
+GLIBC_2.38 vfwprintf F
+GLIBC_2.38 vfwscanf F
+GLIBC_2.38 vhangup F
+GLIBC_2.38 vlimit F
+GLIBC_2.38 vm_allocate F
+GLIBC_2.38 vm_deallocate F
+GLIBC_2.38 vm_map F
+GLIBC_2.38 vm_page_size D 0x8
+GLIBC_2.38 vpprintf F
+GLIBC_2.38 vprintf F
+GLIBC_2.38 vscanf F
+GLIBC_2.38 vsnprintf F
+GLIBC_2.38 vsprintf F
+GLIBC_2.38 vsscanf F
+GLIBC_2.38 vswprintf F
+GLIBC_2.38 vswscanf F
+GLIBC_2.38 vsyslog F
+GLIBC_2.38 vwarn F
+GLIBC_2.38 vwarnx F
+GLIBC_2.38 vwprintf F
+GLIBC_2.38 vwscanf F
+GLIBC_2.38 wait F
+GLIBC_2.38 wait3 F
+GLIBC_2.38 wait4 F
+GLIBC_2.38 waitid F
+GLIBC_2.38 waitpid F
+GLIBC_2.38 warn F
+GLIBC_2.38 warnx F
+GLIBC_2.38 wcpcpy F
+GLIBC_2.38 wcpncpy F
+GLIBC_2.38 wcrtomb F
+GLIBC_2.38 wcscasecmp F
+GLIBC_2.38 wcscasecmp_l F
+GLIBC_2.38 wcscat F
+GLIBC_2.38 wcschr F
+GLIBC_2.38 wcschrnul F
+GLIBC_2.38 wcscmp F
+GLIBC_2.38 wcscoll F
+GLIBC_2.38 wcscoll_l F
+GLIBC_2.38 wcscpy F
+GLIBC_2.38 wcscspn F
+GLIBC_2.38 wcsdup F
+GLIBC_2.38 wcsftime F
+GLIBC_2.38 wcsftime_l F
+GLIBC_2.38 wcslen F
+GLIBC_2.38 wcsncasecmp F
+GLIBC_2.38 wcsncasecmp_l F
+GLIBC_2.38 wcsncat F
+GLIBC_2.38 wcsncmp F
+GLIBC_2.38 wcsncpy F
+GLIBC_2.38 wcsnlen F
+GLIBC_2.38 wcsnrtombs F
+GLIBC_2.38 wcspbrk F
+GLIBC_2.38 wcsrchr F
+GLIBC_2.38 wcsrtombs F
+GLIBC_2.38 wcsspn F
+GLIBC_2.38 wcsstr F
+GLIBC_2.38 wcstod F
+GLIBC_2.38 wcstod_l F
+GLIBC_2.38 wcstof F
+GLIBC_2.38 wcstof128 F
+GLIBC_2.38 wcstof128_l F
+GLIBC_2.38 wcstof32 F
+GLIBC_2.38 wcstof32_l F
+GLIBC_2.38 wcstof32x F
+GLIBC_2.38 wcstof32x_l F
+GLIBC_2.38 wcstof64 F
+GLIBC_2.38 wcstof64_l F
+GLIBC_2.38 wcstof64x F
+GLIBC_2.38 wcstof64x_l F
+GLIBC_2.38 wcstof_l F
+GLIBC_2.38 wcstoimax F
+GLIBC_2.38 wcstok F
+GLIBC_2.38 wcstol F
+GLIBC_2.38 wcstol_l F
+GLIBC_2.38 wcstold F
+GLIBC_2.38 wcstold_l F
+GLIBC_2.38 wcstoll F
+GLIBC_2.38 wcstoll_l F
+GLIBC_2.38 wcstombs F
+GLIBC_2.38 wcstoq F
+GLIBC_2.38 wcstoul F
+GLIBC_2.38 wcstoul_l F
+GLIBC_2.38 wcstoull F
+GLIBC_2.38 wcstoull_l F
+GLIBC_2.38 wcstoumax F
+GLIBC_2.38 wcstouq F
+GLIBC_2.38 wcswcs F
+GLIBC_2.38 wcswidth F
+GLIBC_2.38 wcsxfrm F
+GLIBC_2.38 wcsxfrm_l F
+GLIBC_2.38 wctob F
+GLIBC_2.38 wctomb F
+GLIBC_2.38 wctrans F
+GLIBC_2.38 wctrans_l F
+GLIBC_2.38 wctype F
+GLIBC_2.38 wctype_l F
+GLIBC_2.38 wcwidth F
+GLIBC_2.38 wmemchr F
+GLIBC_2.38 wmemcmp F
+GLIBC_2.38 wmemcpy F
+GLIBC_2.38 wmemmove F
+GLIBC_2.38 wmempcpy F
+GLIBC_2.38 wmemset F
+GLIBC_2.38 wordexp F
+GLIBC_2.38 wordfree F
+GLIBC_2.38 wprintf F
+GLIBC_2.38 write F
+GLIBC_2.38 writev F
+GLIBC_2.38 wscanf F
+HURD_CTHREADS_0.3 __cthread_getspecific F
+HURD_CTHREADS_0.3 __cthread_keycreate F
+HURD_CTHREADS_0.3 __cthread_setspecific F
+HURD_CTHREADS_0.3 __mutex_init F
+HURD_CTHREADS_0.3 __mutex_lock F
+HURD_CTHREADS_0.3 __mutex_lock_solid F
+HURD_CTHREADS_0.3 __mutex_trylock F
+HURD_CTHREADS_0.3 __mutex_unlock F
+HURD_CTHREADS_0.3 __mutex_unlock_solid F
+HURD_CTHREADS_0.3 __spin_lock F
+HURD_CTHREADS_0.3 __spin_lock_init F
+HURD_CTHREADS_0.3 __spin_lock_solid F
+HURD_CTHREADS_0.3 __spin_try_lock F
+HURD_CTHREADS_0.3 __spin_unlock F
diff --git a/sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist b/sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist
new file mode 100644
index 00000000..012c48df
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist
@@ -0,0 +1,26 @@
+GLIBC_2.38 __free_hook D 0x8
+GLIBC_2.38 __malloc_hook D 0x8
+GLIBC_2.38 __memalign_hook D 0x8
+GLIBC_2.38 __realloc_hook D 0x8
+GLIBC_2.38 aligned_alloc F
+GLIBC_2.38 calloc F
+GLIBC_2.38 free F
+GLIBC_2.38 mallinfo F
+GLIBC_2.38 mallinfo2 F
+GLIBC_2.38 malloc F
+GLIBC_2.38 malloc_info F
+GLIBC_2.38 malloc_stats F
+GLIBC_2.38 malloc_trim F
+GLIBC_2.38 malloc_usable_size F
+GLIBC_2.38 mallopt F
+GLIBC_2.38 mcheck F
+GLIBC_2.38 mcheck_check_all F
+GLIBC_2.38 mcheck_pedantic F
+GLIBC_2.38 memalign F
+GLIBC_2.38 mprobe F
+GLIBC_2.38 mtrace F
+GLIBC_2.38 muntrace F
+GLIBC_2.38 posix_memalign F
+GLIBC_2.38 pvalloc F
+GLIBC_2.38 realloc F
+GLIBC_2.38 valloc F
diff --git a/sysdeps/mach/hurd/x86_64/libcrypt.abilist b/sysdeps/mach/hurd/x86_64/libcrypt.abilist
new file mode 100644
index 00000000..3ee068a0
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libcrypt.abilist
@@ -0,0 +1,2 @@
+GLIBC_2.38 crypt F
+GLIBC_2.38 crypt_r F
diff --git a/sysdeps/mach/hurd/x86_64/libdl.abilist b/sysdeps/mach/hurd/x86_64/libdl.abilist
new file mode 100644
index 00000000..e69de29b
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
new file mode 100644
index 00000000..5c762b93
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -0,0 +1,1040 @@
+GLIBC_2.38 __clog10 F
+GLIBC_2.38 __clog10f F
+GLIBC_2.38 __clog10l F
+GLIBC_2.38 __finite F
+GLIBC_2.38 __finitef F
+GLIBC_2.38 __finitef128 F
+GLIBC_2.38 __finitel F
+GLIBC_2.38 __fpclassify F
+GLIBC_2.38 __fpclassifyf F
+GLIBC_2.38 __fpclassifyf128 F
+GLIBC_2.38 __fpclassifyl F
+GLIBC_2.38 __iscanonicall F
+GLIBC_2.38 __iseqsig F
+GLIBC_2.38 __iseqsigf F
+GLIBC_2.38 __iseqsigf128 F
+GLIBC_2.38 __iseqsigl F
+GLIBC_2.38 __isinff128 F
+GLIBC_2.38 __issignaling F
+GLIBC_2.38 __issignalingf F
+GLIBC_2.38 __issignalingf128 F
+GLIBC_2.38 __issignalingl F
+GLIBC_2.38 __log10l_finite F
+GLIBC_2.38 __log2l_finite F
+GLIBC_2.38 __logl_finite F
+GLIBC_2.38 __signbit F
+GLIBC_2.38 __signbitf F
+GLIBC_2.38 __signbitf128 F
+GLIBC_2.38 __signbitl F
+GLIBC_2.38 __signgam D 0x4
+GLIBC_2.38 acos F
+GLIBC_2.38 acosf F
+GLIBC_2.38 acosf128 F
+GLIBC_2.38 acosf32 F
+GLIBC_2.38 acosf32x F
+GLIBC_2.38 acosf64 F
+GLIBC_2.38 acosf64x F
+GLIBC_2.38 acosh F
+GLIBC_2.38 acoshf F
+GLIBC_2.38 acoshf128 F
+GLIBC_2.38 acoshf32 F
+GLIBC_2.38 acoshf32x F
+GLIBC_2.38 acoshf64 F
+GLIBC_2.38 acoshf64x F
+GLIBC_2.38 acoshl F
+GLIBC_2.38 acosl F
+GLIBC_2.38 asin F
+GLIBC_2.38 asinf F
+GLIBC_2.38 asinf128 F
+GLIBC_2.38 asinf32 F
+GLIBC_2.38 asinf32x F
+GLIBC_2.38 asinf64 F
+GLIBC_2.38 asinf64x F
+GLIBC_2.38 asinh F
+GLIBC_2.38 asinhf F
+GLIBC_2.38 asinhf128 F
+GLIBC_2.38 asinhf32 F
+GLIBC_2.38 asinhf32x F
+GLIBC_2.38 asinhf64 F
+GLIBC_2.38 asinhf64x F
+GLIBC_2.38 asinhl F
+GLIBC_2.38 asinl F
+GLIBC_2.38 atan F
+GLIBC_2.38 atan2 F
+GLIBC_2.38 atan2f F
+GLIBC_2.38 atan2f128 F
+GLIBC_2.38 atan2f32 F
+GLIBC_2.38 atan2f32x F
+GLIBC_2.38 atan2f64 F
+GLIBC_2.38 atan2f64x F
+GLIBC_2.38 atan2l F
+GLIBC_2.38 atanf F
+GLIBC_2.38 atanf128 F
+GLIBC_2.38 atanf32 F
+GLIBC_2.38 atanf32x F
+GLIBC_2.38 atanf64 F
+GLIBC_2.38 atanf64x F
+GLIBC_2.38 atanh F
+GLIBC_2.38 atanhf F
+GLIBC_2.38 atanhf128 F
+GLIBC_2.38 atanhf32 F
+GLIBC_2.38 atanhf32x F
+GLIBC_2.38 atanhf64 F
+GLIBC_2.38 atanhf64x F
+GLIBC_2.38 atanhl F
+GLIBC_2.38 atanl F
+GLIBC_2.38 cabs F
+GLIBC_2.38 cabsf F
+GLIBC_2.38 cabsf128 F
+GLIBC_2.38 cabsf32 F
+GLIBC_2.38 cabsf32x F
+GLIBC_2.38 cabsf64 F
+GLIBC_2.38 cabsf64x F
+GLIBC_2.38 cabsl F
+GLIBC_2.38 cacos F
+GLIBC_2.38 cacosf F
+GLIBC_2.38 cacosf128 F
+GLIBC_2.38 cacosf32 F
+GLIBC_2.38 cacosf32x F
+GLIBC_2.38 cacosf64 F
+GLIBC_2.38 cacosf64x F
+GLIBC_2.38 cacosh F
+GLIBC_2.38 cacoshf F
+GLIBC_2.38 cacoshf128 F
+GLIBC_2.38 cacoshf32 F
+GLIBC_2.38 cacoshf32x F
+GLIBC_2.38 cacoshf64 F
+GLIBC_2.38 cacoshf64x F
+GLIBC_2.38 cacoshl F
+GLIBC_2.38 cacosl F
+GLIBC_2.38 canonicalize F
+GLIBC_2.38 canonicalizef F
+GLIBC_2.38 canonicalizef128 F
+GLIBC_2.38 canonicalizef32 F
+GLIBC_2.38 canonicalizef32x F
+GLIBC_2.38 canonicalizef64 F
+GLIBC_2.38 canonicalizef64x F
+GLIBC_2.38 canonicalizel F
+GLIBC_2.38 carg F
+GLIBC_2.38 cargf F
+GLIBC_2.38 cargf128 F
+GLIBC_2.38 cargf32 F
+GLIBC_2.38 cargf32x F
+GLIBC_2.38 cargf64 F
+GLIBC_2.38 cargf64x F
+GLIBC_2.38 cargl F
+GLIBC_2.38 casin F
+GLIBC_2.38 casinf F
+GLIBC_2.38 casinf128 F
+GLIBC_2.38 casinf32 F
+GLIBC_2.38 casinf32x F
+GLIBC_2.38 casinf64 F
+GLIBC_2.38 casinf64x F
+GLIBC_2.38 casinh F
+GLIBC_2.38 casinhf F
+GLIBC_2.38 casinhf128 F
+GLIBC_2.38 casinhf32 F
+GLIBC_2.38 casinhf32x F
+GLIBC_2.38 casinhf64 F
+GLIBC_2.38 casinhf64x F
+GLIBC_2.38 casinhl F
+GLIBC_2.38 casinl F
+GLIBC_2.38 catan F
+GLIBC_2.38 catanf F
+GLIBC_2.38 catanf128 F
+GLIBC_2.38 catanf32 F
+GLIBC_2.38 catanf32x F
+GLIBC_2.38 catanf64 F
+GLIBC_2.38 catanf64x F
+GLIBC_2.38 catanh F
+GLIBC_2.38 catanhf F
+GLIBC_2.38 catanhf128 F
+GLIBC_2.38 catanhf32 F
+GLIBC_2.38 catanhf32x F
+GLIBC_2.38 catanhf64 F
+GLIBC_2.38 catanhf64x F
+GLIBC_2.38 catanhl F
+GLIBC_2.38 catanl F
+GLIBC_2.38 cbrt F
+GLIBC_2.38 cbrtf F
+GLIBC_2.38 cbrtf128 F
+GLIBC_2.38 cbrtf32 F
+GLIBC_2.38 cbrtf32x F
+GLIBC_2.38 cbrtf64 F
+GLIBC_2.38 cbrtf64x F
+GLIBC_2.38 cbrtl F
+GLIBC_2.38 ccos F
+GLIBC_2.38 ccosf F
+GLIBC_2.38 ccosf128 F
+GLIBC_2.38 ccosf32 F
+GLIBC_2.38 ccosf32x F
+GLIBC_2.38 ccosf64 F
+GLIBC_2.38 ccosf64x F
+GLIBC_2.38 ccosh F
+GLIBC_2.38 ccoshf F
+GLIBC_2.38 ccoshf128 F
+GLIBC_2.38 ccoshf32 F
+GLIBC_2.38 ccoshf32x F
+GLIBC_2.38 ccoshf64 F
+GLIBC_2.38 ccoshf64x F
+GLIBC_2.38 ccoshl F
+GLIBC_2.38 ccosl F
+GLIBC_2.38 ceil F
+GLIBC_2.38 ceilf F
+GLIBC_2.38 ceilf128 F
+GLIBC_2.38 ceilf32 F
+GLIBC_2.38 ceilf32x F
+GLIBC_2.38 ceilf64 F
+GLIBC_2.38 ceilf64x F
+GLIBC_2.38 ceill F
+GLIBC_2.38 cexp F
+GLIBC_2.38 cexpf F
+GLIBC_2.38 cexpf128 F
+GLIBC_2.38 cexpf32 F
+GLIBC_2.38 cexpf32x F
+GLIBC_2.38 cexpf64 F
+GLIBC_2.38 cexpf64x F
+GLIBC_2.38 cexpl F
+GLIBC_2.38 cimag F
+GLIBC_2.38 cimagf F
+GLIBC_2.38 cimagf128 F
+GLIBC_2.38 cimagf32 F
+GLIBC_2.38 cimagf32x F
+GLIBC_2.38 cimagf64 F
+GLIBC_2.38 cimagf64x F
+GLIBC_2.38 cimagl F
+GLIBC_2.38 clog F
+GLIBC_2.38 clog10 F
+GLIBC_2.38 clog10f F
+GLIBC_2.38 clog10f128 F
+GLIBC_2.38 clog10f32 F
+GLIBC_2.38 clog10f32x F
+GLIBC_2.38 clog10f64 F
+GLIBC_2.38 clog10f64x F
+GLIBC_2.38 clog10l F
+GLIBC_2.38 clogf F
+GLIBC_2.38 clogf128 F
+GLIBC_2.38 clogf32 F
+GLIBC_2.38 clogf32x F
+GLIBC_2.38 clogf64 F
+GLIBC_2.38 clogf64x F
+GLIBC_2.38 clogl F
+GLIBC_2.38 conj F
+GLIBC_2.38 conjf F
+GLIBC_2.38 conjf128 F
+GLIBC_2.38 conjf32 F
+GLIBC_2.38 conjf32x F
+GLIBC_2.38 conjf64 F
+GLIBC_2.38 conjf64x F
+GLIBC_2.38 conjl F
+GLIBC_2.38 copysign F
+GLIBC_2.38 copysignf F
+GLIBC_2.38 copysignf128 F
+GLIBC_2.38 copysignf32 F
+GLIBC_2.38 copysignf32x F
+GLIBC_2.38 copysignf64 F
+GLIBC_2.38 copysignf64x F
+GLIBC_2.38 copysignl F
+GLIBC_2.38 cos F
+GLIBC_2.38 cosf F
+GLIBC_2.38 cosf128 F
+GLIBC_2.38 cosf32 F
+GLIBC_2.38 cosf32x F
+GLIBC_2.38 cosf64 F
+GLIBC_2.38 cosf64x F
+GLIBC_2.38 cosh F
+GLIBC_2.38 coshf F
+GLIBC_2.38 coshf128 F
+GLIBC_2.38 coshf32 F
+GLIBC_2.38 coshf32x F
+GLIBC_2.38 coshf64 F
+GLIBC_2.38 coshf64x F
+GLIBC_2.38 coshl F
+GLIBC_2.38 cosl F
+GLIBC_2.38 cpow F
+GLIBC_2.38 cpowf F
+GLIBC_2.38 cpowf128 F
+GLIBC_2.38 cpowf32 F
+GLIBC_2.38 cpowf32x F
+GLIBC_2.38 cpowf64 F
+GLIBC_2.38 cpowf64x F
+GLIBC_2.38 cpowl F
+GLIBC_2.38 cproj F
+GLIBC_2.38 cprojf F
+GLIBC_2.38 cprojf128 F
+GLIBC_2.38 cprojf32 F
+GLIBC_2.38 cprojf32x F
+GLIBC_2.38 cprojf64 F
+GLIBC_2.38 cprojf64x F
+GLIBC_2.38 cprojl F
+GLIBC_2.38 creal F
+GLIBC_2.38 crealf F
+GLIBC_2.38 crealf128 F
+GLIBC_2.38 crealf32 F
+GLIBC_2.38 crealf32x F
+GLIBC_2.38 crealf64 F
+GLIBC_2.38 crealf64x F
+GLIBC_2.38 creall F
+GLIBC_2.38 csin F
+GLIBC_2.38 csinf F
+GLIBC_2.38 csinf128 F
+GLIBC_2.38 csinf32 F
+GLIBC_2.38 csinf32x F
+GLIBC_2.38 csinf64 F
+GLIBC_2.38 csinf64x F
+GLIBC_2.38 csinh F
+GLIBC_2.38 csinhf F
+GLIBC_2.38 csinhf128 F
+GLIBC_2.38 csinhf32 F
+GLIBC_2.38 csinhf32x F
+GLIBC_2.38 csinhf64 F
+GLIBC_2.38 csinhf64x F
+GLIBC_2.38 csinhl F
+GLIBC_2.38 csinl F
+GLIBC_2.38 csqrt F
+GLIBC_2.38 csqrtf F
+GLIBC_2.38 csqrtf128 F
+GLIBC_2.38 csqrtf32 F
+GLIBC_2.38 csqrtf32x F
+GLIBC_2.38 csqrtf64 F
+GLIBC_2.38 csqrtf64x F
+GLIBC_2.38 csqrtl F
+GLIBC_2.38 ctan F
+GLIBC_2.38 ctanf F
+GLIBC_2.38 ctanf128 F
+GLIBC_2.38 ctanf32 F
+GLIBC_2.38 ctanf32x F
+GLIBC_2.38 ctanf64 F
+GLIBC_2.38 ctanf64x F
+GLIBC_2.38 ctanh F
+GLIBC_2.38 ctanhf F
+GLIBC_2.38 ctanhf128 F
+GLIBC_2.38 ctanhf32 F
+GLIBC_2.38 ctanhf32x F
+GLIBC_2.38 ctanhf64 F
+GLIBC_2.38 ctanhf64x F
+GLIBC_2.38 ctanhl F
+GLIBC_2.38 ctanl F
+GLIBC_2.38 daddl F
+GLIBC_2.38 ddivl F
+GLIBC_2.38 dfmal F
+GLIBC_2.38 dmull F
+GLIBC_2.38 drem F
+GLIBC_2.38 dremf F
+GLIBC_2.38 dreml F
+GLIBC_2.38 dsqrtl F
+GLIBC_2.38 dsubl F
+GLIBC_2.38 erf F
+GLIBC_2.38 erfc F
+GLIBC_2.38 erfcf F
+GLIBC_2.38 erfcf128 F
+GLIBC_2.38 erfcf32 F
+GLIBC_2.38 erfcf32x F
+GLIBC_2.38 erfcf64 F
+GLIBC_2.38 erfcf64x F
+GLIBC_2.38 erfcl F
+GLIBC_2.38 erff F
+GLIBC_2.38 erff128 F
+GLIBC_2.38 erff32 F
+GLIBC_2.38 erff32x F
+GLIBC_2.38 erff64 F
+GLIBC_2.38 erff64x F
+GLIBC_2.38 erfl F
+GLIBC_2.38 exp F
+GLIBC_2.38 exp10 F
+GLIBC_2.38 exp10f F
+GLIBC_2.38 exp10f128 F
+GLIBC_2.38 exp10f32 F
+GLIBC_2.38 exp10f32x F
+GLIBC_2.38 exp10f64 F
+GLIBC_2.38 exp10f64x F
+GLIBC_2.38 exp10l F
+GLIBC_2.38 exp2 F
+GLIBC_2.38 exp2f F
+GLIBC_2.38 exp2f128 F
+GLIBC_2.38 exp2f32 F
+GLIBC_2.38 exp2f32x F
+GLIBC_2.38 exp2f64 F
+GLIBC_2.38 exp2f64x F
+GLIBC_2.38 exp2l F
+GLIBC_2.38 expf F
+GLIBC_2.38 expf128 F
+GLIBC_2.38 expf32 F
+GLIBC_2.38 expf32x F
+GLIBC_2.38 expf64 F
+GLIBC_2.38 expf64x F
+GLIBC_2.38 expl F
+GLIBC_2.38 expm1 F
+GLIBC_2.38 expm1f F
+GLIBC_2.38 expm1f128 F
+GLIBC_2.38 expm1f32 F
+GLIBC_2.38 expm1f32x F
+GLIBC_2.38 expm1f64 F
+GLIBC_2.38 expm1f64x F
+GLIBC_2.38 expm1l F
+GLIBC_2.38 f32addf128 F
+GLIBC_2.38 f32addf32x F
+GLIBC_2.38 f32addf64 F
+GLIBC_2.38 f32addf64x F
+GLIBC_2.38 f32divf128 F
+GLIBC_2.38 f32divf32x F
+GLIBC_2.38 f32divf64 F
+GLIBC_2.38 f32divf64x F
+GLIBC_2.38 f32fmaf128 F
+GLIBC_2.38 f32fmaf32x F
+GLIBC_2.38 f32fmaf64 F
+GLIBC_2.38 f32fmaf64x F
+GLIBC_2.38 f32mulf128 F
+GLIBC_2.38 f32mulf32x F
+GLIBC_2.38 f32mulf64 F
+GLIBC_2.38 f32mulf64x F
+GLIBC_2.38 f32sqrtf128 F
+GLIBC_2.38 f32sqrtf32x F
+GLIBC_2.38 f32sqrtf64 F
+GLIBC_2.38 f32sqrtf64x F
+GLIBC_2.38 f32subf128 F
+GLIBC_2.38 f32subf32x F
+GLIBC_2.38 f32subf64 F
+GLIBC_2.38 f32subf64x F
+GLIBC_2.38 f32xaddf128 F
+GLIBC_2.38 f32xaddf64 F
+GLIBC_2.38 f32xaddf64x F
+GLIBC_2.38 f32xdivf128 F
+GLIBC_2.38 f32xdivf64 F
+GLIBC_2.38 f32xdivf64x F
+GLIBC_2.38 f32xfmaf128 F
+GLIBC_2.38 f32xfmaf64 F
+GLIBC_2.38 f32xfmaf64x F
+GLIBC_2.38 f32xmulf128 F
+GLIBC_2.38 f32xmulf64 F
+GLIBC_2.38 f32xmulf64x F
+GLIBC_2.38 f32xsqrtf128 F
+GLIBC_2.38 f32xsqrtf64 F
+GLIBC_2.38 f32xsqrtf64x F
+GLIBC_2.38 f32xsubf128 F
+GLIBC_2.38 f32xsubf64 F
+GLIBC_2.38 f32xsubf64x F
+GLIBC_2.38 f64addf128 F
+GLIBC_2.38 f64addf64x F
+GLIBC_2.38 f64divf128 F
+GLIBC_2.38 f64divf64x F
+GLIBC_2.38 f64fmaf128 F
+GLIBC_2.38 f64fmaf64x F
+GLIBC_2.38 f64mulf128 F
+GLIBC_2.38 f64mulf64x F
+GLIBC_2.38 f64sqrtf128 F
+GLIBC_2.38 f64sqrtf64x F
+GLIBC_2.38 f64subf128 F
+GLIBC_2.38 f64subf64x F
+GLIBC_2.38 f64xaddf128 F
+GLIBC_2.38 f64xdivf128 F
+GLIBC_2.38 f64xfmaf128 F
+GLIBC_2.38 f64xmulf128 F
+GLIBC_2.38 f64xsqrtf128 F
+GLIBC_2.38 f64xsubf128 F
+GLIBC_2.38 fabs F
+GLIBC_2.38 fabsf F
+GLIBC_2.38 fabsf128 F
+GLIBC_2.38 fabsf32 F
+GLIBC_2.38 fabsf32x F
+GLIBC_2.38 fabsf64 F
+GLIBC_2.38 fabsf64x F
+GLIBC_2.38 fabsl F
+GLIBC_2.38 fadd F
+GLIBC_2.38 faddl F
+GLIBC_2.38 fdim F
+GLIBC_2.38 fdimf F
+GLIBC_2.38 fdimf128 F
+GLIBC_2.38 fdimf32 F
+GLIBC_2.38 fdimf32x F
+GLIBC_2.38 fdimf64 F
+GLIBC_2.38 fdimf64x F
+GLIBC_2.38 fdiml F
+GLIBC_2.38 fdiv F
+GLIBC_2.38 fdivl F
+GLIBC_2.38 feclearexcept F
+GLIBC_2.38 fedisableexcept F
+GLIBC_2.38 feenableexcept F
+GLIBC_2.38 fegetenv F
+GLIBC_2.38 fegetexcept F
+GLIBC_2.38 fegetexceptflag F
+GLIBC_2.38 fegetmode F
+GLIBC_2.38 fegetround F
+GLIBC_2.38 feholdexcept F
+GLIBC_2.38 feraiseexcept F
+GLIBC_2.38 fesetenv F
+GLIBC_2.38 fesetexcept F
+GLIBC_2.38 fesetexceptflag F
+GLIBC_2.38 fesetmode F
+GLIBC_2.38 fesetround F
+GLIBC_2.38 fetestexcept F
+GLIBC_2.38 fetestexceptflag F
+GLIBC_2.38 feupdateenv F
+GLIBC_2.38 ffma F
+GLIBC_2.38 ffmal F
+GLIBC_2.38 finite F
+GLIBC_2.38 finitef F
+GLIBC_2.38 finitel F
+GLIBC_2.38 floor F
+GLIBC_2.38 floorf F
+GLIBC_2.38 floorf128 F
+GLIBC_2.38 floorf32 F
+GLIBC_2.38 floorf32x F
+GLIBC_2.38 floorf64 F
+GLIBC_2.38 floorf64x F
+GLIBC_2.38 floorl F
+GLIBC_2.38 fma F
+GLIBC_2.38 fmaf F
+GLIBC_2.38 fmaf128 F
+GLIBC_2.38 fmaf32 F
+GLIBC_2.38 fmaf32x F
+GLIBC_2.38 fmaf64 F
+GLIBC_2.38 fmaf64x F
+GLIBC_2.38 fmal F
+GLIBC_2.38 fmax F
+GLIBC_2.38 fmaxf F
+GLIBC_2.38 fmaxf128 F
+GLIBC_2.38 fmaxf32 F
+GLIBC_2.38 fmaxf32x F
+GLIBC_2.38 fmaxf64 F
+GLIBC_2.38 fmaxf64x F
+GLIBC_2.38 fmaximum F
+GLIBC_2.38 fmaximum_mag F
+GLIBC_2.38 fmaximum_mag_num F
+GLIBC_2.38 fmaximum_mag_numf F
+GLIBC_2.38 fmaximum_mag_numf128 F
+GLIBC_2.38 fmaximum_mag_numf32 F
+GLIBC_2.38 fmaximum_mag_numf32x F
+GLIBC_2.38 fmaximum_mag_numf64 F
+GLIBC_2.38 fmaximum_mag_numf64x F
+GLIBC_2.38 fmaximum_mag_numl F
+GLIBC_2.38 fmaximum_magf F
+GLIBC_2.38 fmaximum_magf128 F
+GLIBC_2.38 fmaximum_magf32 F
+GLIBC_2.38 fmaximum_magf32x F
+GLIBC_2.38 fmaximum_magf64 F
+GLIBC_2.38 fmaximum_magf64x F
+GLIBC_2.38 fmaximum_magl F
+GLIBC_2.38 fmaximum_num F
+GLIBC_2.38 fmaximum_numf F
+GLIBC_2.38 fmaximum_numf128 F
+GLIBC_2.38 fmaximum_numf32 F
+GLIBC_2.38 fmaximum_numf32x F
+GLIBC_2.38 fmaximum_numf64 F
+GLIBC_2.38 fmaximum_numf64x F
+GLIBC_2.38 fmaximum_numl F
+GLIBC_2.38 fmaximumf F
+GLIBC_2.38 fmaximumf128 F
+GLIBC_2.38 fmaximumf32 F
+GLIBC_2.38 fmaximumf32x F
+GLIBC_2.38 fmaximumf64 F
+GLIBC_2.38 fmaximumf64x F
+GLIBC_2.38 fmaximuml F
+GLIBC_2.38 fmaxl F
+GLIBC_2.38 fmaxmag F
+GLIBC_2.38 fmaxmagf F
+GLIBC_2.38 fmaxmagf128 F
+GLIBC_2.38 fmaxmagf32 F
+GLIBC_2.38 fmaxmagf32x F
+GLIBC_2.38 fmaxmagf64 F
+GLIBC_2.38 fmaxmagf64x F
+GLIBC_2.38 fmaxmagl F
+GLIBC_2.38 fmin F
+GLIBC_2.38 fminf F
+GLIBC_2.38 fminf128 F
+GLIBC_2.38 fminf32 F
+GLIBC_2.38 fminf32x F
+GLIBC_2.38 fminf64 F
+GLIBC_2.38 fminf64x F
+GLIBC_2.38 fminimum F
+GLIBC_2.38 fminimum_mag F
+GLIBC_2.38 fminimum_mag_num F
+GLIBC_2.38 fminimum_mag_numf F
+GLIBC_2.38 fminimum_mag_numf128 F
+GLIBC_2.38 fminimum_mag_numf32 F
+GLIBC_2.38 fminimum_mag_numf32x F
+GLIBC_2.38 fminimum_mag_numf64 F
+GLIBC_2.38 fminimum_mag_numf64x F
+GLIBC_2.38 fminimum_mag_numl F
+GLIBC_2.38 fminimum_magf F
+GLIBC_2.38 fminimum_magf128 F
+GLIBC_2.38 fminimum_magf32 F
+GLIBC_2.38 fminimum_magf32x F
+GLIBC_2.38 fminimum_magf64 F
+GLIBC_2.38 fminimum_magf64x F
+GLIBC_2.38 fminimum_magl F
+GLIBC_2.38 fminimum_num F
+GLIBC_2.38 fminimum_numf F
+GLIBC_2.38 fminimum_numf128 F
+GLIBC_2.38 fminimum_numf32 F
+GLIBC_2.38 fminimum_numf32x F
+GLIBC_2.38 fminimum_numf64 F
+GLIBC_2.38 fminimum_numf64x F
+GLIBC_2.38 fminimum_numl F
+GLIBC_2.38 fminimumf F
+GLIBC_2.38 fminimumf128 F
+GLIBC_2.38 fminimumf32 F
+GLIBC_2.38 fminimumf32x F
+GLIBC_2.38 fminimumf64 F
+GLIBC_2.38 fminimumf64x F
+GLIBC_2.38 fminimuml F
+GLIBC_2.38 fminl F
+GLIBC_2.38 fminmag F
+GLIBC_2.38 fminmagf F
+GLIBC_2.38 fminmagf128 F
+GLIBC_2.38 fminmagf32 F
+GLIBC_2.38 fminmagf32x F
+GLIBC_2.38 fminmagf64 F
+GLIBC_2.38 fminmagf64x F
+GLIBC_2.38 fminmagl F
+GLIBC_2.38 fmod F
+GLIBC_2.38 fmodf F
+GLIBC_2.38 fmodf128 F
+GLIBC_2.38 fmodf32 F
+GLIBC_2.38 fmodf32x F
+GLIBC_2.38 fmodf64 F
+GLIBC_2.38 fmodf64x F
+GLIBC_2.38 fmodl F
+GLIBC_2.38 fmul F
+GLIBC_2.38 fmull F
+GLIBC_2.38 frexp F
+GLIBC_2.38 frexpf F
+GLIBC_2.38 frexpf128 F
+GLIBC_2.38 frexpf32 F
+GLIBC_2.38 frexpf32x F
+GLIBC_2.38 frexpf64 F
+GLIBC_2.38 frexpf64x F
+GLIBC_2.38 frexpl F
+GLIBC_2.38 fromfp F
+GLIBC_2.38 fromfpf F
+GLIBC_2.38 fromfpf128 F
+GLIBC_2.38 fromfpf32 F
+GLIBC_2.38 fromfpf32x F
+GLIBC_2.38 fromfpf64 F
+GLIBC_2.38 fromfpf64x F
+GLIBC_2.38 fromfpl F
+GLIBC_2.38 fromfpx F
+GLIBC_2.38 fromfpxf F
+GLIBC_2.38 fromfpxf128 F
+GLIBC_2.38 fromfpxf32 F
+GLIBC_2.38 fromfpxf32x F
+GLIBC_2.38 fromfpxf64 F
+GLIBC_2.38 fromfpxf64x F
+GLIBC_2.38 fromfpxl F
+GLIBC_2.38 fsqrt F
+GLIBC_2.38 fsqrtl F
+GLIBC_2.38 fsub F
+GLIBC_2.38 fsubl F
+GLIBC_2.38 gamma F
+GLIBC_2.38 gammaf F
+GLIBC_2.38 gammal F
+GLIBC_2.38 getpayload F
+GLIBC_2.38 getpayloadf F
+GLIBC_2.38 getpayloadf128 F
+GLIBC_2.38 getpayloadf32 F
+GLIBC_2.38 getpayloadf32x F
+GLIBC_2.38 getpayloadf64 F
+GLIBC_2.38 getpayloadf64x F
+GLIBC_2.38 getpayloadl F
+GLIBC_2.38 hypot F
+GLIBC_2.38 hypotf F
+GLIBC_2.38 hypotf128 F
+GLIBC_2.38 hypotf32 F
+GLIBC_2.38 hypotf32x F
+GLIBC_2.38 hypotf64 F
+GLIBC_2.38 hypotf64x F
+GLIBC_2.38 hypotl F
+GLIBC_2.38 ilogb F
+GLIBC_2.38 ilogbf F
+GLIBC_2.38 ilogbf128 F
+GLIBC_2.38 ilogbf32 F
+GLIBC_2.38 ilogbf32x F
+GLIBC_2.38 ilogbf64 F
+GLIBC_2.38 ilogbf64x F
+GLIBC_2.38 ilogbl F
+GLIBC_2.38 j0 F
+GLIBC_2.38 j0f F
+GLIBC_2.38 j0f128 F
+GLIBC_2.38 j0f32 F
+GLIBC_2.38 j0f32x F
+GLIBC_2.38 j0f64 F
+GLIBC_2.38 j0f64x F
+GLIBC_2.38 j0l F
+GLIBC_2.38 j1 F
+GLIBC_2.38 j1f F
+GLIBC_2.38 j1f128 F
+GLIBC_2.38 j1f32 F
+GLIBC_2.38 j1f32x F
+GLIBC_2.38 j1f64 F
+GLIBC_2.38 j1f64x F
+GLIBC_2.38 j1l F
+GLIBC_2.38 jn F
+GLIBC_2.38 jnf F
+GLIBC_2.38 jnf128 F
+GLIBC_2.38 jnf32 F
+GLIBC_2.38 jnf32x F
+GLIBC_2.38 jnf64 F
+GLIBC_2.38 jnf64x F
+GLIBC_2.38 jnl F
+GLIBC_2.38 ldexp F
+GLIBC_2.38 ldexpf F
+GLIBC_2.38 ldexpf128 F
+GLIBC_2.38 ldexpf32 F
+GLIBC_2.38 ldexpf32x F
+GLIBC_2.38 ldexpf64 F
+GLIBC_2.38 ldexpf64x F
+GLIBC_2.38 ldexpl F
+GLIBC_2.38 lgamma F
+GLIBC_2.38 lgamma_r F
+GLIBC_2.38 lgammaf F
+GLIBC_2.38 lgammaf128 F
+GLIBC_2.38 lgammaf128_r F
+GLIBC_2.38 lgammaf32 F
+GLIBC_2.38 lgammaf32_r F
+GLIBC_2.38 lgammaf32x F
+GLIBC_2.38 lgammaf32x_r F
+GLIBC_2.38 lgammaf64 F
+GLIBC_2.38 lgammaf64_r F
+GLIBC_2.38 lgammaf64x F
+GLIBC_2.38 lgammaf64x_r F
+GLIBC_2.38 lgammaf_r F
+GLIBC_2.38 lgammal F
+GLIBC_2.38 lgammal_r F
+GLIBC_2.38 llogb F
+GLIBC_2.38 llogbf F
+GLIBC_2.38 llogbf128 F
+GLIBC_2.38 llogbf32 F
+GLIBC_2.38 llogbf32x F
+GLIBC_2.38 llogbf64 F
+GLIBC_2.38 llogbf64x F
+GLIBC_2.38 llogbl F
+GLIBC_2.38 llrint F
+GLIBC_2.38 llrintf F
+GLIBC_2.38 llrintf128 F
+GLIBC_2.38 llrintf32 F
+GLIBC_2.38 llrintf32x F
+GLIBC_2.38 llrintf64 F
+GLIBC_2.38 llrintf64x F
+GLIBC_2.38 llrintl F
+GLIBC_2.38 llround F
+GLIBC_2.38 llroundf F
+GLIBC_2.38 llroundf128 F
+GLIBC_2.38 llroundf32 F
+GLIBC_2.38 llroundf32x F
+GLIBC_2.38 llroundf64 F
+GLIBC_2.38 llroundf64x F
+GLIBC_2.38 llroundl F
+GLIBC_2.38 log F
+GLIBC_2.38 log10 F
+GLIBC_2.38 log10f F
+GLIBC_2.38 log10f128 F
+GLIBC_2.38 log10f32 F
+GLIBC_2.38 log10f32x F
+GLIBC_2.38 log10f64 F
+GLIBC_2.38 log10f64x F
+GLIBC_2.38 log10l F
+GLIBC_2.38 log1p F
+GLIBC_2.38 log1pf F
+GLIBC_2.38 log1pf128 F
+GLIBC_2.38 log1pf32 F
+GLIBC_2.38 log1pf32x F
+GLIBC_2.38 log1pf64 F
+GLIBC_2.38 log1pf64x F
+GLIBC_2.38 log1pl F
+GLIBC_2.38 log2 F
+GLIBC_2.38 log2f F
+GLIBC_2.38 log2f128 F
+GLIBC_2.38 log2f32 F
+GLIBC_2.38 log2f32x F
+GLIBC_2.38 log2f64 F
+GLIBC_2.38 log2f64x F
+GLIBC_2.38 log2l F
+GLIBC_2.38 logb F
+GLIBC_2.38 logbf F
+GLIBC_2.38 logbf128 F
+GLIBC_2.38 logbf32 F
+GLIBC_2.38 logbf32x F
+GLIBC_2.38 logbf64 F
+GLIBC_2.38 logbf64x F
+GLIBC_2.38 logbl F
+GLIBC_2.38 logf F
+GLIBC_2.38 logf128 F
+GLIBC_2.38 logf32 F
+GLIBC_2.38 logf32x F
+GLIBC_2.38 logf64 F
+GLIBC_2.38 logf64x F
+GLIBC_2.38 logl F
+GLIBC_2.38 lrint F
+GLIBC_2.38 lrintf F
+GLIBC_2.38 lrintf128 F
+GLIBC_2.38 lrintf32 F
+GLIBC_2.38 lrintf32x F
+GLIBC_2.38 lrintf64 F
+GLIBC_2.38 lrintf64x F
+GLIBC_2.38 lrintl F
+GLIBC_2.38 lround F
+GLIBC_2.38 lroundf F
+GLIBC_2.38 lroundf128 F
+GLIBC_2.38 lroundf32 F
+GLIBC_2.38 lroundf32x F
+GLIBC_2.38 lroundf64 F
+GLIBC_2.38 lroundf64x F
+GLIBC_2.38 lroundl F
+GLIBC_2.38 modf F
+GLIBC_2.38 modff F
+GLIBC_2.38 modff128 F
+GLIBC_2.38 modff32 F
+GLIBC_2.38 modff32x F
+GLIBC_2.38 modff64 F
+GLIBC_2.38 modff64x F
+GLIBC_2.38 modfl F
+GLIBC_2.38 nan F
+GLIBC_2.38 nanf F
+GLIBC_2.38 nanf128 F
+GLIBC_2.38 nanf32 F
+GLIBC_2.38 nanf32x F
+GLIBC_2.38 nanf64 F
+GLIBC_2.38 nanf64x F
+GLIBC_2.38 nanl F
+GLIBC_2.38 nearbyint F
+GLIBC_2.38 nearbyintf F
+GLIBC_2.38 nearbyintf128 F
+GLIBC_2.38 nearbyintf32 F
+GLIBC_2.38 nearbyintf32x F
+GLIBC_2.38 nearbyintf64 F
+GLIBC_2.38 nearbyintf64x F
+GLIBC_2.38 nearbyintl F
+GLIBC_2.38 nextafter F
+GLIBC_2.38 nextafterf F
+GLIBC_2.38 nextafterf128 F
+GLIBC_2.38 nextafterf32 F
+GLIBC_2.38 nextafterf32x F
+GLIBC_2.38 nextafterf64 F
+GLIBC_2.38 nextafterf64x F
+GLIBC_2.38 nextafterl F
+GLIBC_2.38 nextdown F
+GLIBC_2.38 nextdownf F
+GLIBC_2.38 nextdownf128 F
+GLIBC_2.38 nextdownf32 F
+GLIBC_2.38 nextdownf32x F
+GLIBC_2.38 nextdownf64 F
+GLIBC_2.38 nextdownf64x F
+GLIBC_2.38 nextdownl F
+GLIBC_2.38 nexttoward F
+GLIBC_2.38 nexttowardf F
+GLIBC_2.38 nexttowardl F
+GLIBC_2.38 nextup F
+GLIBC_2.38 nextupf F
+GLIBC_2.38 nextupf128 F
+GLIBC_2.38 nextupf32 F
+GLIBC_2.38 nextupf32x F
+GLIBC_2.38 nextupf64 F
+GLIBC_2.38 nextupf64x F
+GLIBC_2.38 nextupl F
+GLIBC_2.38 pow F
+GLIBC_2.38 powf F
+GLIBC_2.38 powf128 F
+GLIBC_2.38 powf32 F
+GLIBC_2.38 powf32x F
+GLIBC_2.38 powf64 F
+GLIBC_2.38 powf64x F
+GLIBC_2.38 powl F
+GLIBC_2.38 remainder F
+GLIBC_2.38 remainderf F
+GLIBC_2.38 remainderf128 F
+GLIBC_2.38 remainderf32 F
+GLIBC_2.38 remainderf32x F
+GLIBC_2.38 remainderf64 F
+GLIBC_2.38 remainderf64x F
+GLIBC_2.38 remainderl F
+GLIBC_2.38 remquo F
+GLIBC_2.38 remquof F
+GLIBC_2.38 remquof128 F
+GLIBC_2.38 remquof32 F
+GLIBC_2.38 remquof32x F
+GLIBC_2.38 remquof64 F
+GLIBC_2.38 remquof64x F
+GLIBC_2.38 remquol F
+GLIBC_2.38 rint F
+GLIBC_2.38 rintf F
+GLIBC_2.38 rintf128 F
+GLIBC_2.38 rintf32 F
+GLIBC_2.38 rintf32x F
+GLIBC_2.38 rintf64 F
+GLIBC_2.38 rintf64x F
+GLIBC_2.38 rintl F
+GLIBC_2.38 round F
+GLIBC_2.38 roundeven F
+GLIBC_2.38 roundevenf F
+GLIBC_2.38 roundevenf128 F
+GLIBC_2.38 roundevenf32 F
+GLIBC_2.38 roundevenf32x F
+GLIBC_2.38 roundevenf64 F
+GLIBC_2.38 roundevenf64x F
+GLIBC_2.38 roundevenl F
+GLIBC_2.38 roundf F
+GLIBC_2.38 roundf128 F
+GLIBC_2.38 roundf32 F
+GLIBC_2.38 roundf32x F
+GLIBC_2.38 roundf64 F
+GLIBC_2.38 roundf64x F
+GLIBC_2.38 roundl F
+GLIBC_2.38 scalb F
+GLIBC_2.38 scalbf F
+GLIBC_2.38 scalbl F
+GLIBC_2.38 scalbln F
+GLIBC_2.38 scalblnf F
+GLIBC_2.38 scalblnf128 F
+GLIBC_2.38 scalblnf32 F
+GLIBC_2.38 scalblnf32x F
+GLIBC_2.38 scalblnf64 F
+GLIBC_2.38 scalblnf64x F
+GLIBC_2.38 scalblnl F
+GLIBC_2.38 scalbn F
+GLIBC_2.38 scalbnf F
+GLIBC_2.38 scalbnf128 F
+GLIBC_2.38 scalbnf32 F
+GLIBC_2.38 scalbnf32x F
+GLIBC_2.38 scalbnf64 F
+GLIBC_2.38 scalbnf64x F
+GLIBC_2.38 scalbnl F
+GLIBC_2.38 setpayload F
+GLIBC_2.38 setpayloadf F
+GLIBC_2.38 setpayloadf128 F
+GLIBC_2.38 setpayloadf32 F
+GLIBC_2.38 setpayloadf32x F
+GLIBC_2.38 setpayloadf64 F
+GLIBC_2.38 setpayloadf64x F
+GLIBC_2.38 setpayloadl F
+GLIBC_2.38 setpayloadsig F
+GLIBC_2.38 setpayloadsigf F
+GLIBC_2.38 setpayloadsigf128 F
+GLIBC_2.38 setpayloadsigf32 F
+GLIBC_2.38 setpayloadsigf32x F
+GLIBC_2.38 setpayloadsigf64 F
+GLIBC_2.38 setpayloadsigf64x F
+GLIBC_2.38 setpayloadsigl F
+GLIBC_2.38 signgam D 0x4
+GLIBC_2.38 significand F
+GLIBC_2.38 significandf F
+GLIBC_2.38 significandl F
+GLIBC_2.38 sin F
+GLIBC_2.38 sincos F
+GLIBC_2.38 sincosf F
+GLIBC_2.38 sincosf128 F
+GLIBC_2.38 sincosf32 F
+GLIBC_2.38 sincosf32x F
+GLIBC_2.38 sincosf64 F
+GLIBC_2.38 sincosf64x F
+GLIBC_2.38 sincosl F
+GLIBC_2.38 sinf F
+GLIBC_2.38 sinf128 F
+GLIBC_2.38 sinf32 F
+GLIBC_2.38 sinf32x F
+GLIBC_2.38 sinf64 F
+GLIBC_2.38 sinf64x F
+GLIBC_2.38 sinh F
+GLIBC_2.38 sinhf F
+GLIBC_2.38 sinhf128 F
+GLIBC_2.38 sinhf32 F
+GLIBC_2.38 sinhf32x F
+GLIBC_2.38 sinhf64 F
+GLIBC_2.38 sinhf64x F
+GLIBC_2.38 sinhl F
+GLIBC_2.38 sinl F
+GLIBC_2.38 sqrt F
+GLIBC_2.38 sqrtf F
+GLIBC_2.38 sqrtf128 F
+GLIBC_2.38 sqrtf32 F
+GLIBC_2.38 sqrtf32x F
+GLIBC_2.38 sqrtf64 F
+GLIBC_2.38 sqrtf64x F
+GLIBC_2.38 sqrtl F
+GLIBC_2.38 tan F
+GLIBC_2.38 tanf F
+GLIBC_2.38 tanf128 F
+GLIBC_2.38 tanf32 F
+GLIBC_2.38 tanf32x F
+GLIBC_2.38 tanf64 F
+GLIBC_2.38 tanf64x F
+GLIBC_2.38 tanh F
+GLIBC_2.38 tanhf F
+GLIBC_2.38 tanhf128 F
+GLIBC_2.38 tanhf32 F
+GLIBC_2.38 tanhf32x F
+GLIBC_2.38 tanhf64 F
+GLIBC_2.38 tanhf64x F
+GLIBC_2.38 tanhl F
+GLIBC_2.38 tanl F
+GLIBC_2.38 tgamma F
+GLIBC_2.38 tgammaf F
+GLIBC_2.38 tgammaf128 F
+GLIBC_2.38 tgammaf32 F
+GLIBC_2.38 tgammaf32x F
+GLIBC_2.38 tgammaf64 F
+GLIBC_2.38 tgammaf64x F
+GLIBC_2.38 tgammal F
+GLIBC_2.38 totalorder F
+GLIBC_2.38 totalorderf F
+GLIBC_2.38 totalorderf128 F
+GLIBC_2.38 totalorderf32 F
+GLIBC_2.38 totalorderf32x F
+GLIBC_2.38 totalorderf64 F
+GLIBC_2.38 totalorderf64x F
+GLIBC_2.38 totalorderl F
+GLIBC_2.38 totalordermag F
+GLIBC_2.38 totalordermagf F
+GLIBC_2.38 totalordermagf128 F
+GLIBC_2.38 totalordermagf32 F
+GLIBC_2.38 totalordermagf32x F
+GLIBC_2.38 totalordermagf64 F
+GLIBC_2.38 totalordermagf64x F
+GLIBC_2.38 totalordermagl F
+GLIBC_2.38 trunc F
+GLIBC_2.38 truncf F
+GLIBC_2.38 truncf128 F
+GLIBC_2.38 truncf32 F
+GLIBC_2.38 truncf32x F
+GLIBC_2.38 truncf64 F
+GLIBC_2.38 truncf64x F
+GLIBC_2.38 truncl F
+GLIBC_2.38 ufromfp F
+GLIBC_2.38 ufromfpf F
+GLIBC_2.38 ufromfpf128 F
+GLIBC_2.38 ufromfpf32 F
+GLIBC_2.38 ufromfpf32x F
+GLIBC_2.38 ufromfpf64 F
+GLIBC_2.38 ufromfpf64x F
+GLIBC_2.38 ufromfpl F
+GLIBC_2.38 ufromfpx F
+GLIBC_2.38 ufromfpxf F
+GLIBC_2.38 ufromfpxf128 F
+GLIBC_2.38 ufromfpxf32 F
+GLIBC_2.38 ufromfpxf32x F
+GLIBC_2.38 ufromfpxf64 F
+GLIBC_2.38 ufromfpxf64x F
+GLIBC_2.38 ufromfpxl F
+GLIBC_2.38 y0 F
+GLIBC_2.38 y0f F
+GLIBC_2.38 y0f128 F
+GLIBC_2.38 y0f32 F
+GLIBC_2.38 y0f32x F
+GLIBC_2.38 y0f64 F
+GLIBC_2.38 y0f64x F
+GLIBC_2.38 y0l F
+GLIBC_2.38 y1 F
+GLIBC_2.38 y1f F
+GLIBC_2.38 y1f128 F
+GLIBC_2.38 y1f32 F
+GLIBC_2.38 y1f32x F
+GLIBC_2.38 y1f64 F
+GLIBC_2.38 y1f64x F
+GLIBC_2.38 y1l F
+GLIBC_2.38 yn F
+GLIBC_2.38 ynf F
+GLIBC_2.38 ynf128 F
+GLIBC_2.38 ynf32 F
+GLIBC_2.38 ynf32x F
+GLIBC_2.38 ynf64 F
+GLIBC_2.38 ynf64x F
+GLIBC_2.38 ynl F
diff --git a/sysdeps/mach/hurd/x86_64/libmvec.abilist b/sysdeps/mach/hurd/x86_64/libmvec.abilist
new file mode 100644
index 00000000..9ecdf5c9
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libmvec.abilist
@@ -0,0 +1,216 @@
+GLIBC_2.38 _ZGVbN2v_acos F
+GLIBC_2.38 _ZGVbN2v_acosh F
+GLIBC_2.38 _ZGVbN2v_asin F
+GLIBC_2.38 _ZGVbN2v_asinh F
+GLIBC_2.38 _ZGVbN2v_atan F
+GLIBC_2.38 _ZGVbN2v_atanh F
+GLIBC_2.38 _ZGVbN2v_cbrt F
+GLIBC_2.38 _ZGVbN2v_cos F
+GLIBC_2.38 _ZGVbN2v_cosh F
+GLIBC_2.38 _ZGVbN2v_erf F
+GLIBC_2.38 _ZGVbN2v_erfc F
+GLIBC_2.38 _ZGVbN2v_exp F
+GLIBC_2.38 _ZGVbN2v_exp10 F
+GLIBC_2.38 _ZGVbN2v_exp2 F
+GLIBC_2.38 _ZGVbN2v_expm1 F
+GLIBC_2.38 _ZGVbN2v_log F
+GLIBC_2.38 _ZGVbN2v_log10 F
+GLIBC_2.38 _ZGVbN2v_log1p F
+GLIBC_2.38 _ZGVbN2v_log2 F
+GLIBC_2.38 _ZGVbN2v_sin F
+GLIBC_2.38 _ZGVbN2v_sinh F
+GLIBC_2.38 _ZGVbN2v_tan F
+GLIBC_2.38 _ZGVbN2v_tanh F
+GLIBC_2.38 _ZGVbN2vv_atan2 F
+GLIBC_2.38 _ZGVbN2vv_hypot F
+GLIBC_2.38 _ZGVbN2vv_pow F
+GLIBC_2.38 _ZGVbN2vvv_sincos F
+GLIBC_2.38 _ZGVbN4v_acosf F
+GLIBC_2.38 _ZGVbN4v_acoshf F
+GLIBC_2.38 _ZGVbN4v_asinf F
+GLIBC_2.38 _ZGVbN4v_asinhf F
+GLIBC_2.38 _ZGVbN4v_atanf F
+GLIBC_2.38 _ZGVbN4v_atanhf F
+GLIBC_2.38 _ZGVbN4v_cbrtf F
+GLIBC_2.38 _ZGVbN4v_cosf F
+GLIBC_2.38 _ZGVbN4v_coshf F
+GLIBC_2.38 _ZGVbN4v_erfcf F
+GLIBC_2.38 _ZGVbN4v_erff F
+GLIBC_2.38 _ZGVbN4v_exp10f F
+GLIBC_2.38 _ZGVbN4v_exp2f F
+GLIBC_2.38 _ZGVbN4v_expf F
+GLIBC_2.38 _ZGVbN4v_expm1f F
+GLIBC_2.38 _ZGVbN4v_log10f F
+GLIBC_2.38 _ZGVbN4v_log1pf F
+GLIBC_2.38 _ZGVbN4v_log2f F
+GLIBC_2.38 _ZGVbN4v_logf F
+GLIBC_2.38 _ZGVbN4v_sinf F
+GLIBC_2.38 _ZGVbN4v_sinhf F
+GLIBC_2.38 _ZGVbN4v_tanf F
+GLIBC_2.38 _ZGVbN4v_tanhf F
+GLIBC_2.38 _ZGVbN4vv_atan2f F
+GLIBC_2.38 _ZGVbN4vv_hypotf F
+GLIBC_2.38 _ZGVbN4vv_powf F
+GLIBC_2.38 _ZGVbN4vvv_sincosf F
+GLIBC_2.38 _ZGVcN4v_acos F
+GLIBC_2.38 _ZGVcN4v_acosh F
+GLIBC_2.38 _ZGVcN4v_asin F
+GLIBC_2.38 _ZGVcN4v_asinh F
+GLIBC_2.38 _ZGVcN4v_atan F
+GLIBC_2.38 _ZGVcN4v_atanh F
+GLIBC_2.38 _ZGVcN4v_cbrt F
+GLIBC_2.38 _ZGVcN4v_cos F
+GLIBC_2.38 _ZGVcN4v_cosh F
+GLIBC_2.38 _ZGVcN4v_erf F
+GLIBC_2.38 _ZGVcN4v_erfc F
+GLIBC_2.38 _ZGVcN4v_exp F
+GLIBC_2.38 _ZGVcN4v_exp10 F
+GLIBC_2.38 _ZGVcN4v_exp2 F
+GLIBC_2.38 _ZGVcN4v_expm1 F
+GLIBC_2.38 _ZGVcN4v_log F
+GLIBC_2.38 _ZGVcN4v_log10 F
+GLIBC_2.38 _ZGVcN4v_log1p F
+GLIBC_2.38 _ZGVcN4v_log2 F
+GLIBC_2.38 _ZGVcN4v_sin F
+GLIBC_2.38 _ZGVcN4v_sinh F
+GLIBC_2.38 _ZGVcN4v_tan F
+GLIBC_2.38 _ZGVcN4v_tanh F
+GLIBC_2.38 _ZGVcN4vv_atan2 F
+GLIBC_2.38 _ZGVcN4vv_hypot F
+GLIBC_2.38 _ZGVcN4vv_pow F
+GLIBC_2.38 _ZGVcN4vvv_sincos F
+GLIBC_2.38 _ZGVcN8v_acosf F
+GLIBC_2.38 _ZGVcN8v_acoshf F
+GLIBC_2.38 _ZGVcN8v_asinf F
+GLIBC_2.38 _ZGVcN8v_asinhf F
+GLIBC_2.38 _ZGVcN8v_atanf F
+GLIBC_2.38 _ZGVcN8v_atanhf F
+GLIBC_2.38 _ZGVcN8v_cbrtf F
+GLIBC_2.38 _ZGVcN8v_cosf F
+GLIBC_2.38 _ZGVcN8v_coshf F
+GLIBC_2.38 _ZGVcN8v_erfcf F
+GLIBC_2.38 _ZGVcN8v_erff F
+GLIBC_2.38 _ZGVcN8v_exp10f F
+GLIBC_2.38 _ZGVcN8v_exp2f F
+GLIBC_2.38 _ZGVcN8v_expf F
+GLIBC_2.38 _ZGVcN8v_expm1f F
+GLIBC_2.38 _ZGVcN8v_log10f F
+GLIBC_2.38 _ZGVcN8v_log1pf F
+GLIBC_2.38 _ZGVcN8v_log2f F
+GLIBC_2.38 _ZGVcN8v_logf F
+GLIBC_2.38 _ZGVcN8v_sinf F
+GLIBC_2.38 _ZGVcN8v_sinhf F
+GLIBC_2.38 _ZGVcN8v_tanf F
+GLIBC_2.38 _ZGVcN8v_tanhf F
+GLIBC_2.38 _ZGVcN8vv_atan2f F
+GLIBC_2.38 _ZGVcN8vv_hypotf F
+GLIBC_2.38 _ZGVcN8vv_powf F
+GLIBC_2.38 _ZGVcN8vvv_sincosf F
+GLIBC_2.38 _ZGVdN4v_acos F
+GLIBC_2.38 _ZGVdN4v_acosh F
+GLIBC_2.38 _ZGVdN4v_asin F
+GLIBC_2.38 _ZGVdN4v_asinh F
+GLIBC_2.38 _ZGVdN4v_atan F
+GLIBC_2.38 _ZGVdN4v_atanh F
+GLIBC_2.38 _ZGVdN4v_cbrt F
+GLIBC_2.38 _ZGVdN4v_cos F
+GLIBC_2.38 _ZGVdN4v_cosh F
+GLIBC_2.38 _ZGVdN4v_erf F
+GLIBC_2.38 _ZGVdN4v_erfc F
+GLIBC_2.38 _ZGVdN4v_exp F
+GLIBC_2.38 _ZGVdN4v_exp10 F
+GLIBC_2.38 _ZGVdN4v_exp2 F
+GLIBC_2.38 _ZGVdN4v_expm1 F
+GLIBC_2.38 _ZGVdN4v_log F
+GLIBC_2.38 _ZGVdN4v_log10 F
+GLIBC_2.38 _ZGVdN4v_log1p F
+GLIBC_2.38 _ZGVdN4v_log2 F
+GLIBC_2.38 _ZGVdN4v_sin F
+GLIBC_2.38 _ZGVdN4v_sinh F
+GLIBC_2.38 _ZGVdN4v_tan F
+GLIBC_2.38 _ZGVdN4v_tanh F
+GLIBC_2.38 _ZGVdN4vv_atan2 F
+GLIBC_2.38 _ZGVdN4vv_hypot F
+GLIBC_2.38 _ZGVdN4vv_pow F
+GLIBC_2.38 _ZGVdN4vvv_sincos F
+GLIBC_2.38 _ZGVdN8v_acosf F
+GLIBC_2.38 _ZGVdN8v_acoshf F
+GLIBC_2.38 _ZGVdN8v_asinf F
+GLIBC_2.38 _ZGVdN8v_asinhf F
+GLIBC_2.38 _ZGVdN8v_atanf F
+GLIBC_2.38 _ZGVdN8v_atanhf F
+GLIBC_2.38 _ZGVdN8v_cbrtf F
+GLIBC_2.38 _ZGVdN8v_cosf F
+GLIBC_2.38 _ZGVdN8v_coshf F
+GLIBC_2.38 _ZGVdN8v_erfcf F
+GLIBC_2.38 _ZGVdN8v_erff F
+GLIBC_2.38 _ZGVdN8v_exp10f F
+GLIBC_2.38 _ZGVdN8v_exp2f F
+GLIBC_2.38 _ZGVdN8v_expf F
+GLIBC_2.38 _ZGVdN8v_expm1f F
+GLIBC_2.38 _ZGVdN8v_log10f F
+GLIBC_2.38 _ZGVdN8v_log1pf F
+GLIBC_2.38 _ZGVdN8v_log2f F
+GLIBC_2.38 _ZGVdN8v_logf F
+GLIBC_2.38 _ZGVdN8v_sinf F
+GLIBC_2.38 _ZGVdN8v_sinhf F
+GLIBC_2.38 _ZGVdN8v_tanf F
+GLIBC_2.38 _ZGVdN8v_tanhf F
+GLIBC_2.38 _ZGVdN8vv_atan2f F
+GLIBC_2.38 _ZGVdN8vv_hypotf F
+GLIBC_2.38 _ZGVdN8vv_powf F
+GLIBC_2.38 _ZGVdN8vvv_sincosf F
+GLIBC_2.38 _ZGVeN16v_acosf F
+GLIBC_2.38 _ZGVeN16v_acoshf F
+GLIBC_2.38 _ZGVeN16v_asinf F
+GLIBC_2.38 _ZGVeN16v_asinhf F
+GLIBC_2.38 _ZGVeN16v_atanf F
+GLIBC_2.38 _ZGVeN16v_atanhf F
+GLIBC_2.38 _ZGVeN16v_cbrtf F
+GLIBC_2.38 _ZGVeN16v_cosf F
+GLIBC_2.38 _ZGVeN16v_coshf F
+GLIBC_2.38 _ZGVeN16v_erfcf F
+GLIBC_2.38 _ZGVeN16v_erff F
+GLIBC_2.38 _ZGVeN16v_exp10f F
+GLIBC_2.38 _ZGVeN16v_exp2f F
+GLIBC_2.38 _ZGVeN16v_expf F
+GLIBC_2.38 _ZGVeN16v_expm1f F
+GLIBC_2.38 _ZGVeN16v_log10f F
+GLIBC_2.38 _ZGVeN16v_log1pf F
+GLIBC_2.38 _ZGVeN16v_log2f F
+GLIBC_2.38 _ZGVeN16v_logf F
+GLIBC_2.38 _ZGVeN16v_sinf F
+GLIBC_2.38 _ZGVeN16v_sinhf F
+GLIBC_2.38 _ZGVeN16v_tanf F
+GLIBC_2.38 _ZGVeN16v_tanhf F
+GLIBC_2.38 _ZGVeN16vv_atan2f F
+GLIBC_2.38 _ZGVeN16vv_hypotf F
+GLIBC_2.38 _ZGVeN16vv_powf F
+GLIBC_2.38 _ZGVeN16vvv_sincosf F
+GLIBC_2.38 _ZGVeN8v_acos F
+GLIBC_2.38 _ZGVeN8v_acosh F
+GLIBC_2.38 _ZGVeN8v_asin F
+GLIBC_2.38 _ZGVeN8v_asinh F
+GLIBC_2.38 _ZGVeN8v_atan F
+GLIBC_2.38 _ZGVeN8v_atanh F
+GLIBC_2.38 _ZGVeN8v_cbrt F
+GLIBC_2.38 _ZGVeN8v_cos F
+GLIBC_2.38 _ZGVeN8v_cosh F
+GLIBC_2.38 _ZGVeN8v_erf F
+GLIBC_2.38 _ZGVeN8v_erfc F
+GLIBC_2.38 _ZGVeN8v_exp F
+GLIBC_2.38 _ZGVeN8v_exp10 F
+GLIBC_2.38 _ZGVeN8v_exp2 F
+GLIBC_2.38 _ZGVeN8v_expm1 F
+GLIBC_2.38 _ZGVeN8v_log F
+GLIBC_2.38 _ZGVeN8v_log10 F
+GLIBC_2.38 _ZGVeN8v_log1p F
+GLIBC_2.38 _ZGVeN8v_log2 F
+GLIBC_2.38 _ZGVeN8v_sin F
+GLIBC_2.38 _ZGVeN8v_sinh F
+GLIBC_2.38 _ZGVeN8v_tan F
+GLIBC_2.38 _ZGVeN8v_tanh F
+GLIBC_2.38 _ZGVeN8vv_atan2 F
+GLIBC_2.38 _ZGVeN8vv_hypot F
+GLIBC_2.38 _ZGVeN8vv_pow F
+GLIBC_2.38 _ZGVeN8vvv_sincos F
diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist
new file mode 100644
index 00000000..d8785b4c
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist
@@ -0,0 +1,175 @@
+GLIBC_2.38 _IO_flockfile F
+GLIBC_2.38 _IO_ftrylockfile F
+GLIBC_2.38 _IO_funlockfile F
+GLIBC_2.38 __errno_location F
+GLIBC_2.38 __h_errno_location F
+GLIBC_2.38 __mutex_lock_solid F
+GLIBC_2.38 __mutex_unlock_solid F
+GLIBC_2.38 __pthread_get_cleanup_stack F
+GLIBC_2.38 __pthread_key_create F
+GLIBC_2.38 __pthread_kill F
+GLIBC_2.38 __pthread_mutex_transfer_np F
+GLIBC_2.38 __pthread_spin_destroy F
+GLIBC_2.38 __pthread_spin_init F
+GLIBC_2.38 __pthread_spin_lock F
+GLIBC_2.38 __pthread_spin_trylock F
+GLIBC_2.38 __pthread_spin_unlock F
+GLIBC_2.38 _cthreads_flockfile F
+GLIBC_2.38 _cthreads_ftrylockfile F
+GLIBC_2.38 _cthreads_funlockfile F
+GLIBC_2.38 _pthread_spin_lock F
+GLIBC_2.38 call_once F
+GLIBC_2.38 cnd_broadcast F
+GLIBC_2.38 cnd_destroy F
+GLIBC_2.38 cnd_init F
+GLIBC_2.38 cnd_signal F
+GLIBC_2.38 cnd_timedwait F
+GLIBC_2.38 cnd_wait F
+GLIBC_2.38 cthread_detach F
+GLIBC_2.38 cthread_fork F
+GLIBC_2.38 cthread_getspecific F
+GLIBC_2.38 cthread_keycreate F
+GLIBC_2.38 cthread_setspecific F
+GLIBC_2.38 flockfile F
+GLIBC_2.38 ftrylockfile F
+GLIBC_2.38 funlockfile F
+GLIBC_2.38 mtx_destroy F
+GLIBC_2.38 mtx_init F
+GLIBC_2.38 mtx_lock F
+GLIBC_2.38 mtx_timedlock F
+GLIBC_2.38 mtx_trylock F
+GLIBC_2.38 mtx_unlock F
+GLIBC_2.38 pthread_attr_destroy F
+GLIBC_2.38 pthread_attr_getdetachstate F
+GLIBC_2.38 pthread_attr_getguardsize F
+GLIBC_2.38 pthread_attr_getinheritsched F
+GLIBC_2.38 pthread_attr_getschedparam F
+GLIBC_2.38 pthread_attr_getschedpolicy F
+GLIBC_2.38 pthread_attr_getscope F
+GLIBC_2.38 pthread_attr_getstack F
+GLIBC_2.38 pthread_attr_getstackaddr F
+GLIBC_2.38 pthread_attr_getstacksize F
+GLIBC_2.38 pthread_attr_init F
+GLIBC_2.38 pthread_attr_setdetachstate F
+GLIBC_2.38 pthread_attr_setguardsize F
+GLIBC_2.38 pthread_attr_setinheritsched F
+GLIBC_2.38 pthread_attr_setschedparam F
+GLIBC_2.38 pthread_attr_setschedpolicy F
+GLIBC_2.38 pthread_attr_setscope F
+GLIBC_2.38 pthread_attr_setstack F
+GLIBC_2.38 pthread_attr_setstackaddr F
+GLIBC_2.38 pthread_attr_setstacksize F
+GLIBC_2.38 pthread_barrier_destroy F
+GLIBC_2.38 pthread_barrier_init F
+GLIBC_2.38 pthread_barrier_wait F
+GLIBC_2.38 pthread_barrierattr_destroy F
+GLIBC_2.38 pthread_barrierattr_getpshared F
+GLIBC_2.38 pthread_barrierattr_init F
+GLIBC_2.38 pthread_barrierattr_setpshared F
+GLIBC_2.38 pthread_cancel F
+GLIBC_2.38 pthread_clockjoin_np F
+GLIBC_2.38 pthread_cond_broadcast F
+GLIBC_2.38 pthread_cond_clockwait F
+GLIBC_2.38 pthread_cond_destroy F
+GLIBC_2.38 pthread_cond_init F
+GLIBC_2.38 pthread_cond_signal F
+GLIBC_2.38 pthread_cond_timedwait F
+GLIBC_2.38 pthread_cond_wait F
+GLIBC_2.38 pthread_condattr_destroy F
+GLIBC_2.38 pthread_condattr_getclock F
+GLIBC_2.38 pthread_condattr_getpshared F
+GLIBC_2.38 pthread_condattr_init F
+GLIBC_2.38 pthread_condattr_setclock F
+GLIBC_2.38 pthread_condattr_setpshared F
+GLIBC_2.38 pthread_create F
+GLIBC_2.38 pthread_detach F
+GLIBC_2.38 pthread_equal F
+GLIBC_2.38 pthread_exit F
+GLIBC_2.38 pthread_getattr_np F
+GLIBC_2.38 pthread_getconcurrency F
+GLIBC_2.38 pthread_getcpuclockid F
+GLIBC_2.38 pthread_getschedparam F
+GLIBC_2.38 pthread_getspecific F
+GLIBC_2.38 pthread_hurd_cond_timedwait_np F
+GLIBC_2.38 pthread_hurd_cond_wait_np F
+GLIBC_2.38 pthread_join F
+GLIBC_2.38 pthread_key_create F
+GLIBC_2.38 pthread_key_delete F
+GLIBC_2.38 pthread_kill F
+GLIBC_2.38 pthread_mutex_clocklock F
+GLIBC_2.38 pthread_mutex_consistent F
+GLIBC_2.38 pthread_mutex_consistent_np F
+GLIBC_2.38 pthread_mutex_destroy F
+GLIBC_2.38 pthread_mutex_getprioceiling F
+GLIBC_2.38 pthread_mutex_init F
+GLIBC_2.38 pthread_mutex_lock F
+GLIBC_2.38 pthread_mutex_setprioceiling F
+GLIBC_2.38 pthread_mutex_timedlock F
+GLIBC_2.38 pthread_mutex_transfer_np F
+GLIBC_2.38 pthread_mutex_trylock F
+GLIBC_2.38 pthread_mutex_unlock F
+GLIBC_2.38 pthread_mutexattr_destroy F
+GLIBC_2.38 pthread_mutexattr_getprioceiling F
+GLIBC_2.38 pthread_mutexattr_getprotocol F
+GLIBC_2.38 pthread_mutexattr_getpshared F
+GLIBC_2.38 pthread_mutexattr_getrobust F
+GLIBC_2.38 pthread_mutexattr_getrobust_np F
+GLIBC_2.38 pthread_mutexattr_gettype F
+GLIBC_2.38 pthread_mutexattr_init F
+GLIBC_2.38 pthread_mutexattr_setprioceiling F
+GLIBC_2.38 pthread_mutexattr_setprotocol F
+GLIBC_2.38 pthread_mutexattr_setpshared F
+GLIBC_2.38 pthread_mutexattr_setrobust F
+GLIBC_2.38 pthread_mutexattr_setrobust_np F
+GLIBC_2.38 pthread_mutexattr_settype F
+GLIBC_2.38 pthread_once F
+GLIBC_2.38 pthread_rwlock_clockrdlock F
+GLIBC_2.38 pthread_rwlock_clockwrlock F
+GLIBC_2.38 pthread_rwlock_destroy F
+GLIBC_2.38 pthread_rwlock_init F
+GLIBC_2.38 pthread_rwlock_rdlock F
+GLIBC_2.38 pthread_rwlock_timedrdlock F
+GLIBC_2.38 pthread_rwlock_timedwrlock F
+GLIBC_2.38 pthread_rwlock_tryrdlock F
+GLIBC_2.38 pthread_rwlock_trywrlock F
+GLIBC_2.38 pthread_rwlock_unlock F
+GLIBC_2.38 pthread_rwlock_wrlock F
+GLIBC_2.38 pthread_rwlockattr_destroy F
+GLIBC_2.38 pthread_rwlockattr_getpshared F
+GLIBC_2.38 pthread_rwlockattr_init F
+GLIBC_2.38 pthread_rwlockattr_setpshared F
+GLIBC_2.38 pthread_setcancelstate F
+GLIBC_2.38 pthread_setcanceltype F
+GLIBC_2.38 pthread_setconcurrency F
+GLIBC_2.38 pthread_setschedparam F
+GLIBC_2.38 pthread_setschedprio F
+GLIBC_2.38 pthread_setspecific F
+GLIBC_2.38 pthread_sigmask F
+GLIBC_2.38 pthread_spin_destroy F
+GLIBC_2.38 pthread_spin_init F
+GLIBC_2.38 pthread_spin_lock F
+GLIBC_2.38 pthread_spin_trylock F
+GLIBC_2.38 pthread_spin_unlock F
+GLIBC_2.38 pthread_testcancel F
+GLIBC_2.38 pthread_timedjoin_np F
+GLIBC_2.38 pthread_tryjoin_np F
+GLIBC_2.38 pthread_yield F
+GLIBC_2.38 sem_clockwait F
+GLIBC_2.38 sem_close F
+GLIBC_2.38 sem_destroy F
+GLIBC_2.38 sem_getvalue F
+GLIBC_2.38 sem_init F
+GLIBC_2.38 sem_open F
+GLIBC_2.38 sem_post F
+GLIBC_2.38 sem_timedwait F
+GLIBC_2.38 sem_trywait F
+GLIBC_2.38 sem_unlink F
+GLIBC_2.38 sem_wait F
+GLIBC_2.38 thrd_create F
+GLIBC_2.38 thrd_detach F
+GLIBC_2.38 thrd_exit F
+GLIBC_2.38 thrd_join F
+GLIBC_2.38 tss_create F
+GLIBC_2.38 tss_delete F
+GLIBC_2.38 tss_get F
+GLIBC_2.38 tss_set F
diff --git a/sysdeps/mach/hurd/x86_64/libresolv.abilist b/sysdeps/mach/hurd/x86_64/libresolv.abilist
new file mode 100644
index 00000000..c3dd560d
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/libresolv.abilist
@@ -0,0 +1,55 @@
+GLIBC_2.38 __b64_ntop F
+GLIBC_2.38 __b64_pton F
+GLIBC_2.38 __dn_count_labels F
+GLIBC_2.38 __fp_nquery F
+GLIBC_2.38 __fp_query F
+GLIBC_2.38 __fp_resstat F
+GLIBC_2.38 __hostalias F
+GLIBC_2.38 __loc_aton F
+GLIBC_2.38 __loc_ntoa F
+GLIBC_2.38 __p_cdname F
+GLIBC_2.38 __p_cdnname F
+GLIBC_2.38 __p_class F
+GLIBC_2.38 __p_class_syms D 0xa8
+GLIBC_2.38 __p_fqname F
+GLIBC_2.38 __p_fqnname F
+GLIBC_2.38 __p_option F
+GLIBC_2.38 __p_query F
+GLIBC_2.38 __p_rcode F
+GLIBC_2.38 __p_time F
+GLIBC_2.38 __p_type F
+GLIBC_2.38 __p_type_syms D 0x450
+GLIBC_2.38 __putlong F
+GLIBC_2.38 __putshort F
+GLIBC_2.38 __res_close F
+GLIBC_2.38 __res_hostalias F
+GLIBC_2.38 __res_isourserver F
+GLIBC_2.38 __res_nameinquery F
+GLIBC_2.38 __res_queriesmatch F
+GLIBC_2.38 __sym_ntop F
+GLIBC_2.38 __sym_ntos F
+GLIBC_2.38 __sym_ston F
+GLIBC_2.38 _getlong F
+GLIBC_2.38 _getshort F
+GLIBC_2.38 inet_net_ntop F
+GLIBC_2.38 inet_net_pton F
+GLIBC_2.38 inet_neta F
+GLIBC_2.38 ns_datetosecs F
+GLIBC_2.38 ns_format_ttl F
+GLIBC_2.38 ns_get16 F
+GLIBC_2.38 ns_get32 F
+GLIBC_2.38 ns_initparse F
+GLIBC_2.38 ns_makecanon F
+GLIBC_2.38 ns_msg_getflag F
+GLIBC_2.38 ns_name_ntol F
+GLIBC_2.38 ns_name_rollback F
+GLIBC_2.38 ns_parse_ttl F
+GLIBC_2.38 ns_parserr F
+GLIBC_2.38 ns_put16 F
+GLIBC_2.38 ns_put32 F
+GLIBC_2.38 ns_samedomain F
+GLIBC_2.38 ns_samename F
+GLIBC_2.38 ns_skiprr F
+GLIBC_2.38 ns_sprintrr F
+GLIBC_2.38 ns_sprintrrf F
+GLIBC_2.38 ns_subdomain F
diff --git a/sysdeps/mach/hurd/x86_64/librt.abilist b/sysdeps/mach/hurd/x86_64/librt.abilist
new file mode 100644
index 00000000..fa148abb
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/librt.abilist
@@ -0,0 +1,33 @@
+GLIBC_2.38 __mq_open_2 F
+GLIBC_2.38 aio_cancel F
+GLIBC_2.38 aio_cancel64 F
+GLIBC_2.38 aio_error F
+GLIBC_2.38 aio_error64 F
+GLIBC_2.38 aio_fsync F
+GLIBC_2.38 aio_fsync64 F
+GLIBC_2.38 aio_init F
+GLIBC_2.38 aio_read F
+GLIBC_2.38 aio_read64 F
+GLIBC_2.38 aio_return F
+GLIBC_2.38 aio_return64 F
+GLIBC_2.38 aio_suspend F
+GLIBC_2.38 aio_suspend64 F
+GLIBC_2.38 aio_write F
+GLIBC_2.38 aio_write64 F
+GLIBC_2.38 lio_listio F
+GLIBC_2.38 lio_listio64 F
+GLIBC_2.38 mq_close F
+GLIBC_2.38 mq_getattr F
+GLIBC_2.38 mq_notify F
+GLIBC_2.38 mq_open F
+GLIBC_2.38 mq_receive F
+GLIBC_2.38 mq_send F
+GLIBC_2.38 mq_setattr F
+GLIBC_2.38 mq_timedreceive F
+GLIBC_2.38 mq_timedsend F
+GLIBC_2.38 mq_unlink F
+GLIBC_2.38 timer_create F
+GLIBC_2.38 timer_delete F
+GLIBC_2.38 timer_getoverrun F
+GLIBC_2.38 timer_gettime F
+GLIBC_2.38 timer_settime F
diff --git a/sysdeps/mach/hurd/x86_64/shlib-versions b/sysdeps/mach/hurd/x86_64/shlib-versions
new file mode 100644
index 00000000..fddbc1e3
--- /dev/null
+++ b/sysdeps/mach/hurd/x86_64/shlib-versions
@@ -0,0 +1 @@
+DEFAULT			GLIBC_2.38
-- 
2.40.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [RFC PATCH v3 5/6] hurd: Make it possible to call memcpy very early
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
                   ` (3 preceding siblings ...)
  2023-04-29 20:18 ` [PATCH v3 4/6] hurd: Add expected abilist files for x86_64 Sergey Bugaev
@ 2023-04-29 20:18 ` Sergey Bugaev
  2023-04-30 23:21   ` Samuel Thibault
  2023-04-29 20:18 ` [DO NOT PUSH PATCH v3 6/6] TMP hurd: Lower BRK_START Sergey Bugaev
  2023-05-02 14:03 ` [PATCH v3 0/6] The remaining x86_64-gnu patches Joseph Myers
  6 siblings, 1 reply; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

Normally, in static builds, the first code that runs is _start, in e.g.
sysdeps/x86_64/start.S, which quickly calls __libc_start_main, passing
it the argv etc. Among the first things __libc_start_main does is
initializing the tunables (based on env), then CPU features, and then
calls _dl_relocate_static_pie (). Specifically, this runs ifunc
resolvers to pick, based on the CPU features discovered earlier, the
most suitable implementation of "string" functions such as memcpy.

Before that point, calling memcpy (or other ifunc-resolved functions)
will not work.

In the Hurd port, things are more complex. In order to get argv/env for
our process, glibc normally needs to do an RPC to the exec server,
unless our args/env are already located on the stack (which is what
happens to bootstrap processes spawned by GNU Mach). Fetching our
argv/env from the exec server has to be done before the call to
__libc_start_main, since we need to know what our argv/env are to pass
them to __libc_start_main.

On the other hand, the implementation of the RPC (and other initial
setup needed on the Hurd before __libc_start_main can be run) is not
very trivial. In particular, it may (and on x86_64, will) use memcpy.
But as described above, calling memcpy before __libc_start_main can not
work, since the GOT entry for it is not yet initialized at that point.

Work around this by pre-filling the GOT entry with the baseline version
of memcpy, __memcpy_sse2_unaligned. This makes it possible for early
calls to memcpy to just work. The initial value of the GOT entry is
unused on x86_64, and changing it won't interfere with the relocation
being performed later: once _dl_relocate_static_pie () is called, the
baseline version will get replaced with the most suitable one, and that
is what subsequent calls of memcpy are going to call.

Checked on x86_64-gnu.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
Changes since v1:
- drop the stpncpy, since it's apparently not required during early
  startup;
- as a result of the above, there are no longer any changes to the
  i386 version;
- drop the PIC/non-PIC split, we can always use %rip-relative addressing
  on x86_64;
- as mentioned somewhere in the v1 thread, I have, since posting the v1,
  actually gone and checked that the relocations do work and the proper,
  more effecient memcpy version does get installed into the GOT slot and
  invoked whenever anything calls memcpy;
- convinced myself that this is not a terrible hack but rather an OK
  solution;
- worked out how this would be done on an architecture that (like i386,
  unlike x86_64) does need the original value in the GOT to perform the
  relocation, but (unlike i386, like x86_64) still uses an ifunc-selected
  memcpy in static builds: namely, we'd simply put the original ifunc
  address back into the GOT slot a few lines below, after the call to
  _hurd_stack_setup.

 sysdeps/mach/hurd/x86_64/static-start.S | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sysdeps/mach/hurd/x86_64/static-start.S b/sysdeps/mach/hurd/x86_64/static-start.S
index 982d3d52..cc8e2410 100644
--- a/sysdeps/mach/hurd/x86_64/static-start.S
+++ b/sysdeps/mach/hurd/x86_64/static-start.S
@@ -19,6 +19,9 @@
 	.text
 	.globl _start
 _start:
+
+	leaq __memcpy_sse2_unaligned(%rip), %rax
+	movq %rax, memcpy@GOTPCREL(%rip)
 	call _hurd_stack_setup
 	xorq %rdx, %rdx
 	jmp _start1
-- 
2.40.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [DO NOT PUSH PATCH v3 6/6] TMP hurd: Lower BRK_START
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
                   ` (4 preceding siblings ...)
  2023-04-29 20:18 ` [RFC PATCH v3 5/6] hurd: Make it possible to call memcpy very early Sergey Bugaev
@ 2023-04-29 20:18 ` Sergey Bugaev
  2023-05-02 14:03 ` [PATCH v3 0/6] The remaining x86_64-gnu patches Joseph Myers
  6 siblings, 0 replies; 20+ messages in thread
From: Sergey Bugaev @ 2023-04-29 20:18 UTC (permalink / raw)
  To: libc-alpha; +Cc: bug-hurd, Samuel Thibault

...until gnumach learns to support higher addresses
---
This is not meant to be pushed, but you're going to need this patch
to run glibc on the current builds of gnumach.

 sysdeps/mach/hurd/x86_64/vm_param.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sysdeps/mach/hurd/x86_64/vm_param.h b/sysdeps/mach/hurd/x86_64/vm_param.h
index f269afb3..e35596bd 100644
--- a/sysdeps/mach/hurd/x86_64/vm_param.h
+++ b/sysdeps/mach/hurd/x86_64/vm_param.h
@@ -19,6 +19,7 @@
 #define _X86_64_VM_PARAM_H
 
 /* Arbitrary start of the brk. This is after usual binary and library mappings.  */
-#define BRK_START	0x200000000000
+// #define BRK_START	0x200000000000
+#define BRK_START	0x20000000
 
 #endif /* x86_64/vm_param.h */
-- 
2.40.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 1/6] hurd: Implement sigreturn for x86_64
  2023-04-29 20:18 ` [PATCH v3 1/6] hurd: Implement sigreturn for x86_64 Sergey Bugaev
@ 2023-04-30 23:06   ` Samuel Thibault
  0 siblings, 0 replies; 20+ messages in thread
From: Samuel Thibault @ 2023-04-30 23:06 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd

Applied, thanks!

Sergey Bugaev, le sam. 29 avril 2023 23:18:17 +0300, a ecrit:
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
> This incorporates back the fix made to the i386 version: we do need to call
> _hurd_self_sigstate () once after all.
> 
>  sysdeps/mach/hurd/x86_64/sigreturn.c | 162 +++++++++++++++++++++++++++
>  1 file changed, 162 insertions(+)
>  create mode 100644 sysdeps/mach/hurd/x86_64/sigreturn.c
> 
> diff --git a/sysdeps/mach/hurd/x86_64/sigreturn.c b/sysdeps/mach/hurd/x86_64/sigreturn.c
> new file mode 100644
> index 00000000..82247e3c
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/sigreturn.c
> @@ -0,0 +1,162 @@
> +/* Copyright (C) 1991-2023 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <hurd.h>
> +#include <hurd/signal.h>
> +#include <hurd/msg.h>
> +#include <stdlib.h>
> +
> +/* This is run on the thread stack after restoring it, to be able to
> +   unlock SS off sigstack.  */
> +void
> +__sigreturn2 (struct hurd_sigstate *ss, uintptr_t *usp,
> +              struct sigcontext *scp)
> +{
> +  mach_port_t reply_port;
> +  _hurd_sigstate_unlock (ss);
> +
> +  /* Destroy the MiG reply port used by the signal handler, and restore the
> +     reply port in use by the thread when interrupted.
> +
> +     We cannot use the original reply port for our RPCs that we do here, since
> +     we could unexpectedly receive/consume a reply message meant for the user
> +     (in particular, msg_sig_post_reply), and also since we would deallocate
> +     the port if *our* RPC fails, which we don't want to do since the user
> +     still has the old name.  And so, temporarily set MACH_PORT_DEAD as our
> +     reply name, and make sure destroying the port is the very last RPC we
> +     do.  */
> +  reply_port = THREAD_GETMEM (THREAD_SELF, reply_port);
> +  THREAD_SETMEM (THREAD_SELF, reply_port, MACH_PORT_DEAD);
> +  if (__glibc_likely (MACH_PORT_VALID (reply_port)))
> +    (void) __mach_port_mod_refs (__mach_task_self (), reply_port,
> +                                 MACH_PORT_RIGHT_RECEIVE, -1);
> +  THREAD_SETMEM (THREAD_SELF, reply_port, scp->sc_reply_port);
> +
> +  asm volatile (
> +                /* Point the stack to the register dump.  */
> +                "movq %0, %%rsp\n"
> +                /* Pop off the registers.  */
> +                "popq %%r8\n"
> +                "popq %%r9\n"
> +                "popq %%r10\n"
> +                "popq %%r11\n"
> +                "popq %%r12\n"
> +                "popq %%r13\n"
> +                "popq %%r14\n"
> +                "popq %%r15\n"
> +                "popq %%rdi\n"
> +                "popq %%rsi\n"
> +                "popq %%rbp\n"
> +                "popq %%rbx\n"
> +                "popq %%rdx\n"
> +                "popq %%rcx\n"
> +                "popq %%rax\n"
> +                "popfq\n"
> +                /* Restore %rip and %rsp with a single instruction.  */
> +                "retq $128" :
> +                : "rm" (usp));
> +  __builtin_unreachable ();
> +}
> +
> +int
> +__sigreturn (struct sigcontext *scp)
> +{
> +  struct hurd_sigstate *ss;
> +  struct hurd_userlink *link = (void *) &scp[1];
> +
> +  if (__glibc_unlikely (scp == NULL || (scp->sc_mask & _SIG_CANT_MASK)))
> +    {
> +      errno = EINVAL;
> +      return -1;
> +    }
> +
> +  ss = _hurd_self_sigstate ();
> +  _hurd_sigstate_lock (ss);
> +
> +  /* Remove the link on the `active resources' chain added by
> +     _hurd_setup_sighandler.  Its purpose was to make sure
> +     that we got called; now we have, it is done.  */
> +  _hurd_userlink_unlink (link);
> +
> +  /* Restore the set of blocked signals, and the intr_port slot.  */
> +  ss->blocked = scp->sc_mask;
> +  ss->intr_port = scp->sc_intr_port;
> +
> +  /* Check for pending signals that were blocked by the old set.  */
> +  if (_hurd_sigstate_pending (ss) & ~ss->blocked)
> +    {
> +      /* There are pending signals that just became unblocked.  Wake up the
> +	 signal thread to deliver them.  But first, squirrel away SCP where
> +	 the signal thread will notice it if it runs another handler, and
> +	 arrange to have us called over again in the new reality.  */
> +      ss->context = scp;
> +      _hurd_sigstate_unlock (ss);
> +      __msg_sig_post (_hurd_msgport, 0, 0, __mach_task_self ());
> +      /* If a pending signal was handled, sig_post never returned.
> +	 If it did return, the pending signal didn't run a handler;
> +	 proceed as usual.  */
> +      _hurd_sigstate_lock (ss);
> +      ss->context = NULL;
> +    }
> +
> +  if (scp->sc_onstack)
> +    ss->sigaltstack.ss_flags &= ~SS_ONSTACK;
> +
> +  if (scp->sc_fpused)
> +    /* Restore the FPU state.  Mach conveniently stores the state
> +       in the format the i387 `frstor' instruction uses to restore it.  */
> +    asm volatile ("frstor %0" : : "m" (scp->sc_fpsave));
> +
> +  {
> +    /* There are convenient instructions to pop state off the stack, so we
> +       copy the registers onto the user's stack, switch there, pop and
> +       return.  */
> +
> +    uintptr_t *usp = (uintptr_t *) scp->sc_ursp - 128;
> +
> +    *--usp = scp->sc_rip;
> +    *--usp = scp->sc_rfl;
> +    *--usp = scp->sc_rax;
> +    *--usp = scp->sc_rcx;
> +    *--usp = scp->sc_rdx;
> +    *--usp = scp->sc_rbx;
> +    *--usp = scp->sc_rbp;
> +    *--usp = scp->sc_rsi;
> +    *--usp = scp->sc_rdi;
> +    *--usp = scp->sc_r15;
> +    *--usp = scp->sc_r14;
> +    *--usp = scp->sc_r13;
> +    *--usp = scp->sc_r12;
> +    *--usp = scp->sc_r11;
> +    *--usp = scp->sc_r10;
> +    *--usp = scp->sc_r9;
> +    *--usp = scp->sc_r8;
> +
> +    /* Switch to the user's stack that we have just prepared, and call
> +       __sigreturn2.  Clobber "memory" to make sure GCC flushes the stack
> +       setup to actual memory.  We align the stack as per the ABI, but pass
> +       the original usp to __sigreturn2 as an argument.  */
> +    asm volatile ("movq %1, %%rsp\n"
> +                  "andq $-16, %%rsp\n"
> +                  "call __sigreturn2" :
> +                  : "D" (ss), "S" (usp), "d" (scp)
> +                  : "memory");
> +    __builtin_unreachable ();
> +  }
> +}
> +
> +weak_alias (__sigreturn, sigreturn)
> -- 
> 2.40.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 2/6] hurd: Implement longjmp for x86_64
  2023-04-29 20:18 ` [PATCH v3 2/6] hurd: Implement longjmp " Sergey Bugaev
@ 2023-04-30 23:16   ` Samuel Thibault
  0 siblings, 0 replies; 20+ messages in thread
From: Samuel Thibault @ 2023-04-30 23:16 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd

Applied, thanks!

Sergey Bugaev, le sam. 29 avril 2023 23:18:18 +0300, a ecrit:
> Checked on x86_64-gnu.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
> I have checked that setjmp/longjmp actually works sucessfully, with both
> __longjmp and ____longjmp_chk. I have not been able to check w/ sigaltstack
> because we don't yet have the proc server and signals.
> 
> Changes since v1:
> - drop the separate non-PIC version, we can always use %rip-relative access
>   on x86_64, and that's what the compiler generates anyway even with -fno-pic;
> - use "cmpb $0, __libc_tls_initialized(%rip)" over
>   "movb __libc_tls_initialized(%rip), %r10b; testb %r10b, %r10b" -- the former
>   is what the compiler generates, so better be consistent.
> 
>  sysdeps/mach/hurd/x86_64/____longjmp_chk.S | 118 +++++++++++++++++++++
>  sysdeps/mach/hurd/x86_64/__longjmp.S       |  96 +++++++++++++++++
>  2 files changed, 214 insertions(+)
>  create mode 100644 sysdeps/mach/hurd/x86_64/____longjmp_chk.S
>  create mode 100644 sysdeps/mach/hurd/x86_64/__longjmp.S
> 
> diff --git a/sysdeps/mach/hurd/x86_64/____longjmp_chk.S b/sysdeps/mach/hurd/x86_64/____longjmp_chk.S
> new file mode 100644
> index 00000000..935b8575
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/____longjmp_chk.S
> @@ -0,0 +1,118 @@
> +/* Checked longjmp support.  x86_64 Hurd version.
> +   Copyright (C) 2001-2023 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <sysdep.h>
> +#include <pointer_guard.h>
> +#include <jmpbuf-offsets.h>
> +#include <asm-syntax.h>
> +#include <tcb-offsets.h>
> +#include <jmp_buf-ssp.h>
> +#include <signal-defines.h>
> +
> +#define SS_ONSTACK 1
> +
> +/* Don't restore shadow stack register if shadow stack isn't enabled.  */
> +#if !SHSTK_ENABLED
> +# undef SHADOW_STACK_POINTER_OFFSET
> +#endif
> +
> +	.section .rodata.str1.1,"aMS",@progbits,1
> +	.type	longjmp_msg,@object
> +longjmp_msg:
> +	.string "longjmp causes uninitialized stack frame"
> +	.size	longjmp_msg, .-longjmp_msg
> +
> +
> +# define CALL_FAIL	sub	$8, %RSP_LP;				      \
> +			cfi_remember_state;				      \
> +			cfi_def_cfa_offset(16);				      \
> +			lea	longjmp_msg(%rip), %RDI_LP;		      \
> +			call	HIDDEN_JUMPTARGET(__fortify_fail);	      \
> +			nop;						      \
> +			cfi_restore_state
> +
> +/* Jump to the position specified by ENV, causing the
> +   setjmp call there to return VAL, or 1 if VAL is 0.
> +   void __longjmp (__jmp_buf env, int val).  */
> +	.text
> +ENTRY(____longjmp_chk)
> +	/* Restore registers.  */
> +	mov	(JB_RSP*8)(%rdi), %R8_LP
> +	mov	(JB_RBP*8)(%rdi),%R9_LP
> +	mov	(JB_PC*8)(%rdi), %RDX_LP
> +#ifdef PTR_DEMANGLE
> +	PTR_DEMANGLE (%R8_LP)
> +	PTR_DEMANGLE (%R9_LP)
> +	PTR_DEMANGLE (%RDX_LP)
> +#endif
> +
> +#if !defined (SHARED) || IS_IN (rtld)
> +	cmpb	$0, __libc_tls_initialized(%rip)
> +	jz	.Lok		/* TLS not initialized yet */
> +#endif
> +
> +	movq %fs:SIGSTATE_OFFSET, %R10_LP
> +	testq %R10_LP, %R10_LP
> +	jz	.Lok		/* sigstate not initialized yet */
> +
> +	testl	$SS_ONSTACK, (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
> +	jnz	.Lonstack
> +
> +	/* We were on the main stack.  Jumping to a higher-address
> +           frame is always allowed, otherwise it's not allowed.  */
> +	cmp	%R8_LP, %RSP_LP
> +	jbe	.Lok
> +
> +.Lfail:	CALL_FAIL
> +
> +.Lonstack:
> +	cmpq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R8_LP
> +	jb	.Loks		/* Jumping below the altstack, switch */
> +
> +	movq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R11_LP
> +	addq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SIZE__OFFSET)(%R10_LP), %R11_LP
> +	cmpq	%R11_LP, %R8_LP
> +	jb	.Lok		/* Jumping inside the altstack, do not switch */
> +
> +	/* Jumping above the altstack, switch */
> +
> +.Loks:
> +	andl	$~(SS_ONSTACK), (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
> +
> +.Lok:
> +	/* We add unwind information for the target here.  */
> +	cfi_def_cfa(%rdi, 0)
> +	cfi_register(%rsp,%r8)
> +	cfi_register(%rbp,%r9)
> +	cfi_register(%rip,%rdx)
> +	cfi_offset(%rbx,JB_RBX*8)
> +	cfi_offset(%r12,JB_R12*8)
> +	cfi_offset(%r13,JB_R13*8)
> +	cfi_offset(%r14,JB_R14*8)
> +	cfi_offset(%r15,JB_R15*8)
> +	movq	(JB_RBX*8)(%rdi), %rbx
> +	movq	(JB_R12*8)(%rdi), %r12
> +	movq	(JB_R13*8)(%rdi), %r13
> +	movq	(JB_R14*8)(%rdi), %r14
> +	movq	(JB_R15*8)(%rdi), %r15
> +	/* Set return value for setjmp.  */
> +	movl	%esi, %eax
> +	mov	%R8_LP, %RSP_LP
> +	movq	%r9,%rbp
> +	jmpq	*%rdx
> +END (____longjmp_chk)
> diff --git a/sysdeps/mach/hurd/x86_64/__longjmp.S b/sysdeps/mach/hurd/x86_64/__longjmp.S
> new file mode 100644
> index 00000000..389c1d16
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/__longjmp.S
> @@ -0,0 +1,96 @@
> +/* longjmp support.  x86_64/Hurd version.
> +   Copyright (C) 2001-2023 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <https://www.gnu.org/licenses/>.  */
> +
> +#include <sysdep.h>
> +#include <pointer_guard.h>
> +#include <jmpbuf-offsets.h>
> +#include <asm-syntax.h>
> +#include <tcb-offsets.h>
> +#include <jmp_buf-ssp.h>
> +#include <signal-defines.h>
> +
> +#define SS_ONSTACK 1
> +
> +/* Don't restore shadow stack register if shadow stack isn't enabled.  */
> +#if !SHSTK_ENABLED
> +# undef SHADOW_STACK_POINTER_OFFSET
> +#endif
> +
> +/* Jump to the position specified by ENV, causing the
> +   setjmp call there to return VAL, or 1 if VAL is 0.
> +   void __longjmp (__jmp_buf env, int val).  */
> +	.text
> +ENTRY(__longjmp)
> +	/* Restore registers.  */
> +	mov	(JB_RSP*8)(%rdi), %R8_LP
> +	mov	(JB_RBP*8)(%rdi),%R9_LP
> +	mov	(JB_PC*8)(%rdi), %RDX_LP
> +#ifdef PTR_DEMANGLE
> +	PTR_DEMANGLE (%R8_LP)
> +	PTR_DEMANGLE (%R9_LP)
> +	PTR_DEMANGLE (%RDX_LP)
> +#endif
> +
> +#if !defined (SHARED) || IS_IN (rtld)
> +	cmpb	$0, __libc_tls_initialized(%rip)
> +	jz	.Lok		/* TLS not initialized yet */
> +#endif
> +
> +	movq %fs:SIGSTATE_OFFSET, %R10_LP
> +	testq %R10_LP, %R10_LP
> +	jz	.Lok		/* sigstate not initialized yet */
> +
> +	testl	$SS_ONSTACK, (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
> +	jz	.Lok
> +
> +.Lonstack:
> +	cmpq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R8_LP
> +	jb	.Loks		/* Jumping below the altstack, switch */
> +
> +	movq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SP__OFFSET)(%R10_LP), %R11_LP
> +	addq	(HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_SIZE__OFFSET)(%R10_LP), %R11_LP
> +	cmpq	%R11_LP, %R8_LP
> +	jb	.Lok		/* Jumping inside the altstack, do not switch */
> +
> +	/* Jumping above the altstack, switch */
> +
> +.Loks:
> +	andl	$~(SS_ONSTACK), (HURD_SIGSTATE__SIGALTSTACK__OFFSET + SIGALTSTACK__SS_FLAGS__OFFSET)(%R10_LP)
> +
> +.Lok:
> +	/* We add unwind information for the target here.  */
> +	cfi_def_cfa(%rdi, 0)
> +	cfi_register(%rsp,%r8)
> +	cfi_register(%rbp,%r9)
> +	cfi_register(%rip,%rdx)
> +	cfi_offset(%rbx,JB_RBX*8)
> +	cfi_offset(%r12,JB_R12*8)
> +	cfi_offset(%r13,JB_R13*8)
> +	cfi_offset(%r14,JB_R14*8)
> +	cfi_offset(%r15,JB_R15*8)
> +	movq	(JB_RBX*8)(%rdi), %rbx
> +	movq	(JB_R12*8)(%rdi), %r12
> +	movq	(JB_R13*8)(%rdi), %r13
> +	movq	(JB_R14*8)(%rdi), %r14
> +	movq	(JB_R15*8)(%rdi), %r15
> +	/* Set return value for setjmp.  */
> +	movl	%esi, %eax
> +	mov	%R8_LP, %RSP_LP
> +	movq	%r9,%rbp
> +	jmpq	*%rdx
> +END (__longjmp)
> -- 
> 2.40.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/6] hurd: Add expected abilist files for x86_64
  2023-04-29 20:18 ` [PATCH v3 4/6] hurd: Add expected abilist files for x86_64 Sergey Bugaev
@ 2023-04-30 23:18   ` Samuel Thibault
  2023-05-01 10:20   ` Samuel Thibault
  1 sibling, 0 replies; 20+ messages in thread
From: Samuel Thibault @ 2023-04-30 23:18 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd

Sergey Bugaev, le sam. 29 avril 2023 23:18:20 +0300, a ecrit:
> - __pthread_self is now in libc.so, not libpthread.so
> (I'm still not sure why this move is being done, though)

Other pthread symbols are to move to libc.so too, to align on the move
that was done on Linux.

Samuel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [RFC PATCH v3 5/6] hurd: Make it possible to call memcpy very early
  2023-04-29 20:18 ` [RFC PATCH v3 5/6] hurd: Make it possible to call memcpy very early Sergey Bugaev
@ 2023-04-30 23:21   ` Samuel Thibault
  0 siblings, 0 replies; 20+ messages in thread
From: Samuel Thibault @ 2023-04-30 23:21 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd

Applied, thanks!

Sergey Bugaev, le sam. 29 avril 2023 23:18:21 +0300, a ecrit:
> Normally, in static builds, the first code that runs is _start, in e.g.
> sysdeps/x86_64/start.S, which quickly calls __libc_start_main, passing
> it the argv etc. Among the first things __libc_start_main does is
> initializing the tunables (based on env), then CPU features, and then
> calls _dl_relocate_static_pie (). Specifically, this runs ifunc
> resolvers to pick, based on the CPU features discovered earlier, the
> most suitable implementation of "string" functions such as memcpy.
> 
> Before that point, calling memcpy (or other ifunc-resolved functions)
> will not work.
> 
> In the Hurd port, things are more complex. In order to get argv/env for
> our process, glibc normally needs to do an RPC to the exec server,
> unless our args/env are already located on the stack (which is what
> happens to bootstrap processes spawned by GNU Mach). Fetching our
> argv/env from the exec server has to be done before the call to
> __libc_start_main, since we need to know what our argv/env are to pass
> them to __libc_start_main.
> 
> On the other hand, the implementation of the RPC (and other initial
> setup needed on the Hurd before __libc_start_main can be run) is not
> very trivial. In particular, it may (and on x86_64, will) use memcpy.
> But as described above, calling memcpy before __libc_start_main can not
> work, since the GOT entry for it is not yet initialized at that point.
> 
> Work around this by pre-filling the GOT entry with the baseline version
> of memcpy, __memcpy_sse2_unaligned. This makes it possible for early
> calls to memcpy to just work. The initial value of the GOT entry is
> unused on x86_64, and changing it won't interfere with the relocation
> being performed later: once _dl_relocate_static_pie () is called, the
> baseline version will get replaced with the most suitable one, and that
> is what subsequent calls of memcpy are going to call.
> 
> Checked on x86_64-gnu.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
> Changes since v1:
> - drop the stpncpy, since it's apparently not required during early
>   startup;
> - as a result of the above, there are no longer any changes to the
>   i386 version;
> - drop the PIC/non-PIC split, we can always use %rip-relative addressing
>   on x86_64;
> - as mentioned somewhere in the v1 thread, I have, since posting the v1,
>   actually gone and checked that the relocations do work and the proper,
>   more effecient memcpy version does get installed into the GOT slot and
>   invoked whenever anything calls memcpy;
> - convinced myself that this is not a terrible hack but rather an OK
>   solution;
> - worked out how this would be done on an architecture that (like i386,
>   unlike x86_64) does need the original value in the GOT to perform the
>   relocation, but (unlike i386, like x86_64) still uses an ifunc-selected
>   memcpy in static builds: namely, we'd simply put the original ifunc
>   address back into the GOT slot a few lines below, after the call to
>   _hurd_stack_setup.
> 
>  sysdeps/mach/hurd/x86_64/static-start.S | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/sysdeps/mach/hurd/x86_64/static-start.S b/sysdeps/mach/hurd/x86_64/static-start.S
> index 982d3d52..cc8e2410 100644
> --- a/sysdeps/mach/hurd/x86_64/static-start.S
> +++ b/sysdeps/mach/hurd/x86_64/static-start.S
> @@ -19,6 +19,9 @@
>  	.text
>  	.globl _start
>  _start:
> +
> +	leaq __memcpy_sse2_unaligned(%rip), %rax
> +	movq %rax, memcpy@GOTPCREL(%rip)
>  	call _hurd_stack_setup
>  	xorq %rdx, %rdx
>  	jmp _start1
> -- 
> 2.40.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [RFC PATCH v3 3/6] hurd: Replace reply port with a dead name on failed interruption
  2023-04-29 20:18 ` [RFC PATCH v3 3/6] hurd: Replace reply port with a dead name on failed interruption Sergey Bugaev
@ 2023-05-01  1:20   ` Samuel Thibault
  0 siblings, 0 replies; 20+ messages in thread
From: Samuel Thibault @ 2023-05-01  1:20 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd

Applied, thanks!

Sergey Bugaev, le sam. 29 avril 2023 23:18:19 +0300, a ecrit:
> If we're trying to interrupt an interruptible RPC, but the server fails
> to respond to our __interrupt_operation () call, we instead destroy the
> reply port we were expecting the reply to the RPC on.
> 
> Instead of deallocating the name completely, replace it with a dead
> name, so the name won't get reused for some other right, and deallocate
> it in _hurd_intr_rpc_mach_msg once we return from the signal handler.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
> This is not required for x86_64, but probably a good idea anyway. I have
> checked that this does not fatally break things (this commit has been
> sitting in my tree, getting built along with the other changes, for quite
> some time without noticably breaking anything), but I have not run the
> full testsuite. Please do that on your end.
> 
>  hurd/hurdsig.c                | 15 ++++++++++++---
>  hurd/intr-msg.c               |  1 +
>  sysdeps/mach/hurd/mig-reply.c | 25 +++++++------------------
>  3 files changed, 20 insertions(+), 21 deletions(-)
> 
> diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
> index b3808f9e..78ea59d9 100644
> --- a/hurd/hurdsig.c
> +++ b/hurd/hurdsig.c
> @@ -477,9 +477,18 @@ _hurdsig_abort_rpcs (struct hurd_sigstate *ss, int signo, int sigthread,
>            if (reply)
>              {
>                /* The interrupt didn't work.
> -                 Destroy the receive right the thread is blocked on.  */
> -              __mach_port_destroy (__mach_task_self (), *reply);
> -              *reply = MACH_PORT_NULL;
> +                 Destroy the receive right the thread is blocked on, and
> +                 replace it with a dead name to keep the name from reuse until
> +                 the therad is done with it.  To do this atomically, first
> +                 insert a send right, and then destroy the receive right,
> +                 turning the send right into a dead name.  */
> +              err = __mach_port_insert_right (__mach_task_self (),
> +                                              *reply, *reply,
> +                                              MACH_MSG_TYPE_MAKE_SEND);
> +              assert_perror (err);
> +              err = __mach_port_mod_refs (__mach_task_self (), *reply,
> +                                          MACH_PORT_RIGHT_RECEIVE, -1);
> +              assert_perror (err);
>              }
>  
>            /* The system call return value register now contains
> diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c
> index 1a086b51..716d87ab 100644
> --- a/hurd/intr-msg.c
> +++ b/hurd/intr-msg.c
> @@ -305,6 +305,7 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg,
>  	{
>  	  /* Make sure we have a valid reply port.  The one we were using
>  	     may have been destroyed by interruption.  */
> +	  __mig_dealloc_reply_port (rcv_name);
>  	  m->header.msgh_local_port = rcv_name = __mig_get_reply_port ();
>  	  m->header.msgh_bits = msgh_bits;
>  	  option = user_option;
> diff --git a/sysdeps/mach/hurd/mig-reply.c b/sysdeps/mach/hurd/mig-reply.c
> index 3fdee80e..7ea001df 100644
> --- a/sysdeps/mach/hurd/mig-reply.c
> +++ b/sysdeps/mach/hurd/mig-reply.c
> @@ -69,29 +69,18 @@ __mig_dealloc_reply_port (mach_port_t arg)
>    mach_port_t port = get_reply_port ();
>  
>    set_reply_port (MACH_PORT_NULL);	/* So the mod_refs RPC won't use it.  */
> -
> -  /* Normally, ARG should be the same as PORT that we store.  However, if a
> -     signal has interrupted the RPC, the stored PORT has been deallocated and
> -     reset to MACH_PORT_NULL (or possibly MACH_PORT_DEAD).  In this case the
> -     MIG routine still has the old name, which it passes to us here.  We must
> -     not deallocate (or otherwise touch) it, since it may be already allocated
> -     to another port right.  Fortunately MIG itself doesn't do anything with
> -     the reply port on errors either, other than immediately calling this
> -     function.
> -
> -     And so:
> -     1. Assert that things are sane, i.e. and PORT is either invalid or same
> -        as ARG.
> -     2. Only deallocate the name if our stored PORT still names it.  In that
> -        case we're sure the right has not been deallocated / the name reused.
> -    */
> -
> +  assert (port == arg);
>    if (!MACH_PORT_VALID (port))
>      return;
> -  assert (port == arg);
>  
>    err = __mach_port_mod_refs (__mach_task_self (), port,
>                                MACH_PORT_RIGHT_RECEIVE, -1);
> +  if (err == KERN_INVALID_RIGHT)
> +    /* It could be that during signal handling, the receive right had been
> +       replaced with a dead name.  */
> +    err = __mach_port_mod_refs (__mach_task_self (), port,
> +                                MACH_PORT_RIGHT_DEAD_NAME, -1);
> +
>    assert_perror (err);
>  }
>  weak_alias (__mig_dealloc_reply_port, mig_dealloc_reply_port)
> -- 
> 2.40.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/6] hurd: Add expected abilist files for x86_64
  2023-04-29 20:18 ` [PATCH v3 4/6] hurd: Add expected abilist files for x86_64 Sergey Bugaev
  2023-04-30 23:18   ` Samuel Thibault
@ 2023-05-01 10:20   ` Samuel Thibault
  2023-05-01 17:33     ` Sergey Bugaev
  1 sibling, 1 reply; 20+ messages in thread
From: Samuel Thibault @ 2023-05-01 10:20 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd

Applied, thanks!

Sergey Bugaev, le sam. 29 avril 2023 23:18:20 +0300, a ecrit:
> These were created by creating stub files, running 'make update-abi',
> and reviewing the results.
> 
> Also, set baseline ABI to GLIBC_2.38, the (upcoming) first glibc
> release to first have x86_64-gnu support.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
> 
> Changes compared to v2:
> - __pthread_self is now in libc.so, not libpthread.so
> (I'm still not sure why this move is being done, though)
> 
>  sysdeps/mach/hurd/x86_64/ld.abilist           |   17 +
>  .../mach/hurd/x86_64/libBrokenLocale.abilist  |    1 +
>  sysdeps/mach/hurd/x86_64/libc.abilist         | 2121 +++++++++++++++++
>  .../hurd/x86_64/libc_malloc_debug.abilist     |   26 +
>  sysdeps/mach/hurd/x86_64/libcrypt.abilist     |    2 +
>  sysdeps/mach/hurd/x86_64/libdl.abilist        |    0
>  sysdeps/mach/hurd/x86_64/libm.abilist         | 1040 ++++++++
>  sysdeps/mach/hurd/x86_64/libmvec.abilist      |  216 ++
>  sysdeps/mach/hurd/x86_64/libpthread.abilist   |  175 ++
>  sysdeps/mach/hurd/x86_64/libresolv.abilist    |   55 +
>  sysdeps/mach/hurd/x86_64/librt.abilist        |   33 +
>  sysdeps/mach/hurd/x86_64/shlib-versions       |    1 +
>  12 files changed, 3687 insertions(+)
>  create mode 100644 sysdeps/mach/hurd/x86_64/ld.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libc.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libcrypt.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libdl.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libm.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libmvec.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libpthread.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/libresolv.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/librt.abilist
>  create mode 100644 sysdeps/mach/hurd/x86_64/shlib-versions
> 
> diff --git a/sysdeps/mach/hurd/x86_64/ld.abilist b/sysdeps/mach/hurd/x86_64/ld.abilist
> new file mode 100644
> index 00000000..2297a5f3
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/ld.abilist
> @@ -0,0 +1,17 @@
> +GLIBC_2.38 __close F
> +GLIBC_2.38 __errno_location F
> +GLIBC_2.38 __getpid F
> +GLIBC_2.38 __libc_stack_end D 0x8
> +GLIBC_2.38 __mmap F
> +GLIBC_2.38 __open F
> +GLIBC_2.38 __open64 F
> +GLIBC_2.38 __pread64 F
> +GLIBC_2.38 __read F
> +GLIBC_2.38 __sbrk F
> +GLIBC_2.38 __tls_get_addr F
> +GLIBC_2.38 __write F
> +GLIBC_2.38 __writev F
> +GLIBC_2.38 _dl_mcount F
> +GLIBC_2.38 _hurd_intr_rpc_mach_msg F
> +GLIBC_2.38 _r_debug D 0x28
> +GLIBC_2.38 abort F
> diff --git a/sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist b/sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist
> new file mode 100644
> index 00000000..203836f5
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libBrokenLocale.abilist
> @@ -0,0 +1 @@
> +GLIBC_2.38 __ctype_get_mb_cur_max F
> diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
> new file mode 100644
> index 00000000..cafdd8a0
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libc.abilist
> @@ -0,0 +1,2121 @@
> +GLIBC_2.38 _Exit F
> +GLIBC_2.38 _Fork F
> +GLIBC_2.38 _IO_2_1_stderr_ D 0xe0
> +GLIBC_2.38 _IO_2_1_stdin_ D 0xe0
> +GLIBC_2.38 _IO_2_1_stdout_ D 0xe0
> +GLIBC_2.38 _IO_adjust_column F
> +GLIBC_2.38 _IO_adjust_wcolumn F
> +GLIBC_2.38 _IO_default_doallocate F
> +GLIBC_2.38 _IO_default_finish F
> +GLIBC_2.38 _IO_default_pbackfail F
> +GLIBC_2.38 _IO_default_uflow F
> +GLIBC_2.38 _IO_default_xsgetn F
> +GLIBC_2.38 _IO_default_xsputn F
> +GLIBC_2.38 _IO_do_write F
> +GLIBC_2.38 _IO_doallocbuf F
> +GLIBC_2.38 _IO_fclose F
> +GLIBC_2.38 _IO_fdopen F
> +GLIBC_2.38 _IO_feof F
> +GLIBC_2.38 _IO_ferror F
> +GLIBC_2.38 _IO_fflush F
> +GLIBC_2.38 _IO_fgetpos F
> +GLIBC_2.38 _IO_fgetpos64 F
> +GLIBC_2.38 _IO_fgets F
> +GLIBC_2.38 _IO_file_attach F
> +GLIBC_2.38 _IO_file_close F
> +GLIBC_2.38 _IO_file_close_it F
> +GLIBC_2.38 _IO_file_doallocate F
> +GLIBC_2.38 _IO_file_finish F
> +GLIBC_2.38 _IO_file_fopen F
> +GLIBC_2.38 _IO_file_init F
> +GLIBC_2.38 _IO_file_jumps D 0xa8
> +GLIBC_2.38 _IO_file_open F
> +GLIBC_2.38 _IO_file_overflow F
> +GLIBC_2.38 _IO_file_read F
> +GLIBC_2.38 _IO_file_seek F
> +GLIBC_2.38 _IO_file_seekoff F
> +GLIBC_2.38 _IO_file_setbuf F
> +GLIBC_2.38 _IO_file_stat F
> +GLIBC_2.38 _IO_file_sync F
> +GLIBC_2.38 _IO_file_underflow F
> +GLIBC_2.38 _IO_file_write F
> +GLIBC_2.38 _IO_file_xsputn F
> +GLIBC_2.38 _IO_flockfile F
> +GLIBC_2.38 _IO_flush_all F
> +GLIBC_2.38 _IO_flush_all_linebuffered F
> +GLIBC_2.38 _IO_fopen F
> +GLIBC_2.38 _IO_fprintf F
> +GLIBC_2.38 _IO_fputs F
> +GLIBC_2.38 _IO_fread F
> +GLIBC_2.38 _IO_free_backup_area F
> +GLIBC_2.38 _IO_free_wbackup_area F
> +GLIBC_2.38 _IO_fsetpos F
> +GLIBC_2.38 _IO_fsetpos64 F
> +GLIBC_2.38 _IO_ftell F
> +GLIBC_2.38 _IO_ftrylockfile F
> +GLIBC_2.38 _IO_funlockfile F
> +GLIBC_2.38 _IO_fwrite F
> +GLIBC_2.38 _IO_getc F
> +GLIBC_2.38 _IO_getline F
> +GLIBC_2.38 _IO_getline_info F
> +GLIBC_2.38 _IO_gets F
> +GLIBC_2.38 _IO_init F
> +GLIBC_2.38 _IO_init_marker F
> +GLIBC_2.38 _IO_init_wmarker F
> +GLIBC_2.38 _IO_iter_begin F
> +GLIBC_2.38 _IO_iter_end F
> +GLIBC_2.38 _IO_iter_file F
> +GLIBC_2.38 _IO_iter_next F
> +GLIBC_2.38 _IO_least_wmarker F
> +GLIBC_2.38 _IO_link_in F
> +GLIBC_2.38 _IO_list_all D 0x8
> +GLIBC_2.38 _IO_list_lock F
> +GLIBC_2.38 _IO_list_resetlock F
> +GLIBC_2.38 _IO_list_unlock F
> +GLIBC_2.38 _IO_marker_delta F
> +GLIBC_2.38 _IO_marker_difference F
> +GLIBC_2.38 _IO_padn F
> +GLIBC_2.38 _IO_peekc_locked F
> +GLIBC_2.38 _IO_popen F
> +GLIBC_2.38 _IO_printf F
> +GLIBC_2.38 _IO_proc_close F
> +GLIBC_2.38 _IO_proc_open F
> +GLIBC_2.38 _IO_putc F
> +GLIBC_2.38 _IO_puts F
> +GLIBC_2.38 _IO_remove_marker F
> +GLIBC_2.38 _IO_seekmark F
> +GLIBC_2.38 _IO_seekoff F
> +GLIBC_2.38 _IO_seekpos F
> +GLIBC_2.38 _IO_seekwmark F
> +GLIBC_2.38 _IO_setb F
> +GLIBC_2.38 _IO_setbuffer F
> +GLIBC_2.38 _IO_setvbuf F
> +GLIBC_2.38 _IO_sgetn F
> +GLIBC_2.38 _IO_sprintf F
> +GLIBC_2.38 _IO_sputbackc F
> +GLIBC_2.38 _IO_sputbackwc F
> +GLIBC_2.38 _IO_sscanf F
> +GLIBC_2.38 _IO_str_init_readonly F
> +GLIBC_2.38 _IO_str_init_static F
> +GLIBC_2.38 _IO_str_overflow F
> +GLIBC_2.38 _IO_str_pbackfail F
> +GLIBC_2.38 _IO_str_seekoff F
> +GLIBC_2.38 _IO_str_underflow F
> +GLIBC_2.38 _IO_sungetc F
> +GLIBC_2.38 _IO_sungetwc F
> +GLIBC_2.38 _IO_switch_to_get_mode F
> +GLIBC_2.38 _IO_switch_to_main_wget_area F
> +GLIBC_2.38 _IO_switch_to_wbackup_area F
> +GLIBC_2.38 _IO_switch_to_wget_mode F
> +GLIBC_2.38 _IO_un_link F
> +GLIBC_2.38 _IO_ungetc F
> +GLIBC_2.38 _IO_unsave_markers F
> +GLIBC_2.38 _IO_unsave_wmarkers F
> +GLIBC_2.38 _IO_vfprintf F
> +GLIBC_2.38 _IO_vsprintf F
> +GLIBC_2.38 _IO_wdefault_doallocate F
> +GLIBC_2.38 _IO_wdefault_finish F
> +GLIBC_2.38 _IO_wdefault_pbackfail F
> +GLIBC_2.38 _IO_wdefault_uflow F
> +GLIBC_2.38 _IO_wdefault_xsgetn F
> +GLIBC_2.38 _IO_wdefault_xsputn F
> +GLIBC_2.38 _IO_wdo_write F
> +GLIBC_2.38 _IO_wdoallocbuf F
> +GLIBC_2.38 _IO_wfile_jumps D 0xa8
> +GLIBC_2.38 _IO_wfile_overflow F
> +GLIBC_2.38 _IO_wfile_seekoff F
> +GLIBC_2.38 _IO_wfile_sync F
> +GLIBC_2.38 _IO_wfile_underflow F
> +GLIBC_2.38 _IO_wfile_xsputn F
> +GLIBC_2.38 _IO_wmarker_delta F
> +GLIBC_2.38 _IO_wsetb F
> +GLIBC_2.38 _S_catch_exception_raise F
> +GLIBC_2.38 _S_msg_add_auth F
> +GLIBC_2.38 _S_msg_del_auth F
> +GLIBC_2.38 _S_msg_describe_ports F
> +GLIBC_2.38 _S_msg_get_dtable F
> +GLIBC_2.38 _S_msg_get_env_variable F
> +GLIBC_2.38 _S_msg_get_environment F
> +GLIBC_2.38 _S_msg_get_fd F
> +GLIBC_2.38 _S_msg_get_init_int F
> +GLIBC_2.38 _S_msg_get_init_ints F
> +GLIBC_2.38 _S_msg_get_init_port F
> +GLIBC_2.38 _S_msg_get_init_ports F
> +GLIBC_2.38 _S_msg_proc_newids F
> +GLIBC_2.38 _S_msg_report_wait F
> +GLIBC_2.38 _S_msg_set_dtable F
> +GLIBC_2.38 _S_msg_set_env_variable F
> +GLIBC_2.38 _S_msg_set_environment F
> +GLIBC_2.38 _S_msg_set_fd F
> +GLIBC_2.38 _S_msg_set_init_int F
> +GLIBC_2.38 _S_msg_set_init_ints F
> +GLIBC_2.38 _S_msg_set_init_port F
> +GLIBC_2.38 _S_msg_set_init_ports F
> +GLIBC_2.38 _S_msg_sig_post F
> +GLIBC_2.38 _S_msg_sig_post_untraced F
> +GLIBC_2.38 ___brk_addr D 0x8
> +GLIBC_2.38 __argz_count F
> +GLIBC_2.38 __argz_next F
> +GLIBC_2.38 __argz_stringify F
> +GLIBC_2.38 __asprintf F
> +GLIBC_2.38 __asprintf_chk F
> +GLIBC_2.38 __assert F
> +GLIBC_2.38 __assert_fail F
> +GLIBC_2.38 __assert_perror_fail F
> +GLIBC_2.38 __backtrace F
> +GLIBC_2.38 __backtrace_symbols F
> +GLIBC_2.38 __backtrace_symbols_fd F
> +GLIBC_2.38 __bsd_getpgrp F
> +GLIBC_2.38 __bzero F
> +GLIBC_2.38 __check_rhosts_file D 0x4
> +GLIBC_2.38 __chk_fail F
> +GLIBC_2.38 __close F
> +GLIBC_2.38 __cmsg_nxthdr F
> +GLIBC_2.38 __confstr_chk F
> +GLIBC_2.38 __connect F
> +GLIBC_2.38 __ctype_b_loc F
> +GLIBC_2.38 __ctype_get_mb_cur_max F
> +GLIBC_2.38 __ctype_tolower_loc F
> +GLIBC_2.38 __ctype_toupper_loc F
> +GLIBC_2.38 __cxa_at_quick_exit F
> +GLIBC_2.38 __cxa_atexit F
> +GLIBC_2.38 __cxa_finalize F
> +GLIBC_2.38 __cxa_thread_atexit_impl F
> +GLIBC_2.38 __cyg_profile_func_enter F
> +GLIBC_2.38 __cyg_profile_func_exit F
> +GLIBC_2.38 __daylight D 0x4
> +GLIBC_2.38 __dcgettext F
> +GLIBC_2.38 __dgettext F
> +GLIBC_2.38 __dprintf_chk F
> +GLIBC_2.38 __dup2 F
> +GLIBC_2.38 __duplocale F
> +GLIBC_2.38 __environ D 0x8
> +GLIBC_2.38 __errno_location F
> +GLIBC_2.38 __explicit_bzero_chk F
> +GLIBC_2.38 __fbufsize F
> +GLIBC_2.38 __fcntl F
> +GLIBC_2.38 __fdelt_chk F
> +GLIBC_2.38 __fdelt_warn F
> +GLIBC_2.38 __fentry__ F
> +GLIBC_2.38 __ffs F
> +GLIBC_2.38 __fgets_chk F
> +GLIBC_2.38 __fgets_unlocked_chk F
> +GLIBC_2.38 __fgetws_chk F
> +GLIBC_2.38 __fgetws_unlocked_chk F
> +GLIBC_2.38 __finite F
> +GLIBC_2.38 __finitef F
> +GLIBC_2.38 __finitel F
> +GLIBC_2.38 __flbf F
> +GLIBC_2.38 __fork F
> +GLIBC_2.38 __fpending F
> +GLIBC_2.38 __fprintf_chk F
> +GLIBC_2.38 __fpu_control D 0x2
> +GLIBC_2.38 __fpurge F
> +GLIBC_2.38 __fread_chk F
> +GLIBC_2.38 __fread_unlocked_chk F
> +GLIBC_2.38 __freadable F
> +GLIBC_2.38 __freading F
> +GLIBC_2.38 __freelocale F
> +GLIBC_2.38 __fsetlocking F
> +GLIBC_2.38 __fwprintf_chk F
> +GLIBC_2.38 __fwritable F
> +GLIBC_2.38 __fwriting F
> +GLIBC_2.38 __getauxval F
> +GLIBC_2.38 __getcwd_chk F
> +GLIBC_2.38 __getdelim F
> +GLIBC_2.38 __getdomainname_chk F
> +GLIBC_2.38 __getgroups_chk F
> +GLIBC_2.38 __gethostname_chk F
> +GLIBC_2.38 __getlogin_r_chk F
> +GLIBC_2.38 __getpagesize F
> +GLIBC_2.38 __getpgid F
> +GLIBC_2.38 __getpid F
> +GLIBC_2.38 __gets_chk F
> +GLIBC_2.38 __gettimeofday F
> +GLIBC_2.38 __getwd_chk F
> +GLIBC_2.38 __gmtime_r F
> +GLIBC_2.38 __h_errno_location F
> +GLIBC_2.38 __hurd_dfail F
> +GLIBC_2.38 __hurd_fail F
> +GLIBC_2.38 __hurd_sockfail F
> +GLIBC_2.38 __isalnum_l F
> +GLIBC_2.38 __isalpha_l F
> +GLIBC_2.38 __isascii_l F
> +GLIBC_2.38 __isblank_l F
> +GLIBC_2.38 __iscntrl_l F
> +GLIBC_2.38 __isctype F
> +GLIBC_2.38 __isdigit_l F
> +GLIBC_2.38 __isgraph_l F
> +GLIBC_2.38 __isinf F
> +GLIBC_2.38 __isinff F
> +GLIBC_2.38 __isinfl F
> +GLIBC_2.38 __islower_l F
> +GLIBC_2.38 __isnan F
> +GLIBC_2.38 __isnanf F
> +GLIBC_2.38 __isnanf128 F
> +GLIBC_2.38 __isnanl F
> +GLIBC_2.38 __isoc23_fscanf F
> +GLIBC_2.38 __isoc23_fwscanf F
> +GLIBC_2.38 __isoc23_scanf F
> +GLIBC_2.38 __isoc23_sscanf F
> +GLIBC_2.38 __isoc23_strtoimax F
> +GLIBC_2.38 __isoc23_strtol F
> +GLIBC_2.38 __isoc23_strtol_l F
> +GLIBC_2.38 __isoc23_strtoll F
> +GLIBC_2.38 __isoc23_strtoll_l F
> +GLIBC_2.38 __isoc23_strtoul F
> +GLIBC_2.38 __isoc23_strtoul_l F
> +GLIBC_2.38 __isoc23_strtoull F
> +GLIBC_2.38 __isoc23_strtoull_l F
> +GLIBC_2.38 __isoc23_strtoumax F
> +GLIBC_2.38 __isoc23_swscanf F
> +GLIBC_2.38 __isoc23_vfscanf F
> +GLIBC_2.38 __isoc23_vfwscanf F
> +GLIBC_2.38 __isoc23_vscanf F
> +GLIBC_2.38 __isoc23_vsscanf F
> +GLIBC_2.38 __isoc23_vswscanf F
> +GLIBC_2.38 __isoc23_vwscanf F
> +GLIBC_2.38 __isoc23_wcstoimax F
> +GLIBC_2.38 __isoc23_wcstol F
> +GLIBC_2.38 __isoc23_wcstol_l F
> +GLIBC_2.38 __isoc23_wcstoll F
> +GLIBC_2.38 __isoc23_wcstoll_l F
> +GLIBC_2.38 __isoc23_wcstoul F
> +GLIBC_2.38 __isoc23_wcstoul_l F
> +GLIBC_2.38 __isoc23_wcstoull F
> +GLIBC_2.38 __isoc23_wcstoull_l F
> +GLIBC_2.38 __isoc23_wcstoumax F
> +GLIBC_2.38 __isoc23_wscanf F
> +GLIBC_2.38 __isoc99_fscanf F
> +GLIBC_2.38 __isoc99_fwscanf F
> +GLIBC_2.38 __isoc99_scanf F
> +GLIBC_2.38 __isoc99_sscanf F
> +GLIBC_2.38 __isoc99_swscanf F
> +GLIBC_2.38 __isoc99_vfscanf F
> +GLIBC_2.38 __isoc99_vfwscanf F
> +GLIBC_2.38 __isoc99_vscanf F
> +GLIBC_2.38 __isoc99_vsscanf F
> +GLIBC_2.38 __isoc99_vswscanf F
> +GLIBC_2.38 __isoc99_vwscanf F
> +GLIBC_2.38 __isoc99_wscanf F
> +GLIBC_2.38 __isprint_l F
> +GLIBC_2.38 __ispunct_l F
> +GLIBC_2.38 __isspace_l F
> +GLIBC_2.38 __isupper_l F
> +GLIBC_2.38 __iswalnum_l F
> +GLIBC_2.38 __iswalpha_l F
> +GLIBC_2.38 __iswblank_l F
> +GLIBC_2.38 __iswcntrl_l F
> +GLIBC_2.38 __iswctype F
> +GLIBC_2.38 __iswctype_l F
> +GLIBC_2.38 __iswdigit_l F
> +GLIBC_2.38 __iswgraph_l F
> +GLIBC_2.38 __iswlower_l F
> +GLIBC_2.38 __iswprint_l F
> +GLIBC_2.38 __iswpunct_l F
> +GLIBC_2.38 __iswspace_l F
> +GLIBC_2.38 __iswupper_l F
> +GLIBC_2.38 __iswxdigit_l F
> +GLIBC_2.38 __isxdigit_l F
> +GLIBC_2.38 __libc_allocate_rtsig F
> +GLIBC_2.38 __libc_calloc F
> +GLIBC_2.38 __libc_current_sigrtmax F
> +GLIBC_2.38 __libc_current_sigrtmin F
> +GLIBC_2.38 __libc_free F
> +GLIBC_2.38 __libc_freeres F
> +GLIBC_2.38 __libc_init_first F
> +GLIBC_2.38 __libc_mallinfo F
> +GLIBC_2.38 __libc_malloc F
> +GLIBC_2.38 __libc_mallopt F
> +GLIBC_2.38 __libc_memalign F
> +GLIBC_2.38 __libc_pvalloc F
> +GLIBC_2.38 __libc_realloc F
> +GLIBC_2.38 __libc_single_threaded D 0x1
> +GLIBC_2.38 __libc_start_main F
> +GLIBC_2.38 __libc_valloc F
> +GLIBC_2.38 __longjmp_chk F
> +GLIBC_2.38 __lseek F
> +GLIBC_2.38 __mach_host_self_ D 0x4
> +GLIBC_2.38 __mach_msg F
> +GLIBC_2.38 __mach_msg_destroy F
> +GLIBC_2.38 __mach_port_allocate F
> +GLIBC_2.38 __mach_port_deallocate F
> +GLIBC_2.38 __mach_port_insert_right F
> +GLIBC_2.38 __mach_reply_port F
> +GLIBC_2.38 __mach_task_self_ D 0x4
> +GLIBC_2.38 __mach_thread_self F
> +GLIBC_2.38 __mbrlen F
> +GLIBC_2.38 __mbrtowc F
> +GLIBC_2.38 __mbsnrtowcs_chk F
> +GLIBC_2.38 __mbsrtowcs_chk F
> +GLIBC_2.38 __mbstowcs_chk F
> +GLIBC_2.38 __memcmpeq F
> +GLIBC_2.38 __memcpy_chk F
> +GLIBC_2.38 __memmove_chk F
> +GLIBC_2.38 __mempcpy F
> +GLIBC_2.38 __mempcpy_chk F
> +GLIBC_2.38 __memset_chk F
> +GLIBC_2.38 __mig_allocate F
> +GLIBC_2.38 __mig_dealloc_reply_port F
> +GLIBC_2.38 __mig_deallocate F
> +GLIBC_2.38 __mig_get_reply_port F
> +GLIBC_2.38 __mig_init F
> +GLIBC_2.38 __mig_put_reply_port F
> +GLIBC_2.38 __mig_strncpy F
> +GLIBC_2.38 __mmap F
> +GLIBC_2.38 __monstartup F
> +GLIBC_2.38 __nanosleep F
> +GLIBC_2.38 __newlocale F
> +GLIBC_2.38 __nl_langinfo_l F
> +GLIBC_2.38 __nss_configure_lookup F
> +GLIBC_2.38 __nss_hostname_digits_dots F
> +GLIBC_2.38 __obstack_printf_chk F
> +GLIBC_2.38 __obstack_vprintf_chk F
> +GLIBC_2.38 __open F
> +GLIBC_2.38 __open64 F
> +GLIBC_2.38 __open64_2 F
> +GLIBC_2.38 __open_2 F
> +GLIBC_2.38 __openat64_2 F
> +GLIBC_2.38 __openat_2 F
> +GLIBC_2.38 __overflow F
> +GLIBC_2.38 __pipe F
> +GLIBC_2.38 __poll F
> +GLIBC_2.38 __poll_chk F
> +GLIBC_2.38 __posix_getopt F
> +GLIBC_2.38 __ppoll_chk F
> +GLIBC_2.38 __pread64 F
> +GLIBC_2.38 __pread64_chk F
> +GLIBC_2.38 __pread_chk F
> +GLIBC_2.38 __printf_chk F
> +GLIBC_2.38 __printf_fp F
> +GLIBC_2.38 __profile_frequency F
> +GLIBC_2.38 __progname D 0x8
> +GLIBC_2.38 __progname_full D 0x8
> +GLIBC_2.38 __pthread_get_cleanup_stack F
> +GLIBC_2.38 __pthread_self F
> +GLIBC_2.38 __ptsname_r_chk F
> +GLIBC_2.38 __pwrite64 F
> +GLIBC_2.38 __rawmemchr F
> +GLIBC_2.38 __rcmd_errstr D 0x8
> +GLIBC_2.38 __read F
> +GLIBC_2.38 __read_chk F
> +GLIBC_2.38 __readlink_chk F
> +GLIBC_2.38 __readlinkat_chk F
> +GLIBC_2.38 __realpath_chk F
> +GLIBC_2.38 __recv_chk F
> +GLIBC_2.38 __recvfrom_chk F
> +GLIBC_2.38 __register_atfork F
> +GLIBC_2.38 __res_init F
> +GLIBC_2.38 __res_nclose F
> +GLIBC_2.38 __res_ninit F
> +GLIBC_2.38 __res_randomid F
> +GLIBC_2.38 __res_state F
> +GLIBC_2.38 __sbrk F
> +GLIBC_2.38 __sched_cpualloc F
> +GLIBC_2.38 __sched_cpucount F
> +GLIBC_2.38 __sched_cpufree F
> +GLIBC_2.38 __sched_get_priority_max F
> +GLIBC_2.38 __sched_get_priority_min F
> +GLIBC_2.38 __sched_getparam F
> +GLIBC_2.38 __sched_getscheduler F
> +GLIBC_2.38 __sched_setscheduler F
> +GLIBC_2.38 __sched_yield F
> +GLIBC_2.38 __select F
> +GLIBC_2.38 __send F
> +GLIBC_2.38 __setpgid F
> +GLIBC_2.38 __sigaction F
> +GLIBC_2.38 __signbit F
> +GLIBC_2.38 __signbitf F
> +GLIBC_2.38 __signbitl F
> +GLIBC_2.38 __sigpause F
> +GLIBC_2.38 __sigsetjmp F
> +GLIBC_2.38 __sigsuspend F
> +GLIBC_2.38 __snprintf_chk F
> +GLIBC_2.38 __sprintf_chk F
> +GLIBC_2.38 __stack_chk_fail F
> +GLIBC_2.38 __stpcpy F
> +GLIBC_2.38 __stpcpy_chk F
> +GLIBC_2.38 __stpncpy F
> +GLIBC_2.38 __stpncpy_chk F
> +GLIBC_2.38 __strcasecmp F
> +GLIBC_2.38 __strcasecmp_l F
> +GLIBC_2.38 __strcasestr F
> +GLIBC_2.38 __strcat_chk F
> +GLIBC_2.38 __strcoll_l F
> +GLIBC_2.38 __strcpy_chk F
> +GLIBC_2.38 __strdup F
> +GLIBC_2.38 __strerror_r F
> +GLIBC_2.38 __strfmon_l F
> +GLIBC_2.38 __strftime_l F
> +GLIBC_2.38 __strncasecmp_l F
> +GLIBC_2.38 __strncat_chk F
> +GLIBC_2.38 __strncpy_chk F
> +GLIBC_2.38 __strndup F
> +GLIBC_2.38 __strsep_g F
> +GLIBC_2.38 __strtod_internal F
> +GLIBC_2.38 __strtod_l F
> +GLIBC_2.38 __strtof128_internal F
> +GLIBC_2.38 __strtof_internal F
> +GLIBC_2.38 __strtof_l F
> +GLIBC_2.38 __strtok_r F
> +GLIBC_2.38 __strtol_internal F
> +GLIBC_2.38 __strtol_l F
> +GLIBC_2.38 __strtold_internal F
> +GLIBC_2.38 __strtold_l F
> +GLIBC_2.38 __strtoll_internal F
> +GLIBC_2.38 __strtoll_l F
> +GLIBC_2.38 __strtoul_internal F
> +GLIBC_2.38 __strtoul_l F
> +GLIBC_2.38 __strtoull_internal F
> +GLIBC_2.38 __strtoull_l F
> +GLIBC_2.38 __strverscmp F
> +GLIBC_2.38 __strxfrm_l F
> +GLIBC_2.38 __swprintf_chk F
> +GLIBC_2.38 __sysconf F
> +GLIBC_2.38 __syslog_chk F
> +GLIBC_2.38 __sysv_signal F
> +GLIBC_2.38 __timezone D 0x8
> +GLIBC_2.38 __toascii_l F
> +GLIBC_2.38 __tolower_l F
> +GLIBC_2.38 __toupper_l F
> +GLIBC_2.38 __towctrans F
> +GLIBC_2.38 __towctrans_l F
> +GLIBC_2.38 __towlower_l F
> +GLIBC_2.38 __towupper_l F
> +GLIBC_2.38 __ttyname_r_chk F
> +GLIBC_2.38 __tzname D 0x10
> +GLIBC_2.38 __uflow F
> +GLIBC_2.38 __underflow F
> +GLIBC_2.38 __uselocale F
> +GLIBC_2.38 __vasprintf_chk F
> +GLIBC_2.38 __vdprintf_chk F
> +GLIBC_2.38 __vfork F
> +GLIBC_2.38 __vfprintf_chk F
> +GLIBC_2.38 __vfscanf F
> +GLIBC_2.38 __vfwprintf_chk F
> +GLIBC_2.38 __vm_allocate F
> +GLIBC_2.38 __vm_deallocate F
> +GLIBC_2.38 __vm_page_size D 0x8
> +GLIBC_2.38 __vprintf_chk F
> +GLIBC_2.38 __vsnprintf F
> +GLIBC_2.38 __vsnprintf_chk F
> +GLIBC_2.38 __vsprintf_chk F
> +GLIBC_2.38 __vsscanf F
> +GLIBC_2.38 __vswprintf_chk F
> +GLIBC_2.38 __vsyslog_chk F
> +GLIBC_2.38 __vwprintf_chk F
> +GLIBC_2.38 __wait F
> +GLIBC_2.38 __waitpid F
> +GLIBC_2.38 __wcpcpy_chk F
> +GLIBC_2.38 __wcpncpy_chk F
> +GLIBC_2.38 __wcrtomb_chk F
> +GLIBC_2.38 __wcscasecmp_l F
> +GLIBC_2.38 __wcscat_chk F
> +GLIBC_2.38 __wcscoll_l F
> +GLIBC_2.38 __wcscpy_chk F
> +GLIBC_2.38 __wcsftime_l F
> +GLIBC_2.38 __wcsncasecmp_l F
> +GLIBC_2.38 __wcsncat_chk F
> +GLIBC_2.38 __wcsncpy_chk F
> +GLIBC_2.38 __wcsnrtombs_chk F
> +GLIBC_2.38 __wcsrtombs_chk F
> +GLIBC_2.38 __wcstod_internal F
> +GLIBC_2.38 __wcstod_l F
> +GLIBC_2.38 __wcstof128_internal F
> +GLIBC_2.38 __wcstof_internal F
> +GLIBC_2.38 __wcstof_l F
> +GLIBC_2.38 __wcstol_internal F
> +GLIBC_2.38 __wcstol_l F
> +GLIBC_2.38 __wcstold_internal F
> +GLIBC_2.38 __wcstold_l F
> +GLIBC_2.38 __wcstoll_internal F
> +GLIBC_2.38 __wcstoll_l F
> +GLIBC_2.38 __wcstombs_chk F
> +GLIBC_2.38 __wcstoul_internal F
> +GLIBC_2.38 __wcstoul_l F
> +GLIBC_2.38 __wcstoull_internal F
> +GLIBC_2.38 __wcstoull_l F
> +GLIBC_2.38 __wcsxfrm_l F
> +GLIBC_2.38 __wctomb_chk F
> +GLIBC_2.38 __wctrans_l F
> +GLIBC_2.38 __wctype_l F
> +GLIBC_2.38 __wmemcpy_chk F
> +GLIBC_2.38 __wmemmove_chk F
> +GLIBC_2.38 __wmempcpy_chk F
> +GLIBC_2.38 __wmemset_chk F
> +GLIBC_2.38 __woverflow F
> +GLIBC_2.38 __wprintf_chk F
> +GLIBC_2.38 __write F
> +GLIBC_2.38 __writev F
> +GLIBC_2.38 __wuflow F
> +GLIBC_2.38 __wunderflow F
> +GLIBC_2.38 __x86_get_cpuid_feature_leaf F
> +GLIBC_2.38 __xpg_basename F
> +GLIBC_2.38 __xpg_sigpause F
> +GLIBC_2.38 __xpg_strerror_r F
> +GLIBC_2.38 _dl_find_object F
> +GLIBC_2.38 _dl_mcount_wrapper F
> +GLIBC_2.38 _dl_mcount_wrapper_check F
> +GLIBC_2.38 _environ D 0x8
> +GLIBC_2.38 _exit F
> +GLIBC_2.38 _flushlbf F
> +GLIBC_2.38 _hurd_canonicalize_directory_name_internal F
> +GLIBC_2.38 _hurd_critical_section_lock F
> +GLIBC_2.38 _hurd_critical_section_unlock F
> +GLIBC_2.38 _hurd_device_master D 0x4
> +GLIBC_2.38 _hurd_dtable D 0x8
> +GLIBC_2.38 _hurd_dtable_lock D 0x28
> +GLIBC_2.38 _hurd_dtablesize D 0x4
> +GLIBC_2.38 _hurd_exception2signal F
> +GLIBC_2.38 _hurd_exec F
> +GLIBC_2.38 _hurd_exec_paths F
> +GLIBC_2.38 _hurd_fd_error F
> +GLIBC_2.38 _hurd_fd_error_signal F
> +GLIBC_2.38 _hurd_fd_get F
> +GLIBC_2.38 _hurd_host_priv D 0x4
> +GLIBC_2.38 _hurd_init F
> +GLIBC_2.38 _hurd_intern_fd F
> +GLIBC_2.38 _hurd_intr_rpc_mach_msg F
> +GLIBC_2.38 _hurd_libc_proc_init F
> +GLIBC_2.38 _hurd_msgport D 0x4
> +GLIBC_2.38 _hurd_port_cleanup F
> +GLIBC_2.38 _hurd_port_free F
> +GLIBC_2.38 _hurd_port_get F
> +GLIBC_2.38 _hurd_port_init F
> +GLIBC_2.38 _hurd_port_locked_get F
> +GLIBC_2.38 _hurd_port_locked_set F
> +GLIBC_2.38 _hurd_port_move F
> +GLIBC_2.38 _hurd_port_set F
> +GLIBC_2.38 _hurd_ports D 0x8
> +GLIBC_2.38 _hurd_ports_use F
> +GLIBC_2.38 _hurd_proc_init F
> +GLIBC_2.38 _hurd_raise_signal F
> +GLIBC_2.38 _hurd_self_sigstate F
> +GLIBC_2.38 _hurd_thread_sigstate F
> +GLIBC_2.38 _hurd_userlink_clear F
> +GLIBC_2.38 _hurd_userlink_link F
> +GLIBC_2.38 _hurd_userlink_unlink F
> +GLIBC_2.38 _hurdsig_fault_catch_exception_raise F
> +GLIBC_2.38 _hurdsig_fault_env D 0x50
> +GLIBC_2.38 _hurdsig_fault_preemptor D 0x30
> +GLIBC_2.38 _hurdsig_interrupt_timeout D 0x4
> +GLIBC_2.38 _libc_intl_domainname D 0x5
> +GLIBC_2.38 _longjmp F
> +GLIBC_2.38 _mcleanup F
> +GLIBC_2.38 _mcount F
> +GLIBC_2.38 _nl_default_dirname D 0xe
> +GLIBC_2.38 _nl_domain_bindings D 0x8
> +GLIBC_2.38 _nl_msg_cat_cntr D 0x4
> +GLIBC_2.38 _obstack_allocated_p F
> +GLIBC_2.38 _obstack_begin F
> +GLIBC_2.38 _obstack_begin_1 F
> +GLIBC_2.38 _obstack_free F
> +GLIBC_2.38 _obstack_memory_used F
> +GLIBC_2.38 _obstack_newchunk F
> +GLIBC_2.38 _res D 0x238
> +GLIBC_2.38 _res_hconf D 0x48
> +GLIBC_2.38 _setjmp F
> +GLIBC_2.38 _tolower F
> +GLIBC_2.38 _toupper F
> +GLIBC_2.38 a64l F
> +GLIBC_2.38 abort F
> +GLIBC_2.38 abs F
> +GLIBC_2.38 accept F
> +GLIBC_2.38 accept4 F
> +GLIBC_2.38 access F
> +GLIBC_2.38 acct F
> +GLIBC_2.38 addmntent F
> +GLIBC_2.38 addseverity F
> +GLIBC_2.38 adjtime F
> +GLIBC_2.38 alarm F
> +GLIBC_2.38 aligned_alloc F
> +GLIBC_2.38 alphasort F
> +GLIBC_2.38 alphasort64 F
> +GLIBC_2.38 arc4random F
> +GLIBC_2.38 arc4random_buf F
> +GLIBC_2.38 arc4random_uniform F
> +GLIBC_2.38 argp_err_exit_status D 0x4
> +GLIBC_2.38 argp_error F
> +GLIBC_2.38 argp_failure F
> +GLIBC_2.38 argp_help F
> +GLIBC_2.38 argp_parse F
> +GLIBC_2.38 argp_program_bug_address D 0x8
> +GLIBC_2.38 argp_program_version D 0x8
> +GLIBC_2.38 argp_program_version_hook D 0x8
> +GLIBC_2.38 argp_state_help F
> +GLIBC_2.38 argp_usage F
> +GLIBC_2.38 argz_add F
> +GLIBC_2.38 argz_add_sep F
> +GLIBC_2.38 argz_append F
> +GLIBC_2.38 argz_count F
> +GLIBC_2.38 argz_create F
> +GLIBC_2.38 argz_create_sep F
> +GLIBC_2.38 argz_delete F
> +GLIBC_2.38 argz_extract F
> +GLIBC_2.38 argz_insert F
> +GLIBC_2.38 argz_next F
> +GLIBC_2.38 argz_replace F
> +GLIBC_2.38 argz_stringify F
> +GLIBC_2.38 asctime F
> +GLIBC_2.38 asctime_r F
> +GLIBC_2.38 asprintf F
> +GLIBC_2.38 atof F
> +GLIBC_2.38 atoi F
> +GLIBC_2.38 atol F
> +GLIBC_2.38 atoll F
> +GLIBC_2.38 backtrace F
> +GLIBC_2.38 backtrace_symbols F
> +GLIBC_2.38 backtrace_symbols_fd F
> +GLIBC_2.38 basename F
> +GLIBC_2.38 bcmp F
> +GLIBC_2.38 bcopy F
> +GLIBC_2.38 bind F
> +GLIBC_2.38 bind_textdomain_codeset F
> +GLIBC_2.38 bindresvport F
> +GLIBC_2.38 bindtextdomain F
> +GLIBC_2.38 brk F
> +GLIBC_2.38 bsd_signal F
> +GLIBC_2.38 bsearch F
> +GLIBC_2.38 btowc F
> +GLIBC_2.38 bzero F
> +GLIBC_2.38 c16rtomb F
> +GLIBC_2.38 c32rtomb F
> +GLIBC_2.38 c8rtomb F
> +GLIBC_2.38 calloc F
> +GLIBC_2.38 canonicalize_file_name F
> +GLIBC_2.38 catclose F
> +GLIBC_2.38 catgets F
> +GLIBC_2.38 catopen F
> +GLIBC_2.38 cfgetispeed F
> +GLIBC_2.38 cfgetospeed F
> +GLIBC_2.38 cfmakeraw F
> +GLIBC_2.38 cfsetispeed F
> +GLIBC_2.38 cfsetospeed F
> +GLIBC_2.38 cfsetspeed F
> +GLIBC_2.38 chdir F
> +GLIBC_2.38 chflags F
> +GLIBC_2.38 chmod F
> +GLIBC_2.38 chown F
> +GLIBC_2.38 chroot F
> +GLIBC_2.38 clearenv F
> +GLIBC_2.38 clearerr F
> +GLIBC_2.38 clearerr_unlocked F
> +GLIBC_2.38 clock F
> +GLIBC_2.38 clock_getcpuclockid F
> +GLIBC_2.38 clock_getres F
> +GLIBC_2.38 clock_gettime F
> +GLIBC_2.38 clock_nanosleep F
> +GLIBC_2.38 clock_settime F
> +GLIBC_2.38 close F
> +GLIBC_2.38 close_range F
> +GLIBC_2.38 closedir F
> +GLIBC_2.38 closefrom F
> +GLIBC_2.38 closelog F
> +GLIBC_2.38 confstr F
> +GLIBC_2.38 connect F
> +GLIBC_2.38 copy_file_range F
> +GLIBC_2.38 copysign F
> +GLIBC_2.38 copysignf F
> +GLIBC_2.38 copysignl F
> +GLIBC_2.38 creat F
> +GLIBC_2.38 creat64 F
> +GLIBC_2.38 ctermid F
> +GLIBC_2.38 ctime F
> +GLIBC_2.38 ctime_r F
> +GLIBC_2.38 cuserid F
> +GLIBC_2.38 daemon F
> +GLIBC_2.38 daylight D 0x4
> +GLIBC_2.38 dcgettext F
> +GLIBC_2.38 dcngettext F
> +GLIBC_2.38 dgettext F
> +GLIBC_2.38 difftime F
> +GLIBC_2.38 directory_name_split F
> +GLIBC_2.38 dirfd F
> +GLIBC_2.38 dirname F
> +GLIBC_2.38 div F
> +GLIBC_2.38 dl_iterate_phdr F
> +GLIBC_2.38 dladdr F
> +GLIBC_2.38 dladdr1 F
> +GLIBC_2.38 dlclose F
> +GLIBC_2.38 dlerror F
> +GLIBC_2.38 dlinfo F
> +GLIBC_2.38 dlmopen F
> +GLIBC_2.38 dlopen F
> +GLIBC_2.38 dlsym F
> +GLIBC_2.38 dlvsym F
> +GLIBC_2.38 dn_comp F
> +GLIBC_2.38 dn_expand F
> +GLIBC_2.38 dn_skipname F
> +GLIBC_2.38 dngettext F
> +GLIBC_2.38 dprintf F
> +GLIBC_2.38 drand48 F
> +GLIBC_2.38 drand48_r F
> +GLIBC_2.38 dup F
> +GLIBC_2.38 dup2 F
> +GLIBC_2.38 dup3 F
> +GLIBC_2.38 duplocale F
> +GLIBC_2.38 dysize F
> +GLIBC_2.38 eaccess F
> +GLIBC_2.38 ecvt F
> +GLIBC_2.38 ecvt_r F
> +GLIBC_2.38 endaliasent F
> +GLIBC_2.38 endfsent F
> +GLIBC_2.38 endgrent F
> +GLIBC_2.38 endhostent F
> +GLIBC_2.38 endmntent F
> +GLIBC_2.38 endnetent F
> +GLIBC_2.38 endnetgrent F
> +GLIBC_2.38 endprotoent F
> +GLIBC_2.38 endpwent F
> +GLIBC_2.38 endrpcent F
> +GLIBC_2.38 endservent F
> +GLIBC_2.38 endsgent F
> +GLIBC_2.38 endspent F
> +GLIBC_2.38 endttyent F
> +GLIBC_2.38 endusershell F
> +GLIBC_2.38 endutent F
> +GLIBC_2.38 endutxent F
> +GLIBC_2.38 environ D 0x8
> +GLIBC_2.38 envz_add F
> +GLIBC_2.38 envz_entry F
> +GLIBC_2.38 envz_get F
> +GLIBC_2.38 envz_merge F
> +GLIBC_2.38 envz_remove F
> +GLIBC_2.38 envz_strip F
> +GLIBC_2.38 erand48 F
> +GLIBC_2.38 erand48_r F
> +GLIBC_2.38 err F
> +GLIBC_2.38 error F
> +GLIBC_2.38 error_at_line F
> +GLIBC_2.38 error_message_count D 0x4
> +GLIBC_2.38 error_one_per_line D 0x4
> +GLIBC_2.38 error_print_progname D 0x8
> +GLIBC_2.38 errx F
> +GLIBC_2.38 ether_aton F
> +GLIBC_2.38 ether_aton_r F
> +GLIBC_2.38 ether_hostton F
> +GLIBC_2.38 ether_line F
> +GLIBC_2.38 ether_ntoa F
> +GLIBC_2.38 ether_ntoa_r F
> +GLIBC_2.38 ether_ntohost F
> +GLIBC_2.38 euidaccess F
> +GLIBC_2.38 evc_wait F
> +GLIBC_2.38 execl F
> +GLIBC_2.38 execle F
> +GLIBC_2.38 execlp F
> +GLIBC_2.38 execv F
> +GLIBC_2.38 execve F
> +GLIBC_2.38 execveat F
> +GLIBC_2.38 execvp F
> +GLIBC_2.38 execvpe F
> +GLIBC_2.38 exit F
> +GLIBC_2.38 explicit_bzero F
> +GLIBC_2.38 faccessat F
> +GLIBC_2.38 fchdir F
> +GLIBC_2.38 fchflags F
> +GLIBC_2.38 fchmod F
> +GLIBC_2.38 fchmodat F
> +GLIBC_2.38 fchown F
> +GLIBC_2.38 fchownat F
> +GLIBC_2.38 fclose F
> +GLIBC_2.38 fcloseall F
> +GLIBC_2.38 fcntl F
> +GLIBC_2.38 fcntl64 F
> +GLIBC_2.38 fcvt F
> +GLIBC_2.38 fcvt_r F
> +GLIBC_2.38 fdatasync F
> +GLIBC_2.38 fdopen F
> +GLIBC_2.38 fdopendir F
> +GLIBC_2.38 feof F
> +GLIBC_2.38 feof_unlocked F
> +GLIBC_2.38 ferror F
> +GLIBC_2.38 ferror_unlocked F
> +GLIBC_2.38 fexecve F
> +GLIBC_2.38 fflush F
> +GLIBC_2.38 fflush_unlocked F
> +GLIBC_2.38 ffs F
> +GLIBC_2.38 ffsl F
> +GLIBC_2.38 ffsll F
> +GLIBC_2.38 fgetc F
> +GLIBC_2.38 fgetc_unlocked F
> +GLIBC_2.38 fgetgrent F
> +GLIBC_2.38 fgetgrent_r F
> +GLIBC_2.38 fgetpos F
> +GLIBC_2.38 fgetpos64 F
> +GLIBC_2.38 fgetpwent F
> +GLIBC_2.38 fgetpwent_r F
> +GLIBC_2.38 fgets F
> +GLIBC_2.38 fgets_unlocked F
> +GLIBC_2.38 fgetsgent F
> +GLIBC_2.38 fgetsgent_r F
> +GLIBC_2.38 fgetspent F
> +GLIBC_2.38 fgetspent_r F
> +GLIBC_2.38 fgetwc F
> +GLIBC_2.38 fgetwc_unlocked F
> +GLIBC_2.38 fgetws F
> +GLIBC_2.38 fgetws_unlocked F
> +GLIBC_2.38 fgetxattr F
> +GLIBC_2.38 file_name_lookup F
> +GLIBC_2.38 file_name_lookup_under F
> +GLIBC_2.38 file_name_path_lookup F
> +GLIBC_2.38 file_name_split F
> +GLIBC_2.38 fileno F
> +GLIBC_2.38 fileno_unlocked F
> +GLIBC_2.38 finite F
> +GLIBC_2.38 finitef F
> +GLIBC_2.38 finitel F
> +GLIBC_2.38 flistxattr F
> +GLIBC_2.38 flock F
> +GLIBC_2.38 flockfile F
> +GLIBC_2.38 fmemopen F
> +GLIBC_2.38 fmtmsg F
> +GLIBC_2.38 fnmatch F
> +GLIBC_2.38 fopen F
> +GLIBC_2.38 fopen64 F
> +GLIBC_2.38 fopencookie F
> +GLIBC_2.38 fopenport F
> +GLIBC_2.38 fork F
> +GLIBC_2.38 forkpty F
> +GLIBC_2.38 fpathconf F
> +GLIBC_2.38 fprintf F
> +GLIBC_2.38 fputc F
> +GLIBC_2.38 fputc_unlocked F
> +GLIBC_2.38 fputs F
> +GLIBC_2.38 fputs_unlocked F
> +GLIBC_2.38 fputwc F
> +GLIBC_2.38 fputwc_unlocked F
> +GLIBC_2.38 fputws F
> +GLIBC_2.38 fputws_unlocked F
> +GLIBC_2.38 fread F
> +GLIBC_2.38 fread_unlocked F
> +GLIBC_2.38 free F
> +GLIBC_2.38 freeaddrinfo F
> +GLIBC_2.38 freeifaddrs F
> +GLIBC_2.38 freelocale F
> +GLIBC_2.38 fremovexattr F
> +GLIBC_2.38 freopen F
> +GLIBC_2.38 freopen64 F
> +GLIBC_2.38 frexp F
> +GLIBC_2.38 frexpf F
> +GLIBC_2.38 frexpl F
> +GLIBC_2.38 fscanf F
> +GLIBC_2.38 fseek F
> +GLIBC_2.38 fseeko F
> +GLIBC_2.38 fseeko64 F
> +GLIBC_2.38 fsetpos F
> +GLIBC_2.38 fsetpos64 F
> +GLIBC_2.38 fsetxattr F
> +GLIBC_2.38 fstat F
> +GLIBC_2.38 fstat64 F
> +GLIBC_2.38 fstatat F
> +GLIBC_2.38 fstatat64 F
> +GLIBC_2.38 fstatfs F
> +GLIBC_2.38 fstatfs64 F
> +GLIBC_2.38 fstatvfs F
> +GLIBC_2.38 fstatvfs64 F
> +GLIBC_2.38 fsync F
> +GLIBC_2.38 ftell F
> +GLIBC_2.38 ftello F
> +GLIBC_2.38 ftello64 F
> +GLIBC_2.38 ftime F
> +GLIBC_2.38 ftok F
> +GLIBC_2.38 ftruncate F
> +GLIBC_2.38 ftruncate64 F
> +GLIBC_2.38 ftrylockfile F
> +GLIBC_2.38 fts64_children F
> +GLIBC_2.38 fts64_close F
> +GLIBC_2.38 fts64_open F
> +GLIBC_2.38 fts64_read F
> +GLIBC_2.38 fts64_set F
> +GLIBC_2.38 fts_children F
> +GLIBC_2.38 fts_close F
> +GLIBC_2.38 fts_open F
> +GLIBC_2.38 fts_read F
> +GLIBC_2.38 fts_set F
> +GLIBC_2.38 ftw F
> +GLIBC_2.38 ftw64 F
> +GLIBC_2.38 funlockfile F
> +GLIBC_2.38 futimens F
> +GLIBC_2.38 futimes F
> +GLIBC_2.38 futimesat F
> +GLIBC_2.38 fwide F
> +GLIBC_2.38 fwprintf F
> +GLIBC_2.38 fwrite F
> +GLIBC_2.38 fwrite_unlocked F
> +GLIBC_2.38 fwscanf F
> +GLIBC_2.38 gai_strerror F
> +GLIBC_2.38 gcvt F
> +GLIBC_2.38 get_avphys_pages F
> +GLIBC_2.38 get_current_dir_name F
> +GLIBC_2.38 get_nprocs F
> +GLIBC_2.38 get_nprocs_conf F
> +GLIBC_2.38 get_phys_pages F
> +GLIBC_2.38 get_privileged_ports F
> +GLIBC_2.38 getaddrinfo F
> +GLIBC_2.38 getaliasbyname F
> +GLIBC_2.38 getaliasbyname_r F
> +GLIBC_2.38 getaliasent F
> +GLIBC_2.38 getaliasent_r F
> +GLIBC_2.38 getauth F
> +GLIBC_2.38 getauxval F
> +GLIBC_2.38 getc F
> +GLIBC_2.38 getc_unlocked F
> +GLIBC_2.38 getchar F
> +GLIBC_2.38 getchar_unlocked F
> +GLIBC_2.38 getcontext F
> +GLIBC_2.38 getcrdir F
> +GLIBC_2.38 getcttyid F
> +GLIBC_2.38 getcwd F
> +GLIBC_2.38 getcwdir F
> +GLIBC_2.38 getdate F
> +GLIBC_2.38 getdate_err D 0x4
> +GLIBC_2.38 getdate_r F
> +GLIBC_2.38 getdelim F
> +GLIBC_2.38 getdirentries F
> +GLIBC_2.38 getdirentries64 F
> +GLIBC_2.38 getdomainname F
> +GLIBC_2.38 getdport F
> +GLIBC_2.38 getdtablesize F
> +GLIBC_2.38 getegid F
> +GLIBC_2.38 getentropy F
> +GLIBC_2.38 getenv F
> +GLIBC_2.38 geteuid F
> +GLIBC_2.38 geteuids F
> +GLIBC_2.38 getfsent F
> +GLIBC_2.38 getfsfile F
> +GLIBC_2.38 getfsspec F
> +GLIBC_2.38 getgid F
> +GLIBC_2.38 getgrent F
> +GLIBC_2.38 getgrent_r F
> +GLIBC_2.38 getgrgid F
> +GLIBC_2.38 getgrgid_r F
> +GLIBC_2.38 getgrnam F
> +GLIBC_2.38 getgrnam_r F
> +GLIBC_2.38 getgrouplist F
> +GLIBC_2.38 getgroups F
> +GLIBC_2.38 gethostbyaddr F
> +GLIBC_2.38 gethostbyaddr_r F
> +GLIBC_2.38 gethostbyname F
> +GLIBC_2.38 gethostbyname2 F
> +GLIBC_2.38 gethostbyname2_r F
> +GLIBC_2.38 gethostbyname_r F
> +GLIBC_2.38 gethostent F
> +GLIBC_2.38 gethostent_r F
> +GLIBC_2.38 gethostid F
> +GLIBC_2.38 gethostname F
> +GLIBC_2.38 getifaddrs F
> +GLIBC_2.38 getipv4sourcefilter F
> +GLIBC_2.38 getitimer F
> +GLIBC_2.38 getline F
> +GLIBC_2.38 getloadavg F
> +GLIBC_2.38 getlogin F
> +GLIBC_2.38 getlogin_r F
> +GLIBC_2.38 getmntent F
> +GLIBC_2.38 getmntent_r F
> +GLIBC_2.38 getnameinfo F
> +GLIBC_2.38 getnetbyaddr F
> +GLIBC_2.38 getnetbyaddr_r F
> +GLIBC_2.38 getnetbyname F
> +GLIBC_2.38 getnetbyname_r F
> +GLIBC_2.38 getnetent F
> +GLIBC_2.38 getnetent_r F
> +GLIBC_2.38 getnetgrent F
> +GLIBC_2.38 getnetgrent_r F
> +GLIBC_2.38 getopt F
> +GLIBC_2.38 getopt_long F
> +GLIBC_2.38 getopt_long_only F
> +GLIBC_2.38 getpagesize F
> +GLIBC_2.38 getpass F
> +GLIBC_2.38 getpeername F
> +GLIBC_2.38 getpgid F
> +GLIBC_2.38 getpgrp F
> +GLIBC_2.38 getpid F
> +GLIBC_2.38 getppid F
> +GLIBC_2.38 getpriority F
> +GLIBC_2.38 getproc F
> +GLIBC_2.38 getprotobyname F
> +GLIBC_2.38 getprotobyname_r F
> +GLIBC_2.38 getprotobynumber F
> +GLIBC_2.38 getprotobynumber_r F
> +GLIBC_2.38 getprotoent F
> +GLIBC_2.38 getprotoent_r F
> +GLIBC_2.38 getpt F
> +GLIBC_2.38 getpw F
> +GLIBC_2.38 getpwent F
> +GLIBC_2.38 getpwent_r F
> +GLIBC_2.38 getpwnam F
> +GLIBC_2.38 getpwnam_r F
> +GLIBC_2.38 getpwuid F
> +GLIBC_2.38 getpwuid_r F
> +GLIBC_2.38 getrandom F
> +GLIBC_2.38 getresgid F
> +GLIBC_2.38 getresuid F
> +GLIBC_2.38 getrlimit F
> +GLIBC_2.38 getrlimit64 F
> +GLIBC_2.38 getrpcbyname F
> +GLIBC_2.38 getrpcbyname_r F
> +GLIBC_2.38 getrpcbynumber F
> +GLIBC_2.38 getrpcbynumber_r F
> +GLIBC_2.38 getrpcent F
> +GLIBC_2.38 getrpcent_r F
> +GLIBC_2.38 getrusage F
> +GLIBC_2.38 gets F
> +GLIBC_2.38 getservbyname F
> +GLIBC_2.38 getservbyname_r F
> +GLIBC_2.38 getservbyport F
> +GLIBC_2.38 getservbyport_r F
> +GLIBC_2.38 getservent F
> +GLIBC_2.38 getservent_r F
> +GLIBC_2.38 getsgent F
> +GLIBC_2.38 getsgent_r F
> +GLIBC_2.38 getsgnam F
> +GLIBC_2.38 getsgnam_r F
> +GLIBC_2.38 getsid F
> +GLIBC_2.38 getsockname F
> +GLIBC_2.38 getsockopt F
> +GLIBC_2.38 getsourcefilter F
> +GLIBC_2.38 getspent F
> +GLIBC_2.38 getspent_r F
> +GLIBC_2.38 getspnam F
> +GLIBC_2.38 getspnam_r F
> +GLIBC_2.38 getsubopt F
> +GLIBC_2.38 gettext F
> +GLIBC_2.38 gettimeofday F
> +GLIBC_2.38 getttyent F
> +GLIBC_2.38 getttynam F
> +GLIBC_2.38 getuid F
> +GLIBC_2.38 getumask F
> +GLIBC_2.38 getusershell F
> +GLIBC_2.38 getutent F
> +GLIBC_2.38 getutent_r F
> +GLIBC_2.38 getutid F
> +GLIBC_2.38 getutid_r F
> +GLIBC_2.38 getutline F
> +GLIBC_2.38 getutline_r F
> +GLIBC_2.38 getutmp F
> +GLIBC_2.38 getutmpx F
> +GLIBC_2.38 getutxent F
> +GLIBC_2.38 getutxid F
> +GLIBC_2.38 getutxline F
> +GLIBC_2.38 getw F
> +GLIBC_2.38 getwc F
> +GLIBC_2.38 getwc_unlocked F
> +GLIBC_2.38 getwchar F
> +GLIBC_2.38 getwchar_unlocked F
> +GLIBC_2.38 getwd F
> +GLIBC_2.38 getxattr F
> +GLIBC_2.38 glob F
> +GLIBC_2.38 glob64 F
> +GLIBC_2.38 glob_pattern_p F
> +GLIBC_2.38 globfree F
> +GLIBC_2.38 globfree64 F
> +GLIBC_2.38 gmtime F
> +GLIBC_2.38 gmtime_r F
> +GLIBC_2.38 gnu_dev_major F
> +GLIBC_2.38 gnu_dev_makedev F
> +GLIBC_2.38 gnu_dev_minor F
> +GLIBC_2.38 gnu_get_libc_release F
> +GLIBC_2.38 gnu_get_libc_version F
> +GLIBC_2.38 grantpt F
> +GLIBC_2.38 group_member F
> +GLIBC_2.38 gsignal F
> +GLIBC_2.38 gtty F
> +GLIBC_2.38 h_errlist D 0x28
> +GLIBC_2.38 h_nerr D 0x4
> +GLIBC_2.38 hasmntopt F
> +GLIBC_2.38 hcreate F
> +GLIBC_2.38 hcreate_r F
> +GLIBC_2.38 hdestroy F
> +GLIBC_2.38 hdestroy_r F
> +GLIBC_2.38 herror F
> +GLIBC_2.38 hsearch F
> +GLIBC_2.38 hsearch_r F
> +GLIBC_2.38 hstrerror F
> +GLIBC_2.38 htonl F
> +GLIBC_2.38 htons F
> +GLIBC_2.38 hurd_catch_signal F
> +GLIBC_2.38 hurd_check_cancel F
> +GLIBC_2.38 hurd_directory_name_split F
> +GLIBC_2.38 hurd_file_name_lookup F
> +GLIBC_2.38 hurd_file_name_lookup_retry F
> +GLIBC_2.38 hurd_file_name_path_lookup F
> +GLIBC_2.38 hurd_file_name_split F
> +GLIBC_2.38 hurd_preempt_signals F
> +GLIBC_2.38 hurd_safe_copyin F
> +GLIBC_2.38 hurd_safe_copyout F
> +GLIBC_2.38 hurd_safe_memmove F
> +GLIBC_2.38 hurd_safe_memset F
> +GLIBC_2.38 hurd_sig_post F
> +GLIBC_2.38 hurd_thread_cancel F
> +GLIBC_2.38 hurd_thread_self F
> +GLIBC_2.38 hurd_unpreempt_signals F
> +GLIBC_2.38 iconv F
> +GLIBC_2.38 iconv_close F
> +GLIBC_2.38 iconv_open F
> +GLIBC_2.38 if_freenameindex F
> +GLIBC_2.38 if_indextoname F
> +GLIBC_2.38 if_nameindex F
> +GLIBC_2.38 if_nametoindex F
> +GLIBC_2.38 imaxabs F
> +GLIBC_2.38 imaxdiv F
> +GLIBC_2.38 in6addr_any D 0x10
> +GLIBC_2.38 in6addr_loopback D 0x10
> +GLIBC_2.38 index F
> +GLIBC_2.38 inet6_opt_append F
> +GLIBC_2.38 inet6_opt_find F
> +GLIBC_2.38 inet6_opt_finish F
> +GLIBC_2.38 inet6_opt_get_val F
> +GLIBC_2.38 inet6_opt_init F
> +GLIBC_2.38 inet6_opt_next F
> +GLIBC_2.38 inet6_opt_set_val F
> +GLIBC_2.38 inet6_option_alloc F
> +GLIBC_2.38 inet6_option_append F
> +GLIBC_2.38 inet6_option_find F
> +GLIBC_2.38 inet6_option_init F
> +GLIBC_2.38 inet6_option_next F
> +GLIBC_2.38 inet6_option_space F
> +GLIBC_2.38 inet6_rth_add F
> +GLIBC_2.38 inet6_rth_getaddr F
> +GLIBC_2.38 inet6_rth_init F
> +GLIBC_2.38 inet6_rth_reverse F
> +GLIBC_2.38 inet6_rth_segments F
> +GLIBC_2.38 inet6_rth_space F
> +GLIBC_2.38 inet_addr F
> +GLIBC_2.38 inet_aton F
> +GLIBC_2.38 inet_lnaof F
> +GLIBC_2.38 inet_makeaddr F
> +GLIBC_2.38 inet_netof F
> +GLIBC_2.38 inet_network F
> +GLIBC_2.38 inet_nsap_addr F
> +GLIBC_2.38 inet_nsap_ntoa F
> +GLIBC_2.38 inet_ntoa F
> +GLIBC_2.38 inet_ntop F
> +GLIBC_2.38 inet_pton F
> +GLIBC_2.38 initgroups F
> +GLIBC_2.38 initstate F
> +GLIBC_2.38 initstate_r F
> +GLIBC_2.38 innetgr F
> +GLIBC_2.38 insque F
> +GLIBC_2.38 ioctl F
> +GLIBC_2.38 iruserok F
> +GLIBC_2.38 iruserok_af F
> +GLIBC_2.38 isalnum F
> +GLIBC_2.38 isalnum_l F
> +GLIBC_2.38 isalpha F
> +GLIBC_2.38 isalpha_l F
> +GLIBC_2.38 isascii F
> +GLIBC_2.38 isatty F
> +GLIBC_2.38 isblank F
> +GLIBC_2.38 isblank_l F
> +GLIBC_2.38 iscntrl F
> +GLIBC_2.38 iscntrl_l F
> +GLIBC_2.38 isctype F
> +GLIBC_2.38 isdigit F
> +GLIBC_2.38 isdigit_l F
> +GLIBC_2.38 isfdtype F
> +GLIBC_2.38 isgraph F
> +GLIBC_2.38 isgraph_l F
> +GLIBC_2.38 isinf F
> +GLIBC_2.38 isinff F
> +GLIBC_2.38 isinfl F
> +GLIBC_2.38 islower F
> +GLIBC_2.38 islower_l F
> +GLIBC_2.38 isnan F
> +GLIBC_2.38 isnanf F
> +GLIBC_2.38 isnanl F
> +GLIBC_2.38 isprint F
> +GLIBC_2.38 isprint_l F
> +GLIBC_2.38 ispunct F
> +GLIBC_2.38 ispunct_l F
> +GLIBC_2.38 isspace F
> +GLIBC_2.38 isspace_l F
> +GLIBC_2.38 isupper F
> +GLIBC_2.38 isupper_l F
> +GLIBC_2.38 iswalnum F
> +GLIBC_2.38 iswalnum_l F
> +GLIBC_2.38 iswalpha F
> +GLIBC_2.38 iswalpha_l F
> +GLIBC_2.38 iswblank F
> +GLIBC_2.38 iswblank_l F
> +GLIBC_2.38 iswcntrl F
> +GLIBC_2.38 iswcntrl_l F
> +GLIBC_2.38 iswctype F
> +GLIBC_2.38 iswctype_l F
> +GLIBC_2.38 iswdigit F
> +GLIBC_2.38 iswdigit_l F
> +GLIBC_2.38 iswgraph F
> +GLIBC_2.38 iswgraph_l F
> +GLIBC_2.38 iswlower F
> +GLIBC_2.38 iswlower_l F
> +GLIBC_2.38 iswprint F
> +GLIBC_2.38 iswprint_l F
> +GLIBC_2.38 iswpunct F
> +GLIBC_2.38 iswpunct_l F
> +GLIBC_2.38 iswspace F
> +GLIBC_2.38 iswspace_l F
> +GLIBC_2.38 iswupper F
> +GLIBC_2.38 iswupper_l F
> +GLIBC_2.38 iswxdigit F
> +GLIBC_2.38 iswxdigit_l F
> +GLIBC_2.38 isxdigit F
> +GLIBC_2.38 isxdigit_l F
> +GLIBC_2.38 jrand48 F
> +GLIBC_2.38 jrand48_r F
> +GLIBC_2.38 kill F
> +GLIBC_2.38 killpg F
> +GLIBC_2.38 l64a F
> +GLIBC_2.38 labs F
> +GLIBC_2.38 lchmod F
> +GLIBC_2.38 lchown F
> +GLIBC_2.38 lckpwdf F
> +GLIBC_2.38 lcong48 F
> +GLIBC_2.38 lcong48_r F
> +GLIBC_2.38 ldexp F
> +GLIBC_2.38 ldexpf F
> +GLIBC_2.38 ldexpl F
> +GLIBC_2.38 ldiv F
> +GLIBC_2.38 lfind F
> +GLIBC_2.38 lgetxattr F
> +GLIBC_2.38 link F
> +GLIBC_2.38 linkat F
> +GLIBC_2.38 listen F
> +GLIBC_2.38 listxattr F
> +GLIBC_2.38 llabs F
> +GLIBC_2.38 lldiv F
> +GLIBC_2.38 llistxattr F
> +GLIBC_2.38 localeconv F
> +GLIBC_2.38 localtime F
> +GLIBC_2.38 localtime_r F
> +GLIBC_2.38 lockf F
> +GLIBC_2.38 lockf64 F
> +GLIBC_2.38 login F
> +GLIBC_2.38 login_tty F
> +GLIBC_2.38 logout F
> +GLIBC_2.38 logwtmp F
> +GLIBC_2.38 longjmp F
> +GLIBC_2.38 lrand48 F
> +GLIBC_2.38 lrand48_r F
> +GLIBC_2.38 lremovexattr F
> +GLIBC_2.38 lsearch F
> +GLIBC_2.38 lseek F
> +GLIBC_2.38 lseek64 F
> +GLIBC_2.38 lsetxattr F
> +GLIBC_2.38 lstat F
> +GLIBC_2.38 lstat64 F
> +GLIBC_2.38 lutimes F
> +GLIBC_2.38 mach_error F
> +GLIBC_2.38 mach_error_string F
> +GLIBC_2.38 mach_error_type F
> +GLIBC_2.38 mach_host_self F
> +GLIBC_2.38 mach_msg F
> +GLIBC_2.38 mach_msg_destroy F
> +GLIBC_2.38 mach_msg_receive F
> +GLIBC_2.38 mach_msg_send F
> +GLIBC_2.38 mach_msg_server F
> +GLIBC_2.38 mach_msg_server_timeout F
> +GLIBC_2.38 mach_open_devstream F
> +GLIBC_2.38 mach_port_allocate F
> +GLIBC_2.38 mach_port_allocate_name F
> +GLIBC_2.38 mach_port_deallocate F
> +GLIBC_2.38 mach_port_insert_right F
> +GLIBC_2.38 mach_print F
> +GLIBC_2.38 mach_reply_port F
> +GLIBC_2.38 mach_setup_thread F
> +GLIBC_2.38 mach_setup_tls F
> +GLIBC_2.38 mach_task_self F
> +GLIBC_2.38 mach_thread_self F
> +GLIBC_2.38 madvise F
> +GLIBC_2.38 makecontext F
> +GLIBC_2.38 mallinfo F
> +GLIBC_2.38 mallinfo2 F
> +GLIBC_2.38 malloc F
> +GLIBC_2.38 malloc_info F
> +GLIBC_2.38 malloc_stats F
> +GLIBC_2.38 malloc_trim F
> +GLIBC_2.38 malloc_usable_size F
> +GLIBC_2.38 mallopt F
> +GLIBC_2.38 mblen F
> +GLIBC_2.38 mbrlen F
> +GLIBC_2.38 mbrtoc16 F
> +GLIBC_2.38 mbrtoc32 F
> +GLIBC_2.38 mbrtoc8 F
> +GLIBC_2.38 mbrtowc F
> +GLIBC_2.38 mbsinit F
> +GLIBC_2.38 mbsnrtowcs F
> +GLIBC_2.38 mbsrtowcs F
> +GLIBC_2.38 mbstowcs F
> +GLIBC_2.38 mbtowc F
> +GLIBC_2.38 mcheck F
> +GLIBC_2.38 mcheck_check_all F
> +GLIBC_2.38 mcheck_pedantic F
> +GLIBC_2.38 mcount F
> +GLIBC_2.38 memalign F
> +GLIBC_2.38 memccpy F
> +GLIBC_2.38 memchr F
> +GLIBC_2.38 memcmp F
> +GLIBC_2.38 memcpy F
> +GLIBC_2.38 memfrob F
> +GLIBC_2.38 memmem F
> +GLIBC_2.38 memmove F
> +GLIBC_2.38 mempcpy F
> +GLIBC_2.38 memrchr F
> +GLIBC_2.38 memset F
> +GLIBC_2.38 mig_allocate F
> +GLIBC_2.38 mig_dealloc_reply_port F
> +GLIBC_2.38 mig_deallocate F
> +GLIBC_2.38 mig_get_reply_port F
> +GLIBC_2.38 mig_init F
> +GLIBC_2.38 mig_put_reply_port F
> +GLIBC_2.38 mig_strncpy F
> +GLIBC_2.38 mincore F
> +GLIBC_2.38 mkdir F
> +GLIBC_2.38 mkdirat F
> +GLIBC_2.38 mkdtemp F
> +GLIBC_2.38 mkfifo F
> +GLIBC_2.38 mkfifoat F
> +GLIBC_2.38 mknod F
> +GLIBC_2.38 mknodat F
> +GLIBC_2.38 mkostemp F
> +GLIBC_2.38 mkostemp64 F
> +GLIBC_2.38 mkostemps F
> +GLIBC_2.38 mkostemps64 F
> +GLIBC_2.38 mkstemp F
> +GLIBC_2.38 mkstemp64 F
> +GLIBC_2.38 mkstemps F
> +GLIBC_2.38 mkstemps64 F
> +GLIBC_2.38 mktemp F
> +GLIBC_2.38 mktime F
> +GLIBC_2.38 mlock F
> +GLIBC_2.38 mlockall F
> +GLIBC_2.38 mmap F
> +GLIBC_2.38 mmap64 F
> +GLIBC_2.38 modf F
> +GLIBC_2.38 modff F
> +GLIBC_2.38 modfl F
> +GLIBC_2.38 moncontrol F
> +GLIBC_2.38 monstartup F
> +GLIBC_2.38 mprobe F
> +GLIBC_2.38 mprotect F
> +GLIBC_2.38 mrand48 F
> +GLIBC_2.38 mrand48_r F
> +GLIBC_2.38 mremap F
> +GLIBC_2.38 msgctl F
> +GLIBC_2.38 msgget F
> +GLIBC_2.38 msgrcv F
> +GLIBC_2.38 msgsnd F
> +GLIBC_2.38 msync F
> +GLIBC_2.38 mtrace F
> +GLIBC_2.38 munlock F
> +GLIBC_2.38 munlockall F
> +GLIBC_2.38 munmap F
> +GLIBC_2.38 muntrace F
> +GLIBC_2.38 nanosleep F
> +GLIBC_2.38 newlocale F
> +GLIBC_2.38 nftw F
> +GLIBC_2.38 nftw64 F
> +GLIBC_2.38 ngettext F
> +GLIBC_2.38 nice F
> +GLIBC_2.38 nl_langinfo F
> +GLIBC_2.38 nl_langinfo_l F
> +GLIBC_2.38 nrand48 F
> +GLIBC_2.38 nrand48_r F
> +GLIBC_2.38 ns_name_compress F
> +GLIBC_2.38 ns_name_ntop F
> +GLIBC_2.38 ns_name_pack F
> +GLIBC_2.38 ns_name_pton F
> +GLIBC_2.38 ns_name_skip F
> +GLIBC_2.38 ns_name_uncompress F
> +GLIBC_2.38 ns_name_unpack F
> +GLIBC_2.38 ntohl F
> +GLIBC_2.38 ntohs F
> +GLIBC_2.38 obstack_alloc_failed_handler D 0x8
> +GLIBC_2.38 obstack_exit_failure D 0x4
> +GLIBC_2.38 obstack_free F
> +GLIBC_2.38 obstack_printf F
> +GLIBC_2.38 obstack_vprintf F
> +GLIBC_2.38 on_exit F
> +GLIBC_2.38 open F
> +GLIBC_2.38 open64 F
> +GLIBC_2.38 open_memstream F
> +GLIBC_2.38 open_wmemstream F
> +GLIBC_2.38 openat F
> +GLIBC_2.38 openat64 F
> +GLIBC_2.38 opendir F
> +GLIBC_2.38 openlog F
> +GLIBC_2.38 openport F
> +GLIBC_2.38 openpty F
> +GLIBC_2.38 optarg D 0x8
> +GLIBC_2.38 opterr D 0x4
> +GLIBC_2.38 optind D 0x4
> +GLIBC_2.38 optopt D 0x4
> +GLIBC_2.38 parse_printf_format F
> +GLIBC_2.38 pathconf F
> +GLIBC_2.38 pause F
> +GLIBC_2.38 pclose F
> +GLIBC_2.38 perror F
> +GLIBC_2.38 pid2task F
> +GLIBC_2.38 pipe F
> +GLIBC_2.38 pipe2 F
> +GLIBC_2.38 poll F
> +GLIBC_2.38 popen F
> +GLIBC_2.38 posix_fadvise F
> +GLIBC_2.38 posix_fadvise64 F
> +GLIBC_2.38 posix_fallocate F
> +GLIBC_2.38 posix_fallocate64 F
> +GLIBC_2.38 posix_madvise F
> +GLIBC_2.38 posix_memalign F
> +GLIBC_2.38 posix_openpt F
> +GLIBC_2.38 posix_spawn F
> +GLIBC_2.38 posix_spawn_file_actions_addchdir_np F
> +GLIBC_2.38 posix_spawn_file_actions_addclose F
> +GLIBC_2.38 posix_spawn_file_actions_addclosefrom_np F
> +GLIBC_2.38 posix_spawn_file_actions_adddup2 F
> +GLIBC_2.38 posix_spawn_file_actions_addfchdir_np F
> +GLIBC_2.38 posix_spawn_file_actions_addopen F
> +GLIBC_2.38 posix_spawn_file_actions_addtcsetpgrp_np F
> +GLIBC_2.38 posix_spawn_file_actions_destroy F
> +GLIBC_2.38 posix_spawn_file_actions_init F
> +GLIBC_2.38 posix_spawnattr_destroy F
> +GLIBC_2.38 posix_spawnattr_getflags F
> +GLIBC_2.38 posix_spawnattr_getpgroup F
> +GLIBC_2.38 posix_spawnattr_getschedparam F
> +GLIBC_2.38 posix_spawnattr_getschedpolicy F
> +GLIBC_2.38 posix_spawnattr_getsigdefault F
> +GLIBC_2.38 posix_spawnattr_getsigmask F
> +GLIBC_2.38 posix_spawnattr_init F
> +GLIBC_2.38 posix_spawnattr_setflags F
> +GLIBC_2.38 posix_spawnattr_setpgroup F
> +GLIBC_2.38 posix_spawnattr_setschedparam F
> +GLIBC_2.38 posix_spawnattr_setschedpolicy F
> +GLIBC_2.38 posix_spawnattr_setsigdefault F
> +GLIBC_2.38 posix_spawnattr_setsigmask F
> +GLIBC_2.38 posix_spawnp F
> +GLIBC_2.38 ppoll F
> +GLIBC_2.38 pread F
> +GLIBC_2.38 pread64 F
> +GLIBC_2.38 preadv F
> +GLIBC_2.38 preadv2 F
> +GLIBC_2.38 preadv64 F
> +GLIBC_2.38 preadv64v2 F
> +GLIBC_2.38 printf F
> +GLIBC_2.38 printf_size F
> +GLIBC_2.38 printf_size_info F
> +GLIBC_2.38 profil F
> +GLIBC_2.38 program_invocation_name D 0x8
> +GLIBC_2.38 program_invocation_short_name D 0x8
> +GLIBC_2.38 pselect F
> +GLIBC_2.38 psiginfo F
> +GLIBC_2.38 psignal F
> +GLIBC_2.38 pthread_attr_destroy F
> +GLIBC_2.38 pthread_attr_getdetachstate F
> +GLIBC_2.38 pthread_attr_getinheritsched F
> +GLIBC_2.38 pthread_attr_getschedparam F
> +GLIBC_2.38 pthread_attr_getschedpolicy F
> +GLIBC_2.38 pthread_attr_getscope F
> +GLIBC_2.38 pthread_attr_init F
> +GLIBC_2.38 pthread_attr_setdetachstate F
> +GLIBC_2.38 pthread_attr_setinheritsched F
> +GLIBC_2.38 pthread_attr_setschedparam F
> +GLIBC_2.38 pthread_attr_setschedpolicy F
> +GLIBC_2.38 pthread_attr_setscope F
> +GLIBC_2.38 pthread_cond_broadcast F
> +GLIBC_2.38 pthread_cond_destroy F
> +GLIBC_2.38 pthread_cond_init F
> +GLIBC_2.38 pthread_cond_signal F
> +GLIBC_2.38 pthread_cond_timedwait F
> +GLIBC_2.38 pthread_cond_wait F
> +GLIBC_2.38 pthread_condattr_destroy F
> +GLIBC_2.38 pthread_condattr_init F
> +GLIBC_2.38 pthread_equal F
> +GLIBC_2.38 pthread_exit F
> +GLIBC_2.38 pthread_getschedparam F
> +GLIBC_2.38 pthread_mutex_destroy F
> +GLIBC_2.38 pthread_mutex_init F
> +GLIBC_2.38 pthread_mutex_lock F
> +GLIBC_2.38 pthread_mutex_unlock F
> +GLIBC_2.38 pthread_self F
> +GLIBC_2.38 pthread_setcancelstate F
> +GLIBC_2.38 pthread_setcanceltype F
> +GLIBC_2.38 pthread_setschedparam F
> +GLIBC_2.38 ptrace F
> +GLIBC_2.38 ptsname F
> +GLIBC_2.38 ptsname_r F
> +GLIBC_2.38 putc F
> +GLIBC_2.38 putc_unlocked F
> +GLIBC_2.38 putchar F
> +GLIBC_2.38 putchar_unlocked F
> +GLIBC_2.38 putenv F
> +GLIBC_2.38 putgrent F
> +GLIBC_2.38 putpwent F
> +GLIBC_2.38 puts F
> +GLIBC_2.38 putsgent F
> +GLIBC_2.38 putspent F
> +GLIBC_2.38 pututline F
> +GLIBC_2.38 pututxline F
> +GLIBC_2.38 putw F
> +GLIBC_2.38 putwc F
> +GLIBC_2.38 putwc_unlocked F
> +GLIBC_2.38 putwchar F
> +GLIBC_2.38 putwchar_unlocked F
> +GLIBC_2.38 pvalloc F
> +GLIBC_2.38 pwrite F
> +GLIBC_2.38 pwrite64 F
> +GLIBC_2.38 pwritev F
> +GLIBC_2.38 pwritev2 F
> +GLIBC_2.38 pwritev64 F
> +GLIBC_2.38 pwritev64v2 F
> +GLIBC_2.38 qecvt F
> +GLIBC_2.38 qecvt_r F
> +GLIBC_2.38 qfcvt F
> +GLIBC_2.38 qfcvt_r F
> +GLIBC_2.38 qgcvt F
> +GLIBC_2.38 qsort F
> +GLIBC_2.38 qsort_r F
> +GLIBC_2.38 quick_exit F
> +GLIBC_2.38 raise F
> +GLIBC_2.38 rand F
> +GLIBC_2.38 rand_r F
> +GLIBC_2.38 random F
> +GLIBC_2.38 random_r F
> +GLIBC_2.38 rawmemchr F
> +GLIBC_2.38 rcmd F
> +GLIBC_2.38 rcmd_af F
> +GLIBC_2.38 re_comp F
> +GLIBC_2.38 re_compile_fastmap F
> +GLIBC_2.38 re_compile_pattern F
> +GLIBC_2.38 re_exec F
> +GLIBC_2.38 re_match F
> +GLIBC_2.38 re_match_2 F
> +GLIBC_2.38 re_search F
> +GLIBC_2.38 re_search_2 F
> +GLIBC_2.38 re_set_registers F
> +GLIBC_2.38 re_set_syntax F
> +GLIBC_2.38 re_syntax_options D 0x8
> +GLIBC_2.38 read F
> +GLIBC_2.38 readdir F
> +GLIBC_2.38 readdir64 F
> +GLIBC_2.38 readdir64_r F
> +GLIBC_2.38 readdir_r F
> +GLIBC_2.38 readlink F
> +GLIBC_2.38 readlinkat F
> +GLIBC_2.38 readv F
> +GLIBC_2.38 realloc F
> +GLIBC_2.38 reallocarray F
> +GLIBC_2.38 realpath F
> +GLIBC_2.38 reboot F
> +GLIBC_2.38 recv F
> +GLIBC_2.38 recvfrom F
> +GLIBC_2.38 recvmmsg F
> +GLIBC_2.38 recvmsg F
> +GLIBC_2.38 regcomp F
> +GLIBC_2.38 regerror F
> +GLIBC_2.38 regexec F
> +GLIBC_2.38 regfree F
> +GLIBC_2.38 register_printf_function F
> +GLIBC_2.38 register_printf_modifier F
> +GLIBC_2.38 register_printf_specifier F
> +GLIBC_2.38 register_printf_type F
> +GLIBC_2.38 remap_file_pages F
> +GLIBC_2.38 remove F
> +GLIBC_2.38 removexattr F
> +GLIBC_2.38 remque F
> +GLIBC_2.38 rename F
> +GLIBC_2.38 renameat F
> +GLIBC_2.38 renameat2 F
> +GLIBC_2.38 res_dnok F
> +GLIBC_2.38 res_hnok F
> +GLIBC_2.38 res_mailok F
> +GLIBC_2.38 res_mkquery F
> +GLIBC_2.38 res_nmkquery F
> +GLIBC_2.38 res_nquery F
> +GLIBC_2.38 res_nquerydomain F
> +GLIBC_2.38 res_nsearch F
> +GLIBC_2.38 res_nsend F
> +GLIBC_2.38 res_ownok F
> +GLIBC_2.38 res_query F
> +GLIBC_2.38 res_querydomain F
> +GLIBC_2.38 res_search F
> +GLIBC_2.38 res_send F
> +GLIBC_2.38 revoke F
> +GLIBC_2.38 rewind F
> +GLIBC_2.38 rewinddir F
> +GLIBC_2.38 rexec F
> +GLIBC_2.38 rexec_af F
> +GLIBC_2.38 rexecoptions D 0x4
> +GLIBC_2.38 rindex F
> +GLIBC_2.38 rmdir F
> +GLIBC_2.38 rpmatch F
> +GLIBC_2.38 rresvport F
> +GLIBC_2.38 rresvport_af F
> +GLIBC_2.38 ruserok F
> +GLIBC_2.38 ruserok_af F
> +GLIBC_2.38 ruserpass F
> +GLIBC_2.38 sbrk F
> +GLIBC_2.38 scalbn F
> +GLIBC_2.38 scalbnf F
> +GLIBC_2.38 scalbnl F
> +GLIBC_2.38 scandir F
> +GLIBC_2.38 scandir64 F
> +GLIBC_2.38 scandirat F
> +GLIBC_2.38 scandirat64 F
> +GLIBC_2.38 scanf F
> +GLIBC_2.38 sched_get_priority_max F
> +GLIBC_2.38 sched_get_priority_min F
> +GLIBC_2.38 sched_getaffinity F
> +GLIBC_2.38 sched_getparam F
> +GLIBC_2.38 sched_getscheduler F
> +GLIBC_2.38 sched_rr_get_interval F
> +GLIBC_2.38 sched_setaffinity F
> +GLIBC_2.38 sched_setparam F
> +GLIBC_2.38 sched_setscheduler F
> +GLIBC_2.38 sched_yield F
> +GLIBC_2.38 secure_getenv F
> +GLIBC_2.38 seed48 F
> +GLIBC_2.38 seed48_r F
> +GLIBC_2.38 seekdir F
> +GLIBC_2.38 select F
> +GLIBC_2.38 semctl F
> +GLIBC_2.38 semget F
> +GLIBC_2.38 semop F
> +GLIBC_2.38 semtimedop F
> +GLIBC_2.38 send F
> +GLIBC_2.38 sendfile F
> +GLIBC_2.38 sendfile64 F
> +GLIBC_2.38 sendmmsg F
> +GLIBC_2.38 sendmsg F
> +GLIBC_2.38 sendto F
> +GLIBC_2.38 setaliasent F
> +GLIBC_2.38 setauth F
> +GLIBC_2.38 setbuf F
> +GLIBC_2.38 setbuffer F
> +GLIBC_2.38 setcontext F
> +GLIBC_2.38 setcrdir F
> +GLIBC_2.38 setcttyid F
> +GLIBC_2.38 setcwdir F
> +GLIBC_2.38 setdomainname F
> +GLIBC_2.38 setegid F
> +GLIBC_2.38 setenv F
> +GLIBC_2.38 seteuid F
> +GLIBC_2.38 seteuids F
> +GLIBC_2.38 setfsent F
> +GLIBC_2.38 setgid F
> +GLIBC_2.38 setgrent F
> +GLIBC_2.38 setgroups F
> +GLIBC_2.38 sethostent F
> +GLIBC_2.38 sethostid F
> +GLIBC_2.38 sethostname F
> +GLIBC_2.38 setipv4sourcefilter F
> +GLIBC_2.38 setitimer F
> +GLIBC_2.38 setjmp F
> +GLIBC_2.38 setlinebuf F
> +GLIBC_2.38 setlocale F
> +GLIBC_2.38 setlogin F
> +GLIBC_2.38 setlogmask F
> +GLIBC_2.38 setmntent F
> +GLIBC_2.38 setnetent F
> +GLIBC_2.38 setnetgrent F
> +GLIBC_2.38 setpgid F
> +GLIBC_2.38 setpgrp F
> +GLIBC_2.38 setpriority F
> +GLIBC_2.38 setproc F
> +GLIBC_2.38 setprotoent F
> +GLIBC_2.38 setpwent F
> +GLIBC_2.38 setregid F
> +GLIBC_2.38 setresgid F
> +GLIBC_2.38 setresuid F
> +GLIBC_2.38 setreuid F
> +GLIBC_2.38 setrlimit F
> +GLIBC_2.38 setrlimit64 F
> +GLIBC_2.38 setrpcent F
> +GLIBC_2.38 setservent F
> +GLIBC_2.38 setsgent F
> +GLIBC_2.38 setsid F
> +GLIBC_2.38 setsockopt F
> +GLIBC_2.38 setsourcefilter F
> +GLIBC_2.38 setspent F
> +GLIBC_2.38 setstate F
> +GLIBC_2.38 setstate_r F
> +GLIBC_2.38 settimeofday F
> +GLIBC_2.38 setttyent F
> +GLIBC_2.38 setuid F
> +GLIBC_2.38 setusershell F
> +GLIBC_2.38 setutent F
> +GLIBC_2.38 setutxent F
> +GLIBC_2.38 setvbuf F
> +GLIBC_2.38 setxattr F
> +GLIBC_2.38 sgetsgent F
> +GLIBC_2.38 sgetsgent_r F
> +GLIBC_2.38 sgetspent F
> +GLIBC_2.38 sgetspent_r F
> +GLIBC_2.38 shm_open F
> +GLIBC_2.38 shm_unlink F
> +GLIBC_2.38 shmat F
> +GLIBC_2.38 shmctl F
> +GLIBC_2.38 shmdt F
> +GLIBC_2.38 shmget F
> +GLIBC_2.38 shutdown F
> +GLIBC_2.38 sigabbrev_np F
> +GLIBC_2.38 sigaction F
> +GLIBC_2.38 sigaddset F
> +GLIBC_2.38 sigaltstack F
> +GLIBC_2.38 sigandset F
> +GLIBC_2.38 sigblock F
> +GLIBC_2.38 sigdelset F
> +GLIBC_2.38 sigdescr_np F
> +GLIBC_2.38 sigemptyset F
> +GLIBC_2.38 sigfillset F
> +GLIBC_2.38 siggetmask F
> +GLIBC_2.38 sighold F
> +GLIBC_2.38 sigignore F
> +GLIBC_2.38 siginterrupt F
> +GLIBC_2.38 sigisemptyset F
> +GLIBC_2.38 sigismember F
> +GLIBC_2.38 siglongjmp F
> +GLIBC_2.38 signal F
> +GLIBC_2.38 sigorset F
> +GLIBC_2.38 sigpause F
> +GLIBC_2.38 sigpending F
> +GLIBC_2.38 sigprocmask F
> +GLIBC_2.38 sigqueue F
> +GLIBC_2.38 sigrelse F
> +GLIBC_2.38 sigreturn F
> +GLIBC_2.38 sigset F
> +GLIBC_2.38 sigsetmask F
> +GLIBC_2.38 sigstack F
> +GLIBC_2.38 sigsuspend F
> +GLIBC_2.38 sigtimedwait F
> +GLIBC_2.38 sigwait F
> +GLIBC_2.38 sigwaitinfo F
> +GLIBC_2.38 sleep F
> +GLIBC_2.38 snprintf F
> +GLIBC_2.38 sockatmark F
> +GLIBC_2.38 socket F
> +GLIBC_2.38 socketpair F
> +GLIBC_2.38 sprintf F
> +GLIBC_2.38 sprofil F
> +GLIBC_2.38 srand F
> +GLIBC_2.38 srand48 F
> +GLIBC_2.38 srand48_r F
> +GLIBC_2.38 srandom F
> +GLIBC_2.38 srandom_r F
> +GLIBC_2.38 sscanf F
> +GLIBC_2.38 ssignal F
> +GLIBC_2.38 stat F
> +GLIBC_2.38 stat64 F
> +GLIBC_2.38 statfs F
> +GLIBC_2.38 statfs64 F
> +GLIBC_2.38 statvfs F
> +GLIBC_2.38 statvfs64 F
> +GLIBC_2.38 statx F
> +GLIBC_2.38 stderr D 0x8
> +GLIBC_2.38 stdin D 0x8
> +GLIBC_2.38 stdout D 0x8
> +GLIBC_2.38 stpcpy F
> +GLIBC_2.38 stpncpy F
> +GLIBC_2.38 strcasecmp F
> +GLIBC_2.38 strcasecmp_l F
> +GLIBC_2.38 strcasestr F
> +GLIBC_2.38 strcat F
> +GLIBC_2.38 strchr F
> +GLIBC_2.38 strchrnul F
> +GLIBC_2.38 strcmp F
> +GLIBC_2.38 strcoll F
> +GLIBC_2.38 strcoll_l F
> +GLIBC_2.38 strcpy F
> +GLIBC_2.38 strcspn F
> +GLIBC_2.38 strdup F
> +GLIBC_2.38 strerror F
> +GLIBC_2.38 strerror_l F
> +GLIBC_2.38 strerror_r F
> +GLIBC_2.38 strerrordesc_np F
> +GLIBC_2.38 strerrorname_np F
> +GLIBC_2.38 strfmon F
> +GLIBC_2.38 strfmon_l F
> +GLIBC_2.38 strfromd F
> +GLIBC_2.38 strfromf F
> +GLIBC_2.38 strfromf128 F
> +GLIBC_2.38 strfromf32 F
> +GLIBC_2.38 strfromf32x F
> +GLIBC_2.38 strfromf64 F
> +GLIBC_2.38 strfromf64x F
> +GLIBC_2.38 strfroml F
> +GLIBC_2.38 strfry F
> +GLIBC_2.38 strftime F
> +GLIBC_2.38 strftime_l F
> +GLIBC_2.38 strlen F
> +GLIBC_2.38 strncasecmp F
> +GLIBC_2.38 strncasecmp_l F
> +GLIBC_2.38 strncat F
> +GLIBC_2.38 strncmp F
> +GLIBC_2.38 strncpy F
> +GLIBC_2.38 strndup F
> +GLIBC_2.38 strnlen F
> +GLIBC_2.38 strpbrk F
> +GLIBC_2.38 strptime F
> +GLIBC_2.38 strptime_l F
> +GLIBC_2.38 strrchr F
> +GLIBC_2.38 strsep F
> +GLIBC_2.38 strsignal F
> +GLIBC_2.38 strspn F
> +GLIBC_2.38 strstr F
> +GLIBC_2.38 strtod F
> +GLIBC_2.38 strtod_l F
> +GLIBC_2.38 strtof F
> +GLIBC_2.38 strtof128 F
> +GLIBC_2.38 strtof128_l F
> +GLIBC_2.38 strtof32 F
> +GLIBC_2.38 strtof32_l F
> +GLIBC_2.38 strtof32x F
> +GLIBC_2.38 strtof32x_l F
> +GLIBC_2.38 strtof64 F
> +GLIBC_2.38 strtof64_l F
> +GLIBC_2.38 strtof64x F
> +GLIBC_2.38 strtof64x_l F
> +GLIBC_2.38 strtof_l F
> +GLIBC_2.38 strtoimax F
> +GLIBC_2.38 strtok F
> +GLIBC_2.38 strtok_r F
> +GLIBC_2.38 strtol F
> +GLIBC_2.38 strtol_l F
> +GLIBC_2.38 strtold F
> +GLIBC_2.38 strtold_l F
> +GLIBC_2.38 strtoll F
> +GLIBC_2.38 strtoll_l F
> +GLIBC_2.38 strtoq F
> +GLIBC_2.38 strtoul F
> +GLIBC_2.38 strtoul_l F
> +GLIBC_2.38 strtoull F
> +GLIBC_2.38 strtoull_l F
> +GLIBC_2.38 strtoumax F
> +GLIBC_2.38 strtouq F
> +GLIBC_2.38 strverscmp F
> +GLIBC_2.38 strxfrm F
> +GLIBC_2.38 strxfrm_l F
> +GLIBC_2.38 stty F
> +GLIBC_2.38 swab F
> +GLIBC_2.38 swapcontext F
> +GLIBC_2.38 swprintf F
> +GLIBC_2.38 swscanf F
> +GLIBC_2.38 swtch F
> +GLIBC_2.38 swtch_pri F
> +GLIBC_2.38 symlink F
> +GLIBC_2.38 symlinkat F
> +GLIBC_2.38 sync F
> +GLIBC_2.38 syncfs F
> +GLIBC_2.38 syscall F
> +GLIBC_2.38 sysconf F
> +GLIBC_2.38 syslog F
> +GLIBC_2.38 system F
> +GLIBC_2.38 sysv_signal F
> +GLIBC_2.38 task2pid F
> +GLIBC_2.38 task_create F
> +GLIBC_2.38 task_set_special_port F
> +GLIBC_2.38 task_suspend F
> +GLIBC_2.38 task_terminate F
> +GLIBC_2.38 tcdrain F
> +GLIBC_2.38 tcflow F
> +GLIBC_2.38 tcflush F
> +GLIBC_2.38 tcgetattr F
> +GLIBC_2.38 tcgetpgrp F
> +GLIBC_2.38 tcgetsid F
> +GLIBC_2.38 tcsendbreak F
> +GLIBC_2.38 tcsetattr F
> +GLIBC_2.38 tcsetpgrp F
> +GLIBC_2.38 tdelete F
> +GLIBC_2.38 tdestroy F
> +GLIBC_2.38 telldir F
> +GLIBC_2.38 tempnam F
> +GLIBC_2.38 textdomain F
> +GLIBC_2.38 tfind F
> +GLIBC_2.38 thrd_current F
> +GLIBC_2.38 thrd_equal F
> +GLIBC_2.38 thrd_sleep F
> +GLIBC_2.38 thrd_yield F
> +GLIBC_2.38 thread_depress_abort F
> +GLIBC_2.38 thread_switch F
> +GLIBC_2.38 time F
> +GLIBC_2.38 timegm F
> +GLIBC_2.38 timelocal F
> +GLIBC_2.38 times F
> +GLIBC_2.38 timespec_get F
> +GLIBC_2.38 timespec_getres F
> +GLIBC_2.38 timezone D 0x8
> +GLIBC_2.38 tmpfile F
> +GLIBC_2.38 tmpfile64 F
> +GLIBC_2.38 tmpnam F
> +GLIBC_2.38 tmpnam_r F
> +GLIBC_2.38 toascii F
> +GLIBC_2.38 tolower F
> +GLIBC_2.38 tolower_l F
> +GLIBC_2.38 toupper F
> +GLIBC_2.38 toupper_l F
> +GLIBC_2.38 towctrans F
> +GLIBC_2.38 towctrans_l F
> +GLIBC_2.38 towlower F
> +GLIBC_2.38 towlower_l F
> +GLIBC_2.38 towupper F
> +GLIBC_2.38 towupper_l F
> +GLIBC_2.38 truncate F
> +GLIBC_2.38 truncate64 F
> +GLIBC_2.38 tsearch F
> +GLIBC_2.38 ttyname F
> +GLIBC_2.38 ttyname_r F
> +GLIBC_2.38 ttyslot F
> +GLIBC_2.38 twalk F
> +GLIBC_2.38 twalk_r F
> +GLIBC_2.38 tzname D 0x10
> +GLIBC_2.38 tzset F
> +GLIBC_2.38 ualarm F
> +GLIBC_2.38 ulckpwdf F
> +GLIBC_2.38 ulimit F
> +GLIBC_2.38 umask F
> +GLIBC_2.38 uname F
> +GLIBC_2.38 ungetc F
> +GLIBC_2.38 ungetwc F
> +GLIBC_2.38 unlink F
> +GLIBC_2.38 unlinkat F
> +GLIBC_2.38 unlockpt F
> +GLIBC_2.38 unsetenv F
> +GLIBC_2.38 updwtmp F
> +GLIBC_2.38 updwtmpx F
> +GLIBC_2.38 uselocale F
> +GLIBC_2.38 usleep F
> +GLIBC_2.38 utime F
> +GLIBC_2.38 utimensat F
> +GLIBC_2.38 utimes F
> +GLIBC_2.38 utmpname F
> +GLIBC_2.38 utmpxname F
> +GLIBC_2.38 valloc F
> +GLIBC_2.38 vasprintf F
> +GLIBC_2.38 vdprintf F
> +GLIBC_2.38 verr F
> +GLIBC_2.38 verrx F
> +GLIBC_2.38 versionsort F
> +GLIBC_2.38 versionsort64 F
> +GLIBC_2.38 vfork F
> +GLIBC_2.38 vfprintf F
> +GLIBC_2.38 vfscanf F
> +GLIBC_2.38 vfwprintf F
> +GLIBC_2.38 vfwscanf F
> +GLIBC_2.38 vhangup F
> +GLIBC_2.38 vlimit F
> +GLIBC_2.38 vm_allocate F
> +GLIBC_2.38 vm_deallocate F
> +GLIBC_2.38 vm_map F
> +GLIBC_2.38 vm_page_size D 0x8
> +GLIBC_2.38 vpprintf F
> +GLIBC_2.38 vprintf F
> +GLIBC_2.38 vscanf F
> +GLIBC_2.38 vsnprintf F
> +GLIBC_2.38 vsprintf F
> +GLIBC_2.38 vsscanf F
> +GLIBC_2.38 vswprintf F
> +GLIBC_2.38 vswscanf F
> +GLIBC_2.38 vsyslog F
> +GLIBC_2.38 vwarn F
> +GLIBC_2.38 vwarnx F
> +GLIBC_2.38 vwprintf F
> +GLIBC_2.38 vwscanf F
> +GLIBC_2.38 wait F
> +GLIBC_2.38 wait3 F
> +GLIBC_2.38 wait4 F
> +GLIBC_2.38 waitid F
> +GLIBC_2.38 waitpid F
> +GLIBC_2.38 warn F
> +GLIBC_2.38 warnx F
> +GLIBC_2.38 wcpcpy F
> +GLIBC_2.38 wcpncpy F
> +GLIBC_2.38 wcrtomb F
> +GLIBC_2.38 wcscasecmp F
> +GLIBC_2.38 wcscasecmp_l F
> +GLIBC_2.38 wcscat F
> +GLIBC_2.38 wcschr F
> +GLIBC_2.38 wcschrnul F
> +GLIBC_2.38 wcscmp F
> +GLIBC_2.38 wcscoll F
> +GLIBC_2.38 wcscoll_l F
> +GLIBC_2.38 wcscpy F
> +GLIBC_2.38 wcscspn F
> +GLIBC_2.38 wcsdup F
> +GLIBC_2.38 wcsftime F
> +GLIBC_2.38 wcsftime_l F
> +GLIBC_2.38 wcslen F
> +GLIBC_2.38 wcsncasecmp F
> +GLIBC_2.38 wcsncasecmp_l F
> +GLIBC_2.38 wcsncat F
> +GLIBC_2.38 wcsncmp F
> +GLIBC_2.38 wcsncpy F
> +GLIBC_2.38 wcsnlen F
> +GLIBC_2.38 wcsnrtombs F
> +GLIBC_2.38 wcspbrk F
> +GLIBC_2.38 wcsrchr F
> +GLIBC_2.38 wcsrtombs F
> +GLIBC_2.38 wcsspn F
> +GLIBC_2.38 wcsstr F
> +GLIBC_2.38 wcstod F
> +GLIBC_2.38 wcstod_l F
> +GLIBC_2.38 wcstof F
> +GLIBC_2.38 wcstof128 F
> +GLIBC_2.38 wcstof128_l F
> +GLIBC_2.38 wcstof32 F
> +GLIBC_2.38 wcstof32_l F
> +GLIBC_2.38 wcstof32x F
> +GLIBC_2.38 wcstof32x_l F
> +GLIBC_2.38 wcstof64 F
> +GLIBC_2.38 wcstof64_l F
> +GLIBC_2.38 wcstof64x F
> +GLIBC_2.38 wcstof64x_l F
> +GLIBC_2.38 wcstof_l F
> +GLIBC_2.38 wcstoimax F
> +GLIBC_2.38 wcstok F
> +GLIBC_2.38 wcstol F
> +GLIBC_2.38 wcstol_l F
> +GLIBC_2.38 wcstold F
> +GLIBC_2.38 wcstold_l F
> +GLIBC_2.38 wcstoll F
> +GLIBC_2.38 wcstoll_l F
> +GLIBC_2.38 wcstombs F
> +GLIBC_2.38 wcstoq F
> +GLIBC_2.38 wcstoul F
> +GLIBC_2.38 wcstoul_l F
> +GLIBC_2.38 wcstoull F
> +GLIBC_2.38 wcstoull_l F
> +GLIBC_2.38 wcstoumax F
> +GLIBC_2.38 wcstouq F
> +GLIBC_2.38 wcswcs F
> +GLIBC_2.38 wcswidth F
> +GLIBC_2.38 wcsxfrm F
> +GLIBC_2.38 wcsxfrm_l F
> +GLIBC_2.38 wctob F
> +GLIBC_2.38 wctomb F
> +GLIBC_2.38 wctrans F
> +GLIBC_2.38 wctrans_l F
> +GLIBC_2.38 wctype F
> +GLIBC_2.38 wctype_l F
> +GLIBC_2.38 wcwidth F
> +GLIBC_2.38 wmemchr F
> +GLIBC_2.38 wmemcmp F
> +GLIBC_2.38 wmemcpy F
> +GLIBC_2.38 wmemmove F
> +GLIBC_2.38 wmempcpy F
> +GLIBC_2.38 wmemset F
> +GLIBC_2.38 wordexp F
> +GLIBC_2.38 wordfree F
> +GLIBC_2.38 wprintf F
> +GLIBC_2.38 write F
> +GLIBC_2.38 writev F
> +GLIBC_2.38 wscanf F
> +HURD_CTHREADS_0.3 __cthread_getspecific F
> +HURD_CTHREADS_0.3 __cthread_keycreate F
> +HURD_CTHREADS_0.3 __cthread_setspecific F
> +HURD_CTHREADS_0.3 __mutex_init F
> +HURD_CTHREADS_0.3 __mutex_lock F
> +HURD_CTHREADS_0.3 __mutex_lock_solid F
> +HURD_CTHREADS_0.3 __mutex_trylock F
> +HURD_CTHREADS_0.3 __mutex_unlock F
> +HURD_CTHREADS_0.3 __mutex_unlock_solid F
> +HURD_CTHREADS_0.3 __spin_lock F
> +HURD_CTHREADS_0.3 __spin_lock_init F
> +HURD_CTHREADS_0.3 __spin_lock_solid F
> +HURD_CTHREADS_0.3 __spin_try_lock F
> +HURD_CTHREADS_0.3 __spin_unlock F
> diff --git a/sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist b/sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist
> new file mode 100644
> index 00000000..012c48df
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libc_malloc_debug.abilist
> @@ -0,0 +1,26 @@
> +GLIBC_2.38 __free_hook D 0x8
> +GLIBC_2.38 __malloc_hook D 0x8
> +GLIBC_2.38 __memalign_hook D 0x8
> +GLIBC_2.38 __realloc_hook D 0x8
> +GLIBC_2.38 aligned_alloc F
> +GLIBC_2.38 calloc F
> +GLIBC_2.38 free F
> +GLIBC_2.38 mallinfo F
> +GLIBC_2.38 mallinfo2 F
> +GLIBC_2.38 malloc F
> +GLIBC_2.38 malloc_info F
> +GLIBC_2.38 malloc_stats F
> +GLIBC_2.38 malloc_trim F
> +GLIBC_2.38 malloc_usable_size F
> +GLIBC_2.38 mallopt F
> +GLIBC_2.38 mcheck F
> +GLIBC_2.38 mcheck_check_all F
> +GLIBC_2.38 mcheck_pedantic F
> +GLIBC_2.38 memalign F
> +GLIBC_2.38 mprobe F
> +GLIBC_2.38 mtrace F
> +GLIBC_2.38 muntrace F
> +GLIBC_2.38 posix_memalign F
> +GLIBC_2.38 pvalloc F
> +GLIBC_2.38 realloc F
> +GLIBC_2.38 valloc F
> diff --git a/sysdeps/mach/hurd/x86_64/libcrypt.abilist b/sysdeps/mach/hurd/x86_64/libcrypt.abilist
> new file mode 100644
> index 00000000..3ee068a0
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libcrypt.abilist
> @@ -0,0 +1,2 @@
> +GLIBC_2.38 crypt F
> +GLIBC_2.38 crypt_r F
> diff --git a/sysdeps/mach/hurd/x86_64/libdl.abilist b/sysdeps/mach/hurd/x86_64/libdl.abilist
> new file mode 100644
> index 00000000..e69de29b
> diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
> new file mode 100644
> index 00000000..5c762b93
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libm.abilist
> @@ -0,0 +1,1040 @@
> +GLIBC_2.38 __clog10 F
> +GLIBC_2.38 __clog10f F
> +GLIBC_2.38 __clog10l F
> +GLIBC_2.38 __finite F
> +GLIBC_2.38 __finitef F
> +GLIBC_2.38 __finitef128 F
> +GLIBC_2.38 __finitel F
> +GLIBC_2.38 __fpclassify F
> +GLIBC_2.38 __fpclassifyf F
> +GLIBC_2.38 __fpclassifyf128 F
> +GLIBC_2.38 __fpclassifyl F
> +GLIBC_2.38 __iscanonicall F
> +GLIBC_2.38 __iseqsig F
> +GLIBC_2.38 __iseqsigf F
> +GLIBC_2.38 __iseqsigf128 F
> +GLIBC_2.38 __iseqsigl F
> +GLIBC_2.38 __isinff128 F
> +GLIBC_2.38 __issignaling F
> +GLIBC_2.38 __issignalingf F
> +GLIBC_2.38 __issignalingf128 F
> +GLIBC_2.38 __issignalingl F
> +GLIBC_2.38 __log10l_finite F
> +GLIBC_2.38 __log2l_finite F
> +GLIBC_2.38 __logl_finite F
> +GLIBC_2.38 __signbit F
> +GLIBC_2.38 __signbitf F
> +GLIBC_2.38 __signbitf128 F
> +GLIBC_2.38 __signbitl F
> +GLIBC_2.38 __signgam D 0x4
> +GLIBC_2.38 acos F
> +GLIBC_2.38 acosf F
> +GLIBC_2.38 acosf128 F
> +GLIBC_2.38 acosf32 F
> +GLIBC_2.38 acosf32x F
> +GLIBC_2.38 acosf64 F
> +GLIBC_2.38 acosf64x F
> +GLIBC_2.38 acosh F
> +GLIBC_2.38 acoshf F
> +GLIBC_2.38 acoshf128 F
> +GLIBC_2.38 acoshf32 F
> +GLIBC_2.38 acoshf32x F
> +GLIBC_2.38 acoshf64 F
> +GLIBC_2.38 acoshf64x F
> +GLIBC_2.38 acoshl F
> +GLIBC_2.38 acosl F
> +GLIBC_2.38 asin F
> +GLIBC_2.38 asinf F
> +GLIBC_2.38 asinf128 F
> +GLIBC_2.38 asinf32 F
> +GLIBC_2.38 asinf32x F
> +GLIBC_2.38 asinf64 F
> +GLIBC_2.38 asinf64x F
> +GLIBC_2.38 asinh F
> +GLIBC_2.38 asinhf F
> +GLIBC_2.38 asinhf128 F
> +GLIBC_2.38 asinhf32 F
> +GLIBC_2.38 asinhf32x F
> +GLIBC_2.38 asinhf64 F
> +GLIBC_2.38 asinhf64x F
> +GLIBC_2.38 asinhl F
> +GLIBC_2.38 asinl F
> +GLIBC_2.38 atan F
> +GLIBC_2.38 atan2 F
> +GLIBC_2.38 atan2f F
> +GLIBC_2.38 atan2f128 F
> +GLIBC_2.38 atan2f32 F
> +GLIBC_2.38 atan2f32x F
> +GLIBC_2.38 atan2f64 F
> +GLIBC_2.38 atan2f64x F
> +GLIBC_2.38 atan2l F
> +GLIBC_2.38 atanf F
> +GLIBC_2.38 atanf128 F
> +GLIBC_2.38 atanf32 F
> +GLIBC_2.38 atanf32x F
> +GLIBC_2.38 atanf64 F
> +GLIBC_2.38 atanf64x F
> +GLIBC_2.38 atanh F
> +GLIBC_2.38 atanhf F
> +GLIBC_2.38 atanhf128 F
> +GLIBC_2.38 atanhf32 F
> +GLIBC_2.38 atanhf32x F
> +GLIBC_2.38 atanhf64 F
> +GLIBC_2.38 atanhf64x F
> +GLIBC_2.38 atanhl F
> +GLIBC_2.38 atanl F
> +GLIBC_2.38 cabs F
> +GLIBC_2.38 cabsf F
> +GLIBC_2.38 cabsf128 F
> +GLIBC_2.38 cabsf32 F
> +GLIBC_2.38 cabsf32x F
> +GLIBC_2.38 cabsf64 F
> +GLIBC_2.38 cabsf64x F
> +GLIBC_2.38 cabsl F
> +GLIBC_2.38 cacos F
> +GLIBC_2.38 cacosf F
> +GLIBC_2.38 cacosf128 F
> +GLIBC_2.38 cacosf32 F
> +GLIBC_2.38 cacosf32x F
> +GLIBC_2.38 cacosf64 F
> +GLIBC_2.38 cacosf64x F
> +GLIBC_2.38 cacosh F
> +GLIBC_2.38 cacoshf F
> +GLIBC_2.38 cacoshf128 F
> +GLIBC_2.38 cacoshf32 F
> +GLIBC_2.38 cacoshf32x F
> +GLIBC_2.38 cacoshf64 F
> +GLIBC_2.38 cacoshf64x F
> +GLIBC_2.38 cacoshl F
> +GLIBC_2.38 cacosl F
> +GLIBC_2.38 canonicalize F
> +GLIBC_2.38 canonicalizef F
> +GLIBC_2.38 canonicalizef128 F
> +GLIBC_2.38 canonicalizef32 F
> +GLIBC_2.38 canonicalizef32x F
> +GLIBC_2.38 canonicalizef64 F
> +GLIBC_2.38 canonicalizef64x F
> +GLIBC_2.38 canonicalizel F
> +GLIBC_2.38 carg F
> +GLIBC_2.38 cargf F
> +GLIBC_2.38 cargf128 F
> +GLIBC_2.38 cargf32 F
> +GLIBC_2.38 cargf32x F
> +GLIBC_2.38 cargf64 F
> +GLIBC_2.38 cargf64x F
> +GLIBC_2.38 cargl F
> +GLIBC_2.38 casin F
> +GLIBC_2.38 casinf F
> +GLIBC_2.38 casinf128 F
> +GLIBC_2.38 casinf32 F
> +GLIBC_2.38 casinf32x F
> +GLIBC_2.38 casinf64 F
> +GLIBC_2.38 casinf64x F
> +GLIBC_2.38 casinh F
> +GLIBC_2.38 casinhf F
> +GLIBC_2.38 casinhf128 F
> +GLIBC_2.38 casinhf32 F
> +GLIBC_2.38 casinhf32x F
> +GLIBC_2.38 casinhf64 F
> +GLIBC_2.38 casinhf64x F
> +GLIBC_2.38 casinhl F
> +GLIBC_2.38 casinl F
> +GLIBC_2.38 catan F
> +GLIBC_2.38 catanf F
> +GLIBC_2.38 catanf128 F
> +GLIBC_2.38 catanf32 F
> +GLIBC_2.38 catanf32x F
> +GLIBC_2.38 catanf64 F
> +GLIBC_2.38 catanf64x F
> +GLIBC_2.38 catanh F
> +GLIBC_2.38 catanhf F
> +GLIBC_2.38 catanhf128 F
> +GLIBC_2.38 catanhf32 F
> +GLIBC_2.38 catanhf32x F
> +GLIBC_2.38 catanhf64 F
> +GLIBC_2.38 catanhf64x F
> +GLIBC_2.38 catanhl F
> +GLIBC_2.38 catanl F
> +GLIBC_2.38 cbrt F
> +GLIBC_2.38 cbrtf F
> +GLIBC_2.38 cbrtf128 F
> +GLIBC_2.38 cbrtf32 F
> +GLIBC_2.38 cbrtf32x F
> +GLIBC_2.38 cbrtf64 F
> +GLIBC_2.38 cbrtf64x F
> +GLIBC_2.38 cbrtl F
> +GLIBC_2.38 ccos F
> +GLIBC_2.38 ccosf F
> +GLIBC_2.38 ccosf128 F
> +GLIBC_2.38 ccosf32 F
> +GLIBC_2.38 ccosf32x F
> +GLIBC_2.38 ccosf64 F
> +GLIBC_2.38 ccosf64x F
> +GLIBC_2.38 ccosh F
> +GLIBC_2.38 ccoshf F
> +GLIBC_2.38 ccoshf128 F
> +GLIBC_2.38 ccoshf32 F
> +GLIBC_2.38 ccoshf32x F
> +GLIBC_2.38 ccoshf64 F
> +GLIBC_2.38 ccoshf64x F
> +GLIBC_2.38 ccoshl F
> +GLIBC_2.38 ccosl F
> +GLIBC_2.38 ceil F
> +GLIBC_2.38 ceilf F
> +GLIBC_2.38 ceilf128 F
> +GLIBC_2.38 ceilf32 F
> +GLIBC_2.38 ceilf32x F
> +GLIBC_2.38 ceilf64 F
> +GLIBC_2.38 ceilf64x F
> +GLIBC_2.38 ceill F
> +GLIBC_2.38 cexp F
> +GLIBC_2.38 cexpf F
> +GLIBC_2.38 cexpf128 F
> +GLIBC_2.38 cexpf32 F
> +GLIBC_2.38 cexpf32x F
> +GLIBC_2.38 cexpf64 F
> +GLIBC_2.38 cexpf64x F
> +GLIBC_2.38 cexpl F
> +GLIBC_2.38 cimag F
> +GLIBC_2.38 cimagf F
> +GLIBC_2.38 cimagf128 F
> +GLIBC_2.38 cimagf32 F
> +GLIBC_2.38 cimagf32x F
> +GLIBC_2.38 cimagf64 F
> +GLIBC_2.38 cimagf64x F
> +GLIBC_2.38 cimagl F
> +GLIBC_2.38 clog F
> +GLIBC_2.38 clog10 F
> +GLIBC_2.38 clog10f F
> +GLIBC_2.38 clog10f128 F
> +GLIBC_2.38 clog10f32 F
> +GLIBC_2.38 clog10f32x F
> +GLIBC_2.38 clog10f64 F
> +GLIBC_2.38 clog10f64x F
> +GLIBC_2.38 clog10l F
> +GLIBC_2.38 clogf F
> +GLIBC_2.38 clogf128 F
> +GLIBC_2.38 clogf32 F
> +GLIBC_2.38 clogf32x F
> +GLIBC_2.38 clogf64 F
> +GLIBC_2.38 clogf64x F
> +GLIBC_2.38 clogl F
> +GLIBC_2.38 conj F
> +GLIBC_2.38 conjf F
> +GLIBC_2.38 conjf128 F
> +GLIBC_2.38 conjf32 F
> +GLIBC_2.38 conjf32x F
> +GLIBC_2.38 conjf64 F
> +GLIBC_2.38 conjf64x F
> +GLIBC_2.38 conjl F
> +GLIBC_2.38 copysign F
> +GLIBC_2.38 copysignf F
> +GLIBC_2.38 copysignf128 F
> +GLIBC_2.38 copysignf32 F
> +GLIBC_2.38 copysignf32x F
> +GLIBC_2.38 copysignf64 F
> +GLIBC_2.38 copysignf64x F
> +GLIBC_2.38 copysignl F
> +GLIBC_2.38 cos F
> +GLIBC_2.38 cosf F
> +GLIBC_2.38 cosf128 F
> +GLIBC_2.38 cosf32 F
> +GLIBC_2.38 cosf32x F
> +GLIBC_2.38 cosf64 F
> +GLIBC_2.38 cosf64x F
> +GLIBC_2.38 cosh F
> +GLIBC_2.38 coshf F
> +GLIBC_2.38 coshf128 F
> +GLIBC_2.38 coshf32 F
> +GLIBC_2.38 coshf32x F
> +GLIBC_2.38 coshf64 F
> +GLIBC_2.38 coshf64x F
> +GLIBC_2.38 coshl F
> +GLIBC_2.38 cosl F
> +GLIBC_2.38 cpow F
> +GLIBC_2.38 cpowf F
> +GLIBC_2.38 cpowf128 F
> +GLIBC_2.38 cpowf32 F
> +GLIBC_2.38 cpowf32x F
> +GLIBC_2.38 cpowf64 F
> +GLIBC_2.38 cpowf64x F
> +GLIBC_2.38 cpowl F
> +GLIBC_2.38 cproj F
> +GLIBC_2.38 cprojf F
> +GLIBC_2.38 cprojf128 F
> +GLIBC_2.38 cprojf32 F
> +GLIBC_2.38 cprojf32x F
> +GLIBC_2.38 cprojf64 F
> +GLIBC_2.38 cprojf64x F
> +GLIBC_2.38 cprojl F
> +GLIBC_2.38 creal F
> +GLIBC_2.38 crealf F
> +GLIBC_2.38 crealf128 F
> +GLIBC_2.38 crealf32 F
> +GLIBC_2.38 crealf32x F
> +GLIBC_2.38 crealf64 F
> +GLIBC_2.38 crealf64x F
> +GLIBC_2.38 creall F
> +GLIBC_2.38 csin F
> +GLIBC_2.38 csinf F
> +GLIBC_2.38 csinf128 F
> +GLIBC_2.38 csinf32 F
> +GLIBC_2.38 csinf32x F
> +GLIBC_2.38 csinf64 F
> +GLIBC_2.38 csinf64x F
> +GLIBC_2.38 csinh F
> +GLIBC_2.38 csinhf F
> +GLIBC_2.38 csinhf128 F
> +GLIBC_2.38 csinhf32 F
> +GLIBC_2.38 csinhf32x F
> +GLIBC_2.38 csinhf64 F
> +GLIBC_2.38 csinhf64x F
> +GLIBC_2.38 csinhl F
> +GLIBC_2.38 csinl F
> +GLIBC_2.38 csqrt F
> +GLIBC_2.38 csqrtf F
> +GLIBC_2.38 csqrtf128 F
> +GLIBC_2.38 csqrtf32 F
> +GLIBC_2.38 csqrtf32x F
> +GLIBC_2.38 csqrtf64 F
> +GLIBC_2.38 csqrtf64x F
> +GLIBC_2.38 csqrtl F
> +GLIBC_2.38 ctan F
> +GLIBC_2.38 ctanf F
> +GLIBC_2.38 ctanf128 F
> +GLIBC_2.38 ctanf32 F
> +GLIBC_2.38 ctanf32x F
> +GLIBC_2.38 ctanf64 F
> +GLIBC_2.38 ctanf64x F
> +GLIBC_2.38 ctanh F
> +GLIBC_2.38 ctanhf F
> +GLIBC_2.38 ctanhf128 F
> +GLIBC_2.38 ctanhf32 F
> +GLIBC_2.38 ctanhf32x F
> +GLIBC_2.38 ctanhf64 F
> +GLIBC_2.38 ctanhf64x F
> +GLIBC_2.38 ctanhl F
> +GLIBC_2.38 ctanl F
> +GLIBC_2.38 daddl F
> +GLIBC_2.38 ddivl F
> +GLIBC_2.38 dfmal F
> +GLIBC_2.38 dmull F
> +GLIBC_2.38 drem F
> +GLIBC_2.38 dremf F
> +GLIBC_2.38 dreml F
> +GLIBC_2.38 dsqrtl F
> +GLIBC_2.38 dsubl F
> +GLIBC_2.38 erf F
> +GLIBC_2.38 erfc F
> +GLIBC_2.38 erfcf F
> +GLIBC_2.38 erfcf128 F
> +GLIBC_2.38 erfcf32 F
> +GLIBC_2.38 erfcf32x F
> +GLIBC_2.38 erfcf64 F
> +GLIBC_2.38 erfcf64x F
> +GLIBC_2.38 erfcl F
> +GLIBC_2.38 erff F
> +GLIBC_2.38 erff128 F
> +GLIBC_2.38 erff32 F
> +GLIBC_2.38 erff32x F
> +GLIBC_2.38 erff64 F
> +GLIBC_2.38 erff64x F
> +GLIBC_2.38 erfl F
> +GLIBC_2.38 exp F
> +GLIBC_2.38 exp10 F
> +GLIBC_2.38 exp10f F
> +GLIBC_2.38 exp10f128 F
> +GLIBC_2.38 exp10f32 F
> +GLIBC_2.38 exp10f32x F
> +GLIBC_2.38 exp10f64 F
> +GLIBC_2.38 exp10f64x F
> +GLIBC_2.38 exp10l F
> +GLIBC_2.38 exp2 F
> +GLIBC_2.38 exp2f F
> +GLIBC_2.38 exp2f128 F
> +GLIBC_2.38 exp2f32 F
> +GLIBC_2.38 exp2f32x F
> +GLIBC_2.38 exp2f64 F
> +GLIBC_2.38 exp2f64x F
> +GLIBC_2.38 exp2l F
> +GLIBC_2.38 expf F
> +GLIBC_2.38 expf128 F
> +GLIBC_2.38 expf32 F
> +GLIBC_2.38 expf32x F
> +GLIBC_2.38 expf64 F
> +GLIBC_2.38 expf64x F
> +GLIBC_2.38 expl F
> +GLIBC_2.38 expm1 F
> +GLIBC_2.38 expm1f F
> +GLIBC_2.38 expm1f128 F
> +GLIBC_2.38 expm1f32 F
> +GLIBC_2.38 expm1f32x F
> +GLIBC_2.38 expm1f64 F
> +GLIBC_2.38 expm1f64x F
> +GLIBC_2.38 expm1l F
> +GLIBC_2.38 f32addf128 F
> +GLIBC_2.38 f32addf32x F
> +GLIBC_2.38 f32addf64 F
> +GLIBC_2.38 f32addf64x F
> +GLIBC_2.38 f32divf128 F
> +GLIBC_2.38 f32divf32x F
> +GLIBC_2.38 f32divf64 F
> +GLIBC_2.38 f32divf64x F
> +GLIBC_2.38 f32fmaf128 F
> +GLIBC_2.38 f32fmaf32x F
> +GLIBC_2.38 f32fmaf64 F
> +GLIBC_2.38 f32fmaf64x F
> +GLIBC_2.38 f32mulf128 F
> +GLIBC_2.38 f32mulf32x F
> +GLIBC_2.38 f32mulf64 F
> +GLIBC_2.38 f32mulf64x F
> +GLIBC_2.38 f32sqrtf128 F
> +GLIBC_2.38 f32sqrtf32x F
> +GLIBC_2.38 f32sqrtf64 F
> +GLIBC_2.38 f32sqrtf64x F
> +GLIBC_2.38 f32subf128 F
> +GLIBC_2.38 f32subf32x F
> +GLIBC_2.38 f32subf64 F
> +GLIBC_2.38 f32subf64x F
> +GLIBC_2.38 f32xaddf128 F
> +GLIBC_2.38 f32xaddf64 F
> +GLIBC_2.38 f32xaddf64x F
> +GLIBC_2.38 f32xdivf128 F
> +GLIBC_2.38 f32xdivf64 F
> +GLIBC_2.38 f32xdivf64x F
> +GLIBC_2.38 f32xfmaf128 F
> +GLIBC_2.38 f32xfmaf64 F
> +GLIBC_2.38 f32xfmaf64x F
> +GLIBC_2.38 f32xmulf128 F
> +GLIBC_2.38 f32xmulf64 F
> +GLIBC_2.38 f32xmulf64x F
> +GLIBC_2.38 f32xsqrtf128 F
> +GLIBC_2.38 f32xsqrtf64 F
> +GLIBC_2.38 f32xsqrtf64x F
> +GLIBC_2.38 f32xsubf128 F
> +GLIBC_2.38 f32xsubf64 F
> +GLIBC_2.38 f32xsubf64x F
> +GLIBC_2.38 f64addf128 F
> +GLIBC_2.38 f64addf64x F
> +GLIBC_2.38 f64divf128 F
> +GLIBC_2.38 f64divf64x F
> +GLIBC_2.38 f64fmaf128 F
> +GLIBC_2.38 f64fmaf64x F
> +GLIBC_2.38 f64mulf128 F
> +GLIBC_2.38 f64mulf64x F
> +GLIBC_2.38 f64sqrtf128 F
> +GLIBC_2.38 f64sqrtf64x F
> +GLIBC_2.38 f64subf128 F
> +GLIBC_2.38 f64subf64x F
> +GLIBC_2.38 f64xaddf128 F
> +GLIBC_2.38 f64xdivf128 F
> +GLIBC_2.38 f64xfmaf128 F
> +GLIBC_2.38 f64xmulf128 F
> +GLIBC_2.38 f64xsqrtf128 F
> +GLIBC_2.38 f64xsubf128 F
> +GLIBC_2.38 fabs F
> +GLIBC_2.38 fabsf F
> +GLIBC_2.38 fabsf128 F
> +GLIBC_2.38 fabsf32 F
> +GLIBC_2.38 fabsf32x F
> +GLIBC_2.38 fabsf64 F
> +GLIBC_2.38 fabsf64x F
> +GLIBC_2.38 fabsl F
> +GLIBC_2.38 fadd F
> +GLIBC_2.38 faddl F
> +GLIBC_2.38 fdim F
> +GLIBC_2.38 fdimf F
> +GLIBC_2.38 fdimf128 F
> +GLIBC_2.38 fdimf32 F
> +GLIBC_2.38 fdimf32x F
> +GLIBC_2.38 fdimf64 F
> +GLIBC_2.38 fdimf64x F
> +GLIBC_2.38 fdiml F
> +GLIBC_2.38 fdiv F
> +GLIBC_2.38 fdivl F
> +GLIBC_2.38 feclearexcept F
> +GLIBC_2.38 fedisableexcept F
> +GLIBC_2.38 feenableexcept F
> +GLIBC_2.38 fegetenv F
> +GLIBC_2.38 fegetexcept F
> +GLIBC_2.38 fegetexceptflag F
> +GLIBC_2.38 fegetmode F
> +GLIBC_2.38 fegetround F
> +GLIBC_2.38 feholdexcept F
> +GLIBC_2.38 feraiseexcept F
> +GLIBC_2.38 fesetenv F
> +GLIBC_2.38 fesetexcept F
> +GLIBC_2.38 fesetexceptflag F
> +GLIBC_2.38 fesetmode F
> +GLIBC_2.38 fesetround F
> +GLIBC_2.38 fetestexcept F
> +GLIBC_2.38 fetestexceptflag F
> +GLIBC_2.38 feupdateenv F
> +GLIBC_2.38 ffma F
> +GLIBC_2.38 ffmal F
> +GLIBC_2.38 finite F
> +GLIBC_2.38 finitef F
> +GLIBC_2.38 finitel F
> +GLIBC_2.38 floor F
> +GLIBC_2.38 floorf F
> +GLIBC_2.38 floorf128 F
> +GLIBC_2.38 floorf32 F
> +GLIBC_2.38 floorf32x F
> +GLIBC_2.38 floorf64 F
> +GLIBC_2.38 floorf64x F
> +GLIBC_2.38 floorl F
> +GLIBC_2.38 fma F
> +GLIBC_2.38 fmaf F
> +GLIBC_2.38 fmaf128 F
> +GLIBC_2.38 fmaf32 F
> +GLIBC_2.38 fmaf32x F
> +GLIBC_2.38 fmaf64 F
> +GLIBC_2.38 fmaf64x F
> +GLIBC_2.38 fmal F
> +GLIBC_2.38 fmax F
> +GLIBC_2.38 fmaxf F
> +GLIBC_2.38 fmaxf128 F
> +GLIBC_2.38 fmaxf32 F
> +GLIBC_2.38 fmaxf32x F
> +GLIBC_2.38 fmaxf64 F
> +GLIBC_2.38 fmaxf64x F
> +GLIBC_2.38 fmaximum F
> +GLIBC_2.38 fmaximum_mag F
> +GLIBC_2.38 fmaximum_mag_num F
> +GLIBC_2.38 fmaximum_mag_numf F
> +GLIBC_2.38 fmaximum_mag_numf128 F
> +GLIBC_2.38 fmaximum_mag_numf32 F
> +GLIBC_2.38 fmaximum_mag_numf32x F
> +GLIBC_2.38 fmaximum_mag_numf64 F
> +GLIBC_2.38 fmaximum_mag_numf64x F
> +GLIBC_2.38 fmaximum_mag_numl F
> +GLIBC_2.38 fmaximum_magf F
> +GLIBC_2.38 fmaximum_magf128 F
> +GLIBC_2.38 fmaximum_magf32 F
> +GLIBC_2.38 fmaximum_magf32x F
> +GLIBC_2.38 fmaximum_magf64 F
> +GLIBC_2.38 fmaximum_magf64x F
> +GLIBC_2.38 fmaximum_magl F
> +GLIBC_2.38 fmaximum_num F
> +GLIBC_2.38 fmaximum_numf F
> +GLIBC_2.38 fmaximum_numf128 F
> +GLIBC_2.38 fmaximum_numf32 F
> +GLIBC_2.38 fmaximum_numf32x F
> +GLIBC_2.38 fmaximum_numf64 F
> +GLIBC_2.38 fmaximum_numf64x F
> +GLIBC_2.38 fmaximum_numl F
> +GLIBC_2.38 fmaximumf F
> +GLIBC_2.38 fmaximumf128 F
> +GLIBC_2.38 fmaximumf32 F
> +GLIBC_2.38 fmaximumf32x F
> +GLIBC_2.38 fmaximumf64 F
> +GLIBC_2.38 fmaximumf64x F
> +GLIBC_2.38 fmaximuml F
> +GLIBC_2.38 fmaxl F
> +GLIBC_2.38 fmaxmag F
> +GLIBC_2.38 fmaxmagf F
> +GLIBC_2.38 fmaxmagf128 F
> +GLIBC_2.38 fmaxmagf32 F
> +GLIBC_2.38 fmaxmagf32x F
> +GLIBC_2.38 fmaxmagf64 F
> +GLIBC_2.38 fmaxmagf64x F
> +GLIBC_2.38 fmaxmagl F
> +GLIBC_2.38 fmin F
> +GLIBC_2.38 fminf F
> +GLIBC_2.38 fminf128 F
> +GLIBC_2.38 fminf32 F
> +GLIBC_2.38 fminf32x F
> +GLIBC_2.38 fminf64 F
> +GLIBC_2.38 fminf64x F
> +GLIBC_2.38 fminimum F
> +GLIBC_2.38 fminimum_mag F
> +GLIBC_2.38 fminimum_mag_num F
> +GLIBC_2.38 fminimum_mag_numf F
> +GLIBC_2.38 fminimum_mag_numf128 F
> +GLIBC_2.38 fminimum_mag_numf32 F
> +GLIBC_2.38 fminimum_mag_numf32x F
> +GLIBC_2.38 fminimum_mag_numf64 F
> +GLIBC_2.38 fminimum_mag_numf64x F
> +GLIBC_2.38 fminimum_mag_numl F
> +GLIBC_2.38 fminimum_magf F
> +GLIBC_2.38 fminimum_magf128 F
> +GLIBC_2.38 fminimum_magf32 F
> +GLIBC_2.38 fminimum_magf32x F
> +GLIBC_2.38 fminimum_magf64 F
> +GLIBC_2.38 fminimum_magf64x F
> +GLIBC_2.38 fminimum_magl F
> +GLIBC_2.38 fminimum_num F
> +GLIBC_2.38 fminimum_numf F
> +GLIBC_2.38 fminimum_numf128 F
> +GLIBC_2.38 fminimum_numf32 F
> +GLIBC_2.38 fminimum_numf32x F
> +GLIBC_2.38 fminimum_numf64 F
> +GLIBC_2.38 fminimum_numf64x F
> +GLIBC_2.38 fminimum_numl F
> +GLIBC_2.38 fminimumf F
> +GLIBC_2.38 fminimumf128 F
> +GLIBC_2.38 fminimumf32 F
> +GLIBC_2.38 fminimumf32x F
> +GLIBC_2.38 fminimumf64 F
> +GLIBC_2.38 fminimumf64x F
> +GLIBC_2.38 fminimuml F
> +GLIBC_2.38 fminl F
> +GLIBC_2.38 fminmag F
> +GLIBC_2.38 fminmagf F
> +GLIBC_2.38 fminmagf128 F
> +GLIBC_2.38 fminmagf32 F
> +GLIBC_2.38 fminmagf32x F
> +GLIBC_2.38 fminmagf64 F
> +GLIBC_2.38 fminmagf64x F
> +GLIBC_2.38 fminmagl F
> +GLIBC_2.38 fmod F
> +GLIBC_2.38 fmodf F
> +GLIBC_2.38 fmodf128 F
> +GLIBC_2.38 fmodf32 F
> +GLIBC_2.38 fmodf32x F
> +GLIBC_2.38 fmodf64 F
> +GLIBC_2.38 fmodf64x F
> +GLIBC_2.38 fmodl F
> +GLIBC_2.38 fmul F
> +GLIBC_2.38 fmull F
> +GLIBC_2.38 frexp F
> +GLIBC_2.38 frexpf F
> +GLIBC_2.38 frexpf128 F
> +GLIBC_2.38 frexpf32 F
> +GLIBC_2.38 frexpf32x F
> +GLIBC_2.38 frexpf64 F
> +GLIBC_2.38 frexpf64x F
> +GLIBC_2.38 frexpl F
> +GLIBC_2.38 fromfp F
> +GLIBC_2.38 fromfpf F
> +GLIBC_2.38 fromfpf128 F
> +GLIBC_2.38 fromfpf32 F
> +GLIBC_2.38 fromfpf32x F
> +GLIBC_2.38 fromfpf64 F
> +GLIBC_2.38 fromfpf64x F
> +GLIBC_2.38 fromfpl F
> +GLIBC_2.38 fromfpx F
> +GLIBC_2.38 fromfpxf F
> +GLIBC_2.38 fromfpxf128 F
> +GLIBC_2.38 fromfpxf32 F
> +GLIBC_2.38 fromfpxf32x F
> +GLIBC_2.38 fromfpxf64 F
> +GLIBC_2.38 fromfpxf64x F
> +GLIBC_2.38 fromfpxl F
> +GLIBC_2.38 fsqrt F
> +GLIBC_2.38 fsqrtl F
> +GLIBC_2.38 fsub F
> +GLIBC_2.38 fsubl F
> +GLIBC_2.38 gamma F
> +GLIBC_2.38 gammaf F
> +GLIBC_2.38 gammal F
> +GLIBC_2.38 getpayload F
> +GLIBC_2.38 getpayloadf F
> +GLIBC_2.38 getpayloadf128 F
> +GLIBC_2.38 getpayloadf32 F
> +GLIBC_2.38 getpayloadf32x F
> +GLIBC_2.38 getpayloadf64 F
> +GLIBC_2.38 getpayloadf64x F
> +GLIBC_2.38 getpayloadl F
> +GLIBC_2.38 hypot F
> +GLIBC_2.38 hypotf F
> +GLIBC_2.38 hypotf128 F
> +GLIBC_2.38 hypotf32 F
> +GLIBC_2.38 hypotf32x F
> +GLIBC_2.38 hypotf64 F
> +GLIBC_2.38 hypotf64x F
> +GLIBC_2.38 hypotl F
> +GLIBC_2.38 ilogb F
> +GLIBC_2.38 ilogbf F
> +GLIBC_2.38 ilogbf128 F
> +GLIBC_2.38 ilogbf32 F
> +GLIBC_2.38 ilogbf32x F
> +GLIBC_2.38 ilogbf64 F
> +GLIBC_2.38 ilogbf64x F
> +GLIBC_2.38 ilogbl F
> +GLIBC_2.38 j0 F
> +GLIBC_2.38 j0f F
> +GLIBC_2.38 j0f128 F
> +GLIBC_2.38 j0f32 F
> +GLIBC_2.38 j0f32x F
> +GLIBC_2.38 j0f64 F
> +GLIBC_2.38 j0f64x F
> +GLIBC_2.38 j0l F
> +GLIBC_2.38 j1 F
> +GLIBC_2.38 j1f F
> +GLIBC_2.38 j1f128 F
> +GLIBC_2.38 j1f32 F
> +GLIBC_2.38 j1f32x F
> +GLIBC_2.38 j1f64 F
> +GLIBC_2.38 j1f64x F
> +GLIBC_2.38 j1l F
> +GLIBC_2.38 jn F
> +GLIBC_2.38 jnf F
> +GLIBC_2.38 jnf128 F
> +GLIBC_2.38 jnf32 F
> +GLIBC_2.38 jnf32x F
> +GLIBC_2.38 jnf64 F
> +GLIBC_2.38 jnf64x F
> +GLIBC_2.38 jnl F
> +GLIBC_2.38 ldexp F
> +GLIBC_2.38 ldexpf F
> +GLIBC_2.38 ldexpf128 F
> +GLIBC_2.38 ldexpf32 F
> +GLIBC_2.38 ldexpf32x F
> +GLIBC_2.38 ldexpf64 F
> +GLIBC_2.38 ldexpf64x F
> +GLIBC_2.38 ldexpl F
> +GLIBC_2.38 lgamma F
> +GLIBC_2.38 lgamma_r F
> +GLIBC_2.38 lgammaf F
> +GLIBC_2.38 lgammaf128 F
> +GLIBC_2.38 lgammaf128_r F
> +GLIBC_2.38 lgammaf32 F
> +GLIBC_2.38 lgammaf32_r F
> +GLIBC_2.38 lgammaf32x F
> +GLIBC_2.38 lgammaf32x_r F
> +GLIBC_2.38 lgammaf64 F
> +GLIBC_2.38 lgammaf64_r F
> +GLIBC_2.38 lgammaf64x F
> +GLIBC_2.38 lgammaf64x_r F
> +GLIBC_2.38 lgammaf_r F
> +GLIBC_2.38 lgammal F
> +GLIBC_2.38 lgammal_r F
> +GLIBC_2.38 llogb F
> +GLIBC_2.38 llogbf F
> +GLIBC_2.38 llogbf128 F
> +GLIBC_2.38 llogbf32 F
> +GLIBC_2.38 llogbf32x F
> +GLIBC_2.38 llogbf64 F
> +GLIBC_2.38 llogbf64x F
> +GLIBC_2.38 llogbl F
> +GLIBC_2.38 llrint F
> +GLIBC_2.38 llrintf F
> +GLIBC_2.38 llrintf128 F
> +GLIBC_2.38 llrintf32 F
> +GLIBC_2.38 llrintf32x F
> +GLIBC_2.38 llrintf64 F
> +GLIBC_2.38 llrintf64x F
> +GLIBC_2.38 llrintl F
> +GLIBC_2.38 llround F
> +GLIBC_2.38 llroundf F
> +GLIBC_2.38 llroundf128 F
> +GLIBC_2.38 llroundf32 F
> +GLIBC_2.38 llroundf32x F
> +GLIBC_2.38 llroundf64 F
> +GLIBC_2.38 llroundf64x F
> +GLIBC_2.38 llroundl F
> +GLIBC_2.38 log F
> +GLIBC_2.38 log10 F
> +GLIBC_2.38 log10f F
> +GLIBC_2.38 log10f128 F
> +GLIBC_2.38 log10f32 F
> +GLIBC_2.38 log10f32x F
> +GLIBC_2.38 log10f64 F
> +GLIBC_2.38 log10f64x F
> +GLIBC_2.38 log10l F
> +GLIBC_2.38 log1p F
> +GLIBC_2.38 log1pf F
> +GLIBC_2.38 log1pf128 F
> +GLIBC_2.38 log1pf32 F
> +GLIBC_2.38 log1pf32x F
> +GLIBC_2.38 log1pf64 F
> +GLIBC_2.38 log1pf64x F
> +GLIBC_2.38 log1pl F
> +GLIBC_2.38 log2 F
> +GLIBC_2.38 log2f F
> +GLIBC_2.38 log2f128 F
> +GLIBC_2.38 log2f32 F
> +GLIBC_2.38 log2f32x F
> +GLIBC_2.38 log2f64 F
> +GLIBC_2.38 log2f64x F
> +GLIBC_2.38 log2l F
> +GLIBC_2.38 logb F
> +GLIBC_2.38 logbf F
> +GLIBC_2.38 logbf128 F
> +GLIBC_2.38 logbf32 F
> +GLIBC_2.38 logbf32x F
> +GLIBC_2.38 logbf64 F
> +GLIBC_2.38 logbf64x F
> +GLIBC_2.38 logbl F
> +GLIBC_2.38 logf F
> +GLIBC_2.38 logf128 F
> +GLIBC_2.38 logf32 F
> +GLIBC_2.38 logf32x F
> +GLIBC_2.38 logf64 F
> +GLIBC_2.38 logf64x F
> +GLIBC_2.38 logl F
> +GLIBC_2.38 lrint F
> +GLIBC_2.38 lrintf F
> +GLIBC_2.38 lrintf128 F
> +GLIBC_2.38 lrintf32 F
> +GLIBC_2.38 lrintf32x F
> +GLIBC_2.38 lrintf64 F
> +GLIBC_2.38 lrintf64x F
> +GLIBC_2.38 lrintl F
> +GLIBC_2.38 lround F
> +GLIBC_2.38 lroundf F
> +GLIBC_2.38 lroundf128 F
> +GLIBC_2.38 lroundf32 F
> +GLIBC_2.38 lroundf32x F
> +GLIBC_2.38 lroundf64 F
> +GLIBC_2.38 lroundf64x F
> +GLIBC_2.38 lroundl F
> +GLIBC_2.38 modf F
> +GLIBC_2.38 modff F
> +GLIBC_2.38 modff128 F
> +GLIBC_2.38 modff32 F
> +GLIBC_2.38 modff32x F
> +GLIBC_2.38 modff64 F
> +GLIBC_2.38 modff64x F
> +GLIBC_2.38 modfl F
> +GLIBC_2.38 nan F
> +GLIBC_2.38 nanf F
> +GLIBC_2.38 nanf128 F
> +GLIBC_2.38 nanf32 F
> +GLIBC_2.38 nanf32x F
> +GLIBC_2.38 nanf64 F
> +GLIBC_2.38 nanf64x F
> +GLIBC_2.38 nanl F
> +GLIBC_2.38 nearbyint F
> +GLIBC_2.38 nearbyintf F
> +GLIBC_2.38 nearbyintf128 F
> +GLIBC_2.38 nearbyintf32 F
> +GLIBC_2.38 nearbyintf32x F
> +GLIBC_2.38 nearbyintf64 F
> +GLIBC_2.38 nearbyintf64x F
> +GLIBC_2.38 nearbyintl F
> +GLIBC_2.38 nextafter F
> +GLIBC_2.38 nextafterf F
> +GLIBC_2.38 nextafterf128 F
> +GLIBC_2.38 nextafterf32 F
> +GLIBC_2.38 nextafterf32x F
> +GLIBC_2.38 nextafterf64 F
> +GLIBC_2.38 nextafterf64x F
> +GLIBC_2.38 nextafterl F
> +GLIBC_2.38 nextdown F
> +GLIBC_2.38 nextdownf F
> +GLIBC_2.38 nextdownf128 F
> +GLIBC_2.38 nextdownf32 F
> +GLIBC_2.38 nextdownf32x F
> +GLIBC_2.38 nextdownf64 F
> +GLIBC_2.38 nextdownf64x F
> +GLIBC_2.38 nextdownl F
> +GLIBC_2.38 nexttoward F
> +GLIBC_2.38 nexttowardf F
> +GLIBC_2.38 nexttowardl F
> +GLIBC_2.38 nextup F
> +GLIBC_2.38 nextupf F
> +GLIBC_2.38 nextupf128 F
> +GLIBC_2.38 nextupf32 F
> +GLIBC_2.38 nextupf32x F
> +GLIBC_2.38 nextupf64 F
> +GLIBC_2.38 nextupf64x F
> +GLIBC_2.38 nextupl F
> +GLIBC_2.38 pow F
> +GLIBC_2.38 powf F
> +GLIBC_2.38 powf128 F
> +GLIBC_2.38 powf32 F
> +GLIBC_2.38 powf32x F
> +GLIBC_2.38 powf64 F
> +GLIBC_2.38 powf64x F
> +GLIBC_2.38 powl F
> +GLIBC_2.38 remainder F
> +GLIBC_2.38 remainderf F
> +GLIBC_2.38 remainderf128 F
> +GLIBC_2.38 remainderf32 F
> +GLIBC_2.38 remainderf32x F
> +GLIBC_2.38 remainderf64 F
> +GLIBC_2.38 remainderf64x F
> +GLIBC_2.38 remainderl F
> +GLIBC_2.38 remquo F
> +GLIBC_2.38 remquof F
> +GLIBC_2.38 remquof128 F
> +GLIBC_2.38 remquof32 F
> +GLIBC_2.38 remquof32x F
> +GLIBC_2.38 remquof64 F
> +GLIBC_2.38 remquof64x F
> +GLIBC_2.38 remquol F
> +GLIBC_2.38 rint F
> +GLIBC_2.38 rintf F
> +GLIBC_2.38 rintf128 F
> +GLIBC_2.38 rintf32 F
> +GLIBC_2.38 rintf32x F
> +GLIBC_2.38 rintf64 F
> +GLIBC_2.38 rintf64x F
> +GLIBC_2.38 rintl F
> +GLIBC_2.38 round F
> +GLIBC_2.38 roundeven F
> +GLIBC_2.38 roundevenf F
> +GLIBC_2.38 roundevenf128 F
> +GLIBC_2.38 roundevenf32 F
> +GLIBC_2.38 roundevenf32x F
> +GLIBC_2.38 roundevenf64 F
> +GLIBC_2.38 roundevenf64x F
> +GLIBC_2.38 roundevenl F
> +GLIBC_2.38 roundf F
> +GLIBC_2.38 roundf128 F
> +GLIBC_2.38 roundf32 F
> +GLIBC_2.38 roundf32x F
> +GLIBC_2.38 roundf64 F
> +GLIBC_2.38 roundf64x F
> +GLIBC_2.38 roundl F
> +GLIBC_2.38 scalb F
> +GLIBC_2.38 scalbf F
> +GLIBC_2.38 scalbl F
> +GLIBC_2.38 scalbln F
> +GLIBC_2.38 scalblnf F
> +GLIBC_2.38 scalblnf128 F
> +GLIBC_2.38 scalblnf32 F
> +GLIBC_2.38 scalblnf32x F
> +GLIBC_2.38 scalblnf64 F
> +GLIBC_2.38 scalblnf64x F
> +GLIBC_2.38 scalblnl F
> +GLIBC_2.38 scalbn F
> +GLIBC_2.38 scalbnf F
> +GLIBC_2.38 scalbnf128 F
> +GLIBC_2.38 scalbnf32 F
> +GLIBC_2.38 scalbnf32x F
> +GLIBC_2.38 scalbnf64 F
> +GLIBC_2.38 scalbnf64x F
> +GLIBC_2.38 scalbnl F
> +GLIBC_2.38 setpayload F
> +GLIBC_2.38 setpayloadf F
> +GLIBC_2.38 setpayloadf128 F
> +GLIBC_2.38 setpayloadf32 F
> +GLIBC_2.38 setpayloadf32x F
> +GLIBC_2.38 setpayloadf64 F
> +GLIBC_2.38 setpayloadf64x F
> +GLIBC_2.38 setpayloadl F
> +GLIBC_2.38 setpayloadsig F
> +GLIBC_2.38 setpayloadsigf F
> +GLIBC_2.38 setpayloadsigf128 F
> +GLIBC_2.38 setpayloadsigf32 F
> +GLIBC_2.38 setpayloadsigf32x F
> +GLIBC_2.38 setpayloadsigf64 F
> +GLIBC_2.38 setpayloadsigf64x F
> +GLIBC_2.38 setpayloadsigl F
> +GLIBC_2.38 signgam D 0x4
> +GLIBC_2.38 significand F
> +GLIBC_2.38 significandf F
> +GLIBC_2.38 significandl F
> +GLIBC_2.38 sin F
> +GLIBC_2.38 sincos F
> +GLIBC_2.38 sincosf F
> +GLIBC_2.38 sincosf128 F
> +GLIBC_2.38 sincosf32 F
> +GLIBC_2.38 sincosf32x F
> +GLIBC_2.38 sincosf64 F
> +GLIBC_2.38 sincosf64x F
> +GLIBC_2.38 sincosl F
> +GLIBC_2.38 sinf F
> +GLIBC_2.38 sinf128 F
> +GLIBC_2.38 sinf32 F
> +GLIBC_2.38 sinf32x F
> +GLIBC_2.38 sinf64 F
> +GLIBC_2.38 sinf64x F
> +GLIBC_2.38 sinh F
> +GLIBC_2.38 sinhf F
> +GLIBC_2.38 sinhf128 F
> +GLIBC_2.38 sinhf32 F
> +GLIBC_2.38 sinhf32x F
> +GLIBC_2.38 sinhf64 F
> +GLIBC_2.38 sinhf64x F
> +GLIBC_2.38 sinhl F
> +GLIBC_2.38 sinl F
> +GLIBC_2.38 sqrt F
> +GLIBC_2.38 sqrtf F
> +GLIBC_2.38 sqrtf128 F
> +GLIBC_2.38 sqrtf32 F
> +GLIBC_2.38 sqrtf32x F
> +GLIBC_2.38 sqrtf64 F
> +GLIBC_2.38 sqrtf64x F
> +GLIBC_2.38 sqrtl F
> +GLIBC_2.38 tan F
> +GLIBC_2.38 tanf F
> +GLIBC_2.38 tanf128 F
> +GLIBC_2.38 tanf32 F
> +GLIBC_2.38 tanf32x F
> +GLIBC_2.38 tanf64 F
> +GLIBC_2.38 tanf64x F
> +GLIBC_2.38 tanh F
> +GLIBC_2.38 tanhf F
> +GLIBC_2.38 tanhf128 F
> +GLIBC_2.38 tanhf32 F
> +GLIBC_2.38 tanhf32x F
> +GLIBC_2.38 tanhf64 F
> +GLIBC_2.38 tanhf64x F
> +GLIBC_2.38 tanhl F
> +GLIBC_2.38 tanl F
> +GLIBC_2.38 tgamma F
> +GLIBC_2.38 tgammaf F
> +GLIBC_2.38 tgammaf128 F
> +GLIBC_2.38 tgammaf32 F
> +GLIBC_2.38 tgammaf32x F
> +GLIBC_2.38 tgammaf64 F
> +GLIBC_2.38 tgammaf64x F
> +GLIBC_2.38 tgammal F
> +GLIBC_2.38 totalorder F
> +GLIBC_2.38 totalorderf F
> +GLIBC_2.38 totalorderf128 F
> +GLIBC_2.38 totalorderf32 F
> +GLIBC_2.38 totalorderf32x F
> +GLIBC_2.38 totalorderf64 F
> +GLIBC_2.38 totalorderf64x F
> +GLIBC_2.38 totalorderl F
> +GLIBC_2.38 totalordermag F
> +GLIBC_2.38 totalordermagf F
> +GLIBC_2.38 totalordermagf128 F
> +GLIBC_2.38 totalordermagf32 F
> +GLIBC_2.38 totalordermagf32x F
> +GLIBC_2.38 totalordermagf64 F
> +GLIBC_2.38 totalordermagf64x F
> +GLIBC_2.38 totalordermagl F
> +GLIBC_2.38 trunc F
> +GLIBC_2.38 truncf F
> +GLIBC_2.38 truncf128 F
> +GLIBC_2.38 truncf32 F
> +GLIBC_2.38 truncf32x F
> +GLIBC_2.38 truncf64 F
> +GLIBC_2.38 truncf64x F
> +GLIBC_2.38 truncl F
> +GLIBC_2.38 ufromfp F
> +GLIBC_2.38 ufromfpf F
> +GLIBC_2.38 ufromfpf128 F
> +GLIBC_2.38 ufromfpf32 F
> +GLIBC_2.38 ufromfpf32x F
> +GLIBC_2.38 ufromfpf64 F
> +GLIBC_2.38 ufromfpf64x F
> +GLIBC_2.38 ufromfpl F
> +GLIBC_2.38 ufromfpx F
> +GLIBC_2.38 ufromfpxf F
> +GLIBC_2.38 ufromfpxf128 F
> +GLIBC_2.38 ufromfpxf32 F
> +GLIBC_2.38 ufromfpxf32x F
> +GLIBC_2.38 ufromfpxf64 F
> +GLIBC_2.38 ufromfpxf64x F
> +GLIBC_2.38 ufromfpxl F
> +GLIBC_2.38 y0 F
> +GLIBC_2.38 y0f F
> +GLIBC_2.38 y0f128 F
> +GLIBC_2.38 y0f32 F
> +GLIBC_2.38 y0f32x F
> +GLIBC_2.38 y0f64 F
> +GLIBC_2.38 y0f64x F
> +GLIBC_2.38 y0l F
> +GLIBC_2.38 y1 F
> +GLIBC_2.38 y1f F
> +GLIBC_2.38 y1f128 F
> +GLIBC_2.38 y1f32 F
> +GLIBC_2.38 y1f32x F
> +GLIBC_2.38 y1f64 F
> +GLIBC_2.38 y1f64x F
> +GLIBC_2.38 y1l F
> +GLIBC_2.38 yn F
> +GLIBC_2.38 ynf F
> +GLIBC_2.38 ynf128 F
> +GLIBC_2.38 ynf32 F
> +GLIBC_2.38 ynf32x F
> +GLIBC_2.38 ynf64 F
> +GLIBC_2.38 ynf64x F
> +GLIBC_2.38 ynl F
> diff --git a/sysdeps/mach/hurd/x86_64/libmvec.abilist b/sysdeps/mach/hurd/x86_64/libmvec.abilist
> new file mode 100644
> index 00000000..9ecdf5c9
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libmvec.abilist
> @@ -0,0 +1,216 @@
> +GLIBC_2.38 _ZGVbN2v_acos F
> +GLIBC_2.38 _ZGVbN2v_acosh F
> +GLIBC_2.38 _ZGVbN2v_asin F
> +GLIBC_2.38 _ZGVbN2v_asinh F
> +GLIBC_2.38 _ZGVbN2v_atan F
> +GLIBC_2.38 _ZGVbN2v_atanh F
> +GLIBC_2.38 _ZGVbN2v_cbrt F
> +GLIBC_2.38 _ZGVbN2v_cos F
> +GLIBC_2.38 _ZGVbN2v_cosh F
> +GLIBC_2.38 _ZGVbN2v_erf F
> +GLIBC_2.38 _ZGVbN2v_erfc F
> +GLIBC_2.38 _ZGVbN2v_exp F
> +GLIBC_2.38 _ZGVbN2v_exp10 F
> +GLIBC_2.38 _ZGVbN2v_exp2 F
> +GLIBC_2.38 _ZGVbN2v_expm1 F
> +GLIBC_2.38 _ZGVbN2v_log F
> +GLIBC_2.38 _ZGVbN2v_log10 F
> +GLIBC_2.38 _ZGVbN2v_log1p F
> +GLIBC_2.38 _ZGVbN2v_log2 F
> +GLIBC_2.38 _ZGVbN2v_sin F
> +GLIBC_2.38 _ZGVbN2v_sinh F
> +GLIBC_2.38 _ZGVbN2v_tan F
> +GLIBC_2.38 _ZGVbN2v_tanh F
> +GLIBC_2.38 _ZGVbN2vv_atan2 F
> +GLIBC_2.38 _ZGVbN2vv_hypot F
> +GLIBC_2.38 _ZGVbN2vv_pow F
> +GLIBC_2.38 _ZGVbN2vvv_sincos F
> +GLIBC_2.38 _ZGVbN4v_acosf F
> +GLIBC_2.38 _ZGVbN4v_acoshf F
> +GLIBC_2.38 _ZGVbN4v_asinf F
> +GLIBC_2.38 _ZGVbN4v_asinhf F
> +GLIBC_2.38 _ZGVbN4v_atanf F
> +GLIBC_2.38 _ZGVbN4v_atanhf F
> +GLIBC_2.38 _ZGVbN4v_cbrtf F
> +GLIBC_2.38 _ZGVbN4v_cosf F
> +GLIBC_2.38 _ZGVbN4v_coshf F
> +GLIBC_2.38 _ZGVbN4v_erfcf F
> +GLIBC_2.38 _ZGVbN4v_erff F
> +GLIBC_2.38 _ZGVbN4v_exp10f F
> +GLIBC_2.38 _ZGVbN4v_exp2f F
> +GLIBC_2.38 _ZGVbN4v_expf F
> +GLIBC_2.38 _ZGVbN4v_expm1f F
> +GLIBC_2.38 _ZGVbN4v_log10f F
> +GLIBC_2.38 _ZGVbN4v_log1pf F
> +GLIBC_2.38 _ZGVbN4v_log2f F
> +GLIBC_2.38 _ZGVbN4v_logf F
> +GLIBC_2.38 _ZGVbN4v_sinf F
> +GLIBC_2.38 _ZGVbN4v_sinhf F
> +GLIBC_2.38 _ZGVbN4v_tanf F
> +GLIBC_2.38 _ZGVbN4v_tanhf F
> +GLIBC_2.38 _ZGVbN4vv_atan2f F
> +GLIBC_2.38 _ZGVbN4vv_hypotf F
> +GLIBC_2.38 _ZGVbN4vv_powf F
> +GLIBC_2.38 _ZGVbN4vvv_sincosf F
> +GLIBC_2.38 _ZGVcN4v_acos F
> +GLIBC_2.38 _ZGVcN4v_acosh F
> +GLIBC_2.38 _ZGVcN4v_asin F
> +GLIBC_2.38 _ZGVcN4v_asinh F
> +GLIBC_2.38 _ZGVcN4v_atan F
> +GLIBC_2.38 _ZGVcN4v_atanh F
> +GLIBC_2.38 _ZGVcN4v_cbrt F
> +GLIBC_2.38 _ZGVcN4v_cos F
> +GLIBC_2.38 _ZGVcN4v_cosh F
> +GLIBC_2.38 _ZGVcN4v_erf F
> +GLIBC_2.38 _ZGVcN4v_erfc F
> +GLIBC_2.38 _ZGVcN4v_exp F
> +GLIBC_2.38 _ZGVcN4v_exp10 F
> +GLIBC_2.38 _ZGVcN4v_exp2 F
> +GLIBC_2.38 _ZGVcN4v_expm1 F
> +GLIBC_2.38 _ZGVcN4v_log F
> +GLIBC_2.38 _ZGVcN4v_log10 F
> +GLIBC_2.38 _ZGVcN4v_log1p F
> +GLIBC_2.38 _ZGVcN4v_log2 F
> +GLIBC_2.38 _ZGVcN4v_sin F
> +GLIBC_2.38 _ZGVcN4v_sinh F
> +GLIBC_2.38 _ZGVcN4v_tan F
> +GLIBC_2.38 _ZGVcN4v_tanh F
> +GLIBC_2.38 _ZGVcN4vv_atan2 F
> +GLIBC_2.38 _ZGVcN4vv_hypot F
> +GLIBC_2.38 _ZGVcN4vv_pow F
> +GLIBC_2.38 _ZGVcN4vvv_sincos F
> +GLIBC_2.38 _ZGVcN8v_acosf F
> +GLIBC_2.38 _ZGVcN8v_acoshf F
> +GLIBC_2.38 _ZGVcN8v_asinf F
> +GLIBC_2.38 _ZGVcN8v_asinhf F
> +GLIBC_2.38 _ZGVcN8v_atanf F
> +GLIBC_2.38 _ZGVcN8v_atanhf F
> +GLIBC_2.38 _ZGVcN8v_cbrtf F
> +GLIBC_2.38 _ZGVcN8v_cosf F
> +GLIBC_2.38 _ZGVcN8v_coshf F
> +GLIBC_2.38 _ZGVcN8v_erfcf F
> +GLIBC_2.38 _ZGVcN8v_erff F
> +GLIBC_2.38 _ZGVcN8v_exp10f F
> +GLIBC_2.38 _ZGVcN8v_exp2f F
> +GLIBC_2.38 _ZGVcN8v_expf F
> +GLIBC_2.38 _ZGVcN8v_expm1f F
> +GLIBC_2.38 _ZGVcN8v_log10f F
> +GLIBC_2.38 _ZGVcN8v_log1pf F
> +GLIBC_2.38 _ZGVcN8v_log2f F
> +GLIBC_2.38 _ZGVcN8v_logf F
> +GLIBC_2.38 _ZGVcN8v_sinf F
> +GLIBC_2.38 _ZGVcN8v_sinhf F
> +GLIBC_2.38 _ZGVcN8v_tanf F
> +GLIBC_2.38 _ZGVcN8v_tanhf F
> +GLIBC_2.38 _ZGVcN8vv_atan2f F
> +GLIBC_2.38 _ZGVcN8vv_hypotf F
> +GLIBC_2.38 _ZGVcN8vv_powf F
> +GLIBC_2.38 _ZGVcN8vvv_sincosf F
> +GLIBC_2.38 _ZGVdN4v_acos F
> +GLIBC_2.38 _ZGVdN4v_acosh F
> +GLIBC_2.38 _ZGVdN4v_asin F
> +GLIBC_2.38 _ZGVdN4v_asinh F
> +GLIBC_2.38 _ZGVdN4v_atan F
> +GLIBC_2.38 _ZGVdN4v_atanh F
> +GLIBC_2.38 _ZGVdN4v_cbrt F
> +GLIBC_2.38 _ZGVdN4v_cos F
> +GLIBC_2.38 _ZGVdN4v_cosh F
> +GLIBC_2.38 _ZGVdN4v_erf F
> +GLIBC_2.38 _ZGVdN4v_erfc F
> +GLIBC_2.38 _ZGVdN4v_exp F
> +GLIBC_2.38 _ZGVdN4v_exp10 F
> +GLIBC_2.38 _ZGVdN4v_exp2 F
> +GLIBC_2.38 _ZGVdN4v_expm1 F
> +GLIBC_2.38 _ZGVdN4v_log F
> +GLIBC_2.38 _ZGVdN4v_log10 F
> +GLIBC_2.38 _ZGVdN4v_log1p F
> +GLIBC_2.38 _ZGVdN4v_log2 F
> +GLIBC_2.38 _ZGVdN4v_sin F
> +GLIBC_2.38 _ZGVdN4v_sinh F
> +GLIBC_2.38 _ZGVdN4v_tan F
> +GLIBC_2.38 _ZGVdN4v_tanh F
> +GLIBC_2.38 _ZGVdN4vv_atan2 F
> +GLIBC_2.38 _ZGVdN4vv_hypot F
> +GLIBC_2.38 _ZGVdN4vv_pow F
> +GLIBC_2.38 _ZGVdN4vvv_sincos F
> +GLIBC_2.38 _ZGVdN8v_acosf F
> +GLIBC_2.38 _ZGVdN8v_acoshf F
> +GLIBC_2.38 _ZGVdN8v_asinf F
> +GLIBC_2.38 _ZGVdN8v_asinhf F
> +GLIBC_2.38 _ZGVdN8v_atanf F
> +GLIBC_2.38 _ZGVdN8v_atanhf F
> +GLIBC_2.38 _ZGVdN8v_cbrtf F
> +GLIBC_2.38 _ZGVdN8v_cosf F
> +GLIBC_2.38 _ZGVdN8v_coshf F
> +GLIBC_2.38 _ZGVdN8v_erfcf F
> +GLIBC_2.38 _ZGVdN8v_erff F
> +GLIBC_2.38 _ZGVdN8v_exp10f F
> +GLIBC_2.38 _ZGVdN8v_exp2f F
> +GLIBC_2.38 _ZGVdN8v_expf F
> +GLIBC_2.38 _ZGVdN8v_expm1f F
> +GLIBC_2.38 _ZGVdN8v_log10f F
> +GLIBC_2.38 _ZGVdN8v_log1pf F
> +GLIBC_2.38 _ZGVdN8v_log2f F
> +GLIBC_2.38 _ZGVdN8v_logf F
> +GLIBC_2.38 _ZGVdN8v_sinf F
> +GLIBC_2.38 _ZGVdN8v_sinhf F
> +GLIBC_2.38 _ZGVdN8v_tanf F
> +GLIBC_2.38 _ZGVdN8v_tanhf F
> +GLIBC_2.38 _ZGVdN8vv_atan2f F
> +GLIBC_2.38 _ZGVdN8vv_hypotf F
> +GLIBC_2.38 _ZGVdN8vv_powf F
> +GLIBC_2.38 _ZGVdN8vvv_sincosf F
> +GLIBC_2.38 _ZGVeN16v_acosf F
> +GLIBC_2.38 _ZGVeN16v_acoshf F
> +GLIBC_2.38 _ZGVeN16v_asinf F
> +GLIBC_2.38 _ZGVeN16v_asinhf F
> +GLIBC_2.38 _ZGVeN16v_atanf F
> +GLIBC_2.38 _ZGVeN16v_atanhf F
> +GLIBC_2.38 _ZGVeN16v_cbrtf F
> +GLIBC_2.38 _ZGVeN16v_cosf F
> +GLIBC_2.38 _ZGVeN16v_coshf F
> +GLIBC_2.38 _ZGVeN16v_erfcf F
> +GLIBC_2.38 _ZGVeN16v_erff F
> +GLIBC_2.38 _ZGVeN16v_exp10f F
> +GLIBC_2.38 _ZGVeN16v_exp2f F
> +GLIBC_2.38 _ZGVeN16v_expf F
> +GLIBC_2.38 _ZGVeN16v_expm1f F
> +GLIBC_2.38 _ZGVeN16v_log10f F
> +GLIBC_2.38 _ZGVeN16v_log1pf F
> +GLIBC_2.38 _ZGVeN16v_log2f F
> +GLIBC_2.38 _ZGVeN16v_logf F
> +GLIBC_2.38 _ZGVeN16v_sinf F
> +GLIBC_2.38 _ZGVeN16v_sinhf F
> +GLIBC_2.38 _ZGVeN16v_tanf F
> +GLIBC_2.38 _ZGVeN16v_tanhf F
> +GLIBC_2.38 _ZGVeN16vv_atan2f F
> +GLIBC_2.38 _ZGVeN16vv_hypotf F
> +GLIBC_2.38 _ZGVeN16vv_powf F
> +GLIBC_2.38 _ZGVeN16vvv_sincosf F
> +GLIBC_2.38 _ZGVeN8v_acos F
> +GLIBC_2.38 _ZGVeN8v_acosh F
> +GLIBC_2.38 _ZGVeN8v_asin F
> +GLIBC_2.38 _ZGVeN8v_asinh F
> +GLIBC_2.38 _ZGVeN8v_atan F
> +GLIBC_2.38 _ZGVeN8v_atanh F
> +GLIBC_2.38 _ZGVeN8v_cbrt F
> +GLIBC_2.38 _ZGVeN8v_cos F
> +GLIBC_2.38 _ZGVeN8v_cosh F
> +GLIBC_2.38 _ZGVeN8v_erf F
> +GLIBC_2.38 _ZGVeN8v_erfc F
> +GLIBC_2.38 _ZGVeN8v_exp F
> +GLIBC_2.38 _ZGVeN8v_exp10 F
> +GLIBC_2.38 _ZGVeN8v_exp2 F
> +GLIBC_2.38 _ZGVeN8v_expm1 F
> +GLIBC_2.38 _ZGVeN8v_log F
> +GLIBC_2.38 _ZGVeN8v_log10 F
> +GLIBC_2.38 _ZGVeN8v_log1p F
> +GLIBC_2.38 _ZGVeN8v_log2 F
> +GLIBC_2.38 _ZGVeN8v_sin F
> +GLIBC_2.38 _ZGVeN8v_sinh F
> +GLIBC_2.38 _ZGVeN8v_tan F
> +GLIBC_2.38 _ZGVeN8v_tanh F
> +GLIBC_2.38 _ZGVeN8vv_atan2 F
> +GLIBC_2.38 _ZGVeN8vv_hypot F
> +GLIBC_2.38 _ZGVeN8vv_pow F
> +GLIBC_2.38 _ZGVeN8vvv_sincos F
> diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist
> new file mode 100644
> index 00000000..d8785b4c
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist
> @@ -0,0 +1,175 @@
> +GLIBC_2.38 _IO_flockfile F
> +GLIBC_2.38 _IO_ftrylockfile F
> +GLIBC_2.38 _IO_funlockfile F
> +GLIBC_2.38 __errno_location F
> +GLIBC_2.38 __h_errno_location F
> +GLIBC_2.38 __mutex_lock_solid F
> +GLIBC_2.38 __mutex_unlock_solid F
> +GLIBC_2.38 __pthread_get_cleanup_stack F
> +GLIBC_2.38 __pthread_key_create F
> +GLIBC_2.38 __pthread_kill F
> +GLIBC_2.38 __pthread_mutex_transfer_np F
> +GLIBC_2.38 __pthread_spin_destroy F
> +GLIBC_2.38 __pthread_spin_init F
> +GLIBC_2.38 __pthread_spin_lock F
> +GLIBC_2.38 __pthread_spin_trylock F
> +GLIBC_2.38 __pthread_spin_unlock F
> +GLIBC_2.38 _cthreads_flockfile F
> +GLIBC_2.38 _cthreads_ftrylockfile F
> +GLIBC_2.38 _cthreads_funlockfile F
> +GLIBC_2.38 _pthread_spin_lock F
> +GLIBC_2.38 call_once F
> +GLIBC_2.38 cnd_broadcast F
> +GLIBC_2.38 cnd_destroy F
> +GLIBC_2.38 cnd_init F
> +GLIBC_2.38 cnd_signal F
> +GLIBC_2.38 cnd_timedwait F
> +GLIBC_2.38 cnd_wait F
> +GLIBC_2.38 cthread_detach F
> +GLIBC_2.38 cthread_fork F
> +GLIBC_2.38 cthread_getspecific F
> +GLIBC_2.38 cthread_keycreate F
> +GLIBC_2.38 cthread_setspecific F
> +GLIBC_2.38 flockfile F
> +GLIBC_2.38 ftrylockfile F
> +GLIBC_2.38 funlockfile F
> +GLIBC_2.38 mtx_destroy F
> +GLIBC_2.38 mtx_init F
> +GLIBC_2.38 mtx_lock F
> +GLIBC_2.38 mtx_timedlock F
> +GLIBC_2.38 mtx_trylock F
> +GLIBC_2.38 mtx_unlock F
> +GLIBC_2.38 pthread_attr_destroy F
> +GLIBC_2.38 pthread_attr_getdetachstate F
> +GLIBC_2.38 pthread_attr_getguardsize F
> +GLIBC_2.38 pthread_attr_getinheritsched F
> +GLIBC_2.38 pthread_attr_getschedparam F
> +GLIBC_2.38 pthread_attr_getschedpolicy F
> +GLIBC_2.38 pthread_attr_getscope F
> +GLIBC_2.38 pthread_attr_getstack F
> +GLIBC_2.38 pthread_attr_getstackaddr F
> +GLIBC_2.38 pthread_attr_getstacksize F
> +GLIBC_2.38 pthread_attr_init F
> +GLIBC_2.38 pthread_attr_setdetachstate F
> +GLIBC_2.38 pthread_attr_setguardsize F
> +GLIBC_2.38 pthread_attr_setinheritsched F
> +GLIBC_2.38 pthread_attr_setschedparam F
> +GLIBC_2.38 pthread_attr_setschedpolicy F
> +GLIBC_2.38 pthread_attr_setscope F
> +GLIBC_2.38 pthread_attr_setstack F
> +GLIBC_2.38 pthread_attr_setstackaddr F
> +GLIBC_2.38 pthread_attr_setstacksize F
> +GLIBC_2.38 pthread_barrier_destroy F
> +GLIBC_2.38 pthread_barrier_init F
> +GLIBC_2.38 pthread_barrier_wait F
> +GLIBC_2.38 pthread_barrierattr_destroy F
> +GLIBC_2.38 pthread_barrierattr_getpshared F
> +GLIBC_2.38 pthread_barrierattr_init F
> +GLIBC_2.38 pthread_barrierattr_setpshared F
> +GLIBC_2.38 pthread_cancel F
> +GLIBC_2.38 pthread_clockjoin_np F
> +GLIBC_2.38 pthread_cond_broadcast F
> +GLIBC_2.38 pthread_cond_clockwait F
> +GLIBC_2.38 pthread_cond_destroy F
> +GLIBC_2.38 pthread_cond_init F
> +GLIBC_2.38 pthread_cond_signal F
> +GLIBC_2.38 pthread_cond_timedwait F
> +GLIBC_2.38 pthread_cond_wait F
> +GLIBC_2.38 pthread_condattr_destroy F
> +GLIBC_2.38 pthread_condattr_getclock F
> +GLIBC_2.38 pthread_condattr_getpshared F
> +GLIBC_2.38 pthread_condattr_init F
> +GLIBC_2.38 pthread_condattr_setclock F
> +GLIBC_2.38 pthread_condattr_setpshared F
> +GLIBC_2.38 pthread_create F
> +GLIBC_2.38 pthread_detach F
> +GLIBC_2.38 pthread_equal F
> +GLIBC_2.38 pthread_exit F
> +GLIBC_2.38 pthread_getattr_np F
> +GLIBC_2.38 pthread_getconcurrency F
> +GLIBC_2.38 pthread_getcpuclockid F
> +GLIBC_2.38 pthread_getschedparam F
> +GLIBC_2.38 pthread_getspecific F
> +GLIBC_2.38 pthread_hurd_cond_timedwait_np F
> +GLIBC_2.38 pthread_hurd_cond_wait_np F
> +GLIBC_2.38 pthread_join F
> +GLIBC_2.38 pthread_key_create F
> +GLIBC_2.38 pthread_key_delete F
> +GLIBC_2.38 pthread_kill F
> +GLIBC_2.38 pthread_mutex_clocklock F
> +GLIBC_2.38 pthread_mutex_consistent F
> +GLIBC_2.38 pthread_mutex_consistent_np F
> +GLIBC_2.38 pthread_mutex_destroy F
> +GLIBC_2.38 pthread_mutex_getprioceiling F
> +GLIBC_2.38 pthread_mutex_init F
> +GLIBC_2.38 pthread_mutex_lock F
> +GLIBC_2.38 pthread_mutex_setprioceiling F
> +GLIBC_2.38 pthread_mutex_timedlock F
> +GLIBC_2.38 pthread_mutex_transfer_np F
> +GLIBC_2.38 pthread_mutex_trylock F
> +GLIBC_2.38 pthread_mutex_unlock F
> +GLIBC_2.38 pthread_mutexattr_destroy F
> +GLIBC_2.38 pthread_mutexattr_getprioceiling F
> +GLIBC_2.38 pthread_mutexattr_getprotocol F
> +GLIBC_2.38 pthread_mutexattr_getpshared F
> +GLIBC_2.38 pthread_mutexattr_getrobust F
> +GLIBC_2.38 pthread_mutexattr_getrobust_np F
> +GLIBC_2.38 pthread_mutexattr_gettype F
> +GLIBC_2.38 pthread_mutexattr_init F
> +GLIBC_2.38 pthread_mutexattr_setprioceiling F
> +GLIBC_2.38 pthread_mutexattr_setprotocol F
> +GLIBC_2.38 pthread_mutexattr_setpshared F
> +GLIBC_2.38 pthread_mutexattr_setrobust F
> +GLIBC_2.38 pthread_mutexattr_setrobust_np F
> +GLIBC_2.38 pthread_mutexattr_settype F
> +GLIBC_2.38 pthread_once F
> +GLIBC_2.38 pthread_rwlock_clockrdlock F
> +GLIBC_2.38 pthread_rwlock_clockwrlock F
> +GLIBC_2.38 pthread_rwlock_destroy F
> +GLIBC_2.38 pthread_rwlock_init F
> +GLIBC_2.38 pthread_rwlock_rdlock F
> +GLIBC_2.38 pthread_rwlock_timedrdlock F
> +GLIBC_2.38 pthread_rwlock_timedwrlock F
> +GLIBC_2.38 pthread_rwlock_tryrdlock F
> +GLIBC_2.38 pthread_rwlock_trywrlock F
> +GLIBC_2.38 pthread_rwlock_unlock F
> +GLIBC_2.38 pthread_rwlock_wrlock F
> +GLIBC_2.38 pthread_rwlockattr_destroy F
> +GLIBC_2.38 pthread_rwlockattr_getpshared F
> +GLIBC_2.38 pthread_rwlockattr_init F
> +GLIBC_2.38 pthread_rwlockattr_setpshared F
> +GLIBC_2.38 pthread_setcancelstate F
> +GLIBC_2.38 pthread_setcanceltype F
> +GLIBC_2.38 pthread_setconcurrency F
> +GLIBC_2.38 pthread_setschedparam F
> +GLIBC_2.38 pthread_setschedprio F
> +GLIBC_2.38 pthread_setspecific F
> +GLIBC_2.38 pthread_sigmask F
> +GLIBC_2.38 pthread_spin_destroy F
> +GLIBC_2.38 pthread_spin_init F
> +GLIBC_2.38 pthread_spin_lock F
> +GLIBC_2.38 pthread_spin_trylock F
> +GLIBC_2.38 pthread_spin_unlock F
> +GLIBC_2.38 pthread_testcancel F
> +GLIBC_2.38 pthread_timedjoin_np F
> +GLIBC_2.38 pthread_tryjoin_np F
> +GLIBC_2.38 pthread_yield F
> +GLIBC_2.38 sem_clockwait F
> +GLIBC_2.38 sem_close F
> +GLIBC_2.38 sem_destroy F
> +GLIBC_2.38 sem_getvalue F
> +GLIBC_2.38 sem_init F
> +GLIBC_2.38 sem_open F
> +GLIBC_2.38 sem_post F
> +GLIBC_2.38 sem_timedwait F
> +GLIBC_2.38 sem_trywait F
> +GLIBC_2.38 sem_unlink F
> +GLIBC_2.38 sem_wait F
> +GLIBC_2.38 thrd_create F
> +GLIBC_2.38 thrd_detach F
> +GLIBC_2.38 thrd_exit F
> +GLIBC_2.38 thrd_join F
> +GLIBC_2.38 tss_create F
> +GLIBC_2.38 tss_delete F
> +GLIBC_2.38 tss_get F
> +GLIBC_2.38 tss_set F
> diff --git a/sysdeps/mach/hurd/x86_64/libresolv.abilist b/sysdeps/mach/hurd/x86_64/libresolv.abilist
> new file mode 100644
> index 00000000..c3dd560d
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/libresolv.abilist
> @@ -0,0 +1,55 @@
> +GLIBC_2.38 __b64_ntop F
> +GLIBC_2.38 __b64_pton F
> +GLIBC_2.38 __dn_count_labels F
> +GLIBC_2.38 __fp_nquery F
> +GLIBC_2.38 __fp_query F
> +GLIBC_2.38 __fp_resstat F
> +GLIBC_2.38 __hostalias F
> +GLIBC_2.38 __loc_aton F
> +GLIBC_2.38 __loc_ntoa F
> +GLIBC_2.38 __p_cdname F
> +GLIBC_2.38 __p_cdnname F
> +GLIBC_2.38 __p_class F
> +GLIBC_2.38 __p_class_syms D 0xa8
> +GLIBC_2.38 __p_fqname F
> +GLIBC_2.38 __p_fqnname F
> +GLIBC_2.38 __p_option F
> +GLIBC_2.38 __p_query F
> +GLIBC_2.38 __p_rcode F
> +GLIBC_2.38 __p_time F
> +GLIBC_2.38 __p_type F
> +GLIBC_2.38 __p_type_syms D 0x450
> +GLIBC_2.38 __putlong F
> +GLIBC_2.38 __putshort F
> +GLIBC_2.38 __res_close F
> +GLIBC_2.38 __res_hostalias F
> +GLIBC_2.38 __res_isourserver F
> +GLIBC_2.38 __res_nameinquery F
> +GLIBC_2.38 __res_queriesmatch F
> +GLIBC_2.38 __sym_ntop F
> +GLIBC_2.38 __sym_ntos F
> +GLIBC_2.38 __sym_ston F
> +GLIBC_2.38 _getlong F
> +GLIBC_2.38 _getshort F
> +GLIBC_2.38 inet_net_ntop F
> +GLIBC_2.38 inet_net_pton F
> +GLIBC_2.38 inet_neta F
> +GLIBC_2.38 ns_datetosecs F
> +GLIBC_2.38 ns_format_ttl F
> +GLIBC_2.38 ns_get16 F
> +GLIBC_2.38 ns_get32 F
> +GLIBC_2.38 ns_initparse F
> +GLIBC_2.38 ns_makecanon F
> +GLIBC_2.38 ns_msg_getflag F
> +GLIBC_2.38 ns_name_ntol F
> +GLIBC_2.38 ns_name_rollback F
> +GLIBC_2.38 ns_parse_ttl F
> +GLIBC_2.38 ns_parserr F
> +GLIBC_2.38 ns_put16 F
> +GLIBC_2.38 ns_put32 F
> +GLIBC_2.38 ns_samedomain F
> +GLIBC_2.38 ns_samename F
> +GLIBC_2.38 ns_skiprr F
> +GLIBC_2.38 ns_sprintrr F
> +GLIBC_2.38 ns_sprintrrf F
> +GLIBC_2.38 ns_subdomain F
> diff --git a/sysdeps/mach/hurd/x86_64/librt.abilist b/sysdeps/mach/hurd/x86_64/librt.abilist
> new file mode 100644
> index 00000000..fa148abb
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/librt.abilist
> @@ -0,0 +1,33 @@
> +GLIBC_2.38 __mq_open_2 F
> +GLIBC_2.38 aio_cancel F
> +GLIBC_2.38 aio_cancel64 F
> +GLIBC_2.38 aio_error F
> +GLIBC_2.38 aio_error64 F
> +GLIBC_2.38 aio_fsync F
> +GLIBC_2.38 aio_fsync64 F
> +GLIBC_2.38 aio_init F
> +GLIBC_2.38 aio_read F
> +GLIBC_2.38 aio_read64 F
> +GLIBC_2.38 aio_return F
> +GLIBC_2.38 aio_return64 F
> +GLIBC_2.38 aio_suspend F
> +GLIBC_2.38 aio_suspend64 F
> +GLIBC_2.38 aio_write F
> +GLIBC_2.38 aio_write64 F
> +GLIBC_2.38 lio_listio F
> +GLIBC_2.38 lio_listio64 F
> +GLIBC_2.38 mq_close F
> +GLIBC_2.38 mq_getattr F
> +GLIBC_2.38 mq_notify F
> +GLIBC_2.38 mq_open F
> +GLIBC_2.38 mq_receive F
> +GLIBC_2.38 mq_send F
> +GLIBC_2.38 mq_setattr F
> +GLIBC_2.38 mq_timedreceive F
> +GLIBC_2.38 mq_timedsend F
> +GLIBC_2.38 mq_unlink F
> +GLIBC_2.38 timer_create F
> +GLIBC_2.38 timer_delete F
> +GLIBC_2.38 timer_getoverrun F
> +GLIBC_2.38 timer_gettime F
> +GLIBC_2.38 timer_settime F
> diff --git a/sysdeps/mach/hurd/x86_64/shlib-versions b/sysdeps/mach/hurd/x86_64/shlib-versions
> new file mode 100644
> index 00000000..fddbc1e3
> --- /dev/null
> +++ b/sysdeps/mach/hurd/x86_64/shlib-versions
> @@ -0,0 +1 @@
> +DEFAULT			GLIBC_2.38
> -- 
> 2.40.1
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/6] hurd: Add expected abilist files for x86_64
  2023-05-01 10:20   ` Samuel Thibault
@ 2023-05-01 17:33     ` Sergey Bugaev
  2023-05-01 17:43       ` Samuel Thibault
  0 siblings, 1 reply; 20+ messages in thread
From: Sergey Bugaev @ 2023-05-01 17:33 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: libc-alpha, bug-hurd, Flavio Cruz, Luca

On Mon, May 1, 2023 at 1:20 PM Samuel Thibault <samuel.thibault@gnu.org> wrote:
> Applied, thanks!

I assume the delay means you have built it, and your results matched
mine, in which case, \o/

I can hardly believe it no longer only exists on my machine :) Did you
manage to run it?

Thank you for changing pthread_t to be pointer-sized, I was going to
do that next.

Here's some of my own news: I've got enough of Hurd ported and built
to get this:

$ file ext2fs/ext2fs ext2fs/ext2fs.static exec/exec proc/proc
ext2fs/ext2fs:        ELF 64-bit LSB executable, x86-64, version 1
(SYSV), dynamically linked, interpreter /lib/ld-x86-64.so.1, for
GNU/Hurd 0.0.0, with debug_info, not stripped
ext2fs/ext2fs.static: ELF 64-bit LSB executable, x86-64, version 1
(GNU/Linux), statically linked, for GNU/Hurd 0.0.0, with debug_info,
not stripped
exec/exec:            ELF 64-bit LSB executable, x86-64, version 1
(SYSV), dynamically linked, interpreter /lib/ld-x86-64.so.1, for
GNU/Hurd 0.0.0, with debug_info, not stripped
proc/proc:            ELF 64-bit LSB executable, x86-64, version 1
(SYSV), dynamically linked, interpreter /lib/ld-x86-64.so.1, for
GNU/Hurd 0.0.0, with debug_info, not stripped

Trying to run it, it of course does not work:
ext2fs: part:1:device:hd0: Invalid argument

This is because:
- I'm building --without-parted
- gnumach gets built without the Linux disk drivers
- I'm not even attaching a hard drive to the VM...

How do we proceed? I don't know enough about rump to get it building;
so enabling the in-kernel Linux drivers seems preferable. Any tips on
how I would do that? Are the Linux drivers ancient enough to require
their own porting to x86_64, or will they just work?

Sergey

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 4/6] hurd: Add expected abilist files for x86_64
  2023-05-01 17:33     ` Sergey Bugaev
@ 2023-05-01 17:43       ` Samuel Thibault
  0 siblings, 0 replies; 20+ messages in thread
From: Samuel Thibault @ 2023-05-01 17:43 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd, Flavio Cruz, Luca

Sergey Bugaev, le lun. 01 mai 2023 20:33:36 +0300, a ecrit:
> On Mon, May 1, 2023 at 1:20 PM Samuel Thibault <samuel.thibault@gnu.org> wrote:
> > Applied, thanks!
> 
> I assume the delay means you have built it, and your results matched
> mine,

Yes :)

Though I added libanl which we do want since we haven't moved libpthread
into libc.

> I can hardly believe it no longer only exists on my machine :) Did you
> manage to run it?

I haven't tried that at all.

> How do we proceed? I don't know enough about rump to get it building;

We can easily cross-build debian packages thanks to the rebootstrap
scripts from Helmut:

https://salsa.debian.org/helmutg/rebootstrap.git

> so enabling the in-kernel Linux drivers seems preferable.
> Any tips on how I would do that? Are the Linux drivers ancient enough
> to require their own porting to x86_64, or will they just work?

They will just *not* work with 64bit. The glue code is not ready at all,
and I think it's really not useful to spend time on that when we have
the rump drivers which should be working fine.

Now, that being said, you can also use an initrd, see debian's
50_initrd.patch (which nobody has yet taken the time to clean according
the discussion at the time). That's enough to run a full Hurd system,
you can for instance take the initrd files from the debian installation
CD.

Samuel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 0/6] The remaining x86_64-gnu patches
  2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
                   ` (5 preceding siblings ...)
  2023-04-29 20:18 ` [DO NOT PUSH PATCH v3 6/6] TMP hurd: Lower BRK_START Sergey Bugaev
@ 2023-05-02 14:03 ` Joseph Myers
  2023-05-02 14:16   ` Sergey Bugaev
  2023-05-02 15:17   ` Samuel Thibault
  6 siblings, 2 replies; 20+ messages in thread
From: Joseph Myers @ 2023-05-02 14:03 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd, Samuel Thibault

On Sat, 29 Apr 2023, Sergey Bugaev via Libc-alpha wrote:

> If these patches are pushed, it should be possible for anyone to build
> x86_64-gnu glibc just out of Git master, without having to dig through
> the mailing list archive for uncommited patches.

In that case I think there should be a patch to build-many-glibcs.py to 
add an x86_64-gnu configuration, as well as updates to NEWS and README to 
reflect the new support for such a configuration.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 0/6] The remaining x86_64-gnu patches
  2023-05-02 14:03 ` [PATCH v3 0/6] The remaining x86_64-gnu patches Joseph Myers
@ 2023-05-02 14:16   ` Sergey Bugaev
  2023-05-02 18:27     ` Joseph Myers
  2023-05-02 15:17   ` Samuel Thibault
  1 sibling, 1 reply; 20+ messages in thread
From: Sergey Bugaev @ 2023-05-02 14:16 UTC (permalink / raw)
  To: Joseph Myers; +Cc: libc-alpha, bug-hurd, Samuel Thibault

Hello,

On Tue, May 2, 2023 at 5:03 PM Joseph Myers <joseph@codesourcery.com> wrote:
> On Sat, 29 Apr 2023, Sergey Bugaev via Libc-alpha wrote:
>
> > If these patches are pushed, it should be possible for anyone to build
> > x86_64-gnu glibc just out of Git master, without having to dig through
> > the mailing list archive for uncommited patches.
>
> In that case I think there should be a patch to build-many-glibcs.py to
> add an x86_64-gnu configuration, as well as updates to NEWS and README to
> reflect the new support for such a configuration.

yes, that would be great!

It would also probably make sense to mention my other changes, of
which there have been many, in the NEWS (would a simple "many fixes
and improvements in the Hurd port" suffice?)

Am I supposed to write a patch for this, or will somebody else do it?

Will adding it to build-many-glibcs.py automatically enable some sort
of server-side CI for this configuration?

Sergey

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 0/6] The remaining x86_64-gnu patches
  2023-05-02 14:03 ` [PATCH v3 0/6] The remaining x86_64-gnu patches Joseph Myers
  2023-05-02 14:16   ` Sergey Bugaev
@ 2023-05-02 15:17   ` Samuel Thibault
  2023-05-02 18:24     ` Joseph Myers
  1 sibling, 1 reply; 20+ messages in thread
From: Samuel Thibault @ 2023-05-02 15:17 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Sergey Bugaev, libc-alpha, bug-hurd

Joseph Myers, le mar. 02 mai 2023 14:03:16 +0000, a ecrit:
> On Sat, 29 Apr 2023, Sergey Bugaev via Libc-alpha wrote:
> 
> > If these patches are pushed, it should be possible for anyone to build
> > x86_64-gnu glibc just out of Git master, without having to dig through
> > the mailing list archive for uncommited patches.
> 
> In that case I think there should be a patch to build-many-glibcs.py to 
> add an x86_64-gnu configuration,

I have it pending, just waiting for gcc 13.

Samuel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 0/6] The remaining x86_64-gnu patches
  2023-05-02 15:17   ` Samuel Thibault
@ 2023-05-02 18:24     ` Joseph Myers
  0 siblings, 0 replies; 20+ messages in thread
From: Joseph Myers @ 2023-05-02 18:24 UTC (permalink / raw)
  To: Samuel Thibault; +Cc: Sergey Bugaev, libc-alpha, bug-hurd

On Tue, 2 May 2023, Samuel Thibault via Libc-alpha wrote:

> Joseph Myers, le mar. 02 mai 2023 14:03:16 +0000, a ecrit:
> > On Sat, 29 Apr 2023, Sergey Bugaev via Libc-alpha wrote:
> > 
> > > If these patches are pushed, it should be possible for anyone to build
> > > x86_64-gnu glibc just out of Git master, without having to dig through
> > > the mailing list archive for uncommited patches.
> > 
> > In that case I think there should be a patch to build-many-glibcs.py to 
> > add an x86_64-gnu configuration,
> 
> I have it pending, just waiting for gcc 13.

It's enough for the x86_64-gnu support to be in GCC mainline when the 
patch to build-many-glibcs.py goes in; it doesn't need to be in the 
release branch (though being in the release branch may be helpful for 
users).

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 0/6] The remaining x86_64-gnu patches
  2023-05-02 14:16   ` Sergey Bugaev
@ 2023-05-02 18:27     ` Joseph Myers
  0 siblings, 0 replies; 20+ messages in thread
From: Joseph Myers @ 2023-05-02 18:27 UTC (permalink / raw)
  To: Sergey Bugaev; +Cc: libc-alpha, bug-hurd, Samuel Thibault

On Tue, 2 May 2023, Sergey Bugaev via Libc-alpha wrote:

> It would also probably make sense to mention my other changes, of
> which there have been many, in the NEWS (would a simple "many fixes
> and improvements in the Hurd port" suffice?)

That may well be an appropriate way to describe them (if you haven't 
opened individual bug reports in Bugzilla; if a bug is reported in 
Bugzilla, then marked FIXED after the commit with the target milestone set 
to the first mainline release with the fix, it will automatically be 
listed in the list of fixed bugs in NEWS).

> Am I supposed to write a patch for this, or will somebody else do it?

The general expectation is that someone adding a significant new feature 
also does the NEWS update, and someone adding a new ABI does the 
build-many-glibcs.py update.

> Will adding it to build-many-glibcs.py automatically enable some sort
> of server-side CI for this configuration?

My build-many-glibcs.py bots automatically run the compilation parts of 
the testsuite for all configurations included in that script.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2023-05-02 18:27 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-29 20:18 [PATCH v3 0/6] The remaining x86_64-gnu patches Sergey Bugaev
2023-04-29 20:18 ` [PATCH v3 1/6] hurd: Implement sigreturn for x86_64 Sergey Bugaev
2023-04-30 23:06   ` Samuel Thibault
2023-04-29 20:18 ` [PATCH v3 2/6] hurd: Implement longjmp " Sergey Bugaev
2023-04-30 23:16   ` Samuel Thibault
2023-04-29 20:18 ` [RFC PATCH v3 3/6] hurd: Replace reply port with a dead name on failed interruption Sergey Bugaev
2023-05-01  1:20   ` Samuel Thibault
2023-04-29 20:18 ` [PATCH v3 4/6] hurd: Add expected abilist files for x86_64 Sergey Bugaev
2023-04-30 23:18   ` Samuel Thibault
2023-05-01 10:20   ` Samuel Thibault
2023-05-01 17:33     ` Sergey Bugaev
2023-05-01 17:43       ` Samuel Thibault
2023-04-29 20:18 ` [RFC PATCH v3 5/6] hurd: Make it possible to call memcpy very early Sergey Bugaev
2023-04-30 23:21   ` Samuel Thibault
2023-04-29 20:18 ` [DO NOT PUSH PATCH v3 6/6] TMP hurd: Lower BRK_START Sergey Bugaev
2023-05-02 14:03 ` [PATCH v3 0/6] The remaining x86_64-gnu patches Joseph Myers
2023-05-02 14:16   ` Sergey Bugaev
2023-05-02 18:27     ` Joseph Myers
2023-05-02 15:17   ` Samuel Thibault
2023-05-02 18:24     ` Joseph Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).