about summary refs log tree commit diff
path: root/sysdeps/generic
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/Makefile28
-rw-r--r--sysdeps/generic/_G_config.h58
-rw-r--r--sysdeps/generic/_itoa.h105
-rw-r--r--sysdeps/generic/a.out.h339
-rw-r--r--sysdeps/generic/abort-instr.h31
-rw-r--r--sysdeps/generic/aio_misc.h47
-rw-r--r--sysdeps/generic/allocalim.h4
-rw-r--r--sysdeps/generic/asm-syntax.h3
-rw-r--r--sysdeps/generic/atomic-machine.h42
-rw-r--r--sysdeps/generic/c++-types.data2
-rw-r--r--sysdeps/generic/confstr.h4
-rw-r--r--sysdeps/generic/device-nrs.h27
-rw-r--r--sysdeps/generic/dirstream.h29
-rw-r--r--sysdeps/generic/dl-cache.h104
-rw-r--r--sysdeps/generic/dl-dtprocnum.h21
-rw-r--r--sysdeps/generic/dl-dtv.h38
-rw-r--r--sysdeps/generic/dl-fcntl.h21
-rw-r--r--sysdeps/generic/dl-fileid.h46
-rw-r--r--sysdeps/generic/dl-fptr.h45
-rw-r--r--sysdeps/generic/dl-hash.h75
-rw-r--r--sysdeps/generic/dl-irel.h29
-rw-r--r--sysdeps/generic/dl-librecon.h25
-rw-r--r--sysdeps/generic/dl-lookupcfg.h28
-rw-r--r--sysdeps/generic/dl-machine.h133
-rw-r--r--sysdeps/generic/dl-mman.h22
-rw-r--r--sysdeps/generic/dl-osinfo.h59
-rw-r--r--sysdeps/generic/dl-procinfo.c1
-rw-r--r--sysdeps/generic/dl-procinfo.h42
-rw-r--r--sysdeps/generic/dl-sysdep.h34
-rw-r--r--sysdeps/generic/dl-tls.h2
-rw-r--r--sysdeps/generic/dl-unistd.h30
-rw-r--r--sysdeps/generic/dwarf2.h590
-rw-r--r--sysdeps/generic/elide.h25
-rw-r--r--sysdeps/generic/eloop-threshold.h72
-rw-r--r--sysdeps/generic/entry.h5
-rw-r--r--sysdeps/generic/errqueue.h7
-rw-r--r--sysdeps/generic/exit-thread.h28
-rw-r--r--sysdeps/generic/fd_to_filename.h25
-rw-r--r--sysdeps/generic/fips-private.h36
-rw-r--r--sysdeps/generic/fix-fp-int-compare-invalid.h27
-rw-r--r--sysdeps/generic/fix-fp-int-convert-overflow.h35
-rw-r--r--sysdeps/generic/fix-int-fp-convert-zero.h27
-rw-r--r--sysdeps/generic/fork.h8
-rw-r--r--sysdeps/generic/fpu_control.h38
-rw-r--r--sysdeps/generic/frame.h23
-rw-r--r--sysdeps/generic/framestate.c52
-rw-r--r--sysdeps/generic/gcc-compat.h42
-rw-r--r--sysdeps/generic/gccframe.h49
-rw-r--r--sysdeps/generic/get-rounding-mode.h125
-rw-r--r--sysdeps/generic/gmp-mparam.h27
-rw-r--r--sysdeps/generic/hp-timing-common.h62
-rw-r--r--sysdeps/generic/hp-timing.h40
-rw-r--r--sysdeps/generic/ifreq.h43
-rw-r--r--sysdeps/generic/ifunc-sel.h28
-rw-r--r--sysdeps/generic/intr-msg.h15
-rw-r--r--sysdeps/generic/inttypes.h434
-rw-r--r--sysdeps/generic/ld.abilist0
-rw-r--r--sysdeps/generic/ldconfig.h94
-rw-r--r--sysdeps/generic/ldsodefs.h1092
-rw-r--r--sysdeps/generic/libBrokenLocale.abilist0
-rw-r--r--sysdeps/generic/libanl.abilist0
-rw-r--r--sysdeps/generic/libc-lock.h140
-rw-r--r--sysdeps/generic/libc-mmap.h26
-rw-r--r--sysdeps/generic/libc-tsd.h60
-rw-r--r--sysdeps/generic/libc.abilist0
-rw-r--r--sysdeps/generic/libcidn.abilist0
-rw-r--r--sysdeps/generic/libcrypt.abilist0
-rw-r--r--sysdeps/generic/libdl.abilist0
-rw-r--r--sysdeps/generic/libm-test-ulps5
-rw-r--r--sysdeps/generic/libm-test-ulps-name1
-rw-r--r--sysdeps/generic/libm.abilist0
-rw-r--r--sysdeps/generic/libnsl.abilist0
-rw-r--r--sysdeps/generic/libnss_compat.abilist0
-rw-r--r--sysdeps/generic/libnss_db.abilist0
-rw-r--r--sysdeps/generic/libnss_dns.abilist0
-rw-r--r--sysdeps/generic/libnss_files.abilist0
-rw-r--r--sysdeps/generic/libnss_hesiod.abilist0
-rw-r--r--sysdeps/generic/libnss_nis.abilist0
-rw-r--r--sysdeps/generic/libnss_nisplus.abilist0
-rw-r--r--sysdeps/generic/libpthread.abilist0
-rw-r--r--sysdeps/generic/libresolv.abilist0
-rw-r--r--sysdeps/generic/librt.abilist0
-rw-r--r--sysdeps/generic/libutil.abilist0
-rw-r--r--sysdeps/generic/linkmap.h4
-rw-r--r--sysdeps/generic/local-setxid.h4
-rw-r--r--sysdeps/generic/localplt.data18
-rw-r--r--sysdeps/generic/machine-gmon.h47
-rw-r--r--sysdeps/generic/machine-lock.h63
-rw-r--r--sysdeps/generic/machine-sp.h35
-rw-r--r--sysdeps/generic/malloc-machine.h41
-rw-r--r--sysdeps/generic/malloc-sysdep.h28
-rw-r--r--sysdeps/generic/math-tests-arch.h24
-rw-r--r--sysdeps/generic/math-tests.h106
-rw-r--r--sysdeps/generic/math-type-macros-double.h53
-rw-r--r--sysdeps/generic/math-type-macros-float.h39
-rw-r--r--sysdeps/generic/math-type-macros-float128.h42
-rw-r--r--sysdeps/generic/math-type-macros-ldouble.h36
-rw-r--r--sysdeps/generic/math-type-macros.h137
-rw-r--r--sysdeps/generic/math_ldbl.h7
-rw-r--r--sysdeps/generic/math_ldbl_opt.h14
-rw-r--r--sysdeps/generic/math_private.h658
-rw-r--r--sysdeps/generic/math_private_calls.h124
-rw-r--r--sysdeps/generic/memcopy.h202
-rw-r--r--sysdeps/generic/memusage.h51
-rw-r--r--sysdeps/generic/nan-high-order-bit.h27
-rw-r--r--sysdeps/generic/net/if.h49
-rw-r--r--sysdeps/generic/netinet/if_ether.h32
-rw-r--r--sysdeps/generic/netinet/in_systm.h40
-rw-r--r--sysdeps/generic/netinet/ip.h302
-rw-r--r--sysdeps/generic/netinet/tcp.h108
-rw-r--r--sysdeps/generic/nfs/nfs.h31
-rw-r--r--sysdeps/generic/not-cancel.h54
-rw-r--r--sysdeps/generic/nscd-types.h21
-rw-r--r--sysdeps/generic/pagecopy.h37
-rw-r--r--sysdeps/generic/paths.h75
-rw-r--r--sysdeps/generic/profil-counter.h26
-rw-r--r--sysdeps/generic/pty-private.h45
-rw-r--r--sysdeps/generic/register-dump.h20
-rw-r--r--sysdeps/generic/rtld-lowlevel.h1
-rw-r--r--sysdeps/generic/safe-fatal.h37
-rw-r--r--sysdeps/generic/sigcontextinfo.h26
-rw-r--r--sysdeps/generic/siglist.h76
-rw-r--r--sysdeps/generic/sigset-cvt-mask.h63
-rw-r--r--sysdeps/generic/sigsetops.h77
-rw-r--r--sysdeps/generic/stackguard-macros.h12
-rw-r--r--sysdeps/generic/stackinfo.h20
-rw-r--r--sysdeps/generic/stdint.h329
-rw-r--r--sysdeps/generic/stdio-lock.h71
-rw-r--r--sysdeps/generic/string_private.h21
-rw-r--r--sysdeps/generic/symbol-hacks.h19
-rw-r--r--sysdeps/generic/sys/ptrace.h137
-rw-r--r--sysdeps/generic/sys/reboot.h9
-rw-r--r--sysdeps/generic/sys/socketvar.h3
-rw-r--r--sysdeps/generic/sys/swap.h32
-rw-r--r--sysdeps/generic/sys/syscall.h2
-rw-r--r--sysdeps/generic/sys/sysinfo.h40
-rw-r--r--sysdeps/generic/sys/ttydefaults.h100
-rw-r--r--sysdeps/generic/sys/ucontext.h44
-rw-r--r--sysdeps/generic/sysdep-cancel.h8
-rw-r--r--sysdeps/generic/sysdep.h97
-rw-r--r--sysdeps/generic/thread_state.h46
-rw-r--r--sysdeps/generic/tininess.h33
-rw-r--r--sysdeps/generic/tls-macros.h12
-rw-r--r--sysdeps/generic/tls.h74
-rw-r--r--sysdeps/generic/tst-audit.h11
-rw-r--r--sysdeps/generic/tst-stack-align.h34
-rw-r--r--sysdeps/generic/unsecvars.h34
-rw-r--r--sysdeps/generic/unwind-dw2-fde-glibc.c279
-rw-r--r--sysdeps/generic/unwind-dw2-fde.c1079
-rw-r--r--sysdeps/generic/unwind-dw2-fde.h169
-rw-r--r--sysdeps/generic/unwind-dw2.c1306
-rw-r--r--sysdeps/generic/unwind-pe.c5
-rw-r--r--sysdeps/generic/unwind-pe.h305
-rw-r--r--sysdeps/generic/unwind-resume.h33
-rw-r--r--sysdeps/generic/unwind.h219
-rw-r--r--sysdeps/generic/utmp-equal.h52
156 files changed, 0 insertions, 12270 deletions
diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile
deleted file mode 100644
index ae37e8d89b..0000000000
--- a/sysdeps/generic/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 1992-2017 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
-# <http://www.gnu.org/licenses/>.
-
-ifeq ($(subdir),string)
-CFLAGS-wordcopy.c += -Wno-uninitialized
-endif
-
-ifeq ($(subdir),elf)
-ifeq (yes:yes,$(build-shared):$(unwind-find-fde))
-# This is needed to support g++ v2 and v3.
-sysdep_routines += framestate unwind-pe
-shared-only-routines += framestate unwind-pe
-endif
-endif
diff --git a/sysdeps/generic/_G_config.h b/sysdeps/generic/_G_config.h
deleted file mode 100644
index c49eed395b..0000000000
--- a/sysdeps/generic/_G_config.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* This file is needed by libio to define various configuration parameters.
-   These are always the same in the GNU C library.  */
-
-#ifndef _G_config_h
-#define _G_config_h 1
-
-/* Define types for libio in terms of the standard internal type names.  */
-
-#include <bits/types.h>
-#define __need_size_t
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# define __need_wchar_t
-#endif
-#define __need_NULL
-#include <stddef.h>
-
-#include <bits/types/__mbstate_t.h>
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# include <bits/types/wint_t.h>
-#endif
-
-typedef struct
-{
-  __off_t __pos;
-  __mbstate_t __state;
-} _G_fpos_t;
-typedef struct
-{
-  __off64_t __pos;
-  __mbstate_t __state;
-} _G_fpos64_t;
-#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
-# include <gconv.h>
-typedef union
-{
-  struct __gconv_info __cd;
-  struct
-  {
-    struct __gconv_info __cd;
-    struct __gconv_step_data __data;
-  } __combined;
-} _G_iconv_t;
-#endif
-
-
-/* These library features are always available in the GNU C library.  */
-#define _G_va_list __gnuc_va_list
-
-#define _G_HAVE_MMAP 1
-
-#define _G_IO_IO_FILE_VERSION 0x20001
-
-/* This is defined by <bits/stat.h> if `st_blksize' exists.  */
-#define _G_HAVE_ST_BLKSIZE defined (_STATBUF_ST_BLKSIZE)
-
-#define _G_BUFSIZ 8192
-
-#endif	/* _G_config.h */
diff --git a/sysdeps/generic/_itoa.h b/sysdeps/generic/_itoa.h
deleted file mode 100644
index a065ecb890..0000000000
--- a/sysdeps/generic/_itoa.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Internal function for converting integers to ASCII.
-   Copyright (C) 1994-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _ITOA_H
-#define _ITOA_H
-
-#include <limits.h>
-
-/* When long long is different from long, by default, _itoa_word is
-   provided to convert long to ASCII and _itoa is provided to convert
-   long long.  A sysdeps _itoa.h can define _ITOA_NEEDED to 0 and define
-   _ITOA_WORD_TYPE to unsigned long long int to override it so that
-   _itoa_word is changed to convert long long to ASCII and _itoa is
-   mapped to _itoa_word.  */
-
-#ifndef _ITOA_NEEDED
-# define _ITOA_NEEDED		(LONG_MAX != LLONG_MAX)
-#endif
-#ifndef _ITOA_WORD_TYPE
-# define _ITOA_WORD_TYPE	unsigned long int
-#endif
-
-
-/* Convert VALUE into ASCII in base BASE (2..36).
-   Write backwards starting the character just before BUFLIM.
-   Return the address of the first (left-to-right) character in the number.
-   Use upper case letters iff UPPER_CASE is nonzero.  */
-
-extern char *_itoa (unsigned long long int value, char *buflim,
-		    unsigned int base, int upper_case) attribute_hidden;
-
-extern const char _itoa_upper_digits[];
-extern const char _itoa_lower_digits[];
-#if IS_IN (libc) || IS_IN (rtld)
-hidden_proto (_itoa_upper_digits)
-hidden_proto (_itoa_lower_digits)
-#endif
-
-#if IS_IN (libc)
-extern char *_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
-			 unsigned int base,
-			 int upper_case) attribute_hidden;
-#else
-static inline char * __attribute__ ((unused, always_inline))
-_itoa_word (_ITOA_WORD_TYPE value, char *buflim,
-	    unsigned int base, int upper_case)
-{
-  const char *digits = (upper_case
-			? _itoa_upper_digits
-			: _itoa_lower_digits);
-
-  switch (base)
-    {
-# define SPECIAL(Base)							      \
-    case Base:								      \
-      do								      \
-	*--buflim = digits[value % Base];				      \
-      while ((value /= Base) != 0);					      \
-      break
-
-      SPECIAL (10);
-      SPECIAL (16);
-      SPECIAL (8);
-    default:
-      do
-	*--buflim = digits[value % base];
-      while ((value /= base) != 0);
-    }
-  return buflim;
-}
-# undef SPECIAL
-#endif
-
-/* Similar to the _itoa functions, but output starts at buf and pointer
-   after the last written character is returned.  */
-extern char *_fitoa_word (_ITOA_WORD_TYPE value, char *buf,
-			  unsigned int base,
-			  int upper_case) attribute_hidden;
-extern char *_fitoa (unsigned long long value, char *buf, unsigned int base,
-		     int upper_case) attribute_hidden;
-
-#if !_ITOA_NEEDED
-/* No need for special long long versions.  */
-# define _itoa(value, buf, base, upper_case) \
-  _itoa_word (value, buf, base, upper_case)
-# define _fitoa(value, buf, base, upper_case) \
-  _fitoa_word (value, buf, base, upper_case)
-#endif
-
-#endif	/* itoa.h */
diff --git a/sysdeps/generic/a.out.h b/sysdeps/generic/a.out.h
deleted file mode 100644
index 2c13762703..0000000000
--- a/sysdeps/generic/a.out.h
+++ /dev/null
@@ -1,339 +0,0 @@
-#ifndef __A_OUT_GNU_H__
-#define __A_OUT_GNU_H__
-
-#ifdef	__cplusplus
-extern "C" {
-#endif
-
-#define __GNU_EXEC_MACROS__
-
-#ifndef __STRUCT_EXEC_OVERRIDE__
-
-struct exec
-{
-  unsigned long a_info;		/* Use macros N_MAGIC, etc for access */
-  unsigned a_text;		/* size of text, in bytes */
-  unsigned a_data;		/* size of data, in bytes */
-  unsigned a_bss;		/* size of uninitialized data area, in bytes */
-  unsigned a_syms;		/* length of symbol table data, in bytes */
-  unsigned a_entry;		/* start address */
-  unsigned a_trsize;		/* size of reloc info for text, in bytes */
-  unsigned a_drsize;		/* size of reloc info for data, in bytes */
-
-#if defined (sequent) && defined (i386)
-  struct gdtbl
-    {				/* Global Descriptor Table */
-      unsigned g_code[2];
-      unsigned g_data[2];
-      unsigned g_desc[2];
-    } a_gdtbl;
-   unsigned a_shdata;		/* size of initialized shared data */
-   unsigned a_shbss;		/* size of uninitialized shared data */
-   unsigned a_shdrsize;		/* size of shared data relocation */
-   unsigned a_bootstrap[11];	/* bootstrap for standalone */
-   unsigned a_reserved[3];	/* reserved for future use */
-   unsigned a_version;		/* object version */
-#endif /* Sequent Symmetry, Dynix 3.x */
-};
-
-#endif /* __STRUCT_EXEC_OVERRIDE__ */
-
-/* these go in the N_MACHTYPE field */
-enum machine_type {
-#if defined (M_OLDSUN2)
-  M__OLDSUN2 = M_OLDSUN2,
-#else
-  M_OLDSUN2 = 0,
-#endif
-#if defined (M_68010)
-  M__68010 = M_68010,
-#else
-  M_68010 = 1,
-#endif
-#if defined (M_68020)
-  M__68020 = M_68020,
-#else
-  M_68020 = 2,
-#endif
-#if defined (M_SPARC)
-  M__SPARC = M_SPARC,
-#else
-  M_SPARC = 3,
-#endif
-  /* skip a bunch so we don't run into any of sun's numbers */
-  M_386 = 100
-};
-
-#if defined (sequent) && defined (i386)
-
-/* Dynix 3 wants the magic number to be the whole first longword.  */
-
-#define N_MAGIC(exec)		((exec).a_info)
-#define N_MACHTYPE(exec)	0
-#define N_FLAGS(exec)		0
-#define N_SET_INFO(exec, magic, type, flags) N_SET_MAGIC ((exec), (magic))
-#define N_SET_MAGIC(exec, magic)	((exec).a_info = (magic))
-#define N_SET_MACHTYPE(exec, machtype)	((void) 0)
-#define N_SET_FLAGS(exec, flags)	((void) 0)
-#define	OMAGIC		0x12eb	/* impure format - for .o's */
-#define	ZMAGIC		0x22eb	/* demand load format - zero at zero */
-#define NMAGIC		you lose /* syntax error -- no pure format */
-#define N_BADMAG(x)	(N_MAGIC(x) != OMAGIC && N_MAGIC(x) != ZMAGIC)
-#define N_ADDRADJ(x)	(N_MAGIC(x) == ZMAGIC ? SEGMENT_SIZE : 0)
-#define N_DATOFF(x)	(N_TXTOFF(x) + (x).a_text - N_ADDRADJ(x))
-#define N_TRELOFF(x)	(N_DATOFF(x) + (x).a_data + (x).a_shdata)
-#define N_SYMOFF(x)	(N_DRELOFF(x) + (x).a_drsize + (x).a_shdrsize)
-#define N_TXTADDR(x)	SEGMENT_SIZE
-#define N_COMM		0x0a	/** conflicts with N_INDR **/
-#define N_FN		0x0c
-/* Note that the Dynix binutils believe that N_SET[TDB] are
-   N_SH{DATA,BSS,COMM} -- be wary when mixing GNU & Dynix objects.  */
-#define PAGE_SIZE	4096
-#define SEGMENT_SIZE	PAGE_SIZE
-
-#else /* !(sequent && i386) */
-
-#if !defined (N_MAGIC)
-#define N_MAGIC(exec) ((exec).a_info & 0xffff)
-#endif
-#define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
-#define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
-#define N_SET_INFO(exec, magic, type, flags) \
-	((exec).a_info = ((magic) & 0xffff) \
-	 | (((int)(type) & 0xff) << 16) \
-	 | (((flags) & 0xff) << 24))
-#define N_SET_MAGIC(exec, magic) \
-	((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
-
-#define N_SET_MACHTYPE(exec, machtype) \
-	((exec).a_info = \
-	 ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
-
-#define N_SET_FLAGS(exec, flags) \
-	((exec).a_info = \
-	 ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
-
-#endif	/* sequent && i386 */
-
-#ifndef OMAGIC
-/* Code indicating object file or impure executable.  */
-#define OMAGIC 0407
-/* Code indicating pure executable.  */
-#define NMAGIC 0410
-/* Code indicating demand-paged executable.  */
-#define ZMAGIC 0413
-#endif /* not OMAGIC */
-
-#if !defined (N_BADMAG)
-#define N_BADMAG(x)					\
- (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC		\
-  && N_MAGIC(x) != ZMAGIC)
-#endif
-
-#define _N_BADMAG(x)					\
- (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC		\
-  && N_MAGIC(x) != ZMAGIC)
-
-#ifndef	sparc
-#define _N_HDROFF(x) (SEGMENT_SIZE - sizeof (struct exec))
-#else
-#define _N_HDROFF(x) (- sizeof (struct exec))
-#endif
-
-#if !defined (N_TXTOFF)
-#define N_TXTOFF(x) \
- (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : sizeof (struct exec))
-#endif
-
-#if !defined (N_DATOFF)
-#define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
-#endif
-
-#if !defined (N_TRELOFF)
-#define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
-#endif
-
-#if !defined (N_DRELOFF)
-#define N_DRELOFF(x) (N_TRELOFF(x) + (x).a_trsize)
-#endif
-
-#if !defined (N_SYMOFF)
-#define N_SYMOFF(x) (N_DRELOFF(x) + (x).a_drsize)
-#endif
-
-#if !defined (N_STROFF)
-#define N_STROFF(x) (N_SYMOFF(x) + (x).a_syms)
-#endif
-
-/* Address of text segment in memory after it is loaded.  */
-#if !defined (N_TXTADDR)
-#define N_TXTADDR(x) 0
-#endif
-
-/* Address of data segment in memory after it is loaded.
-   Note that it is up to you to define SEGMENT_SIZE
-   on machines not listed here.  */
-#if	defined (hp300) || defined (mips)
-#define	PAGE_SIZE	4096
-#endif
-#if	defined (sparc) || defined (NeXT)
-#define	PAGE_SIZE	0x2000
-#endif
-#if	defined (sony) || (defined (sun) && defined (mc68000))
-#define	SEGMENT_SIZE	0x2000
-#endif	/* Sony or 68k Sun.  */
-#ifdef is68k
-#define SEGMENT_SIZE 0x20000
-#endif
-#if defined(m68k) && defined(PORTAR)
-#define PAGE_SIZE 0x400
-#endif
-#if defined(i386) && !defined(sequent)
-/* For COFF encapsulation.  */
-#define SEGMENT_SIZE 0x400000
-#endif
-#ifndef	SEGMENT_SIZE
-/* This used to be first in this paragraph and under:
-   if (defined(vax) || defined(hp300) || defined(pyr) || defined(sparc) \
-     || (defined(m68k) && defined(PORTAR)) \
-     || defined (NeXT) || defined (mips)) */
-#define SEGMENT_SIZE PAGE_SIZE
-#endif
-#ifndef	PAGE_SIZE
-/* This value is for i386-minix, but that has no predefine.
-   Making it default will only cause confusion on machines
-   which have no proper value defined.  */
-#define	PAGE_SIZE 16
-#endif
-
-#define	PAGSIZ	PAGE_SIZE
-#define	SEGSIZ	SEGMENT_SIZE
-
-#define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
-
-#define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
-
-#ifndef N_DATADDR
-#define N_DATADDR(x) \
-    (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) \
-     : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
-#endif
-
-/* Address of bss segment in memory after it is loaded.  */
-#if !defined (N_BSSADDR)
-#define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
-#endif
-
-#if !defined (N_NLIST_DECLARED)
-struct nlist {
-  union {
-    char *n_name;
-    struct nlist *n_next;
-    long n_strx;
-  } n_un;
-  unsigned char n_type;
-  char n_other;
-  short n_desc;
-  unsigned long n_value;
-};
-#endif /* no N_NLIST_DECLARED.  */
-
-#if !defined (N_UNDF)
-#define N_UNDF 0
-#endif
-#if !defined (N_ABS)
-#define N_ABS 2
-#endif
-#if !defined (N_TEXT)
-#define N_TEXT 4
-#endif
-#if !defined (N_DATA)
-#define N_DATA 6
-#endif
-#if !defined (N_BSS)
-#define N_BSS 8
-#endif
-#if !defined (N_COMM)
-#define N_COMM 18
-#endif
-#if !defined (N_FN)
-#define N_FN 15
-#endif
-
-#if !defined (N_EXT)
-#define N_EXT 1
-#endif
-#if !defined (N_TYPE)
-#define N_TYPE 036
-#endif
-#if !defined (N_STAB)
-#define N_STAB 0340
-#endif
-
-/* The following type indicates the definition of a symbol as being
-   an indirect reference to another symbol.  The other symbol
-   appears as an undefined reference, immediately following this symbol.
-
-   Indirection is asymmetrical.  The other symbol's value will be used
-   to satisfy requests for the indirect symbol, but not vice versa.
-   If the other symbol does not have a definition, libraries will
-   be searched to find a definition.  */
-#define N_INDR 0xa
-
-/* The following symbols refer to set elements.
-   All the N_SET[ATDB] symbols with the same name form one set.
-   Space is allocated for the set in the text section, and each set
-   element's value is stored into one word of the space.
-   The first word of the space is the length of the set (number of elements).
-
-   The address of the set is made into an N_SETV symbol
-   whose name is the same as the name of the set.
-   This symbol acts like a N_DATA global symbol
-   in that it can satisfy undefined external references.  */
-
-/* These appear as input to LD, in a .o file.  */
-#define	N_SETA	0x14		/* Absolute set element symbol */
-#define	N_SETT	0x16		/* Text set element symbol */
-#define	N_SETD	0x18		/* Data set element symbol */
-#define	N_SETB	0x1A		/* Bss set element symbol */
-
-/* This is output from LD.  */
-#define N_SETV	0x1C		/* Pointer to set vector in data area.  */
-
-#if !defined (N_RELOCATION_INFO_DECLARED)
-/* This structure describes a single relocation to be performed.
-   The text-relocation section of the file is a vector of these structures,
-   all of which apply to the text section.
-   Likewise, the data-relocation section applies to the data section.  */
-
-struct relocation_info
-{
-  /* Address (within segment) to be relocated.  */
-  int r_address;
-  /* The meaning of r_symbolnum depends on r_extern.  */
-  unsigned int r_symbolnum:24;
-  /* Nonzero means value is a pc-relative offset
-     and it should be relocated for changes in its own address
-     as well as for changes in the symbol or section specified.  */
-  unsigned int r_pcrel:1;
-  /* Length (as exponent of 2) of the field to be relocated.
-     Thus, a value of 2 indicates 1<<2 bytes.  */
-  unsigned int r_length:2;
-  /* 1 => relocate with value of symbol.
-          r_symbolnum is the index of the symbol
-	  in file's the symbol table.
-     0 => relocate with the address of a segment.
-          r_symbolnum is N_TEXT, N_DATA, N_BSS or N_ABS
-	  (the N_EXT bit may be set also, but signifies nothing).  */
-  unsigned int r_extern:1;
-  /* Four bits that aren't used, but when writing an object file
-     it is desirable to clear them.  */
-  unsigned int r_pad:4;
-};
-#endif /* no N_RELOCATION_INFO_DECLARED.  */
-
-#ifdef	__cplusplus
-}
-#endif
-
-#endif /* __A_OUT_GNU_H__ */
diff --git a/sysdeps/generic/abort-instr.h b/sysdeps/generic/abort-instr.h
deleted file mode 100644
index 3c4b8c0da3..0000000000
--- a/sysdeps/generic/abort-instr.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Magic instruction to crash quickly and reliably.  Generic/stub version.
-   Copyright (C) 2014-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _ABORT_INSTR_H
-#define _ABORT_INSTR_H  1
-
-/* If the compiler provides the generic way to generate the right
-   instruction, we can use that without any machine-specific knowledge.  */
-#if HAVE_BUILTIN_TRAP
-# define ABORT_INSTRUCTION      __builtin_trap ()
-#else
-/* We cannot give any generic instruction to crash the program.
-   abort will have to make sure it never returns.  */
-#endif
-
-#endif  /* abort-instr.h */
diff --git a/sysdeps/generic/aio_misc.h b/sysdeps/generic/aio_misc.h
deleted file mode 100644
index a941a68aaa..0000000000
--- a/sysdeps/generic/aio_misc.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Internal declarations for <aio.h> functions implementation.  Stub version.
-   Copyright (C) 2001-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _AIO_MISC_H
-#define _AIO_MISC_H	1
-
-#include <aio.h>
-
-
-/* Extend the operation enum.  */
-enum
-{
-  LIO_DSYNC = LIO_READ + 1,
-  LIO_SYNC,
-  LIO_READ64 = LIO_READ | 128,
-  LIO_WRITE64 = LIO_WRITE | 128
-};
-
-/* Union of the two request types.  */
-typedef union
-  {
-    struct aiocb aiocb;
-    struct aiocb64 aiocb64;
-  } aiocb_union;
-
-
-/* Send the signal.  */
-extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid)
-     internal_function;
-
-
-#endif /* aio_misc.h */
diff --git a/sysdeps/generic/allocalim.h b/sysdeps/generic/allocalim.h
deleted file mode 100644
index 2491129a7d..0000000000
--- a/sysdeps/generic/allocalim.h
+++ /dev/null
@@ -1,4 +0,0 @@
-extern inline int __libc_use_alloca (size_t size)
-{
-  return size <= __MAX_ALLOCA_CUTOFF;
-}
diff --git a/sysdeps/generic/asm-syntax.h b/sysdeps/generic/asm-syntax.h
deleted file mode 100644
index a36150984f..0000000000
--- a/sysdeps/generic/asm-syntax.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* On some machines the mpn function from GNU MP use a file called
-   "asm-syntax.h" to define macros for assembly source code to use.  */
-
diff --git a/sysdeps/generic/atomic-machine.h b/sysdeps/generic/atomic-machine.h
deleted file mode 100644
index 865326eaa4..0000000000
--- a/sysdeps/generic/atomic-machine.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _ATOMIC_MACHINE_H
-#define _ATOMIC_MACHINE_H	1
-
-/* We have by default no support for atomic operations.  So define
-   them non-atomic.  If this is a problem somebody will have to come
-   up with real definitions.  */
-
-/* The only basic operation needed is compare and exchange.  */
-#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
-  ({ __typeof (mem) __gmemp = (mem);				      \
-     __typeof (*mem) __gret = *__gmemp;				      \
-     __typeof (*mem) __gnewval = (newval);			      \
-								      \
-     if (__gret == (oldval))					      \
-       *__gmemp = __gnewval;					      \
-     __gret; })
-
-#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
-  ({ __typeof (mem) __gmemp = (mem);				      \
-     __typeof (*mem) __gnewval = (newval);			      \
-								      \
-     *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
-
-#endif	/* atomic-machine.h */
diff --git a/sysdeps/generic/c++-types.data b/sysdeps/generic/c++-types.data
deleted file mode 100644
index 2ebe1f9abd..0000000000
--- a/sysdeps/generic/c++-types.data
+++ /dev/null
@@ -1,2 +0,0 @@
-# This is a placeholder file.  This configuration needs its own
-# sysdeps/.../c++-types.data file to make the test pass.
diff --git a/sysdeps/generic/confstr.h b/sysdeps/generic/confstr.h
deleted file mode 100644
index 988ec88c0c..0000000000
--- a/sysdeps/generic/confstr.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* This file should define values for the strings returned by `confstr'.
-   If _NAME is passed to `confstr', define NAME.  */
-
-#define	CS_PATH	""
diff --git a/sysdeps/generic/device-nrs.h b/sysdeps/generic/device-nrs.h
deleted file mode 100644
index 5319e228c7..0000000000
--- a/sysdeps/generic/device-nrs.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Device numbers of devices used in the implementation.  Generic version.
-   Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DEVICE_NRS_H
-#define _DEVICE_NRS_H	1
-
-/* By default we know no device numbers.  */
-
-/* We cannot check whether a given device is a tty.  */
-#define DEV_TTY_P(statp) (0)
-
-#endif	/* device-nrs.h */
diff --git a/sysdeps/generic/dirstream.h b/sysdeps/generic/dirstream.h
deleted file mode 100644
index cadb41b347..0000000000
--- a/sysdeps/generic/dirstream.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Copyright (C) 1993-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_DIRSTREAM_H
-
-#define	_DIRSTREAM_H	1
-
-
-/* This file should define a type `struct __dirstream', the data type of
-   directory stream objects returned by `opendir'.  */
-
-#error "No system-dependent definition of `struct __dirstream'."
-
-
-#endif	/* dirstream.h */
diff --git a/sysdeps/generic/dl-cache.h b/sysdeps/generic/dl-cache.h
deleted file mode 100644
index 1f0b8f629d..0000000000
--- a/sysdeps/generic/dl-cache.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
-   Copyright (C) 1999-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdint.h>
-
-#ifndef _DL_CACHE_DEFAULT_ID
-# define _DL_CACHE_DEFAULT_ID	3
-#endif
-
-#ifndef _dl_cache_check_flags
-# define _dl_cache_check_flags(flags)			\
-  ((flags) == 1 || (flags) == _DL_CACHE_DEFAULT_ID)
-#endif
-
-#ifndef LD_SO_CACHE
-# define LD_SO_CACHE SYSCONFDIR "/ld.so.cache"
-#endif
-
-#ifndef add_system_dir
-# define add_system_dir(dir) add_dir (dir)
-#endif
-
-#define CACHEMAGIC "ld.so-1.7.0"
-
-/* libc5 and glibc 2.0/2.1 use the same format.  For glibc 2.2 another
-   format has been added in a compatible way:
-   The beginning of the string table is used for the new table:
-	old_magic
-	nlibs
-	libs[0]
-	...
-	libs[nlibs-1]
-	pad, new magic needs to be aligned
-	     - this is string[0] for the old format
-	new magic - this is string[0] for the new format
-	newnlibs
-	...
-	newlibs[0]
-	...
-	newlibs[newnlibs-1]
-	string 1
-	string 2
-	...
-*/
-struct file_entry
-{
-  int flags;		/* This is 1 for an ELF library.  */
-  unsigned int key, value; /* String table indices.  */
-};
-
-struct cache_file
-{
-  char magic[sizeof CACHEMAGIC - 1];
-  unsigned int nlibs;
-  struct file_entry libs[0];
-};
-
-#define CACHEMAGIC_NEW "glibc-ld.so.cache"
-#define CACHE_VERSION "1.1"
-#define CACHEMAGIC_VERSION_NEW CACHEMAGIC_NEW CACHE_VERSION
-
-
-struct file_entry_new
-{
-  int32_t flags;		/* This is 1 for an ELF library.  */
-  uint32_t key, value;		/* String table indices.  */
-  uint32_t osversion;		/* Required OS version.	 */
-  uint64_t hwcap;		/* Hwcap entry.	 */
-};
-
-struct cache_file_new
-{
-  char magic[sizeof CACHEMAGIC_NEW - 1];
-  char version[sizeof CACHE_VERSION - 1];
-  uint32_t nlibs;		/* Number of entries.  */
-  uint32_t len_strings;		/* Size of string table. */
-  uint32_t unused[5];		/* Leave space for future extensions
-				   and align to 8 byte boundary.  */
-  struct file_entry_new libs[0]; /* Entries describing libraries.  */
-  /* After this the string table of size len_strings is found.	*/
-};
-
-/* Used to align cache_file_new.  */
-#define ALIGN_CACHE(addr)				\
-(((addr) + __alignof__ (struct cache_file_new) -1)	\
- & (~(__alignof__ (struct cache_file_new) - 1)))
-
-extern int _dl_cache_libcmp (const char *p1, const char *p2)
-     internal_function attribute_hidden;
diff --git a/sysdeps/generic/dl-dtprocnum.h b/sysdeps/generic/dl-dtprocnum.h
deleted file mode 100644
index 7b6fc86352..0000000000
--- a/sysdeps/generic/dl-dtprocnum.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Configuration of lookup functions.
-   Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* Number of extra dynamic section entries for this architecture.  By
-   default there are none.  */
-#define DT_THISPROCNUM	0
diff --git a/sysdeps/generic/dl-dtv.h b/sysdeps/generic/dl-dtv.h
deleted file mode 100644
index c9726620d6..0000000000
--- a/sysdeps/generic/dl-dtv.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Generic declarations for DTV-based TLS handling in the dynamic linker.
-   Copyright (C) 2002-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_DTV_H
-#define _DL_DTV_H
-
-struct dtv_pointer
-{
-  void *val;                    /* Pointer to data, or TLS_DTV_UNALLOCATED.  */
-  void *to_free;                /* Unaligned pointer, for deallocation.  */
-};
-
-/* Type for the dtv.  */
-typedef union dtv
-{
-  size_t counter;
-  struct dtv_pointer pointer;
-} dtv_t;
-
-/* Value used for dtv entries for which the allocation is delayed.  */
-#define TLS_DTV_UNALLOCATED ((void *) -1l)
-
-#endif /* _DLT_DTV_H */
diff --git a/sysdeps/generic/dl-fcntl.h b/sysdeps/generic/dl-fcntl.h
deleted file mode 100644
index 29985439e3..0000000000
--- a/sysdeps/generic/dl-fcntl.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Functions with hidden attribute internal to ld.so, which are declared
-   in include/fcntl.h.  Generic version.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-extern __typeof (__open) __open attribute_hidden;
-extern __typeof (__fcntl) __fcntl attribute_hidden;
diff --git a/sysdeps/generic/dl-fileid.h b/sysdeps/generic/dl-fileid.h
deleted file mode 100644
index 544ba953df..0000000000
--- a/sysdeps/generic/dl-fileid.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* File identity for the dynamic linker.  Stub version.
-   Copyright (C) 2015-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdbool.h>
-
-/* This type stores whatever information is fetched by _dl_get_file_id
-   and compared by _dl_file_id_match_p.  */
-struct r_file_id
-  {
-    /* In the stub version, we don't record anything at all.  */
-  };
-
-/* Sample FD to fill in *ID.  Returns true on success.
-   On error, returns false, with errno set.  */
-static inline bool
-_dl_get_file_id (int fd __attribute__ ((unused)),
-		 struct r_file_id *id __attribute__ ((unused)))
-{
-  return true;
-}
-
-/* Compare two results from _dl_get_file_id for equality.
-   It's crucial that this never return false-positive matches.
-   It's ideal that it never return false-negative mismatches either,
-   but lack of matches is survivable.  */
-static inline bool
-_dl_file_id_match_p (const struct r_file_id *a __attribute__ ((unused)),
-		     const struct r_file_id *b __attribute__ ((unused)))
-{
-  return false;
-}
diff --git a/sysdeps/generic/dl-fptr.h b/sysdeps/generic/dl-fptr.h
deleted file mode 100644
index b28b72842e..0000000000
--- a/sysdeps/generic/dl-fptr.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Function descriptors. Generic version.
-   Copyright (C) 1995-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef dl_fptr_h
-#define dl_fptr_h 1
-
-/* An FDESC is a function descriptor.  */
-
-struct fdesc
-  {
-    ElfW(Addr) ip;	/* code entry point */
-    ElfW(Addr) gp;	/* global pointer */
-  };
-
-struct fdesc_table
-  {
-    struct fdesc_table *next;
-    unsigned int len;			/* # of entries in fdesc table */
-    volatile unsigned int first_unused;	/* index of first available entry */
-    struct fdesc fdesc[0];
-  };
-
-struct link_map;
-
-extern ElfW(Addr) _dl_boot_fptr_table [];
-
-extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *,
-				 ElfW(Addr));
-
-#endif /* !dl_fptr_h */
diff --git a/sysdeps/generic/dl-hash.h b/sysdeps/generic/dl-hash.h
deleted file mode 100644
index 4524381647..0000000000
--- a/sysdeps/generic/dl-hash.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Compute hash value for given string according to ELF standard.
-   Copyright (C) 1995-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_HASH_H
-#define _DL_HASH_H	1
-
-
-/* This is the hashing function specified by the ELF ABI.  In the
-   first five operations no overflow is possible so we optimized it a
-   bit.  */
-static unsigned int
-__attribute__ ((unused))
-_dl_elf_hash (const char *name_arg)
-{
-  const unsigned char *name = (const unsigned char *) name_arg;
-  unsigned long int hash = *name;
-  if (hash != 0 && name[1] != '\0')
-    {
-      hash = (hash << 4) + name[1];
-      if (name[2] != '\0')
-	{
-	  hash = (hash << 4) + name[2];
-	  if (name[3] != '\0')
-	    {
-	      hash = (hash << 4) + name[3];
-	      if (name[4] != '\0')
-		{
-		  hash = (hash << 4) + name[4];
-		  name += 5;
-		  while (*name != '\0')
-		    {
-		      unsigned long int hi;
-		      hash = (hash << 4) + *name++;
-		      hi = hash & 0xf0000000;
-
-		      /* The algorithm specified in the ELF ABI is as
-			 follows:
-
-			 if (hi != 0)
-			   hash ^= hi >> 24;
-
-			 hash &= ~hi;
-
-			 But the following is equivalent and a lot
-			 faster, especially on modern processors.  */
-
-		      hash ^= hi >> 24;
-		    }
-
-		  /* Second part of the modified formula.  This
-		     operation can be lifted outside the loop.  */
-		  hash &= 0x0fffffff;
-		}
-	    }
-	}
-    }
-  return hash;
-}
-
-#endif /* dl-hash.h */
diff --git a/sysdeps/generic/dl-irel.h b/sysdeps/generic/dl-irel.h
deleted file mode 100644
index ef98f9df50..0000000000
--- a/sysdeps/generic/dl-irel.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Machine-dependent ELF indirect relocation inline functions.
-   Copyright (C) 2009-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_IREL_H
-#define _DL_IREL_H
-
-static inline DL_FIXUP_VALUE_TYPE
-__attribute ((always_inline))
-elf_ifunc_invoke (ElfW(Addr) addr)
-{
-  return ((DL_FIXUP_VALUE_TYPE (*) (void)) (addr)) ();
-}
-
-#endif /* dl-irel.h */
diff --git a/sysdeps/generic/dl-librecon.h b/sysdeps/generic/dl-librecon.h
deleted file mode 100644
index ecdc8df206..0000000000
--- a/sysdeps/generic/dl-librecon.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Optional code to distinguish library flavours.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_LIBRECON_H
-#define _DL_LIBRECON_H	1
-
-/* In the general case we don't do anything.  */
-
-#endif /* dl-librecon.h */
diff --git a/sysdeps/generic/dl-lookupcfg.h b/sysdeps/generic/dl-lookupcfg.h
deleted file mode 100644
index 1f2f2e77d0..0000000000
--- a/sysdeps/generic/dl-lookupcfg.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Configuration of lookup functions.
-   Copyright (C) 2002-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* The type of the return value of fixup/profile_fixup.  */
-#define DL_FIXUP_VALUE_TYPE ElfW(Addr)
-/* Construct a value of type DL_FIXUP_VALUE_TYPE from a code address
-   and a link map.  */
-#define DL_FIXUP_MAKE_VALUE(map, addr) (addr)
-/* Extract the code address from a value of type DL_FIXUP_MAKE_VALUE.
- */
-#define DL_FIXUP_VALUE_CODE_ADDR(value) (value)
-#define DL_FIXUP_VALUE_ADDR(value) (value)
-#define DL_FIXUP_ADDR_VALUE(addr) (addr)
diff --git a/sysdeps/generic/dl-machine.h b/sysdeps/generic/dl-machine.h
deleted file mode 100644
index 59749bd84f..0000000000
--- a/sysdeps/generic/dl-machine.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* Machine-dependent ELF dynamic relocation inline functions.  Stub version.
-   Copyright (C) 1995-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#define ELF_MACHINE_NAME "stub"
-
-#include <string.h>
-#include <link.h>
-
-
-/* Return nonzero iff ELF header is compatible with the running host.  */
-static inline int
-elf_machine_matches_host (const Elf32_Ehdr *ehdr)
-{
-  switch (ehdr->e_machine)
-    {
-    default:
-      return 0;
-    }
-}
-
-
-/* Return the link-time address of _DYNAMIC.  */
-static inline Elf32_Addr
-elf_machine_dynamic (void)
-{
-#error "Damn, no _DYNAMIC"
-}
-
-
-/* Return the run-time load address of the shared object.  */
-static inline Elf32_Addr
-elf_machine_load_address (void)
-{
-#error "Where am I?"
-}
-
-/* Fixup a PLT entry to bounce directly to the function at VALUE.  */
-
-static inline Elf32_Addr
-elf_machine_fixup_plt (struct link_map *map, lookup_t t,
-		       const Elf32_Rel *reloc,
-		       Elf32_Addr *reloc_addr, Elf32_Addr value)
-{
-  return *reloc_addr = value;
-}
-
-/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
-   LOADADDR is the load address of the object; INFO is an array indexed
-   by DT_* of the .dynamic section info.  */
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rel (Elf32_Addr loadaddr, Elf32_Dyn *info[DT_NUM],
-		 const Elf32_Rel *reloc, const Elf32_Sym *sym,
-		 Elf32_Addr (*resolve) (const Elf32_Sym **ref,
-					Elf32_Addr reloc_addr,
-					int noplt))
-{
-  Elf32_Addr *const reloc_addr = (Elf32_Addr *) reloc->r_offset;
-  Elf32_Addr loadbase;
-
-  switch (ELF32_R_TYPE (reloc->r_info))
-    {
-    case R_MACHINE_COPY:
-      loadbase = (*resolve) (&sym, (Elf32_Addr) reloc_addr, 0);
-      memcpy (reloc_addr, (void *) (loadbase + sym->st_value), sym->st_size);
-      break;
-    default:
-      _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 0);
-      break;
-    }
-}
-
-
-auto inline Elf32_Addr
-__attribute__ ((always_inline))
-elf_machine_rela (Elf32_Addr loadaddr, Elf32_Dyn *info[DT_NUM],
-		  const Elf32_Rel *reloc, const Elf32_Sym *sym,
-		  Elf32_Addr (*resolve) (const Elf32_Sym **ref,
-					 Elf32_Addr reloc_addr,
-					 int noplt))
-{
-  _dl_signal_error (0, "Elf32_Rela relocation requested -- unused on "
-		    NULL, ELF_MACHINE_NAME);
-}
-
-
-/* Set up the loaded object described by L so its unrelocated PLT
-   entries will jump to the on-demand fixup code in dl-runtime.c.  */
-
-static inline int
-elf_machine_runtime_setup (struct link_map *l, int lazy)
-{
-  extern void _dl_runtime_resolve (Elf32_Word);
-
-  if (lazy)
-    {
-      /* The GOT entries for functions in the PLT have not yet been filled
-         in.  Their initial contents will arrange when called to push an
-         offset into the .rel.plt section, push _GLOBAL_OFFSET_TABLE_[1],
-         and then jump to _GLOBAL_OFFSET_TABLE[2].  */
-      Elf32_Addr *got = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
-      got[1] = (Elf32_Addr) l;	/* Identify this shared object.  */
-
-      /* This function will get called to fix up the GOT entry indicated by
-         the offset on the stack, and then jump to the resolved address.  */
-      got[2] = (Elf32_Addr) &_dl_runtime_resolve;
-    }
-
-  return lazy;
-}
-
-
-/* Initial entry point code for the dynamic linker.
-   The C function `_dl_start' is the real entry point;
-   its return value is the user program's entry point.  */
-
-#define RTLD_START #error need some startup code
diff --git a/sysdeps/generic/dl-mman.h b/sysdeps/generic/dl-mman.h
deleted file mode 100644
index fbabde91e4..0000000000
--- a/sysdeps/generic/dl-mman.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* Functions with hidden attribute internal to ld.so, which are declared
-   in include/sys/mman.h.  Generic version.
-   Copyright (C) 2015-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-extern __typeof (__mmap) __mmap attribute_hidden;
-extern __typeof (__mprotect) __mprotect attribute_hidden;
-extern __typeof (__munmap) __munmap attribute_hidden;
diff --git a/sysdeps/generic/dl-osinfo.h b/sysdeps/generic/dl-osinfo.h
deleted file mode 100644
index cdee4124d4..0000000000
--- a/sysdeps/generic/dl-osinfo.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Operating system specific code for generic dynamic loader functions.
-   Copyright (C) 2009-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <endian.h>
-#include <stdint.h>
-
-static inline uintptr_t __attribute__ ((always_inline))
-_dl_setup_stack_chk_guard (void *dl_random)
-{
-  union
-  {
-    uintptr_t num;
-    unsigned char bytes[sizeof (uintptr_t)];
-  } ret = { 0 };
-
-  if (dl_random == NULL)
-    {
-      ret.bytes[sizeof (ret) - 1] = 255;
-      ret.bytes[sizeof (ret) - 2] = '\n';
-    }
-  else
-    {
-      memcpy (ret.bytes, dl_random, sizeof (ret));
-#if BYTE_ORDER == LITTLE_ENDIAN
-      ret.num &= ~(uintptr_t) 0xff;
-#elif BYTE_ORDER == BIG_ENDIAN
-      ret.num &= ~((uintptr_t) 0xff << (8 * (sizeof (ret) - 1)));
-#else
-# error "BYTE_ORDER unknown"
-#endif
-    }
-  return ret.num;
-}
-
-static inline uintptr_t __attribute__ ((always_inline))
-_dl_setup_pointer_guard (void *dl_random, uintptr_t stack_chk_guard)
-{
-  uintptr_t ret;
-  if (dl_random == NULL)
-    ret = stack_chk_guard;
-  else
-    memcpy (&ret, (char *) dl_random + sizeof (ret), sizeof (ret));
-  return ret;
-}
diff --git a/sysdeps/generic/dl-procinfo.c b/sysdeps/generic/dl-procinfo.c
deleted file mode 100644
index a056184690..0000000000
--- a/sysdeps/generic/dl-procinfo.c
+++ /dev/null
@@ -1 +0,0 @@
-/* No architecture specific definitions.  */
diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h
deleted file mode 100644
index 9a0ccacc57..0000000000
--- a/sysdeps/generic/dl-procinfo.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Stub version of processor capability information handling macros.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DL_PROCINFO_H
-#define _DL_PROCINFO_H	1
-
-/* We cannot provide a general printing function.  */
-#define _dl_procinfo(type, word) -1
-
-/* There are no hardware capabilities defined.  */
-#define _dl_hwcap_string(idx) ""
-
-/* By default there is no important hardware capability.  */
-#define HWCAP_IMPORTANT (0)
-
-/* There're no platforms to filter out.  */
-#define _DL_HWCAP_PLATFORM 0
-
-/* We don't have any hardware capabilities.  */
-#define _DL_HWCAP_COUNT 0
-
-#define _dl_string_hwcap(str) (-1)
-
-#define _dl_string_platform(str) (-1)
-
-#endif /* dl-procinfo.h */
diff --git a/sysdeps/generic/dl-sysdep.h b/sysdeps/generic/dl-sysdep.h
deleted file mode 100644
index c69a4e0c02..0000000000
--- a/sysdeps/generic/dl-sysdep.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* System-specific settings for dynamic linker code.  Generic version.
-   Copyright (C) 2002-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* No multiple inclusion protection need here because it's just macros.
-   We don't want to use _DL_SYSDEP_H in case we are #include_next'd.  */
-
-/* This macro must be defined to either 0 or 1.
-
-   If 1, then an errno global variable hidden in ld.so will work right with
-   all the errno-using libc code compiled for ld.so, and there is never a
-   need to share the errno location with libc.  This is appropriate only if
-   all the libc functions that ld.so uses are called without PLT and always
-   get the versions linked into ld.so rather than the libc ones.  */
-
-#if IS_IN (rtld)
-# define RTLD_PRIVATE_ERRNO 1
-#else
-# define RTLD_PRIVATE_ERRNO 0
-#endif
diff --git a/sysdeps/generic/dl-tls.h b/sysdeps/generic/dl-tls.h
deleted file mode 100644
index 7703a97525..0000000000
--- a/sysdeps/generic/dl-tls.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* There has to be an architecture specific version of this file.  */
-#error "architecture-specific version of <dl-tls.h> missing"
diff --git a/sysdeps/generic/dl-unistd.h b/sysdeps/generic/dl-unistd.h
deleted file mode 100644
index dc738cd8e2..0000000000
--- a/sysdeps/generic/dl-unistd.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Functions with hidden attribute internal to ld.so, which are declared
-   in include/unistd.h.  Generic version.
-   Copyright (C) 2015-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-extern __typeof (__access) __access attribute_hidden;
-extern __typeof (__brk) __brk attribute_hidden;
-extern __typeof (__close) __close attribute_hidden;
-extern __typeof (__getcwd) __getcwd attribute_hidden;
-extern __typeof (__getpid) __getpid attribute_hidden;
-extern __typeof (__libc_read) __libc_read attribute_hidden;
-extern __typeof (__libc_write) __libc_write attribute_hidden;
-extern __typeof (__lseek) __lseek attribute_hidden;
-extern __typeof (__profil) __profil attribute_hidden;
-extern __typeof (__read) __read attribute_hidden;
-extern __typeof (__sbrk) __sbrk attribute_hidden;
diff --git a/sysdeps/generic/dwarf2.h b/sysdeps/generic/dwarf2.h
deleted file mode 100644
index bc68a5901a..0000000000
--- a/sysdeps/generic/dwarf2.h
+++ /dev/null
@@ -1,590 +0,0 @@
-/* Declarations and definitions of codes relating to the DWARF2 symbolic
-   debugging information format.
-   Copyright (C) 1992-2017 Free Software Foundation, Inc.
-   Contributed by Gary Funck (gary@intrepid.com).  Derived from the
-   DWARF 1 implementation written by Ron Guilmette (rfg@monkeys.com).
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _DWARF2_H
-#define _DWARF2_H	1
-
-/* This file is derived from the DWARF specification (a public document)
-   Revision 2.0.0 (July 27, 1993) developed by the UNIX International
-   Programming Languages Special Interest Group (UI/PLSIG) and distributed
-   by UNIX International.  Copies of this specification are available from
-   UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.  */
-
-/* This file is shared between GCC and GDB, and should not contain
-   prototypes.  */
-
-#ifndef __ASSEMBLER__
-/* Tag names and codes.  */
-
-enum dwarf_tag
-  {
-    DW_TAG_padding = 0x00,
-    DW_TAG_array_type = 0x01,
-    DW_TAG_class_type = 0x02,
-    DW_TAG_entry_point = 0x03,
-    DW_TAG_enumeration_type = 0x04,
-    DW_TAG_formal_parameter = 0x05,
-    DW_TAG_imported_declaration = 0x08,
-    DW_TAG_label = 0x0a,
-    DW_TAG_lexical_block = 0x0b,
-    DW_TAG_member = 0x0d,
-    DW_TAG_pointer_type = 0x0f,
-    DW_TAG_reference_type = 0x10,
-    DW_TAG_compile_unit = 0x11,
-    DW_TAG_string_type = 0x12,
-    DW_TAG_structure_type = 0x13,
-    DW_TAG_subroutine_type = 0x15,
-    DW_TAG_typedef = 0x16,
-    DW_TAG_union_type = 0x17,
-    DW_TAG_unspecified_parameters = 0x18,
-    DW_TAG_variant = 0x19,
-    DW_TAG_common_block = 0x1a,
-    DW_TAG_common_inclusion = 0x1b,
-    DW_TAG_inheritance = 0x1c,
-    DW_TAG_inlined_subroutine = 0x1d,
-    DW_TAG_module = 0x1e,
-    DW_TAG_ptr_to_member_type = 0x1f,
-    DW_TAG_set_type = 0x20,
-    DW_TAG_subrange_type = 0x21,
-    DW_TAG_with_stmt = 0x22,
-    DW_TAG_access_declaration = 0x23,
-    DW_TAG_base_type = 0x24,
-    DW_TAG_catch_block = 0x25,
-    DW_TAG_const_type = 0x26,
-    DW_TAG_constant = 0x27,
-    DW_TAG_enumerator = 0x28,
-    DW_TAG_file_type = 0x29,
-    DW_TAG_friend = 0x2a,
-    DW_TAG_namelist = 0x2b,
-    DW_TAG_namelist_item = 0x2c,
-    DW_TAG_packed_type = 0x2d,
-    DW_TAG_subprogram = 0x2e,
-    DW_TAG_template_type_param = 0x2f,
-    DW_TAG_template_value_param = 0x30,
-    DW_TAG_thrown_type = 0x31,
-    DW_TAG_try_block = 0x32,
-    DW_TAG_variant_part = 0x33,
-    DW_TAG_variable = 0x34,
-    DW_TAG_volatile_type = 0x35,
-    /* SGI/MIPS Extensions */
-    DW_TAG_MIPS_loop = 0x4081,
-    /* GNU extensions */
-    DW_TAG_format_label = 0x4101,	/* for FORTRAN 77 and Fortran 90 */
-    DW_TAG_function_template = 0x4102,	/* for C++ */
-    DW_TAG_class_template = 0x4103,	/* for C++ */
-    DW_TAG_GNU_BINCL = 0x4104,
-    DW_TAG_GNU_EINCL = 0x4105
-  };
-
-#define DW_TAG_lo_user	0x4080
-#define DW_TAG_hi_user	0xffff
-
-/* flag that tells whether entry has a child or not */
-#define DW_children_no   0
-#define	DW_children_yes  1
-
-/* Form names and codes.  */
-enum dwarf_form
-  {
-    DW_FORM_addr = 0x01,
-    DW_FORM_block2 = 0x03,
-    DW_FORM_block4 = 0x04,
-    DW_FORM_data2 = 0x05,
-    DW_FORM_data4 = 0x06,
-    DW_FORM_data8 = 0x07,
-    DW_FORM_string = 0x08,
-    DW_FORM_block = 0x09,
-    DW_FORM_block1 = 0x0a,
-    DW_FORM_data1 = 0x0b,
-    DW_FORM_flag = 0x0c,
-    DW_FORM_sdata = 0x0d,
-    DW_FORM_strp = 0x0e,
-    DW_FORM_udata = 0x0f,
-    DW_FORM_ref_addr = 0x10,
-    DW_FORM_ref1 = 0x11,
-    DW_FORM_ref2 = 0x12,
-    DW_FORM_ref4 = 0x13,
-    DW_FORM_ref8 = 0x14,
-    DW_FORM_ref_udata = 0x15,
-    DW_FORM_indirect = 0x16
-  };
-
-/* Attribute names and codes.  */
-
-enum dwarf_attribute
-  {
-    DW_AT_sibling = 0x01,
-    DW_AT_location = 0x02,
-    DW_AT_name = 0x03,
-    DW_AT_ordering = 0x09,
-    DW_AT_subscr_data = 0x0a,
-    DW_AT_byte_size = 0x0b,
-    DW_AT_bit_offset = 0x0c,
-    DW_AT_bit_size = 0x0d,
-    DW_AT_element_list = 0x0f,
-    DW_AT_stmt_list = 0x10,
-    DW_AT_low_pc = 0x11,
-    DW_AT_high_pc = 0x12,
-    DW_AT_language = 0x13,
-    DW_AT_member = 0x14,
-    DW_AT_discr = 0x15,
-    DW_AT_discr_value = 0x16,
-    DW_AT_visibility = 0x17,
-    DW_AT_import = 0x18,
-    DW_AT_string_length = 0x19,
-    DW_AT_common_reference = 0x1a,
-    DW_AT_comp_dir = 0x1b,
-    DW_AT_const_value = 0x1c,
-    DW_AT_containing_type = 0x1d,
-    DW_AT_default_value = 0x1e,
-    DW_AT_inline = 0x20,
-    DW_AT_is_optional = 0x21,
-    DW_AT_lower_bound = 0x22,
-    DW_AT_producer = 0x25,
-    DW_AT_prototyped = 0x27,
-    DW_AT_return_addr = 0x2a,
-    DW_AT_start_scope = 0x2c,
-    DW_AT_stride_size = 0x2e,
-    DW_AT_upper_bound = 0x2f,
-    DW_AT_abstract_origin = 0x31,
-    DW_AT_accessibility = 0x32,
-    DW_AT_address_class = 0x33,
-    DW_AT_artificial = 0x34,
-    DW_AT_base_types = 0x35,
-    DW_AT_calling_convention = 0x36,
-    DW_AT_count = 0x37,
-    DW_AT_data_member_location = 0x38,
-    DW_AT_decl_column = 0x39,
-    DW_AT_decl_file = 0x3a,
-    DW_AT_decl_line = 0x3b,
-    DW_AT_declaration = 0x3c,
-    DW_AT_discr_list = 0x3d,
-    DW_AT_encoding = 0x3e,
-    DW_AT_external = 0x3f,
-    DW_AT_frame_base = 0x40,
-    DW_AT_friend = 0x41,
-    DW_AT_identifier_case = 0x42,
-    DW_AT_macro_info = 0x43,
-    DW_AT_namelist_items = 0x44,
-    DW_AT_priority = 0x45,
-    DW_AT_segment = 0x46,
-    DW_AT_specification = 0x47,
-    DW_AT_static_link = 0x48,
-    DW_AT_type = 0x49,
-    DW_AT_use_location = 0x4a,
-    DW_AT_variable_parameter = 0x4b,
-    DW_AT_virtuality = 0x4c,
-    DW_AT_vtable_elem_location = 0x4d,
-    /* SGI/MIPS Extensions */
-    DW_AT_MIPS_fde = 0x2001,
-    DW_AT_MIPS_loop_begin = 0x2002,
-    DW_AT_MIPS_tail_loop_begin = 0x2003,
-    DW_AT_MIPS_epilog_begin = 0x2004,
-    DW_AT_MIPS_loop_unroll_factor = 0x2005,
-    DW_AT_MIPS_software_pipeline_depth = 0x2006,
-    DW_AT_MIPS_linkage_name = 0x2007,
-    DW_AT_MIPS_stride = 0x2008,
-    DW_AT_MIPS_abstract_name = 0x2009,
-    DW_AT_MIPS_clone_origin = 0x200a,
-    DW_AT_MIPS_has_inlines = 0x200b,
-    /* GNU extensions.  */
-    DW_AT_sf_names = 0x2101,
-    DW_AT_src_info = 0x2102,
-    DW_AT_mac_info = 0x2103,
-    DW_AT_src_coords = 0x2104,
-    DW_AT_body_begin = 0x2105,
-    DW_AT_body_end = 0x2106
-  };
-
-#define DW_AT_lo_user	0x2000	/* implementation-defined range start */
-#define DW_AT_hi_user	0x3ff0	/* implementation-defined range end */
-
-/* Location atom names and codes.  */
-
-enum dwarf_location_atom
-  {
-    DW_OP_addr = 0x03,
-    DW_OP_deref = 0x06,
-    DW_OP_const1u = 0x08,
-    DW_OP_const1s = 0x09,
-    DW_OP_const2u = 0x0a,
-    DW_OP_const2s = 0x0b,
-    DW_OP_const4u = 0x0c,
-    DW_OP_const4s = 0x0d,
-    DW_OP_const8u = 0x0e,
-    DW_OP_const8s = 0x0f,
-    DW_OP_constu = 0x10,
-    DW_OP_consts = 0x11,
-    DW_OP_dup = 0x12,
-    DW_OP_drop = 0x13,
-    DW_OP_over = 0x14,
-    DW_OP_pick = 0x15,
-    DW_OP_swap = 0x16,
-    DW_OP_rot = 0x17,
-    DW_OP_xderef = 0x18,
-    DW_OP_abs = 0x19,
-    DW_OP_and = 0x1a,
-    DW_OP_div = 0x1b,
-    DW_OP_minus = 0x1c,
-    DW_OP_mod = 0x1d,
-    DW_OP_mul = 0x1e,
-    DW_OP_neg = 0x1f,
-    DW_OP_not = 0x20,
-    DW_OP_or = 0x21,
-    DW_OP_plus = 0x22,
-    DW_OP_plus_uconst = 0x23,
-    DW_OP_shl = 0x24,
-    DW_OP_shr = 0x25,
-    DW_OP_shra = 0x26,
-    DW_OP_xor = 0x27,
-    DW_OP_bra = 0x28,
-    DW_OP_eq = 0x29,
-    DW_OP_ge = 0x2a,
-    DW_OP_gt = 0x2b,
-    DW_OP_le = 0x2c,
-    DW_OP_lt = 0x2d,
-    DW_OP_ne = 0x2e,
-    DW_OP_skip = 0x2f,
-    DW_OP_lit0 = 0x30,
-    DW_OP_lit1 = 0x31,
-    DW_OP_lit2 = 0x32,
-    DW_OP_lit3 = 0x33,
-    DW_OP_lit4 = 0x34,
-    DW_OP_lit5 = 0x35,
-    DW_OP_lit6 = 0x36,
-    DW_OP_lit7 = 0x37,
-    DW_OP_lit8 = 0x38,
-    DW_OP_lit9 = 0x39,
-    DW_OP_lit10 = 0x3a,
-    DW_OP_lit11 = 0x3b,
-    DW_OP_lit12 = 0x3c,
-    DW_OP_lit13 = 0x3d,
-    DW_OP_lit14 = 0x3e,
-    DW_OP_lit15 = 0x3f,
-    DW_OP_lit16 = 0x40,
-    DW_OP_lit17 = 0x41,
-    DW_OP_lit18 = 0x42,
-    DW_OP_lit19 = 0x43,
-    DW_OP_lit20 = 0x44,
-    DW_OP_lit21 = 0x45,
-    DW_OP_lit22 = 0x46,
-    DW_OP_lit23 = 0x47,
-    DW_OP_lit24 = 0x48,
-    DW_OP_lit25 = 0x49,
-    DW_OP_lit26 = 0x4a,
-    DW_OP_lit27 = 0x4b,
-    DW_OP_lit28 = 0x4c,
-    DW_OP_lit29 = 0x4d,
-    DW_OP_lit30 = 0x4e,
-    DW_OP_lit31 = 0x4f,
-    DW_OP_reg0 = 0x50,
-    DW_OP_reg1 = 0x51,
-    DW_OP_reg2 = 0x52,
-    DW_OP_reg3 = 0x53,
-    DW_OP_reg4 = 0x54,
-    DW_OP_reg5 = 0x55,
-    DW_OP_reg6 = 0x56,
-    DW_OP_reg7 = 0x57,
-    DW_OP_reg8 = 0x58,
-    DW_OP_reg9 = 0x59,
-    DW_OP_reg10 = 0x5a,
-    DW_OP_reg11 = 0x5b,
-    DW_OP_reg12 = 0x5c,
-    DW_OP_reg13 = 0x5d,
-    DW_OP_reg14 = 0x5e,
-    DW_OP_reg15 = 0x5f,
-    DW_OP_reg16 = 0x60,
-    DW_OP_reg17 = 0x61,
-    DW_OP_reg18 = 0x62,
-    DW_OP_reg19 = 0x63,
-    DW_OP_reg20 = 0x64,
-    DW_OP_reg21 = 0x65,
-    DW_OP_reg22 = 0x66,
-    DW_OP_reg23 = 0x67,
-    DW_OP_reg24 = 0x68,
-    DW_OP_reg25 = 0x69,
-    DW_OP_reg26 = 0x6a,
-    DW_OP_reg27 = 0x6b,
-    DW_OP_reg28 = 0x6c,
-    DW_OP_reg29 = 0x6d,
-    DW_OP_reg30 = 0x6e,
-    DW_OP_reg31 = 0x6f,
-    DW_OP_breg0 = 0x70,
-    DW_OP_breg1 = 0x71,
-    DW_OP_breg2 = 0x72,
-    DW_OP_breg3 = 0x73,
-    DW_OP_breg4 = 0x74,
-    DW_OP_breg5 = 0x75,
-    DW_OP_breg6 = 0x76,
-    DW_OP_breg7 = 0x77,
-    DW_OP_breg8 = 0x78,
-    DW_OP_breg9 = 0x79,
-    DW_OP_breg10 = 0x7a,
-    DW_OP_breg11 = 0x7b,
-    DW_OP_breg12 = 0x7c,
-    DW_OP_breg13 = 0x7d,
-    DW_OP_breg14 = 0x7e,
-    DW_OP_breg15 = 0x7f,
-    DW_OP_breg16 = 0x80,
-    DW_OP_breg17 = 0x81,
-    DW_OP_breg18 = 0x82,
-    DW_OP_breg19 = 0x83,
-    DW_OP_breg20 = 0x84,
-    DW_OP_breg21 = 0x85,
-    DW_OP_breg22 = 0x86,
-    DW_OP_breg23 = 0x87,
-    DW_OP_breg24 = 0x88,
-    DW_OP_breg25 = 0x89,
-    DW_OP_breg26 = 0x8a,
-    DW_OP_breg27 = 0x8b,
-    DW_OP_breg28 = 0x8c,
-    DW_OP_breg29 = 0x8d,
-    DW_OP_breg30 = 0x8e,
-    DW_OP_breg31 = 0x8f,
-    DW_OP_regx = 0x90,
-    DW_OP_fbreg = 0x91,
-    DW_OP_bregx = 0x92,
-    DW_OP_piece = 0x93,
-    DW_OP_deref_size = 0x94,
-    DW_OP_xderef_size = 0x95,
-    DW_OP_nop = 0x96
-  };
-
-#define DW_OP_lo_user	0x80	/* implementation-defined range start */
-#define DW_OP_hi_user	0xff	/* implementation-defined range end */
-
-/* Type encodings.  */
-
-enum dwarf_type
-  {
-    DW_ATE_void = 0x0,
-    DW_ATE_address = 0x1,
-    DW_ATE_boolean = 0x2,
-    DW_ATE_complex_float = 0x3,
-    DW_ATE_float = 0x4,
-    DW_ATE_signed = 0x5,
-    DW_ATE_signed_char = 0x6,
-    DW_ATE_unsigned = 0x7,
-    DW_ATE_unsigned_char = 0x8
-  };
-
-#define	DW_ATE_lo_user 0x80
-#define	DW_ATE_hi_user 0xff
-
-/* Array ordering names and codes.  */
-enum dwarf_array_dim_ordering
-  {
-    DW_ORD_row_major = 0,
-    DW_ORD_col_major = 1
-  };
-
-/* access attribute */
-enum dwarf_access_attribute
-  {
-    DW_ACCESS_public = 1,
-    DW_ACCESS_protected = 2,
-    DW_ACCESS_private = 3
-  };
-
-/* visibility */
-enum dwarf_visibility_attribute
-  {
-    DW_VIS_local = 1,
-    DW_VIS_exported = 2,
-    DW_VIS_qualified = 3
-  };
-
-/* virtuality */
-enum dwarf_virtuality_attribute
-  {
-    DW_VIRTUALITY_none = 0,
-    DW_VIRTUALITY_virtual = 1,
-    DW_VIRTUALITY_pure_virtual = 2
-  };
-
-/* case sensitivity */
-enum dwarf_id_case
-  {
-    DW_ID_case_sensitive = 0,
-    DW_ID_up_case = 1,
-    DW_ID_down_case = 2,
-    DW_ID_case_insensitive = 3
-  };
-
-/* calling convention */
-enum dwarf_calling_convention
-  {
-    DW_CC_normal = 0x1,
-    DW_CC_program = 0x2,
-    DW_CC_nocall = 0x3
-  };
-
-#define DW_CC_lo_user 0x40
-#define DW_CC_hi_user 0xff
-
-/* inline attribute */
-enum dwarf_inline_attribute
-  {
-    DW_INL_not_inlined = 0,
-    DW_INL_inlined = 1,
-    DW_INL_declared_not_inlined = 2,
-    DW_INL_declared_inlined = 3
-  };
-
-/* discriminant lists */
-enum dwarf_discrim_list
-  {
-    DW_DSC_label = 0,
-    DW_DSC_range = 1
-  };
-
-/* line number opcodes */
-enum dwarf_line_number_ops
-  {
-    DW_LNS_extended_op = 0,
-    DW_LNS_copy = 1,
-    DW_LNS_advance_pc = 2,
-    DW_LNS_advance_line = 3,
-    DW_LNS_set_file = 4,
-    DW_LNS_set_column = 5,
-    DW_LNS_negate_stmt = 6,
-    DW_LNS_set_basic_block = 7,
-    DW_LNS_const_add_pc = 8,
-    DW_LNS_fixed_advance_pc = 9
-  };
-
-/* line number extended opcodes */
-enum dwarf_line_number_x_ops
-  {
-    DW_LNE_end_sequence = 1,
-    DW_LNE_set_address = 2,
-    DW_LNE_define_file = 3
-  };
-
-/* call frame information */
-enum dwarf_call_frame_info
-  {
-    DW_CFA_advance_loc = 0x40,
-    DW_CFA_offset = 0x80,
-    DW_CFA_restore = 0xc0,
-    DW_CFA_nop = 0x00,
-    DW_CFA_set_loc = 0x01,
-    DW_CFA_advance_loc1 = 0x02,
-    DW_CFA_advance_loc2 = 0x03,
-    DW_CFA_advance_loc4 = 0x04,
-    DW_CFA_offset_extended = 0x05,
-    DW_CFA_restore_extended = 0x06,
-    DW_CFA_undefined = 0x07,
-    DW_CFA_same_value = 0x08,
-    DW_CFA_register = 0x09,
-    DW_CFA_remember_state = 0x0a,
-    DW_CFA_restore_state = 0x0b,
-    DW_CFA_def_cfa = 0x0c,
-    DW_CFA_def_cfa_register = 0x0d,
-    DW_CFA_def_cfa_offset = 0x0e,
-    DW_CFA_def_cfa_expression = 0x0f,
-    DW_CFA_expression = 0x10,
-    /* Dwarf 2.1 */
-    DW_CFA_offset_extended_sf = 0x11,
-    DW_CFA_def_cfa_sf = 0x12,
-    DW_CFA_def_cfa_offset_sf = 0x13,
-
-    /* SGI/MIPS specific */
-    DW_CFA_MIPS_advance_loc8 = 0x1d,
-
-    /* GNU extensions */
-    DW_CFA_GNU_window_save = 0x2d,
-    DW_CFA_GNU_args_size = 0x2e,
-    DW_CFA_GNU_negative_offset_extended = 0x2f
-  };
-
-#define DW_CIE_ID	  0xffffffff
-#define DW_CIE_VERSION	  1
-
-#define DW_CFA_extended   0
-#define DW_CFA_low_user   0x1c
-#define DW_CFA_high_user  0x3f
-
-#define DW_CHILDREN_no		     0x00
-#define DW_CHILDREN_yes		     0x01
-
-#define DW_ADDR_none		0
-
-/* Source language names and codes.  */
-
-enum dwarf_source_language
-  {
-    DW_LANG_C89 = 0x0001,
-    DW_LANG_C = 0x0002,
-    DW_LANG_Ada83 = 0x0003,
-    DW_LANG_C_plus_plus = 0x0004,
-    DW_LANG_Cobol74 = 0x0005,
-    DW_LANG_Cobol85 = 0x0006,
-    DW_LANG_Fortran77 = 0x0007,
-    DW_LANG_Fortran90 = 0x0008,
-    DW_LANG_Pascal83 = 0x0009,
-    DW_LANG_Modula2 = 0x000a,
-    DW_LANG_Java = 0x000b,
-    DW_LANG_Mips_Assembler = 0x8001
-  };
-
-
-#define DW_LANG_lo_user 0x8000	/* implementation-defined range start */
-#define DW_LANG_hi_user 0xffff	/* implementation-defined range start */
-
-/* Names and codes for macro information.  */
-
-enum dwarf_macinfo_record_type
-  {
-    DW_MACINFO_define = 1,
-    DW_MACINFO_undef = 2,
-    DW_MACINFO_start_file = 3,
-    DW_MACINFO_end_file = 4,
-    DW_MACINFO_vendor_ext = 255
-  };
-
-#endif /* !ASSEMBLER */
-
-/* @@@ For use with GNU frame unwind information.  */
-
-#define DW_EH_PE_absptr		0x00
-#define DW_EH_PE_omit		0xff
-
-#define DW_EH_PE_uleb128	0x01
-#define DW_EH_PE_udata2		0x02
-#define DW_EH_PE_udata4		0x03
-#define DW_EH_PE_udata8		0x04
-#define DW_EH_PE_sleb128	0x09
-#define DW_EH_PE_sdata2		0x0A
-#define DW_EH_PE_sdata4		0x0B
-#define DW_EH_PE_sdata8		0x0C
-#define DW_EH_PE_signed		0x08
-
-#define DW_EH_PE_pcrel		0x10
-#define DW_EH_PE_textrel	0x20
-#define DW_EH_PE_datarel	0x30
-#define DW_EH_PE_funcrel	0x40
-#define DW_EH_PE_aligned	0x50
-
-#define DW_EH_PE_indirect	0x80
-
-#endif /* dwarf2.h */
diff --git a/sysdeps/generic/elide.h b/sysdeps/generic/elide.h
deleted file mode 100644
index 26697be2f1..0000000000
--- a/sysdeps/generic/elide.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* elide.h: Fallback noop lock elision support.
-   Copyright (C) 2014-2017 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
-   <http://www.gnu.org/licenses/>.  */
-#ifndef ELIDE_H
-#define ELIDE_H 1
-
-#define ELIDE_LOCK(adapt_count, is_lock_free) 0
-#define ELIDE_TRYLOCK(adapt_count, is_lock_free, write) 0
-#define ELIDE_UNLOCK(is_lock_free) 0
-
-#endif
diff --git a/sysdeps/generic/eloop-threshold.h b/sysdeps/generic/eloop-threshold.h
deleted file mode 100644
index da6be07a50..0000000000
--- a/sysdeps/generic/eloop-threshold.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Threshold at which to diagnose ELOOP.  Generic version.
-   Copyright (C) 2012-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _ELOOP_THRESHOLD_H
-#define _ELOOP_THRESHOLD_H      1
-
-#include <limits.h>
-#include <sys/param.h>
-
-/* POSIX specifies SYMLOOP_MAX as the "Maximum number of symbolic
-   links that can be reliably traversed in the resolution of a
-   pathname in the absence of a loop."  This makes it a minimum that
-   we should certainly accept.  But it leaves open the possibility
-   that more might sometimes work--just not "reliably".
-
-   For example, Linux implements a complex policy whereby there is a
-   small limit on the number of direct symlink traversals (a symlink
-   to a symlink to a symlink), but larger limit on the total number of
-   symlink traversals overall.  Hence the SYMLOOP_MAX number should be
-   the small one, but the limit library functions enforce on users
-   should be the larger one.
-
-   So, we use the larger of the reported SYMLOOP_MAX (if any) and our
-   own constant MIN_ELOOP_THRESHOLD, below.  This constant should be
-   large enough that it never rules out a file name and directory tree
-   that the underlying system (i.e. calls to 'open' et al) would
-   resolve successfully.  It should be small enough that actual loops
-   are detected without a huge number of iterations.  */
-
-#ifndef MIN_ELOOP_THRESHOLD
-# define MIN_ELOOP_THRESHOLD    40
-#endif
-
-/* Return the maximum number of symlink traversals to permit
-   before diagnosing ELOOP.  */
-static inline unsigned int __attribute__ ((const))
-__eloop_threshold (void)
-{
-#ifdef SYMLOOP_MAX
-  const int symloop_max = SYMLOOP_MAX;
-#else
-  /* The function is marked 'const' even though we use memory and
-     call a function, because sysconf is required to return the
-     same value in every call and so it must always be safe to
-     call __eloop_threshold exactly once and reuse the value.  */
-  static long int sysconf_symloop_max;
-  if (sysconf_symloop_max == 0)
-    sysconf_symloop_max = __sysconf (_SC_SYMLOOP_MAX);
-  const unsigned int symloop_max = (sysconf_symloop_max <= 0
-                                    ? _POSIX_SYMLOOP_MAX
-                                    : sysconf_symloop_max);
-#endif
-
-  return MAX (symloop_max, MIN_ELOOP_THRESHOLD);
-}
-
-#endif  /* eloop-threshold.h */
diff --git a/sysdeps/generic/entry.h b/sysdeps/generic/entry.h
deleted file mode 100644
index 16d3e3045e..0000000000
--- a/sysdeps/generic/entry.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#ifndef __ASSEMBLY__
-extern void _start (void) attribute_hidden;
-#endif
-
-#define ENTRY_POINT _start
diff --git a/sysdeps/generic/errqueue.h b/sysdeps/generic/errqueue.h
deleted file mode 100644
index dac2bd3863..0000000000
--- a/sysdeps/generic/errqueue.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _BITS_ERRQUEUE_H
-#define _BITS_ERRQUEUE_H  1
-
-/* This platform does not support socket error reporting
-   via MSG_ERRQUEUE.  */
-
-#endif /* bits/errqueue.h */
diff --git a/sysdeps/generic/exit-thread.h b/sysdeps/generic/exit-thread.h
deleted file mode 100644
index a90a6b8346..0000000000
--- a/sysdeps/generic/exit-thread.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Call to terminate the current thread.  Stub version.
-   Copyright (C) 2014-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* This causes the current thread to exit, without affecting other
-   threads in the process if there are any.  If there are no other
-   threads left, then this has the effect of _exit (0).  */
-
-static inline void __attribute__ ((noreturn, always_inline, unused))
-__exit_thread (void)
-{
-  while (1)
-    asm ("write me!");
-}
diff --git a/sysdeps/generic/fd_to_filename.h b/sysdeps/generic/fd_to_filename.h
deleted file mode 100644
index fe15f5d97e..0000000000
--- a/sysdeps/generic/fd_to_filename.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Query filename corresponding to an open FD.  Generic version.
-   Copyright (C) 2001-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* In general there is no generic way to query filename for an open
-   file descriptor.  */
-static inline const char *
-fd_to_filename (int fd)
-{
-  return NULL;
-}
diff --git a/sysdeps/generic/fips-private.h b/sysdeps/generic/fips-private.h
deleted file mode 100644
index dde837eb8f..0000000000
--- a/sysdeps/generic/fips-private.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Dummy implementation of FIPS compliance status test.
-   Copyright (C) 2012-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FIPS_PRIVATE_H
-#define _FIPS_PRIVATE_H
-
-#include <stdbool.h>
-
-/* Return true if compliance with the FIPS security standards is
-   enabled.
-
-   This is only relevant within crypt, to tell whether MD5 and DES
-   algorithms should be rejected.  */
-
-static inline bool
-fips_enabled_p (void)
-{
-  return false;
-}
-
-#endif /* _FIPS_PRIVATE_H */
diff --git a/sysdeps/generic/fix-fp-int-compare-invalid.h b/sysdeps/generic/fix-fp-int-compare-invalid.h
deleted file mode 100644
index 421452d3a8..0000000000
--- a/sysdeps/generic/fix-fp-int-compare-invalid.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Fix for missing "invalid" exceptions from floating-point
-   comparisons.  Generic version.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef FIX_FP_INT_COMPARE_INVALID_H
-#define FIX_FP_INT_COMPARE_INVALID_H	1
-
-/* Define this macro to 1 to work around ordered comparison operators
-   in C failing to raise the "invalid" exception for NaN operands.  */
-#define FIX_COMPARE_INVALID 0
-
-#endif /* fix-fp-int-compare-invalid.h */
diff --git a/sysdeps/generic/fix-fp-int-convert-overflow.h b/sysdeps/generic/fix-fp-int-convert-overflow.h
deleted file mode 100644
index 4b0cd9159f..0000000000
--- a/sysdeps/generic/fix-fp-int-convert-overflow.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Fix for conversion of floating point to integer overflow.  Generic version.
-   Copyright (C) 2015-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef FIX_FP_INT_CONVERT_OVERFLOW_H
-#define FIX_FP_INT_CONVERT_OVERFLOW_H	1
-
-/* Define these macros to 1 to workaround conversions of out-of-range
-   floating-point numbers to integer types failing to raise the
-   "invalid" exception, or raising spurious "inexact" or other
-   exceptions.  */
-#define FIX_FLT_LONG_CONVERT_OVERFLOW 0
-#define FIX_FLT_LLONG_CONVERT_OVERFLOW 0
-#define FIX_DBL_LONG_CONVERT_OVERFLOW 0
-#define FIX_DBL_LLONG_CONVERT_OVERFLOW 0
-#define FIX_LDBL_LONG_CONVERT_OVERFLOW 0
-#define FIX_LDBL_LLONG_CONVERT_OVERFLOW 0
-#define FIX_FLT128_LONG_CONVERT_OVERFLOW 0
-#define FIX_FLT128_LLONG_CONVERT_OVERFLOW 0
-
-#endif /* fix-fp-int-convert-overflow.h */
diff --git a/sysdeps/generic/fix-int-fp-convert-zero.h b/sysdeps/generic/fix-int-fp-convert-zero.h
deleted file mode 100644
index 1318e3ff93..0000000000
--- a/sysdeps/generic/fix-int-fp-convert-zero.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Fix for conversion of integer 0 to floating point.  Generic version.
-   Copyright (C) 2015-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef FIX_INT_FP_CONVERT_ZERO_H
-#define FIX_INT_FP_CONVERT_ZERO_H	1
-
-/* Define this macro to 1 to work around conversions of integer 0 to
-   floating point returning -0 instead of the correct +0 in some
-   rounding modes.  */
-#define FIX_INT_FP_CONVERT_ZERO 0
-
-#endif /* fix-int-fp-convert-zero.h */
diff --git a/sysdeps/generic/fork.h b/sysdeps/generic/fork.h
deleted file mode 100644
index 623cae28df..0000000000
--- a/sysdeps/generic/fork.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Stub version of header for fork handling.  Mainly to handle pthread_atfork
-   and friends.  Outside dependencies:
-
-   UNREGISTER_ATFORK
-     If defined it must expand to a function call which takes one void*
-     parameter which is the DSO handle for the DSO which gets unloaded.
-     The function so called has to remove the atfork handlers registered
-     by this module.  */
diff --git a/sysdeps/generic/fpu_control.h b/sysdeps/generic/fpu_control.h
deleted file mode 100644
index 0ec25c64ab..0000000000
--- a/sysdeps/generic/fpu_control.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* FPU control word definitions.  Stub version.
-   Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _FPU_CONTROL_H
-#define _FPU_CONTROL_H
-
-#define _FPU_RESERVED 0xffffffff    /* These bits are reserved and not changed.  */
-
-/* The fdlibm code requires no interrupts for exceptions.  Don't
-   change the rounding mode, it would break long double I/O!  */
-#define _FPU_DEFAULT  0x00000000 /* Default value.  */
-
-/* Type of the control word.  */
-typedef unsigned int fpu_control_t;
-
-/* Macros for accessing the hardware control word.  */
-#define _FPU_GETCW(cw) (cw) = 0
-#define _FPU_SETCW(cw) (void) (cw)
-
-/* Default control word set at startup.  */
-extern fpu_control_t __fpu_control;
-
-#endif /* _FPU_CONTROL_H */
diff --git a/sysdeps/generic/frame.h b/sysdeps/generic/frame.h
deleted file mode 100644
index 86a0cf4317..0000000000
--- a/sysdeps/generic/frame.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/* Definition of stack frame structure.  Generic version.
-   Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-struct layout
-{
-  void *next;
-  void *return_address;
-};
diff --git a/sysdeps/generic/framestate.c b/sysdeps/generic/framestate.c
deleted file mode 100644
index c19d4b1ee4..0000000000
--- a/sysdeps/generic/framestate.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* __frame_state_for unwinder helper function wrapper.
-   Copyright (C) 2001-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <dlfcn.h>
-#include <stdlib.h>
-#define STATIC static
-#define __frame_state_for fallback_frame_state_for
-#include <unwind-dw2.c>
-#undef __frame_state_for
-#include <gnu/lib-names.h>
-
-typedef struct frame_state * (*framesf)(void *pc, struct frame_state *);
-struct frame_state *__frame_state_for (void *pc,
-				       struct frame_state *frame_state);
-
-struct frame_state *
-__frame_state_for (void *pc, struct frame_state *frame_state)
-{
-  static framesf frame_state_for;
-
-  if (frame_state_for == NULL)
-    {
-      void *handle = __libc_dlopen (LIBGCC_S_SO);
-
-      if (handle == NULL
-	  || (frame_state_for
-	      = (framesf) __libc_dlsym (handle, "__frame_state_for")) == NULL)
-#ifndef __USING_SJLJ_EXCEPTIONS__
-	frame_state_for = fallback_frame_state_for;
-#else
-	frame_state_for = abort;
-#endif
-    }
-
-  return frame_state_for (pc, frame_state);
-}
diff --git a/sysdeps/generic/gcc-compat.h b/sysdeps/generic/gcc-compat.h
deleted file mode 100644
index d19f5d069d..0000000000
--- a/sysdeps/generic/gcc-compat.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Macros for checking required GCC compatibility.  Generic version.
-   Copyright (C) 2014-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* This is the base file.  More-specific sysdeps/.../gcc-compat.h files
-   can define GCC_COMPAT_VERSION and then #include_next this file.  */
-
-#ifndef _GENERIC_GCC_COMPAT_H
-#define _GENERIC_GCC_COMPAT_H 1
-
-/* This is the macro that gets used in #if tests in code: true iff
-   the library we build must be compatible with user code built by
-   GCC version MAJOR.MINOR.  */
-#define GCC_COMPAT(major, minor)        \
-  (GCC_COMPAT_VERSION <= GCC_VERSION (major, minor))
-
-/* This is how we compose an integer from major and minor version
-   numbers, for comparison.  */
-#define GCC_VERSION(major, minor)       \
-  (((major) << 16) + (minor))
-
-#ifndef GCC_COMPAT_VERSION
-/* GCC 2.7.2 was current at the time of the glibc-2.0 release.
-   We assume nothing before that ever mattered.  */
-# define GCC_COMPAT_VERSION     GCC_VERSION (2, 7)
-#endif
-
-#endif
diff --git a/sysdeps/generic/gccframe.h b/sysdeps/generic/gccframe.h
deleted file mode 100644
index f9406b57ec..0000000000
--- a/sysdeps/generic/gccframe.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Definition of object in frame unwind info.  Generic version.
-   Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sys/types.h>
-
-struct dwarf_fde;
-struct fde_vector;
-
-struct object
-{
-  void *pc_begin;
-  void *tbase;
-  void *dbase;
-  union {
-    struct dwarf_fde *single;
-    struct dwarf_fde **array;
-    struct fde_vector *sort;
-  } u;
-
-  union {
-    struct {
-      unsigned long sorted : 1;
-      unsigned long from_array : 1;
-      unsigned long mixed_encoding : 1;
-      unsigned long encoding : 8;
-      /* ??? Wish there was an easy way to detect a 64-bit host here;
-	 we've got 32 bits left to play with... */
-      unsigned long count : 21;
-    } b;
-    size_t i;
-  } s;
-
-  struct object *next;
-};
diff --git a/sysdeps/generic/get-rounding-mode.h b/sysdeps/generic/get-rounding-mode.h
deleted file mode 100644
index a829bd5d10..0000000000
--- a/sysdeps/generic/get-rounding-mode.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Determine floating-point rounding mode within libc.  Generic version.
-   Copyright (C) 2012-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _GET_ROUNDING_MODE_H
-#define _GET_ROUNDING_MODE_H	1
-
-#include <fpu_control.h>
-#include <stdlib.h>
-
-/* Define values for FE_* modes not defined for this architecture.  */
-#ifdef FE_DOWNWARD
-# define ORIG_FE_DOWNWARD FE_DOWNWARD
-#else
-# define ORIG_FE_DOWNWARD 0
-#endif
-#ifdef FE_TONEAREST
-# define ORIG_FE_TONEAREST FE_TONEAREST
-#else
-# define ORIG_FE_TONEAREST 0
-#endif
-#ifdef FE_TOWARDZERO
-# define ORIG_FE_TOWARDZERO FE_TOWARDZERO
-#else
-# define ORIG_FE_TOWARDZERO 0
-#endif
-#ifdef FE_UPWARD
-# define ORIG_FE_UPWARD FE_UPWARD
-#else
-# define ORIG_FE_UPWARD 0
-#endif
-#define FE_CONSTRUCT_DISTINCT_VALUE(X, Y, Z) \
-  ((((X) & 1) | ((Y) & 2) | ((Z) & 4)) ^ 7)
-#ifndef FE_DOWNWARD
-# define FE_DOWNWARD FE_CONSTRUCT_DISTINCT_VALUE (ORIG_FE_TONEAREST,	\
-						  ORIG_FE_TOWARDZERO,	\
-						  ORIG_FE_UPWARD)
-#endif
-#ifndef FE_TONEAREST
-# define FE_TONEAREST FE_CONSTRUCT_DISTINCT_VALUE (FE_DOWNWARD,		\
-						   ORIG_FE_TOWARDZERO,	\
-						   ORIG_FE_UPWARD)
-#endif
-#ifndef FE_TOWARDZERO
-# define FE_TOWARDZERO FE_CONSTRUCT_DISTINCT_VALUE (FE_DOWNWARD,	\
-						    FE_TONEAREST,	\
-						    ORIG_FE_UPWARD)
-#endif
-#ifndef FE_UPWARD
-# define FE_UPWARD FE_CONSTRUCT_DISTINCT_VALUE (FE_DOWNWARD,	\
-						FE_TONEAREST,	\
-						FE_TOWARDZERO)
-#endif
-
-/* Return the floating-point rounding mode.  */
-
-static inline int
-get_rounding_mode (void)
-{
-#if (defined _FPU_RC_DOWN			\
-     || defined _FPU_RC_NEAREST			\
-     || defined _FPU_RC_ZERO			\
-     || defined _FPU_RC_UP)
-  fpu_control_t fc;
-  const fpu_control_t mask = (0
-# ifdef _FPU_RC_DOWN
-			      | _FPU_RC_DOWN
-# endif
-# ifdef _FPU_RC_NEAREST
-			      | _FPU_RC_NEAREST
-# endif
-# ifdef _FPU_RC_ZERO
-			      | _FPU_RC_ZERO
-# endif
-# ifdef _FPU_RC_UP
-			      | _FPU_RC_UP
-# endif
-			      );
-
-  _FPU_GETCW (fc);
-  switch (fc & mask)
-    {
-# ifdef _FPU_RC_DOWN
-    case _FPU_RC_DOWN:
-      return FE_DOWNWARD;
-# endif
-
-# ifdef _FPU_RC_NEAREST
-    case _FPU_RC_NEAREST:
-      return FE_TONEAREST;
-# endif
-
-# ifdef _FPU_RC_ZERO
-    case _FPU_RC_ZERO:
-      return FE_TOWARDZERO;
-# endif
-
-# ifdef _FPU_RC_UP
-    case _FPU_RC_UP:
-      return FE_UPWARD;
-# endif
-
-    default:
-      abort ();
-    }
-#else
-  return FE_TONEAREST;
-#endif
-}
-
-#endif /* get-rounding-mode.h */
diff --git a/sysdeps/generic/gmp-mparam.h b/sysdeps/generic/gmp-mparam.h
deleted file mode 100644
index 13b1695d25..0000000000
--- a/sysdeps/generic/gmp-mparam.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* gmp-mparam.h -- Compiler/machine parameter header file.
-Copyright (C) 1991-2017 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP 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 MP 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 MP Library; see the file COPYING.LIB.  If not, see
-<http://www.gnu.org/licenses/>.  */
-
-#include <bits/wordsize.h>
-
-#define BITS_PER_MP_LIMB	__WORDSIZE
-#define BYTES_PER_MP_LIMB	(__WORDSIZE / 8)
-#define BITS_PER_LONGINT	__WORDSIZE
-#define BITS_PER_INT		32
-#define BITS_PER_SHORTINT	16
-#define BITS_PER_CHAR		8
diff --git a/sysdeps/generic/hp-timing-common.h b/sysdeps/generic/hp-timing-common.h
deleted file mode 100644
index 929faa2a3c..0000000000
--- a/sysdeps/generic/hp-timing-common.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* High precision, low overhead timing functions.  Generic version.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-/* In case a platform supports timers in the hardware the following macros
-   and types must be defined:
-
-   - HP_TIMING_AVAIL: test for availability.
-
-   - HP_TIMING_INLINE: this macro is non-zero if the functionality is not
-     implemented using function calls but instead uses some inlined code
-     which might simply consist of a few assembler instructions.  We have to
-     know this since we might want to use the macros here in places where we
-     cannot make function calls.
-
-   - hp_timing_t: This is the type for variables used to store the time
-     values.  This type must be integral.
-
-   - HP_TIMING_NOW: place timestamp for current time in variable given as
-     parameter.
-*/
-
-/* The target supports hp-timing.  Share the common infrastructure.  */
-
-#include <string.h>
-#include <sys/param.h>
-#include <_itoa.h>
-
-/* Compute the difference between START and END, storing into DIFF.  */
-#define HP_TIMING_DIFF(Diff, Start, End)	((Diff) = (End) - (Start))
-
-/* Accumulate ADD into SUM.  No attempt is made to be thread-safe.  */
-#define HP_TIMING_ACCUM_NT(Sum, Diff)		((Sum) += (Diff))
-
-/* Write a decimal representation of the timing value into the given string.  */
-#define HP_TIMING_PRINT(Dest, Len, Val) 				\
-  do {									\
-    char __buf[20];							\
-    char *__dest = (Dest);						\
-    size_t __len = (Len);						\
-    char *__cp = _itoa ((Val), __buf + sizeof (__buf), 10, 0);		\
-    size_t __cp_len = MIN (__buf + sizeof (__buf) - __cp, __len);	\
-    memcpy (__dest, __cp, __cp_len);					\
-    memcpy (__dest + __cp_len, " cycles",				\
-	    MIN (__len - __cp_len, sizeof (" cycles")));		\
-    __dest[__len - 1] = '\0';						\
-  } while (0)
diff --git a/sysdeps/generic/hp-timing.h b/sysdeps/generic/hp-timing.h
deleted file mode 100644
index 6c6e39f597..0000000000
--- a/sysdeps/generic/hp-timing.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* High precision, low overhead timing functions.  Generic version.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _HP_TIMING_H
-#define _HP_TIMING_H	1
-
-/* There are no generic definitions for the times.  We could write something
-   using the `gettimeofday' system call where available but the overhead of
-   the system call might be too high.  */
-
-/* Provide dummy definitions.  */
-#define HP_TIMING_AVAIL		(0)
-#define HP_SMALL_TIMING_AVAIL	(0)
-#define HP_TIMING_INLINE	(0)
-typedef int hp_timing_t;
-#define HP_TIMING_NOW(var)
-#define HP_TIMING_DIFF(Diff, Start, End)
-#define HP_TIMING_ACCUM_NT(Sum, Diff)
-#define HP_TIMING_PRINT(Buf, Len, Val)
-
-/* Since this implementation is not available we tell the user about it.  */
-#define HP_TIMING_NONAVAIL	1
-
-#endif	/* hp-timing.h */
diff --git a/sysdeps/generic/ifreq.h b/sysdeps/generic/ifreq.h
deleted file mode 100644
index 6ebd7c83f3..0000000000
--- a/sysdeps/generic/ifreq.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Andreas Jaeger <aj@suse.de>.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <net/if.h>
-#include <sys/socket.h>
-#include <sys/ioctl.h>
-
-static inline struct ifreq *
-__if_nextreq (struct ifreq *ifr)
-{
-#ifdef _HAVE_SA_LEN
-  if (ifr->ifr_addr.sa_len > sizeof ifr->ifr_addr)
-    return (struct ifreq *) ((char *) &ifr->ifr_addr + ifr->ifr_addr.sa_len);
-#endif
-  return ifr + 1;
-}
-
-extern void __ifreq (struct ifreq **ifreqs, int *num_ifs, int sockfd);
-
-
-static inline void
-__if_freereq (struct ifreq *ifreqs, int num_ifs)
-{
-  free (ifreqs);
-}
diff --git a/sysdeps/generic/ifunc-sel.h b/sysdeps/generic/ifunc-sel.h
deleted file mode 100644
index 1fff4059cc..0000000000
--- a/sysdeps/generic/ifunc-sel.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Used by the elf ifunc tests.  */
-#ifndef ELF_IFUNC_SEL_H
-#define ELF_IFUNC_SEL_H 1
-
-extern int global;
-
-static inline void *
-inhibit_stack_protector
-ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void))
-{
- switch (global)
-   {
-   case 1:
-     return f1;
-   case -1:
-     return f2;
-   default:
-     return f3;
-   }
-}
-
-static inline void *
-inhibit_stack_protector
-ifunc_one (int (*f1) (void))
-{
-  return f1;
-}
-#endif
diff --git a/sysdeps/generic/intr-msg.h b/sysdeps/generic/intr-msg.h
deleted file mode 100644
index 0186aa3323..0000000000
--- a/sysdeps/generic/intr-msg.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Stubby version of intr-msg.h. */
-
-/* This file must be written in machine-dependent form for each hurd port.
-   and define the following:
-
-   INTR_MSG_TRAP
-   INTR_MSG_BACK_OUT
-   SYSCALL_EXAMINE
-   struct mach_msg_trap_args
-   MSG_EXAMINE
-
-   See sysdeps/mach/hurd/i386/intr-msg.h for an example. */
-
-
-#error Could not find machine-dependent intr-msg.h file.
diff --git a/sysdeps/generic/inttypes.h b/sysdeps/generic/inttypes.h
deleted file mode 100644
index 35784ff8db..0000000000
--- a/sysdeps/generic/inttypes.h
+++ /dev/null
@@ -1,434 +0,0 @@
-/* Copyright (C) 1997-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/*
- *	ISO C99: 7.8 Format conversion of integer types	<inttypes.h>
- */
-
-#ifndef _INTTYPES_H
-#define _INTTYPES_H	1
-
-#include <features.h>
-/* Get the type definitions.  */
-#include <stdint.h>
-
-/* Get a definition for wchar_t.  But we must not define wchar_t itself.  */
-#ifndef ____gwchar_t_defined
-# ifdef __cplusplus
-#  define __gwchar_t wchar_t
-# elif defined __WCHAR_TYPE__
-typedef __WCHAR_TYPE__ __gwchar_t;
-# else
-#  define __need_wchar_t
-#  include <stddef.h>
-typedef wchar_t __gwchar_t;
-# endif
-# define ____gwchar_t_defined	1
-#endif
-
-# if __WORDSIZE == 64
-#  define __PRI64_PREFIX	"l"
-#  define __PRIPTR_PREFIX	"l"
-# else
-#  define __PRI64_PREFIX	"ll"
-#  define __PRIPTR_PREFIX
-# endif
-
-/* Macros for printing format specifiers.  */
-
-/* Decimal notation.  */
-# define PRId8		"d"
-# define PRId16		"d"
-# define PRId32		"d"
-# define PRId64		__PRI64_PREFIX "d"
-
-# define PRIdLEAST8	"d"
-# define PRIdLEAST16	"d"
-# define PRIdLEAST32	"d"
-# define PRIdLEAST64	__PRI64_PREFIX "d"
-
-# define PRIdFAST8	"d"
-# define PRIdFAST16	__PRIPTR_PREFIX "d"
-# define PRIdFAST32	__PRIPTR_PREFIX "d"
-# define PRIdFAST64	__PRI64_PREFIX "d"
-
-
-# define PRIi8		"i"
-# define PRIi16		"i"
-# define PRIi32		"i"
-# define PRIi64		__PRI64_PREFIX "i"
-
-# define PRIiLEAST8	"i"
-# define PRIiLEAST16	"i"
-# define PRIiLEAST32	"i"
-# define PRIiLEAST64	__PRI64_PREFIX "i"
-
-# define PRIiFAST8	"i"
-# define PRIiFAST16	__PRIPTR_PREFIX "i"
-# define PRIiFAST32	__PRIPTR_PREFIX "i"
-# define PRIiFAST64	__PRI64_PREFIX "i"
-
-/* Octal notation.  */
-# define PRIo8		"o"
-# define PRIo16		"o"
-# define PRIo32		"o"
-# define PRIo64		__PRI64_PREFIX "o"
-
-# define PRIoLEAST8	"o"
-# define PRIoLEAST16	"o"
-# define PRIoLEAST32	"o"
-# define PRIoLEAST64	__PRI64_PREFIX "o"
-
-# define PRIoFAST8	"o"
-# define PRIoFAST16	__PRIPTR_PREFIX "o"
-# define PRIoFAST32	__PRIPTR_PREFIX "o"
-# define PRIoFAST64	__PRI64_PREFIX "o"
-
-/* Unsigned integers.  */
-# define PRIu8		"u"
-# define PRIu16		"u"
-# define PRIu32		"u"
-# define PRIu64		__PRI64_PREFIX "u"
-
-# define PRIuLEAST8	"u"
-# define PRIuLEAST16	"u"
-# define PRIuLEAST32	"u"
-# define PRIuLEAST64	__PRI64_PREFIX "u"
-
-# define PRIuFAST8	"u"
-# define PRIuFAST16	__PRIPTR_PREFIX "u"
-# define PRIuFAST32	__PRIPTR_PREFIX "u"
-# define PRIuFAST64	__PRI64_PREFIX "u"
-
-/* lowercase hexadecimal notation.  */
-# define PRIx8		"x"
-# define PRIx16		"x"
-# define PRIx32		"x"
-# define PRIx64		__PRI64_PREFIX "x"
-
-# define PRIxLEAST8	"x"
-# define PRIxLEAST16	"x"
-# define PRIxLEAST32	"x"
-# define PRIxLEAST64	__PRI64_PREFIX "x"
-
-# define PRIxFAST8	"x"
-# define PRIxFAST16	__PRIPTR_PREFIX "x"
-# define PRIxFAST32	__PRIPTR_PREFIX "x"
-# define PRIxFAST64	__PRI64_PREFIX "x"
-
-/* UPPERCASE hexadecimal notation.  */
-# define PRIX8		"X"
-# define PRIX16		"X"
-# define PRIX32		"X"
-# define PRIX64		__PRI64_PREFIX "X"
-
-# define PRIXLEAST8	"X"
-# define PRIXLEAST16	"X"
-# define PRIXLEAST32	"X"
-# define PRIXLEAST64	__PRI64_PREFIX "X"
-
-# define PRIXFAST8	"X"
-# define PRIXFAST16	__PRIPTR_PREFIX "X"
-# define PRIXFAST32	__PRIPTR_PREFIX "X"
-# define PRIXFAST64	__PRI64_PREFIX "X"
-
-
-/* Macros for printing `intmax_t' and `uintmax_t'.  */
-# define PRIdMAX	__PRI64_PREFIX "d"
-# define PRIiMAX	__PRI64_PREFIX "i"
-# define PRIoMAX	__PRI64_PREFIX "o"
-# define PRIuMAX	__PRI64_PREFIX "u"
-# define PRIxMAX	__PRI64_PREFIX "x"
-# define PRIXMAX	__PRI64_PREFIX "X"
-
-
-/* Macros for printing `intptr_t' and `uintptr_t'.  */
-# define PRIdPTR	__PRIPTR_PREFIX "d"
-# define PRIiPTR	__PRIPTR_PREFIX "i"
-# define PRIoPTR	__PRIPTR_PREFIX "o"
-# define PRIuPTR	__PRIPTR_PREFIX "u"
-# define PRIxPTR	__PRIPTR_PREFIX "x"
-# define PRIXPTR	__PRIPTR_PREFIX "X"
-
-
-/* Macros for scanning format specifiers.  */
-
-/* Signed decimal notation.  */
-# define SCNd8		"hhd"
-# define SCNd16		"hd"
-# define SCNd32		"d"
-# define SCNd64		__PRI64_PREFIX "d"
-
-# define SCNdLEAST8	"hhd"
-# define SCNdLEAST16	"hd"
-# define SCNdLEAST32	"d"
-# define SCNdLEAST64	__PRI64_PREFIX "d"
-
-# define SCNdFAST8	"hhd"
-# define SCNdFAST16	__PRIPTR_PREFIX "d"
-# define SCNdFAST32	__PRIPTR_PREFIX "d"
-# define SCNdFAST64	__PRI64_PREFIX "d"
-
-/* Signed decimal notation.  */
-# define SCNi8		"hhi"
-# define SCNi16		"hi"
-# define SCNi32		"i"
-# define SCNi64		__PRI64_PREFIX "i"
-
-# define SCNiLEAST8	"hhi"
-# define SCNiLEAST16	"hi"
-# define SCNiLEAST32	"i"
-# define SCNiLEAST64	__PRI64_PREFIX "i"
-
-# define SCNiFAST8	"hhi"
-# define SCNiFAST16	__PRIPTR_PREFIX "i"
-# define SCNiFAST32	__PRIPTR_PREFIX "i"
-# define SCNiFAST64	__PRI64_PREFIX "i"
-
-/* Unsigned decimal notation.  */
-# define SCNu8		"hhu"
-# define SCNu16		"hu"
-# define SCNu32		"u"
-# define SCNu64		__PRI64_PREFIX "u"
-
-# define SCNuLEAST8	"hhu"
-# define SCNuLEAST16	"hu"
-# define SCNuLEAST32	"u"
-# define SCNuLEAST64	__PRI64_PREFIX "u"
-
-# define SCNuFAST8	"hhu"
-# define SCNuFAST16	__PRIPTR_PREFIX "u"
-# define SCNuFAST32	__PRIPTR_PREFIX "u"
-# define SCNuFAST64	__PRI64_PREFIX "u"
-
-/* Octal notation.  */
-# define SCNo8		"hho"
-# define SCNo16		"ho"
-# define SCNo32		"o"
-# define SCNo64		__PRI64_PREFIX "o"
-
-# define SCNoLEAST8	"hho"
-# define SCNoLEAST16	"ho"
-# define SCNoLEAST32	"o"
-# define SCNoLEAST64	__PRI64_PREFIX "o"
-
-# define SCNoFAST8	"hho"
-# define SCNoFAST16	__PRIPTR_PREFIX "o"
-# define SCNoFAST32	__PRIPTR_PREFIX "o"
-# define SCNoFAST64	__PRI64_PREFIX "o"
-
-/* Hexadecimal notation.  */
-# define SCNx8		"hhx"
-# define SCNx16		"hx"
-# define SCNx32		"x"
-# define SCNx64		__PRI64_PREFIX "x"
-
-# define SCNxLEAST8	"hhx"
-# define SCNxLEAST16	"hx"
-# define SCNxLEAST32	"x"
-# define SCNxLEAST64	__PRI64_PREFIX "x"
-
-# define SCNxFAST8	"hhx"
-# define SCNxFAST16	__PRIPTR_PREFIX "x"
-# define SCNxFAST32	__PRIPTR_PREFIX "x"
-# define SCNxFAST64	__PRI64_PREFIX "x"
-
-
-/* Macros for scanning `intmax_t' and `uintmax_t'.  */
-# define SCNdMAX	__PRI64_PREFIX "d"
-# define SCNiMAX	__PRI64_PREFIX "i"
-# define SCNoMAX	__PRI64_PREFIX "o"
-# define SCNuMAX	__PRI64_PREFIX "u"
-# define SCNxMAX	__PRI64_PREFIX "x"
-
-/* Macros for scaning `intptr_t' and `uintptr_t'.  */
-# define SCNdPTR	__PRIPTR_PREFIX "d"
-# define SCNiPTR	__PRIPTR_PREFIX "i"
-# define SCNoPTR	__PRIPTR_PREFIX "o"
-# define SCNuPTR	__PRIPTR_PREFIX "u"
-# define SCNxPTR	__PRIPTR_PREFIX "x"
-
-
-__BEGIN_DECLS
-
-#if __WORDSIZE == 64
-
-/* We have to define the `uintmax_t' type using `ldiv_t'.  */
-typedef struct
-  {
-    long int quot;		/* Quotient.  */
-    long int rem;		/* Remainder.  */
-  } imaxdiv_t;
-
-#else
-
-/* We have to define the `uintmax_t' type using `lldiv_t'.  */
-typedef struct
-  {
-    __extension__ long long int quot;	/* Quotient.  */
-    __extension__ long long int rem;	/* Remainder.  */
-  } imaxdiv_t;
-
-#endif
-
-
-/* Compute absolute value of N.  */
-extern intmax_t imaxabs (intmax_t __n) __THROW __attribute__ ((__const__));
-
-/* Return the `imaxdiv_t' representation of the value of NUMER over DENOM. */
-extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
-      __THROW __attribute__ ((__const__));
-
-/* Like `strtol' but convert to `intmax_t'.  */
-extern intmax_t strtoimax (const char *__restrict __nptr,
-			   char **__restrict __endptr, int __base) __THROW;
-
-/* Like `strtoul' but convert to `uintmax_t'.  */
-extern uintmax_t strtoumax (const char *__restrict __nptr,
-			    char ** __restrict __endptr, int __base) __THROW;
-
-/* Like `wcstol' but convert to `intmax_t'.  */
-extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr,
-			   __gwchar_t **__restrict __endptr, int __base)
-     __THROW;
-
-/* Like `wcstoul' but convert to `uintmax_t'.  */
-extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr,
-			    __gwchar_t ** __restrict __endptr, int __base)
-     __THROW;
-
-#ifdef __USE_EXTERN_INLINES
-
-# if __WORDSIZE == 64
-
-extern long int __strtol_internal (const char *__restrict __nptr,
-				   char **__restrict __endptr,
-				   int __base, int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `strtol' but convert to `intmax_t'.  */
-__extern_inline intmax_t
-__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
-		  int base))
-{
-  return __strtol_internal (nptr, endptr, base, 0);
-}
-
-extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
-					     char ** __restrict __endptr,
-					     int __base, int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `strtoul' but convert to `uintmax_t'.  */
-__extern_inline uintmax_t
-__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
-		  int base))
-{
-  return __strtoul_internal (nptr, endptr, base, 0);
-}
-
-extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
-				   __gwchar_t **__restrict __endptr,
-				   int __base, int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `wcstol' but convert to `intmax_t'.  */
-__extern_inline intmax_t
-__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
-		  __gwchar_t **__restrict endptr, int base))
-{
-  return __wcstol_internal (nptr, endptr, base, 0);
-}
-
-extern unsigned long int __wcstoul_internal (const __gwchar_t *
-					     __restrict __nptr,
-					     __gwchar_t **
-					     __restrict __endptr,
-					     int __base, int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `wcstoul' but convert to `uintmax_t'.  */
-__extern_inline uintmax_t
-__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
-		  __gwchar_t **__restrict endptr, int base))
-{
-  return __wcstoul_internal (nptr, endptr, base, 0);
-}
-
-# else /* __WORDSIZE == 32 */
-
-__extension__
-extern long long int __strtoll_internal (const char *__restrict __nptr,
-					 char **__restrict __endptr,
-					 int __base, int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `strtol' but convert to `intmax_t'.  */
-__extern_inline intmax_t
-__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
-		  int base))
-{
-  return __strtoll_internal (nptr, endptr, base, 0);
-}
-
-__extension__
-extern unsigned long long int __strtoull_internal (const char *
-						   __restrict __nptr,
-						   char **
-						   __restrict __endptr,
-						   int __base,
-						   int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `strtoul' but convert to `uintmax_t'.  */
-__extern_inline uintmax_t
-__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
-		  int base))
-{
-  return __strtoull_internal (nptr, endptr, base, 0);
-}
-
-__extension__
-extern long long int __wcstoll_internal (const __gwchar_t *__restrict __nptr,
-					 __gwchar_t **__restrict __endptr,
-					 int __base, int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `wcstol' but convert to `intmax_t'.  */
-__extern_inline intmax_t
-__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
-		  __gwchar_t **__restrict endptr, int base))
-{
-  return __wcstoll_internal (nptr, endptr, base, 0);
-}
-
-
-__extension__
-extern unsigned long long int __wcstoull_internal (const __gwchar_t *
-						   __restrict __nptr,
-						   __gwchar_t **
-						   __restrict __endptr,
-						   int __base,
-						   int __group)
-  __THROW __nonnull ((1)) __wur;
-/* Like `wcstoul' but convert to `uintmax_t'.  */
-__extern_inline uintmax_t
-__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
-		  __gwchar_t **__restrict endptr, int base))
-{
-  return __wcstoull_internal (nptr, endptr, base, 0);
-}
-
-# endif	/* __WORDSIZE == 32	*/
-#endif	/* Use extern inlines.  */
-
-__END_DECLS
-
-#endif /* inttypes.h */
diff --git a/sysdeps/generic/ld.abilist b/sysdeps/generic/ld.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/ld.abilist
+++ /dev/null
diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h
deleted file mode 100644
index a61ce5ca15..0000000000
--- a/sysdeps/generic/ldconfig.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Andreas Jaeger <aj@suse.de>, 1999.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _LDCONFIG_H
-#define _LDCONFIG_H
-
-#include <stdint.h>
-
-#define FLAG_ANY			-1
-#define FLAG_TYPE_MASK			0x00ff
-#define FLAG_LIBC4			0x0000
-#define FLAG_ELF			0x0001
-#define FLAG_ELF_LIBC5			0x0002
-#define FLAG_ELF_LIBC6			0x0003
-#define FLAG_REQUIRED_MASK		0xff00
-#define FLAG_SPARC_LIB64		0x0100
-#define FLAG_IA64_LIB64			0x0200
-#define FLAG_X8664_LIB64		0x0300
-#define FLAG_S390_LIB64			0x0400
-#define FLAG_POWERPC_LIB64		0x0500
-#define FLAG_MIPS64_LIBN32		0x0600
-#define FLAG_MIPS64_LIBN64		0x0700
-#define FLAG_X8664_LIBX32		0x0800
-#define FLAG_ARM_LIBHF			0x0900
-#define FLAG_AARCH64_LIB64		0x0a00
-#define FLAG_ARM_LIBSF			0x0b00
-#define FLAG_MIPS_LIB32_NAN2008		0x0c00
-#define FLAG_MIPS64_LIBN32_NAN2008	0x0d00
-#define FLAG_MIPS64_LIBN64_NAN2008	0x0e00
-
-/* Name of auxiliary cache.  */
-#define _PATH_LDCONFIG_AUX_CACHE "/var/cache/ldconfig/aux-cache"
-
-/* Declared in cache.c.  */
-extern void print_cache (const char *cache_name);
-
-extern void init_cache (void);
-
-extern void save_cache (const char *cache_name);
-
-extern void add_to_cache (const char *path, const char *lib, int flags,
-			  unsigned int osversion, uint64_t hwcap);
-
-extern void init_aux_cache (void);
-
-extern void load_aux_cache (const char *aux_cache_name);
-
-extern int search_aux_cache (struct stat64 *stat_buf, int *flags,
-			     unsigned int *osversion, char **soname);
-
-extern void add_to_aux_cache (struct stat64 *stat_buf, int flags,
-			      unsigned int osversion, const char *soname);
-
-extern void save_aux_cache (const char *aux_cache_name);
-
-/* Declared in readlib.c.  */
-extern int process_file (const char *real_file_name, const char *file_name,
-			 const char *lib, int *flag, unsigned int *osversion,
-			 char **soname, int is_link, struct stat64 *stat_buf);
-
-extern char *implicit_soname (const char *lib, int flag);
-
-/* Declared in readelflib.c.  */
-extern int process_elf_file (const char *file_name, const char *lib, int *flag,
-			     unsigned int *osversion, char **soname,
-			     void *file_contents, size_t file_length);
-
-/* Declared in chroot_canon.c.  */
-extern char *chroot_canon (const char *chroot, const char *name);
-
-/* Declared in ldconfig.c.  */
-extern int opt_verbose;
-
-extern int opt_format;
-
-/* Prototypes for a few program-wide used functions.  */
-#include <programs/xmalloc.h>
-
-#endif /* ! _LDCONFIG_H  */
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
deleted file mode 100644
index 695ac24c77..0000000000
--- a/sysdeps/generic/ldsodefs.h
+++ /dev/null
@@ -1,1092 +0,0 @@
-/* Run-time dynamic linker data structures for loaded ELF shared objects.
-   Copyright (C) 1995-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_LDSODEFS_H
-#define	_LDSODEFS_H	1
-
-#include <features.h>
-
-#include <stdbool.h>
-#define __need_size_t
-#define __need_NULL
-#include <stddef.h>
-#include <string.h>
-#include <stdint.h>
-
-#include <elf.h>
-#include <dlfcn.h>
-#include <fpu_control.h>
-#include <sys/mman.h>
-#include <link.h>
-#include <dl-lookupcfg.h>
-#include <dl-sysdep.h>
-#include <libc-lock.h>
-#include <hp-timing.h>
-#include <tls.h>
-
-__BEGIN_DECLS
-
-#define VERSYMIDX(sym)	(DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym))
-#define VALIDX(tag)	(DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGNUM \
-			 + DT_EXTRANUM + DT_VALTAGIDX (tag))
-#define ADDRIDX(tag)	(DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGNUM \
-			 + DT_EXTRANUM + DT_VALNUM + DT_ADDRTAGIDX (tag))
-
-/* We use this macro to refer to ELF types independent of the native wordsize.
-   `ElfW(TYPE)' is used in place of `Elf32_TYPE' or `Elf64_TYPE'.  */
-#define ELFW(type)	_ElfW (ELF, __ELF_NATIVE_CLASS, type)
-
-/* All references to the value of l_info[DT_PLTGOT],
-  l_info[DT_STRTAB], l_info[DT_SYMTAB], l_info[DT_RELA],
-  l_info[DT_REL], l_info[DT_JMPREL], and l_info[VERSYMIDX (DT_VERSYM)]
-  have to be accessed via the D_PTR macro.  The macro is needed since for
-  most architectures the entry is already relocated - but for some not
-  and we need to relocate at access time.  */
-#ifdef DL_RO_DYN_SECTION
-# define D_PTR(map, i) ((map)->i->d_un.d_ptr + (map)->l_addr)
-#else
-# define D_PTR(map, i) (map)->i->d_un.d_ptr
-#endif
-
-/* Result of the lookup functions and how to retrieve the base address.  */
-typedef struct link_map *lookup_t;
-#define LOOKUP_VALUE(map) map
-#define LOOKUP_VALUE_ADDRESS(map) ((map) ? (map)->l_addr : 0)
-
-/* On some architectures a pointer to a function is not just a pointer
-   to the actual code of the function but rather an architecture
-   specific descriptor. */
-#ifndef ELF_FUNCTION_PTR_IS_SPECIAL
-# define DL_SYMBOL_ADDRESS(map, ref) \
- (void *) (LOOKUP_VALUE_ADDRESS (map) + ref->st_value)
-# define DL_LOOKUP_ADDRESS(addr) ((ElfW(Addr)) (addr))
-# define DL_CALL_DT_INIT(map, start, argc, argv, env) \
- ((init_t) (start)) (argc, argv, env)
-# define DL_CALL_DT_FINI(map, start) ((fini_t) (start)) ()
-#endif
-
-/* On some architectures dladdr can't use st_size of all symbols this way.  */
-#define DL_ADDR_SYM_MATCH(L, SYM, MATCHSYM, ADDR) \
-  ((ADDR) >= (L)->l_addr + (SYM)->st_value				\
-   && ((((SYM)->st_shndx == SHN_UNDEF || (SYM)->st_size == 0)		\
-	&& (ADDR) == (L)->l_addr + (SYM)->st_value)			\
-       || (ADDR) < (L)->l_addr + (SYM)->st_value + (SYM)->st_size)	\
-   && ((MATCHSYM) == NULL || (MATCHSYM)->st_value < (SYM)->st_value))
-
-/* According to the ELF gABI no STV_HIDDEN or STV_INTERNAL symbols are
-   expected to be present in dynamic symbol tables as they should have
-   been either removed or converted to STB_LOCAL binding by the static
-   linker.  However some GNU binutils versions produce such symbols in
-   some cases.  To prevent such symbols present in a buggy binary from
-   preempting global symbols we filter them out with this predicate.  */
-static __always_inline bool
-dl_symbol_visibility_binds_local_p (const ElfW(Sym) *sym)
-{
-  return (ELFW(ST_VISIBILITY) (sym->st_other) == STV_HIDDEN
-	  || ELFW(ST_VISIBILITY) (sym->st_other) == STV_INTERNAL);
-}
-
-/* Unmap a loaded object, called by _dl_close (). */
-#ifndef DL_UNMAP_IS_SPECIAL
-# define DL_UNMAP(map)	_dl_unmap_segments (map)
-#endif
-
-/* By default we do not need special support to initialize DSOs loaded
-   by statically linked binaries.  */
-#ifndef DL_STATIC_INIT
-# define DL_STATIC_INIT(map)
-#endif
-
-/* Reloc type classes as returned by elf_machine_type_class().
-   ELF_RTYPE_CLASS_PLT means this reloc should not be satisfied by
-   some PLT symbol, ELF_RTYPE_CLASS_COPY means this reloc should not be
-   satisfied by any symbol in the executable.  Some architectures do
-   not support copy relocations.  In this case we define the macro to
-   zero so that the code for handling them gets automatically optimized
-   out.  ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA means address of protected
-   data defined in the shared library may be external, i.e., due to copy
-   relocation.  */
-#define ELF_RTYPE_CLASS_PLT 1
-#ifndef DL_NO_COPY_RELOCS
-# define ELF_RTYPE_CLASS_COPY 2
-#else
-# define ELF_RTYPE_CLASS_COPY 0
-#endif
-/* If DL_EXTERN_PROTECTED_DATA is defined, address of protected data
-   defined in the shared library may be external, i.e., due to copy
-   relocation.   */
-#ifdef DL_EXTERN_PROTECTED_DATA
-# define ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA 4
-#else
-# define ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA 0
-#endif
-
-/* ELF uses the PF_x macros to specify the segment permissions, mmap
-   uses PROT_xxx.  In most cases the three macros have the values 1, 2,
-   and 3 but not in a matching order.  The following macros allows
-   converting from the PF_x values to PROT_xxx values.  */
-#define PF_TO_PROT \
-  ((PROT_READ << (PF_R * 4))						      \
-   | (PROT_WRITE << (PF_W * 4))						      \
-   | (PROT_EXEC << (PF_X * 4))						      \
-   | ((PROT_READ | PROT_WRITE) << ((PF_R | PF_W) * 4))			      \
-   | ((PROT_READ | PROT_EXEC) << ((PF_R | PF_X) * 4))			      \
-   | ((PROT_WRITE | PROT_EXEC) << (PF_W | PF_X) * 4)			      \
-   | ((PROT_READ | PROT_WRITE | PROT_EXEC) << ((PF_R | PF_W | PF_X) * 4)))
-
-/* The filename itself, or the main program name, if available.  */
-#define DSO_FILENAME(name) ((name)[0] ? (name)				      \
-			    : (rtld_progname ?: "<main program>"))
-
-#define RTLD_PROGNAME (rtld_progname ?: "<program name unknown>")
-
-/* For the version handling we need an array with only names and their
-   hash values.  */
-struct r_found_version
-  {
-    const char *name;
-    ElfW(Word) hash;
-
-    int hidden;
-    const char *filename;
-  };
-
-/* We want to cache information about the searches for shared objects.  */
-
-enum r_dir_status { unknown, nonexisting, existing };
-
-struct r_search_path_elem
-  {
-    /* This link is only used in the `all_dirs' member of `r_search_path'.  */
-    struct r_search_path_elem *next;
-
-    /* Strings saying where the definition came from.  */
-    const char *what;
-    const char *where;
-
-    /* Basename for this search path element.  The string must end with
-       a slash character.  */
-    const char *dirname;
-    size_t dirnamelen;
-
-    enum r_dir_status status[0];
-  };
-
-struct r_strlenpair
-  {
-    const char *str;
-    size_t len;
-  };
-
-
-/* A data structure for a simple single linked list of strings.  */
-struct libname_list
-  {
-    const char *name;		/* Name requested (before search).  */
-    struct libname_list *next;	/* Link to next name for this object.  */
-    int dont_free;		/* Flag whether this element should be freed
-				   if the object is not entirely unloaded.  */
-  };
-
-
-/* Bit masks for the objects which valid callers can come from to
-   functions with restricted interface.  */
-enum allowmask
-  {
-    allow_libc = 1,
-    allow_libdl = 2,
-    allow_libpthread = 4,
-    allow_ldso = 8
-  };
-
-
-struct audit_ifaces
-{
-  void (*activity) (uintptr_t *, unsigned int);
-  char *(*objsearch) (const char *, uintptr_t *, unsigned int);
-  unsigned int (*objopen) (struct link_map *, Lmid_t, uintptr_t *);
-  void (*preinit) (uintptr_t *);
-  union
-  {
-    uintptr_t (*symbind32) (Elf32_Sym *, unsigned int, uintptr_t *,
-			    uintptr_t *, unsigned int *, const char *);
-    uintptr_t (*symbind64) (Elf64_Sym *, unsigned int, uintptr_t *,
-			    uintptr_t *, unsigned int *, const char *);
-  };
-  union
-  {
-#ifdef ARCH_PLTENTER_MEMBERS
-    ARCH_PLTENTER_MEMBERS;
-#endif
-  };
-  union
-  {
-#ifdef ARCH_PLTEXIT_MEMBERS
-    ARCH_PLTEXIT_MEMBERS;
-#endif
-  };
-  unsigned int (*objclose) (uintptr_t *);
-
-  struct audit_ifaces *next;
-};
-
-
-/* Test whether given NAME matches any of the names of the given object.  */
-extern int _dl_name_match_p (const char *__name, const struct link_map *__map)
-     internal_function attribute_hidden;
-
-/* Compute next higher prime number.  */
-extern unsigned long int _dl_higher_prime_number (unsigned long int n)
-     internal_function attribute_hidden;
-
-/* Function used as argument for `_dl_receive_error' function.  The
-   arguments are the error code, error string, and the objname the
-   error occurred in.  */
-typedef void (*receiver_fct) (int, const char *, const char *);
-
-/* Internal functions of the run-time dynamic linker.
-   These can be accessed if you link again the dynamic linker
-   as a shared library, as in `-lld' or `/lib/ld.so' explicitly;
-   but are not normally of interest to user programs.
-
-   The `-ldl' library functions in <dlfcn.h> provide a simple
-   user interface to run-time dynamic linking.  */
-
-
-#ifndef SHARED
-# define EXTERN extern
-# define GL(name) _##name
-#else
-# define EXTERN
-# if IS_IN (rtld)
-#  define GL(name) _rtld_local._##name
-# else
-#  define GL(name) _rtld_global._##name
-# endif
-struct rtld_global
-{
-#endif
-  /* Don't change the order of the following elements.  'dl_loaded'
-     must remain the first element.  Forever.  */
-
-/* Non-shared code has no support for multiple namespaces.  */
-#ifdef SHARED
-# define DL_NNS 16
-#else
-# define DL_NNS 1
-#endif
-  EXTERN struct link_namespaces
-  {
-    /* A pointer to the map for the main map.  */
-    struct link_map *_ns_loaded;
-    /* Number of object in the _dl_loaded list.  */
-    unsigned int _ns_nloaded;
-    /* Direct pointer to the searchlist of the main object.  */
-    struct r_scope_elem *_ns_main_searchlist;
-    /* This is zero at program start to signal that the global scope map is
-       allocated by rtld.  Later it keeps the size of the map.  It might be
-       reset if in _dl_close if the last global object is removed.  */
-    size_t _ns_global_scope_alloc;
-    /* Search table for unique objects.  */
-    struct unique_sym_table
-    {
-      __rtld_lock_define_recursive (, lock)
-      struct unique_sym
-      {
-	uint32_t hashval;
-	const char *name;
-	const ElfW(Sym) *sym;
-	const struct link_map *map;
-      } *entries;
-      size_t size;
-      size_t n_elements;
-      void (*free) (void *);
-    } _ns_unique_sym_table;
-    /* Keep track of changes to each namespace' list.  */
-    struct r_debug _ns_debug;
-  } _dl_ns[DL_NNS];
-  /* One higher than index of last used namespace.  */
-  EXTERN size_t _dl_nns;
-
-  /* During the program run we must not modify the global data of
-     loaded shared object simultanously in two threads.  Therefore we
-     protect `_dl_open' and `_dl_close' in dl-close.c.
-
-     This must be a recursive lock since the initializer function of
-     the loaded object might as well require a call to this function.
-     At this time it is not anymore a problem to modify the tables.  */
-  __rtld_lock_define_recursive (EXTERN, _dl_load_lock)
-  /* This lock is used to keep __dl_iterate_phdr from inspecting the
-     list of loaded objects while an object is added to or removed
-     from that list.  */
-  __rtld_lock_define_recursive (EXTERN, _dl_load_write_lock)
-
-  /* Incremented whenever something may have been added to dl_loaded.  */
-  EXTERN unsigned long long _dl_load_adds;
-
-  /* The object to be initialized first.  */
-  EXTERN struct link_map *_dl_initfirst;
-
-#if HP_SMALL_TIMING_AVAIL
-  /* Start time on CPU clock.  */
-  EXTERN hp_timing_t _dl_cpuclock_offset;
-#endif
-
-  /* Map of shared object to be profiled.  */
-  EXTERN struct link_map *_dl_profile_map;
-
-  /* Counters for the number of relocations performed.  */
-  EXTERN unsigned long int _dl_num_relocations;
-  EXTERN unsigned long int _dl_num_cache_relocations;
-
-  /* List of search directories.  */
-  EXTERN struct r_search_path_elem *_dl_all_dirs;
-
-  /* Structure describing the dynamic linker itself.  We need to
-     reserve memory for the data the audit libraries need.  */
-  EXTERN struct link_map _dl_rtld_map;
-#ifdef SHARED
-  struct auditstate audit_data[DL_NNS];
-#endif
-
-#if defined SHARED && defined _LIBC_REENTRANT \
-    && defined __rtld_lock_default_lock_recursive
-  EXTERN void (*_dl_rtld_lock_recursive) (void *);
-  EXTERN void (*_dl_rtld_unlock_recursive) (void *);
-#endif
-
-  /* If loading a shared object requires that we make the stack executable
-     when it was not, we do it by calling this function.
-     It returns an errno code or zero on success.  */
-  EXTERN int (*_dl_make_stack_executable_hook) (void **) internal_function;
-
-  /* Prevailing state of the stack, PF_X indicating it's executable.  */
-  EXTERN ElfW(Word) _dl_stack_flags;
-
-  /* Flag signalling whether there are gaps in the module ID allocation.  */
-  EXTERN bool _dl_tls_dtv_gaps;
-  /* Highest dtv index currently needed.  */
-  EXTERN size_t _dl_tls_max_dtv_idx;
-  /* Information about the dtv slots.  */
-  EXTERN struct dtv_slotinfo_list
-  {
-    size_t len;
-    struct dtv_slotinfo_list *next;
-    struct dtv_slotinfo
-    {
-      size_t gen;
-      struct link_map *map;
-    } slotinfo[0];
-  } *_dl_tls_dtv_slotinfo_list;
-  /* Number of modules in the static TLS block.  */
-  EXTERN size_t _dl_tls_static_nelem;
-  /* Size of the static TLS block.  */
-  EXTERN size_t _dl_tls_static_size;
-  /* Size actually allocated in the static TLS block.  */
-  EXTERN size_t _dl_tls_static_used;
-  /* Alignment requirement of the static TLS block.  */
-  EXTERN size_t _dl_tls_static_align;
-
-/* Number of additional entries in the slotinfo array of each slotinfo
-   list element.  A large number makes it almost certain take we never
-   have to iterate beyond the first element in the slotinfo list.  */
-#define TLS_SLOTINFO_SURPLUS (62)
-
-/* Number of additional slots in the dtv allocated.  */
-#define DTV_SURPLUS	(14)
-
-  /* Initial dtv of the main thread, not allocated with normal malloc.  */
-  EXTERN void *_dl_initial_dtv;
-  /* Generation counter for the dtv.  */
-  EXTERN size_t _dl_tls_generation;
-
-  EXTERN void (*_dl_init_static_tls) (struct link_map *);
-
-  EXTERN void (*_dl_wait_lookup_done) (void);
-
-  /* Scopes to free after next THREAD_GSCOPE_WAIT ().  */
-  EXTERN struct dl_scope_free_list
-  {
-    size_t count;
-    void *list[50];
-  } *_dl_scope_free_list;
-#ifdef SHARED
-};
-# define __rtld_global_attribute__
-# if IS_IN (rtld)
-#  ifdef HAVE_SDATA_SECTION
-#   define __rtld_local_attribute__ \
-	    __attribute__ ((visibility ("hidden"), section (".sdata")))
-#   undef __rtld_global_attribute__
-#   define __rtld_global_attribute__ __attribute__ ((section (".sdata")))
-#  else
-#   define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
-#  endif
-extern struct rtld_global _rtld_local __rtld_local_attribute__;
-#  undef __rtld_local_attribute__
-# endif
-extern struct rtld_global _rtld_global __rtld_global_attribute__;
-# undef __rtld_global_attribute__
-#endif
-
-#ifndef SHARED
-# define GLRO(name) _##name
-#else
-# if IS_IN (rtld)
-#  define GLRO(name) _rtld_local_ro._##name
-# else
-#  define GLRO(name) _rtld_global_ro._##name
-# endif
-struct rtld_global_ro
-{
-#endif
-
-  /* If nonzero the appropriate debug information is printed.  */
-  EXTERN int _dl_debug_mask;
-#define DL_DEBUG_LIBS	    (1 << 0)
-#define DL_DEBUG_IMPCALLS   (1 << 1)
-#define DL_DEBUG_BINDINGS   (1 << 2)
-#define DL_DEBUG_SYMBOLS    (1 << 3)
-#define DL_DEBUG_VERSIONS   (1 << 4)
-#define DL_DEBUG_RELOC      (1 << 5)
-#define DL_DEBUG_FILES      (1 << 6)
-#define DL_DEBUG_STATISTICS (1 << 7)
-#define DL_DEBUG_UNUSED	    (1 << 8)
-#define DL_DEBUG_SCOPES	    (1 << 9)
-/* These two are used only internally.  */
-#define DL_DEBUG_HELP       (1 << 10)
-#define DL_DEBUG_PRELINK    (1 << 11)
-
-  /* OS version.  */
-  EXTERN unsigned int _dl_osversion;
-  /* Platform name.  */
-  EXTERN const char *_dl_platform;
-  EXTERN size_t _dl_platformlen;
-
-  /* Cached value of `getpagesize ()'.  */
-  EXTERN size_t _dl_pagesize;
-
-  /* Do we read from ld.so.cache?  */
-  EXTERN int _dl_inhibit_cache;
-
-  /* Copy of the content of `_dl_main_searchlist' at startup time.  */
-  EXTERN struct r_scope_elem _dl_initial_searchlist;
-
-  /* CLK_TCK as reported by the kernel.  */
-  EXTERN int _dl_clktck;
-
-  /* If nonzero print warnings messages.  */
-  EXTERN int _dl_verbose;
-
-  /* File descriptor to write debug messages to.  */
-  EXTERN int _dl_debug_fd;
-
-  /* Do we do lazy relocations?  */
-  EXTERN int _dl_lazy;
-
-  /* Nonzero if runtime lookups should not update the .got/.plt.  */
-  EXTERN int _dl_bind_not;
-
-  /* Nonzero if references should be treated as weak during runtime
-     linking.  */
-  EXTERN int _dl_dynamic_weak;
-
-  /* Default floating-point control word.  */
-  EXTERN fpu_control_t _dl_fpu_control;
-
-  /* Expected cache ID.  */
-  EXTERN int _dl_correct_cache_id;
-
-  /* Mask for hardware capabilities that are available.  */
-  EXTERN uint64_t _dl_hwcap;
-
-#if !HAVE_TUNABLES
-  /* Mask for important hardware capabilities we honour. */
-  EXTERN uint64_t _dl_hwcap_mask;
-#endif
-
-#ifdef HAVE_AUX_VECTOR
-  /* Pointer to the auxv list supplied to the program at startup.  */
-  EXTERN ElfW(auxv_t) *_dl_auxv;
-#endif
-
-  /* Get architecture specific definitions.  */
-#define PROCINFO_DECL
-#ifndef PROCINFO_CLASS
-# define PROCINFO_CLASS EXTERN
-#endif
-#include <dl-procinfo.c>
-
-  /* Names of shared object for which the RPATH should be ignored.  */
-  EXTERN const char *_dl_inhibit_rpath;
-
-  /* Location of the binary.  */
-  EXTERN const char *_dl_origin_path;
-
-  /* -1 if the dynamic linker should honor library load bias,
-     0 if not, -2 use the default (honor biases for normal
-     binaries, don't honor for PIEs).  */
-  EXTERN ElfW(Addr) _dl_use_load_bias;
-
-  /* Name of the shared object to be profiled (if any).  */
-  EXTERN const char *_dl_profile;
-  /* Filename of the output file.  */
-  EXTERN const char *_dl_profile_output;
-  /* Name of the object we want to trace the prelinking.  */
-  EXTERN const char *_dl_trace_prelink;
-  /* Map of shared object to be prelink traced.  */
-  EXTERN struct link_map *_dl_trace_prelink_map;
-
-  /* All search directories defined at startup.  */
-  EXTERN struct r_search_path_elem *_dl_init_all_dirs;
-
-#ifdef NEED_DL_SYSINFO
-  /* Syscall handling improvements.  This is very specific to x86.  */
-  EXTERN uintptr_t _dl_sysinfo;
-#endif
-
-#ifdef NEED_DL_SYSINFO_DSO
-  /* The vsyscall page is a virtual DSO pre-mapped by the kernel.
-     This points to its ELF header.  */
-  EXTERN const ElfW(Ehdr) *_dl_sysinfo_dso;
-
-  /* At startup time we set up the normal DSO data structure for it,
-     and this points to it.  */
-  EXTERN struct link_map *_dl_sysinfo_map;
-#endif
-
-  /* Mask for more hardware capabilities that are available on some
-     platforms.  */
-  EXTERN uint64_t _dl_hwcap2;
-
-#ifdef SHARED
-  /* We add a function table to _rtld_global which is then used to
-     call the function instead of going through the PLT.  The result
-     is that we can avoid exporting the functions and we do not jump
-     PLT relocations in libc.so.  */
-  void (*_dl_debug_printf) (const char *, ...)
-       __attribute__ ((__format__ (__printf__, 1, 2)));
-  void (*_dl_mcount) (ElfW(Addr) frompc, ElfW(Addr) selfpc);
-  lookup_t (internal_function *_dl_lookup_symbol_x) (const char *,
-						     struct link_map *,
-						     const ElfW(Sym) **,
-						     struct r_scope_elem *[],
-						     const struct r_found_version *,
-						     int, int,
-						     struct link_map *);
-  int (*_dl_check_caller) (const void *, enum allowmask);
-  void *(*_dl_open) (const char *file, int mode, const void *caller_dlopen,
-		     Lmid_t nsid, int argc, char *argv[], char *env[]);
-  void (*_dl_close) (void *map);
-  void *(*_dl_tls_get_addr_soft) (struct link_map *);
-#ifdef HAVE_DL_DISCOVER_OSVERSION
-  int (*_dl_discover_osversion) (void);
-#endif
-
-  /* List of auditing interfaces.  */
-  struct audit_ifaces *_dl_audit;
-  unsigned int _dl_naudit;
-};
-# define __rtld_global_attribute__
-# if IS_IN (rtld)
-#  define __rtld_local_attribute__ __attribute__ ((visibility ("hidden")))
-extern struct rtld_global_ro _rtld_local_ro
-    attribute_relro __rtld_local_attribute__;
-extern struct rtld_global_ro _rtld_global_ro
-    attribute_relro __rtld_global_attribute__;
-#  undef __rtld_local_attribute__
-# else
-/* We cheat a bit here.  We declare the variable as as const even
-   though it is at startup.  */
-extern const struct rtld_global_ro _rtld_global_ro
-    attribute_relro __rtld_global_attribute__;
-# endif
-# undef __rtld_global_attribute__
-#endif
-#undef EXTERN
-
-#ifndef SHARED
-/* dl-support.c defines these and initializes them early on.  */
-extern const ElfW(Phdr) *_dl_phdr;
-extern size_t _dl_phnum;
-#endif
-
-/* This is the initial value of GL(dl_make_stack_executable_hook).
-   A threads library can change it.  */
-extern int _dl_make_stack_executable (void **stack_endp) internal_function;
-rtld_hidden_proto (_dl_make_stack_executable)
-
-/* Variable pointing to the end of the stack (or close to it).  This value
-   must be constant over the runtime of the application.  Some programs
-   might use the variable which results in copy relocations on some
-   platforms.  But this does not matter, ld.so can always use the local
-   copy.  */
-extern void *__libc_stack_end
-#ifndef LIBC_STACK_END_NOT_RELRO
-     attribute_relro
-#endif
-     ;
-rtld_hidden_proto (__libc_stack_end)
-
-/* Parameters passed to the dynamic linker.  */
-extern int _dl_argc attribute_hidden attribute_relro;
-extern char **_dl_argv
-#ifndef DL_ARGV_NOT_RELRO
-     attribute_relro
-#endif
-     ;
-rtld_hidden_proto (_dl_argv)
-#if IS_IN (rtld)
-extern unsigned int _dl_skip_args attribute_hidden
-# ifndef DL_ARGV_NOT_RELRO
-     attribute_relro
-# endif
-     ;
-extern unsigned int _dl_skip_args_internal attribute_hidden
-# ifndef DL_ARGV_NOT_RELRO
-     attribute_relro
-# endif
-     ;
-#endif
-#define rtld_progname _dl_argv[0]
-
-/* Flag set at startup and cleared when the last initializer has run.  */
-extern int _dl_starting_up;
-weak_extern (_dl_starting_up)
-rtld_hidden_proto (_dl_starting_up)
-
-/* Random data provided by the kernel.  */
-extern void *_dl_random attribute_hidden attribute_relro;
-
-/* OS-dependent function to open the zero-fill device.  */
-extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */
-
-
-/* Write message on the debug file descriptor.  The parameters are
-   interpreted as for a `printf' call.  All the lines start with a
-   tag showing the PID.  */
-extern void _dl_debug_printf (const char *fmt, ...)
-     __attribute__ ((__format__ (__printf__, 1, 2))) attribute_hidden;
-
-/* Write message on the debug file descriptor.  The parameters are
-   interpreted as for a `printf' call.  All the lines buf the first
-   start with a tag showing the PID.  */
-extern void _dl_debug_printf_c (const char *fmt, ...)
-     __attribute__ ((__format__ (__printf__, 1, 2))) attribute_hidden;
-
-
-/* Write a message on the specified descriptor FD.  The parameters are
-   interpreted as for a `printf' call.  */
-#if IS_IN (rtld) || !defined (SHARED)
-extern void _dl_dprintf (int fd, const char *fmt, ...)
-     __attribute__ ((__format__ (__printf__, 2, 3)))
-     attribute_hidden;
-#else
-__attribute__ ((always_inline, __format__ (__printf__, 2, 3)))
-static inline void
-_dl_dprintf (int fd, const char *fmt, ...)
-{
-  /* Use local declaration to avoid includign <stdio.h>.  */
-  extern int __dprintf(int fd, const char *format, ...) attribute_hidden;
-  __dprintf (fd, fmt, __builtin_va_arg_pack ());
-}
-#endif
-
-/* Write a message on the specified descriptor standard output.  The
-   parameters are interpreted as for a `printf' call.  */
-#define _dl_printf(fmt, args...) \
-  _dl_dprintf (STDOUT_FILENO, fmt, ##args)
-
-/* Write a message on the specified descriptor standard error.  The
-   parameters are interpreted as for a `printf' call.  */
-#define _dl_error_printf(fmt, args...) \
-  _dl_dprintf (STDERR_FILENO, fmt, ##args)
-
-/* Write a message on the specified descriptor standard error and exit
-   the program.  The parameters are interpreted as for a `printf' call.  */
-#define _dl_fatal_printf(fmt, args...) \
-  do									      \
-    {									      \
-      _dl_dprintf (STDERR_FILENO, fmt, ##args);				      \
-      _exit (127);							      \
-    }									      \
-  while (1)
-
-
-/* This function is called by all the internal dynamic linker functions
-   when they encounter an error.  ERRCODE is either an `errno' code or
-   zero; OBJECT is the name of the problematical shared object, or null if
-   it is a general problem; ERRSTRING is a string describing the specific
-   problem.  */
-extern void _dl_signal_error (int errcode, const char *object,
-			      const char *occurred, const char *errstring)
-     internal_function __attribute__ ((__noreturn__));
-libc_hidden_proto (_dl_signal_error)
-
-/* Like _dl_signal_error, but may return when called in the context of
-   _dl_receive_error.  This is only used during ld.so bootstrap.  In
-   static and profiled builds, this is equivalent to
-   _dl_signal_error.  */
-#if IS_IN (rtld)
-extern void _dl_signal_cerror (int errcode, const char *object,
-			       const char *occation, const char *errstring)
-     internal_function attribute_hidden;
-#else
-__attribute__ ((always_inline))
-static inline void
-_dl_signal_cerror (int errcode, const char *object,
-			       const char *occation, const char *errstring)
-{
-  _dl_signal_error (errcode, object, occation, errstring);
-}
-#endif
-
-/* Call OPERATE, receiving errors from `dl_signal_cerror'.  Unlike
-   `_dl_catch_error' the operation is resumed after the OPERATE
-   function returns.
-   ARGS is passed as argument to OPERATE.  */
-extern void _dl_receive_error (receiver_fct fct, void (*operate) (void *),
-			       void *args)
-     internal_function attribute_hidden;
-
-/* Call OPERATE, catching errors from `dl_signal_error'.  If there is no
-   error, *ERRSTRING is set to null.  If there is an error, *ERRSTRING is
-   set to a string constructed from the strings passed to _dl_signal_error,
-   and the error code passed is the return value and *OBJNAME is set to
-   the object name which experienced the problems.  ERRSTRING if nonzero
-   points to a malloc'ed string which the caller has to free after use.
-   ARGS is passed as argument to OPERATE.  MALLOCEDP is set to true only
-   if the returned string is allocated using the libc's malloc.  */
-extern int _dl_catch_error (const char **objname, const char **errstring,
-			    bool *mallocedp, void (*operate) (void *),
-			    void *args)
-     internal_function;
-libc_hidden_proto (_dl_catch_error)
-
-/* Open the shared object NAME and map in its segments.
-   LOADER's DT_RPATH is used in searching for NAME.
-   If the object is already opened, returns its existing map.  */
-extern struct link_map *_dl_map_object (struct link_map *loader,
-					const char *name,
-					int type, int trace_mode, int mode,
-					Lmid_t nsid)
-     internal_function attribute_hidden;
-
-/* Call _dl_map_object on the dependencies of MAP, and set up
-   MAP->l_searchlist.  PRELOADS points to a vector of NPRELOADS previously
-   loaded objects that will be inserted into MAP->l_searchlist after MAP
-   but before its dependencies.  */
-extern void _dl_map_object_deps (struct link_map *map,
-				 struct link_map **preloads,
-				 unsigned int npreloads, int trace_mode,
-				 int open_mode)
-     internal_function attribute_hidden;
-
-/* Cache the locations of MAP's hash table.  */
-extern void _dl_setup_hash (struct link_map *map)
-     internal_function attribute_hidden;
-
-
-/* Collect the directories in the search path for LOADER's dependencies.
-   The data structure is defined in <dlfcn.h>.  If COUNTING is true,
-   SI->dls_cnt and SI->dls_size are set; if false, those must be as set
-   by a previous call with COUNTING set, and SI must point to SI->dls_size
-   bytes to be used in filling in the result.  */
-extern void _dl_rtld_di_serinfo (struct link_map *loader,
-				 Dl_serinfo *si, bool counting)
-     internal_function;
-
-
-/* Search loaded objects' symbol tables for a definition of the symbol
-   referred to by UNDEF.  *SYM is the symbol table entry containing the
-   reference; it is replaced with the defining symbol, and the base load
-   address of the defining object is returned.  SYMBOL_SCOPE is a
-   null-terminated list of object scopes to search; each object's
-   l_searchlist (i.e. the segment of the dependency tree starting at that
-   object) is searched in turn.  REFERENCE_NAME should name the object
-   containing the reference; it is used in error messages.
-   TYPE_CLASS describes the type of symbol we are looking for.  */
-enum
-  {
-    /* If necessary add dependency between user and provider object.  */
-    DL_LOOKUP_ADD_DEPENDENCY = 1,
-    /* Return most recent version instead of default version for
-       unversioned lookup.  */
-    DL_LOOKUP_RETURN_NEWEST = 2,
-    /* Set if dl_lookup* called with GSCOPE lock held.  */
-    DL_LOOKUP_GSCOPE_LOCK = 4,
-  };
-
-/* Lookup versioned symbol.  */
-extern lookup_t _dl_lookup_symbol_x (const char *undef,
-				     struct link_map *undef_map,
-				     const ElfW(Sym) **sym,
-				     struct r_scope_elem *symbol_scope[],
-				     const struct r_found_version *version,
-				     int type_class, int flags,
-				     struct link_map *skip_map)
-     internal_function attribute_hidden;
-
-
-/* Look up symbol NAME in MAP's scope and return its run-time address.  */
-extern ElfW(Addr) _dl_symbol_value (struct link_map *map, const char *name)
-     internal_function;
-
-/* Add the new link_map NEW to the end of the namespace list.  */
-extern void _dl_add_to_namespace_list (struct link_map *new, Lmid_t nsid)
-     internal_function attribute_hidden;
-
-/* Allocate a `struct link_map' for a new object being loaded.  */
-extern struct link_map *_dl_new_object (char *realname, const char *libname,
-					int type, struct link_map *loader,
-					int mode, Lmid_t nsid)
-     internal_function attribute_hidden;
-
-/* Relocate the given object (if it hasn't already been).
-   SCOPE is passed to _dl_lookup_symbol in symbol lookups.
-   If RTLD_LAZY is set in RELOC-MODE, don't relocate its PLT.  */
-extern void _dl_relocate_object (struct link_map *map,
-				 struct r_scope_elem *scope[],
-				 int reloc_mode, int consider_profiling)
-     attribute_hidden;
-
-/* Protect PT_GNU_RELRO area.  */
-extern void _dl_protect_relro (struct link_map *map)
-     internal_function attribute_hidden;
-
-/* Call _dl_signal_error with a message about an unhandled reloc type.
-   TYPE is the result of ELFW(R_TYPE) (r_info), i.e. an R_<CPU>_* value.
-   PLT is nonzero if this was a PLT reloc; it just affects the message.  */
-extern void _dl_reloc_bad_type (struct link_map *map,
-				unsigned int type, int plt)
-     internal_function attribute_hidden __attribute__ ((__noreturn__));
-
-/* Resolve conflicts if prelinking.  */
-extern void _dl_resolve_conflicts (struct link_map *l,
-				   ElfW(Rela) *conflict,
-				   ElfW(Rela) *conflictend)
-     attribute_hidden;
-
-/* Check the version dependencies of all objects available through
-   MAP.  If VERBOSE print some more diagnostics.  */
-extern int _dl_check_all_versions (struct link_map *map, int verbose,
-				   int trace_mode)
-     internal_function attribute_hidden;
-
-/* Check the version dependencies for MAP.  If VERBOSE print some more
-   diagnostics.  */
-extern int _dl_check_map_versions (struct link_map *map, int verbose,
-				   int trace_mode)
-     internal_function attribute_hidden;
-
-/* Initialize the object in SCOPE by calling the constructors with
-   ARGC, ARGV, and ENV as the parameters.  */
-extern void _dl_init (struct link_map *main_map, int argc, char **argv,
-		      char **env) internal_function attribute_hidden;
-
-/* Call the finalizer functions of all shared objects whose
-   initializer functions have completed.  */
-extern void _dl_fini (void) internal_function;
-
-/* Sort array MAPS according to dependencies of the contained objects.  */
-extern void _dl_sort_fini (struct link_map **maps, size_t nmaps, char *used,
-			   Lmid_t ns)
-     internal_function attribute_hidden;
-
-/* The dynamic linker calls this function before and having changing
-   any shared object mappings.  The `r_state' member of `struct r_debug'
-   says what change is taking place.  This function's address is
-   the value of the `r_brk' member.  */
-extern void _dl_debug_state (void);
-rtld_hidden_proto (_dl_debug_state)
-
-/* Initialize `struct r_debug' if it has not already been done.  The
-   argument is the run-time load address of the dynamic linker, to be put
-   in the `r_ldbase' member.  Returns the address of the structure.  */
-extern struct r_debug *_dl_debug_initialize (ElfW(Addr) ldbase, Lmid_t ns)
-     internal_function attribute_hidden;
-
-/* Initialize the basic data structure for the search paths.  */
-extern void _dl_init_paths (const char *library_path)
-     internal_function attribute_hidden;
-
-/* Gather the information needed to install the profiling tables and start
-   the timers.  */
-extern void _dl_start_profile (void) internal_function attribute_hidden;
-
-/* The actual functions used to keep book on the calls.  */
-extern void _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc);
-rtld_hidden_proto (_dl_mcount)
-
-/* This function is simply a wrapper around the _dl_mcount function
-   which does not require a FROMPC parameter since this is the
-   calling function.  */
-extern void _dl_mcount_wrapper (void *selfpc);
-
-/* Show the members of the auxiliary array passed up from the kernel.  */
-extern void _dl_show_auxv (void)
-     internal_function attribute_hidden;
-
-/* Return all environment variables starting with `LD_', one after the
-   other.  */
-extern char *_dl_next_ld_env_entry (char ***position)
-     internal_function attribute_hidden;
-
-/* Return an array with the names of the important hardware capabilities.  */
-extern const struct r_strlenpair *_dl_important_hwcaps (const char *platform,
-							size_t paltform_len,
-							size_t *sz,
-							size_t *max_capstrlen)
-     internal_function attribute_hidden;
-
-/* Look up NAME in ld.so.cache and return the file name stored there,
-   or null if none is found.  Caller must free returned string.  */
-extern char *_dl_load_cache_lookup (const char *name)
-     internal_function attribute_hidden;
-
-/* If the system does not support MAP_COPY we cannot leave the file open
-   all the time since this would create problems when the file is replaced.
-   Therefore we provide this function to close the file and open it again
-   once needed.  */
-extern void _dl_unload_cache (void) attribute_hidden;
-
-/* System-dependent function to read a file's whole contents in the
-   most convenient manner available.  *SIZEP gets the size of the
-   file.  On error MAP_FAILED is returned.  */
-extern void *_dl_sysdep_read_whole_file (const char *file, size_t *sizep,
-					 int prot)
-     internal_function attribute_hidden;
-
-/* System-specific function to do initial startup for the dynamic linker.
-   After this, file access calls and getenv must work.  This is responsible
-   for setting __libc_enable_secure if we need to be secure (e.g. setuid),
-   and for setting _dl_argc and _dl_argv, and then calling _dl_main.  */
-extern ElfW(Addr) _dl_sysdep_start (void **start_argptr,
-				    void (*dl_main) (const ElfW(Phdr) *phdr,
-						     ElfW(Word) phnum,
-						     ElfW(Addr) *user_entry,
-						     ElfW(auxv_t) *auxv))
-     attribute_hidden;
-
-extern void _dl_sysdep_start_cleanup (void)
-     internal_function attribute_hidden;
-
-
-/* Determine next available module ID.  */
-extern size_t _dl_next_tls_modid (void) internal_function attribute_hidden;
-
-/* Count the modules with TLS segments.  */
-extern size_t _dl_count_modids (void) internal_function attribute_hidden;
-
-/* Calculate offset of the TLS blocks in the static TLS block.  */
-extern void _dl_determine_tlsoffset (void) internal_function attribute_hidden;
-
-#ifndef SHARED
-/* Set up the TCB for statically linked applications.  This is called
-   early during startup because we always use TLS (for errno and the
-   stack protector, among other things).  */
-void __libc_setup_tls (void);
-
-/* Initialization of libpthread for statically linked applications.
-   If libpthread is not linked in, this is an empty function.  */
-void __pthread_initialize_minimal (void) weak_function;
-#endif
-
-/* Allocate memory for static TLS block (unless MEM is nonzero) and dtv.  */
-extern void *_dl_allocate_tls (void *mem) internal_function;
-rtld_hidden_proto (_dl_allocate_tls)
-
-/* Get size and alignment requirements of the static TLS block.  */
-extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp)
-     internal_function;
-
-extern void _dl_allocate_static_tls (struct link_map *map)
-     internal_function attribute_hidden;
-
-/* These are internal entry points to the two halves of _dl_allocate_tls,
-   only used within rtld.c itself at startup time.  */
-extern void *_dl_allocate_tls_storage (void)
-     internal_function attribute_hidden;
-extern void *_dl_allocate_tls_init (void *) internal_function;
-rtld_hidden_proto (_dl_allocate_tls_init)
-
-/* Deallocate memory allocated with _dl_allocate_tls.  */
-extern void _dl_deallocate_tls (void *tcb, bool dealloc_tcb) internal_function;
-rtld_hidden_proto (_dl_deallocate_tls)
-
-extern void _dl_nothread_init_static_tls (struct link_map *) attribute_hidden;
-
-/* Find origin of the executable.  */
-extern const char *_dl_get_origin (void) attribute_hidden;
-
-/* Count DSTs.  */
-extern size_t _dl_dst_count (const char *name, int is_path) attribute_hidden;
-
-/* Substitute DST values.  */
-extern char *_dl_dst_substitute (struct link_map *l, const char *name,
-				 char *result, int is_path) attribute_hidden;
-
-/* Check validity of the caller.  */
-extern int _dl_check_caller (const void *caller, enum allowmask mask)
-     attribute_hidden;
-
-/* Open the shared object NAME, relocate it, and run its initializer if it
-   hasn't already been run.  MODE is as for `dlopen' (see <dlfcn.h>).  If
-   the object is already opened, returns its existing map.  */
-extern void *_dl_open (const char *name, int mode, const void *caller,
-		       Lmid_t nsid, int argc, char *argv[], char *env[])
-     attribute_hidden;
-
-/* Free or queue for freeing scope OLD.  If other threads might be
-   in the middle of _dl_fixup, _dl_profile_fixup or dl*sym using the
-   old scope, OLD can't be freed until no thread is using it.  */
-extern int _dl_scope_free (void *) attribute_hidden;
-
-/* Add module to slot information data.  */
-extern void _dl_add_to_slotinfo (struct link_map  *l) attribute_hidden;
-
-/* Update slot information data for at least the generation of the
-   module with the given index.  */
-extern struct link_map *_dl_update_slotinfo (unsigned long int req_modid)
-     attribute_hidden;
-
-/* Look up the module's TLS block as for __tls_get_addr,
-   but never touch anything.  Return null if it's not allocated yet.  */
-extern void *_dl_tls_get_addr_soft (struct link_map *l) attribute_hidden;
-
-extern int _dl_addr_inside_object (struct link_map *l, const ElfW(Addr) addr)
-     internal_function attribute_hidden;
-
-/* Show show of an object.  */
-extern void _dl_show_scope (struct link_map *new, int from)
-     attribute_hidden;
-
-extern struct link_map *_dl_find_dso_for_object (const ElfW(Addr) addr)
-     internal_function;
-rtld_hidden_proto (_dl_find_dso_for_object)
-
-/* Initialization which is normally done by the dynamic linker.  */
-extern void _dl_non_dynamic_init (void) internal_function;
-
-/* Used by static binaries to check the auxiliary vector.  */
-extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function;
-
-
-__END_DECLS
-
-#endif /* ldsodefs.h */
diff --git a/sysdeps/generic/libBrokenLocale.abilist b/sysdeps/generic/libBrokenLocale.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libBrokenLocale.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libanl.abilist b/sysdeps/generic/libanl.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libanl.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libc-lock.h b/sysdeps/generic/libc-lock.h
deleted file mode 100644
index ed7bdc0393..0000000000
--- a/sysdeps/generic/libc-lock.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* libc-internal interface for mutex locks.  Stub version.
-   Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _LIBC_LOCK_H
-#define _LIBC_LOCK_H 1
-
-
-/* Define a lock variable NAME with storage class CLASS.  The lock must be
-   initialized with __libc_lock_init before it can be used (or define it
-   with __libc_lock_define_initialized, below).  Use `extern' for CLASS to
-   declare a lock defined in another module.  In public structure
-   definitions you must use a pointer to the lock structure (i.e., NAME
-   begins with a `*'), because its storage size will not be known outside
-   of libc.  */
-#define __libc_lock_define(CLASS,NAME)
-#define __libc_lock_define_recursive(CLASS,NAME)
-#define __rtld_lock_define_recursive(CLASS,NAME)
-#define __libc_rwlock_define(CLASS,NAME)
-
-/* Define an initialized lock variable NAME with storage class CLASS.  */
-#define __libc_lock_define_initialized(CLASS,NAME)
-#define __libc_rwlock_define_initialized(CLASS,NAME)
-
-/* Define an initialized recursive lock variable NAME with storage
-   class CLASS.  */
-#define __libc_lock_define_initialized_recursive(CLASS,NAME)
-#define __rtld_lock_define_initialized_recursive(CLASS,NAME)
-
-/* Initialize the named lock variable, leaving it in a consistent, unlocked
-   state.  */
-#define __libc_lock_init(NAME)
-#define __rtld_lock_initialize(NAME)
-#define __libc_rwlock_init(NAME)
-
-/* Same as last but this time we initialize a recursive mutex.  */
-#define __libc_lock_init_recursive(NAME)
-
-/* Finalize the named lock variable, which must be locked.  It cannot be
-   used again until __libc_lock_init is called again on it.  This must be
-   called on a lock variable before the containing storage is reused.  */
-#define __libc_lock_fini(NAME)
-#define __libc_rwlock_fini(NAME)
-
-/* Finalize recursive named lock.  */
-#define __libc_lock_fini_recursive(NAME)
-
-/* Lock the named lock variable.  */
-#define __libc_lock_lock(NAME)
-#define __libc_rwlock_rdlock(NAME)
-#define __libc_rwlock_wrlock(NAME)
-
-/* Lock the recursive named lock variable.  */
-#define __libc_lock_lock_recursive(NAME)
-#define __rtld_lock_lock_recursive(NAME)
-
-/* Try to lock the named lock variable.  */
-#define __libc_lock_trylock(NAME) 0
-#define __libc_rwlock_tryrdlock(NAME) 0
-#define __libc_rwlock_trywrlock(NAME) 0
-
-/* Try to lock the recursive named lock variable.  */
-#define __libc_lock_trylock_recursive(NAME) 0
-
-/* Unlock the named lock variable.  */
-#define __libc_lock_unlock(NAME)
-#define __libc_rwlock_unlock(NAME)
-
-/* Unlock the recursive named lock variable.  */
-#define __libc_lock_unlock_recursive(NAME)
-#define __rtld_lock_unlock_recursive(NAME)
-
-
-/* Define once control variable.  */
-#define __libc_once_define(CLASS, NAME) CLASS int NAME = 0
-
-/* Call handler iff the first call.  */
-#define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \
-  do {									      \
-    if ((ONCE_CONTROL) == 0) {						      \
-      INIT_FUNCTION ();							      \
-      (ONCE_CONTROL) = 1;						      \
-    }									      \
-  } while (0)
-
-/* Get once control variable.  */
-#define __libc_once_get(ONCE_CONTROL) \
-  ((ONCE_CONTROL) == 1)
-
-/* Start a critical region with a cleanup function */
-#define __libc_cleanup_region_start(DOIT, FCT, ARG)			    \
-{									    \
-  typeof (***(FCT)) *__save_FCT = (DOIT) ? (FCT) : 0;			    \
-  typeof (ARG) __save_ARG = ARG;					    \
-  /* close brace is in __libc_cleanup_region_end below. */
-
-/* End a critical region started with __libc_cleanup_region_start. */
-#define __libc_cleanup_region_end(DOIT)					    \
-  if ((DOIT) && __save_FCT != 0)					    \
-    (*__save_FCT)(__save_ARG);						    \
-}
-
-/* Sometimes we have to exit the block in the middle.  */
-#define __libc_cleanup_end(DOIT)					    \
-  if ((DOIT) && __save_FCT != 0)					    \
-    (*__save_FCT)(__save_ARG);						    \
-
-#define __libc_cleanup_push(fct, arg) __libc_cleanup_region_start (1, fct, arg)
-#define __libc_cleanup_pop(execute) __libc_cleanup_region_end (execute)
-
-/* We need portable names for some of the functions.  */
-#define __libc_mutex_unlock
-
-/* Type for key of thread specific data.  */
-typedef int __libc_key_t;
-
-/* Create key for thread specific data.  */
-#define __libc_key_create(KEY,DEST)	((void) (KEY), (void) (DEST), -1)
-
-/* Set thread-specific data associated with KEY to VAL.  */
-#define __libc_setspecific(KEY,VAL)	((void) (KEY), (void) (VAL))
-
-/* Get thread-specific data associated with KEY.  */
-#define __libc_getspecific(KEY)		((void) (KEY), (void *) 0)
-
-#endif	/* libc-lock.h */
diff --git a/sysdeps/generic/libc-mmap.h b/sysdeps/generic/libc-mmap.h
deleted file mode 100644
index 9b64fb4780..0000000000
--- a/sysdeps/generic/libc-mmap.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Internal logic for dealing with mmap quirks.
-   Copyright (C) 2013-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _LIBC_MMAP_H
-#define _LIBC_MMAP_H 1
-
-/* Using MAP_FIXED with mmap sometimes requires larger alignment.  */
-#include <sys/shm.h>
-#define MAP_FIXED_ALIGNMENT SHMLBA
-
-#endif
diff --git a/sysdeps/generic/libc-tsd.h b/sysdeps/generic/libc-tsd.h
deleted file mode 100644
index cd04e02050..0000000000
--- a/sysdeps/generic/libc-tsd.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* libc-internal interface for thread-specific data.  Stub or TLS version.
-   Copyright (C) 1998-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _GENERIC_LIBC_TSD_H
-#define _GENERIC_LIBC_TSD_H 1
-
-/* This file defines the following macros for accessing a small fixed
-   set of thread-specific `void *' data used only internally by libc.
-
-   __libc_tsd_define(CLASS, TYPE, KEY)	-- Define or declare a datum with TYPE
-					   for KEY.  CLASS can be `static' for
-					   keys used in only one source file,
-					   empty for global definitions, or
-					   `extern' for global declarations.
-   __libc_tsd_address(TYPE, KEY)	-- Return the `TYPE *' pointing to
-					   the current thread's datum for KEY.
-   __libc_tsd_get(TYPE, KEY)		-- Return the `TYPE' datum for KEY.
-   __libc_tsd_set(TYPE, KEY, VALUE)	-- Set the datum for KEY to VALUE.
-
-   The set of available KEY's will usually be provided as an enum,
-   and contains (at least):
-		_LIBC_TSD_KEY_MALLOC
-		_LIBC_TSD_KEY_DL_ERROR
-		_LIBC_TSD_KEY_RPC_VARS
-   All uses must be the literal _LIBC_TSD_* name in the __libc_tsd_* macros.
-   Some implementations may not provide any enum at all and instead
-   using string pasting in the macros.  */
-
-#include <tls.h>
-
-/* When full support for __thread variables is available, this interface is
-   just a trivial wrapper for it.  Without TLS, this is the generic/stub
-   implementation for wholly single-threaded systems.
-
-   We don't define an enum for the possible key values, because the KEYs
-   translate directly into variables by macro magic.  */
-
-#define __libc_tsd_define(CLASS, TYPE, KEY)	\
-  CLASS __thread TYPE __libc_tsd_##KEY attribute_tls_model_ie;
-
-#define __libc_tsd_address(TYPE, KEY)		(&__libc_tsd_##KEY)
-#define __libc_tsd_get(TYPE, KEY)		(__libc_tsd_##KEY)
-#define __libc_tsd_set(TYPE, KEY, VALUE)	(__libc_tsd_##KEY = (VALUE))
-
-#endif	/* libc-tsd.h */
diff --git a/sysdeps/generic/libc.abilist b/sysdeps/generic/libc.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libc.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libcidn.abilist b/sysdeps/generic/libcidn.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libcidn.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libcrypt.abilist b/sysdeps/generic/libcrypt.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libcrypt.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libdl.abilist b/sysdeps/generic/libdl.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libdl.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libm-test-ulps b/sysdeps/generic/libm-test-ulps
deleted file mode 100644
index 7cfa1f8285..0000000000
--- a/sysdeps/generic/libm-test-ulps
+++ /dev/null
@@ -1,5 +0,0 @@
-# File with deltas for math/libm-test
-# This file is the fallback and contains
-# no data
-# You can create a new file with e.g. `test-double -u'
-# followed by `gen-libm-test.pl -u ULPs -n'.
diff --git a/sysdeps/generic/libm-test-ulps-name b/sysdeps/generic/libm-test-ulps-name
deleted file mode 100644
index 8470d61195..0000000000
--- a/sysdeps/generic/libm-test-ulps-name
+++ /dev/null
@@ -1 +0,0 @@
-Generic
diff --git a/sysdeps/generic/libm.abilist b/sysdeps/generic/libm.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libm.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnsl.abilist b/sysdeps/generic/libnsl.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnsl.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_compat.abilist b/sysdeps/generic/libnss_compat.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_compat.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_db.abilist b/sysdeps/generic/libnss_db.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_db.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_dns.abilist b/sysdeps/generic/libnss_dns.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_dns.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_files.abilist b/sysdeps/generic/libnss_files.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_files.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_hesiod.abilist b/sysdeps/generic/libnss_hesiod.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_hesiod.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_nis.abilist b/sysdeps/generic/libnss_nis.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_nis.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libnss_nisplus.abilist b/sysdeps/generic/libnss_nisplus.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libnss_nisplus.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libpthread.abilist b/sysdeps/generic/libpthread.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libpthread.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libresolv.abilist b/sysdeps/generic/libresolv.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libresolv.abilist
+++ /dev/null
diff --git a/sysdeps/generic/librt.abilist b/sysdeps/generic/librt.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/librt.abilist
+++ /dev/null
diff --git a/sysdeps/generic/libutil.abilist b/sysdeps/generic/libutil.abilist
deleted file mode 100644
index e69de29bb2..0000000000
--- a/sysdeps/generic/libutil.abilist
+++ /dev/null
diff --git a/sysdeps/generic/linkmap.h b/sysdeps/generic/linkmap.h
deleted file mode 100644
index 470b4d3e5f..0000000000
--- a/sysdeps/generic/linkmap.h
+++ /dev/null
@@ -1,4 +0,0 @@
-struct link_map_machine
-  {
-    /* empty by default */
-  };
diff --git a/sysdeps/generic/local-setxid.h b/sysdeps/generic/local-setxid.h
deleted file mode 100644
index b70d9ffb32..0000000000
--- a/sysdeps/generic/local-setxid.h
+++ /dev/null
@@ -1,4 +0,0 @@
-/* No special support.  Fall back to the regular functions.  */
-
-#define local_seteuid(id) seteuid (id)
-#define local_setegid(id) setegid (id)
diff --git a/sysdeps/generic/localplt.data b/sysdeps/generic/localplt.data
deleted file mode 100644
index 81c741b038..0000000000
--- a/sysdeps/generic/localplt.data
+++ /dev/null
@@ -1,18 +0,0 @@
-# See scripts/check-localplt.awk for how this file is processed.
-# PLT use is required for the malloc family and for matherr because
-# users can define their own functions and have library internals call them.
-libc.so: calloc
-libc.so: free
-libc.so: malloc
-libc.so: memalign
-libc.so: realloc
-libm.so: matherr
-# The main malloc is interposed into the dynamic linker, for
-# allocations after the initial link (when dlopen is used).
-ld.so: malloc
-ld.so: calloc
-ld.so: realloc
-ld.so: free
-# The TLS-enabled version of these functions is interposed from libc.so.
-ld.so: _dl_signal_error
-ld.so: _dl_catch_error
diff --git a/sysdeps/generic/machine-gmon.h b/sysdeps/generic/machine-gmon.h
deleted file mode 100644
index b100d4d49f..0000000000
--- a/sysdeps/generic/machine-gmon.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Machine-dependent definitions for profiling support.  Generic GCC 2 version.
-   Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* GCC version 2 gives us a perfect magical function to get
-   just the information we need:
-     void *__builtin_return_address (unsigned int N)
-   returns the return address of the frame N frames up.  */
-
-/* Be warned that GCC cannot usefully compile __builtin_return_address(N)
-   for N != 0 on all machines.  In this case, you may have to write
-   your own version of _mcount().  */
-
-#if __GNUC__ < 2
- #error "This file uses __builtin_return_address, a GCC 2 extension."
-#endif
-
-#include <sysdep.h>
-/* The canonical name for the function is `_mcount' in both C and asm,
-   but some old asm code might assume it's `mcount'.  */
-void _mcount (void);
-weak_alias (_mcount, mcount)
-
-static void mcount_internal (u_long frompc, u_long selfpc);
-
-#define _MCOUNT_DECL(frompc, selfpc) \
-static inline void mcount_internal (u_long frompc, u_long selfpc)
-
-#define MCOUNT \
-void _mcount (void)							      \
-{									      \
-  mcount_internal ((u_long) RETURN_ADDRESS (1), (u_long) RETURN_ADDRESS (0)); \
-}
diff --git a/sysdeps/generic/machine-lock.h b/sysdeps/generic/machine-lock.h
deleted file mode 100644
index b4b2f18b3c..0000000000
--- a/sysdeps/generic/machine-lock.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Machine-specific definition for spin locks.  Stub version.
-   Copyright (C) 1994-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MACHINE_LOCK_H
-#define	_MACHINE_LOCK_H
-
-/* The type of a spin lock variable.  */
-
-typedef volatile int __spin_lock_t;
-
-/* Value to initialize `__spin_lock_t' variables to.  */
-
-#define	__SPIN_LOCK_INITIALIZER	0
-
-
-#ifndef _EXTERN_INLINE
-#define _EXTERN_INLINE __extern_inline
-#endif
-
-/* Unlock LOCK.  */
-
-_EXTERN_INLINE void
-__spin_unlock (__spin_lock_t *__lock)
-{
-  *__lock = 0;
-}
-
-/* Try to lock LOCK; return nonzero if we locked it, zero if another has.  */
-
-_EXTERN_INLINE int
-__spin_try_lock (__spin_lock_t *__lock)
-{
-  if (*__lock)
-    return 0;
-  *__lock = 1;
-  return 1;
-}
-
-/* Return nonzero if LOCK is locked.  */
-
-_EXTERN_INLINE int
-__spin_lock_locked (__spin_lock_t *__lock)
-{
-  return *__lock != 0;
-}
-
-
-#endif /* machine-lock.h */
diff --git a/sysdeps/generic/machine-sp.h b/sysdeps/generic/machine-sp.h
deleted file mode 100644
index aaa45fd390..0000000000
--- a/sysdeps/generic/machine-sp.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Machine-specific function to return the stack pointer.  Stub version.
-   Copyright (C) 1994-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MACHINE_SP_H
-#define _MACHINE_SP_H
-
-/* Return the current stack pointer.  */
-
-#ifndef _EXTERN_INLINE
-#define _EXTERN_INLINE __extern_inline
-#endif
-
-_EXTERN_INLINE void *
-__thread_stack_pointer (void)
-{
-  register void *__sp__ ("{STACK-POINTER}");
-  return __sp__;
-}
-
-#endif	/* machine-sp.h */
diff --git a/sysdeps/generic/malloc-machine.h b/sysdeps/generic/malloc-machine.h
deleted file mode 100644
index 21aa9fcdce..0000000000
--- a/sysdeps/generic/malloc-machine.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Basic platform-independent macro definitions for mutexes,
-   thread-specific data and parameters for malloc.
-   Copyright (C) 2003-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _GENERIC_MALLOC_MACHINE_H
-#define _GENERIC_MALLOC_MACHINE_H
-
-#include <atomic.h>
-
-#ifndef atomic_full_barrier
-# define atomic_full_barrier() __asm ("" ::: "memory")
-#endif
-
-#ifndef atomic_read_barrier
-# define atomic_read_barrier() atomic_full_barrier ()
-#endif
-
-#ifndef atomic_write_barrier
-# define atomic_write_barrier() atomic_full_barrier ()
-#endif
-
-#ifndef DEFAULT_TOP_PAD
-# define DEFAULT_TOP_PAD 131072
-#endif
-
-#endif /* !defined(_GENERIC_MALLOC_MACHINE_H) */
diff --git a/sysdeps/generic/malloc-sysdep.h b/sysdeps/generic/malloc-sysdep.h
deleted file mode 100644
index ece389d27e..0000000000
--- a/sysdeps/generic/malloc-sysdep.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* System-specific malloc support functions.  Generic version.
-   Copyright (C) 2012-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdbool.h>
-#include <unistd.h>
-
-/* Force an unmap when the heap shrinks in a secure exec.  This ensures that
-   the old data pages immediately cease to be accessible.  */
-static inline bool
-check_may_shrink_heap (void)
-{
-  return __libc_enable_secure;
-}
diff --git a/sysdeps/generic/math-tests-arch.h b/sysdeps/generic/math-tests-arch.h
deleted file mode 100644
index 88d7aea2f1..0000000000
--- a/sysdeps/generic/math-tests-arch.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Runtime architecture check for math tests.
-   Copyright (C) 2014-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* These macros used for architecture check in math tests runtime.
-   INIT_ARCH_EXT should set up for example some global variable which is
-   checked by CHECK_ARCH_EXT which produces return from individual test to
-   prevent run on hardware not supported by tested function implementation. */
-#define INIT_ARCH_EXT
-#define CHECK_ARCH_EXT
diff --git a/sysdeps/generic/math-tests.h b/sysdeps/generic/math-tests.h
deleted file mode 100644
index a4054eae91..0000000000
--- a/sysdeps/generic/math-tests.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Configuration for math tests.  Generic version.
-   Copyright (C) 2013-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* Indicate whether to run tests involving sNaN values for the float, double,
-   and long double C data types, respectively.  All are run unless
-   overridden.  */
-#ifndef SNAN_TESTS_float
-# define SNAN_TESTS_float	1
-#endif
-#ifndef SNAN_TESTS_double
-# define SNAN_TESTS_double	1
-#endif
-#ifndef SNAN_TESTS_long_double
-# define SNAN_TESTS_long_double	1
-#endif
-
-/* Return nonzero value if to run tests involving sNaN values for X.  */
-#define SNAN_TESTS(x)							\
-  (sizeof (x) == sizeof (float) ? SNAN_TESTS_float			\
-   : sizeof (x) == sizeof (double) ? SNAN_TESTS_double			\
-   : SNAN_TESTS_long_double)
-
-/* Indicate whether to run tests involving type casts of sNaN values.  These
-   are run unless overridden.  */
-#ifndef SNAN_TESTS_TYPE_CAST
-# define SNAN_TESTS_TYPE_CAST	1
-#endif
-
-/* Indicate whether operations on signaling NaNs preserve the payload
-   (if possible; it is not possible with a zero payload if the high
-   bit is set for signaling NaNs) when generating a quiet NaN, and
-   this should be tested.  */
-#ifndef SNAN_TESTS_PRESERVE_PAYLOAD
-# define SNAN_TESTS_PRESERVE_PAYLOAD	1
-#endif
-
-/* Indicate whether to run tests involving a given rounding mode for a
-   given floating-point type, given that fesetround succeeds for that
-   mode.  All are run if fesetround succeeds unless overridden.  */
-#ifndef ROUNDING_TESTS_float
-# define ROUNDING_TESTS_float(MODE)	1
-#endif
-#ifndef ROUNDING_TESTS_double
-# define ROUNDING_TESTS_double(MODE)	1
-#endif
-#ifndef ROUNDING_TESTS_long_double
-# define ROUNDING_TESTS_long_double(MODE)	1
-#endif
-
-#define ROUNDING_TESTS(TYPE, MODE)					\
-  (sizeof (TYPE) == sizeof (float) ? ROUNDING_TESTS_float (MODE)	\
-   : sizeof (TYPE) == sizeof (double) ? ROUNDING_TESTS_double (MODE)	\
-   : ROUNDING_TESTS_long_double (MODE))
-
-/* Indicate whether to run tests of floating-point exceptions for a
-   given floating-point type, given that the exception macros are
-   defined.  All are run unless overridden.  */
-#ifndef EXCEPTION_TESTS_float
-# define EXCEPTION_TESTS_float	1
-#endif
-#ifndef EXCEPTION_TESTS_double
-# define EXCEPTION_TESTS_double	1
-#endif
-#ifndef EXCEPTION_TESTS_long_double
-# define EXCEPTION_TESTS_long_double	1
-#endif
-
-#define EXCEPTION_TESTS(TYPE)					\
-  (sizeof (TYPE) == sizeof (float) ? EXCEPTION_TESTS_float	\
-   : sizeof (TYPE) == sizeof (double) ? EXCEPTION_TESTS_double	\
-   : EXCEPTION_TESTS_long_double)
-
-/* Indicate whether the given exception trap(s) can be enabled
-   in feenableexcept.  If non-zero, the traps are always supported.
-   If zero, traps may or may not be supported depending on the
-   target (this can be determined by checking the return value
-   of feenableexcept).  This enables skipping of tests which use
-   traps.  By default traps are supported unless overridden.  */
-#ifndef EXCEPTION_ENABLE_SUPPORTED
-# define EXCEPTION_ENABLE_SUPPORTED(EXCEPT)			\
-   (EXCEPTION_TESTS_float || EXCEPTION_TESTS_double)
-#endif
-
-/* Indicate whether exception traps, if enabled, occur whenever an
-   exception flag is set explicitly, so it is not possible to set flag
-   bits with traps enabled without causing traps to be taken.  If
-   traps cannot be enabled, the value of this macro does not
-   matter.  */
-#ifndef EXCEPTION_SET_FORCES_TRAP
-# define EXCEPTION_SET_FORCES_TRAP 0
-#endif
diff --git a/sysdeps/generic/math-type-macros-double.h b/sysdeps/generic/math-type-macros-double.h
deleted file mode 100644
index 6116f7f32f..0000000000
--- a/sysdeps/generic/math-type-macros-double.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Helper macros for double variants of type generic functions of libm.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_TYPE_MACROS_DOUBLE
-#define _MATH_TYPE_MACROS_DOUBLE
-
-#define M_LIT(c) c
-#define M_MLIT(c) c
-#define M_PFX DBL
-#define M_SUF(c) c
-#define FLOAT double
-#define CFLOAT _Complex double
-#define M_STRTO_NAN __strtod_nan
-
-/* Machines without a distinct long double type
-   alias long double functions to their double
-   equivalent.  */
-#if defined NO_LONG_DOUBLE && !defined declare_mgen_alias
-# define declare_mgen_alias(from, to)	    \
-   weak_alias (from, to)		    \
-   strong_alias (from, from ## l)	    \
-   weak_alias (from, to ## l)
-#endif
-
-#if defined NO_LONG_DOUBLE && !defined declare_mgen_alias_2
-# define declare_mgen_alias_2(from, to, to2) \
-   declare_mgen_alias (from, to)	     \
-   weak_alias (from, to2)		     \
-   weak_alias (from, to2 ## l)
-#endif
-
-/* Supply the generic macros.  */
-#include <math-type-macros.h>
-
-/* Do not use the type-generic wrapper templates.  */
-#define __USE_WRAPPER_TEMPLATE 0
-
-#endif
diff --git a/sysdeps/generic/math-type-macros-float.h b/sysdeps/generic/math-type-macros-float.h
deleted file mode 100644
index 712e517a81..0000000000
--- a/sysdeps/generic/math-type-macros-float.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Helper macros for float variants of type generic functions of libm.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_TYPE_MACROS_FLOAT
-#define _MATH_TYPE_MACROS_FLOAT
-
-#define M_LIT(c) c ## f
-#define M_PFX FLT
-#define M_SUF(c) c ## f
-#define FLOAT float
-#define CFLOAT _Complex float
-#define M_STRTO_NAN __strtof_nan
-
-/* Standard/GNU macro literals do not exist for the float type.  Use
-   the double macro constants.  */
-#define M_MLIT(c) c
-
-/* Supply the generic macros.  */
-#include <math-type-macros.h>
-
-/* Do not use the type-generic wrapper templates.  */
-#define __USE_WRAPPER_TEMPLATE 0
-
-#endif
diff --git a/sysdeps/generic/math-type-macros-float128.h b/sysdeps/generic/math-type-macros-float128.h
deleted file mode 100644
index 5d734db29f..0000000000
--- a/sysdeps/generic/math-type-macros-float128.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Helper macros for _Float128 variants of type generic functions of libm.
-   Copyright (C) 2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_TYPE_MACROS_FLOAT128
-#define _MATH_TYPE_MACROS_FLOAT128
-
-#include <math.h>
-#include <complex.h>
-
-#define M_LIT(c) __f128 (c)
-#define M_PFX FLT128
-#define M_SUF(c) c ## f128
-#define FLOAT _Float128
-#define M_STRTO_NAN __strtof128_nan
-
-#define CFLOAT __CFLOAT128
-
-#define M_MLIT(c) c ## f128
-
-
-/* Supply the generic macros.  */
-#include <math-type-macros.h>
-
-/* Use the type-generic wrapper templates.  */
-#define __USE_WRAPPER_TEMPLATE 1
-
-#endif
diff --git a/sysdeps/generic/math-type-macros-ldouble.h b/sysdeps/generic/math-type-macros-ldouble.h
deleted file mode 100644
index 4e02e53f70..0000000000
--- a/sysdeps/generic/math-type-macros-ldouble.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Helper macros for long double variants of type generic functions of libm.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_TYPE_MACROS_LDOUBLE
-#define _MATH_TYPE_MACROS_LDOUBLE
-
-#define M_LIT(c) c ## L
-#define M_MLIT(c) c ## l
-#define M_PFX LDBL
-#define M_SUF(c) c ## l
-#define FLOAT long double
-#define CFLOAT _Complex long double
-#define M_STRTO_NAN __strtold_nan
-
-/* Supply the generic macros.  */
-#include <math-type-macros.h>
-
-/* Do not use the type-generic wrapper templates.  */
-#define __USE_WRAPPER_TEMPLATE 0
-
-#endif
diff --git a/sysdeps/generic/math-type-macros.h b/sysdeps/generic/math-type-macros.h
deleted file mode 100644
index b4c2aee6aa..0000000000
--- a/sysdeps/generic/math-type-macros.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Helper macros for type generic function implementations within libm.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MATH_TYPE_MACROS
-#define _MATH_TYPE_MACROS
-
-/* Each type imports a header which is expected to
-   define:
-
-   M_LIT(x)   - Paste the type specific suffix onto the constant x.
-   M_MLIT(x)  - Paste the type specific suffix used by the macro
-		constants in math.h, i.e M_PI or M_PIl.
-   M_PFX      - The prefixed used by float.h macros like FLT_MANT_DIG.
-   M_SUF(x)   - Paste the the type specific suffix used by functions
-		i.e expf expl exp.
-   FLOAT      - Resolves to the C typename of M_TYPE.
-   CFLOAT     - Resolves to the complex typename of M_TYPE.
-   M_STRTO_NAN - Resolves to the internal libc function which
-		converts a string into the appropriate FLOAT nan
-		value.
-
-  Optionally, these headers may inject a non-standard
-  definition for the following:
-
-  declare_mgen_alias(from,to)
-      This exposes the appropriate symbol(s) for a
-      function f of type FLOAT.
-
-  declare_mgen_alias_2(from,to,to2)
-      This exposes the appropriate symbol(s) for a
-      function f of type FLOAT when it is aliased
-      to two symbols.
-
-  M_LIBM_NEED_COMPAT(func)
-      This is utilized in macro context to indicate
-      whether func should declare compat symbols.
-
-  declare_mgen_libm_compat(from,to)
-      This is used in conjunction with the above macro
-      outside of macro context to paste whatever is
-      required to generate a compat symbol. */
-
-#ifndef M_PFX
-# error "M_PFX must be defined."
-#endif
-#ifndef M_LIT
-# error "M_LIT must be defined."
-#endif
-#ifndef M_MLIT
-# error "M_MLIT must be defined."
-#endif
-#ifndef M_SUF
-# error "M_SUF must be defined."
-#endif
-#ifndef FLOAT
-# error "FLOAT must be defined."
-#endif
-#ifndef CFLOAT
-# error "CFLOAT must be defined."
-#endif
-
-#define __M_CONCAT(a,b) a ## b
-#define __M_CONCATX(a,b) __M_CONCAT(a,b)
-
-#define M_NAN M_SUF (__builtin_nan) ("")
-#define M_MIN_EXP __M_CONCATX (M_PFX, _MIN_EXP)
-#define M_MAX_EXP __M_CONCATX (M_PFX, _MAX_EXP)
-#define M_MIN __M_CONCATX (M_PFX, _MIN)
-#define M_MAX __M_CONCATX (M_PFX, _MAX)
-#define M_MANT_DIG __M_CONCATX (M_PFX, _MANT_DIG)
-#define M_HUGE_VAL (M_SUF (__builtin_huge_val) ())
-
-/* Helper macros for commonly used functions.  */
-#define M_COPYSIGN M_SUF (__copysign)
-#define M_FABS M_SUF (fabs)
-#define M_SINCOS M_SUF (__sincos)
-#define M_SCALBN M_SUF (__scalbn)
-#define M_LOG1P M_SUF (__log1p)
-
-#define M_ATAN2 M_SUF (__ieee754_atan2)
-#define M_COSH M_SUF (__ieee754_cosh)
-#define M_EXP M_SUF (__ieee754_exp)
-#define M_HYPOT M_SUF (__ieee754_hypot)
-#define M_LOG M_SUF (__ieee754_log)
-#define M_SINH M_SUF (__ieee754_sinh)
-#define M_SQRT M_SUF (__ieee754_sqrt)
-
-/* Needed to evaluate M_MANT_DIG below.  */
-#include <float.h>
-
-/* Use a special epsilon value for IBM long double
-   to avoid spurious overflows/underflows.  */
-#if M_MANT_DIG != 106
-# define M_EPSILON __M_CONCATX (M_PFX, _EPSILON)
-#else
-# define M_EPSILON M_LIT (0x1p-106)
-#endif
-
-/* Enable overloading of function name to assist reuse.  */
-#ifndef M_DECL_FUNC
-# define M_DECL_FUNC(f) M_SUF (f)
-#endif
-
-/* If the type does not declare special aliasing, use the default.  */
-#ifndef declare_mgen_alias
-# define declare_mgen_alias(from, to) weak_alias (M_SUF (from), M_SUF (to))
-#endif
-
-/* Likewise, if two aliases are derived from the same symbol.  */
-#ifndef declare_mgen_alias_2
-# define declare_mgen_alias_2(from, to, to2)  \
- declare_mgen_alias (from, to)		      \
- declare_mgen_alias (from, to2)
-#endif
-
-/* Do not generate anything for compat symbols by default.  */
-#ifndef M_LIBM_NEED_COMPAT
-# define M_LIBM_NEED_COMPAT(func) 0
-# define declare_mgen_libm_compat(from, to)
-#endif
-
-#endif /* _MATH_TYPE_MACROS */
diff --git a/sysdeps/generic/math_ldbl.h b/sysdeps/generic/math_ldbl.h
deleted file mode 100644
index 4e7ee7912e..0000000000
--- a/sysdeps/generic/math_ldbl.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _MATH_LDBL_H_
-#define _MATH_LDBL_H_ 1
-
-/* Any machine with a 'long double' distinct from 'double' must
-   override this header.  */
-
-#endif
diff --git a/sysdeps/generic/math_ldbl_opt.h b/sysdeps/generic/math_ldbl_opt.h
deleted file mode 100644
index 8a5d8ba107..0000000000
--- a/sysdeps/generic/math_ldbl_opt.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -mlong-double-64 compatibility mode macros.  Stub version.
-
-   These macros are used by some math/ and sysdeps/ieee754/ code.
-   These are the generic definitions for when no funny business is going on.
-   sysdeps/ieee754/ldbl-opt/math_ldbl_opt.h defines them differently
-   for platforms where compatibility symbols are required for a previous
-   ABI that defined long double functions as aliases for the double code.  */
-
-#define LONG_DOUBLE_COMPAT(lib, introduced) 0
-#define long_double_symbol(lib, local, symbol)
-#define ldbl_hidden_def(local, name) libc_hidden_def (name)
-#define ldbl_strong_alias(name, aliasname) strong_alias (name, aliasname)
-#define ldbl_weak_alias(name, aliasname) weak_alias (name, aliasname)
-#define __ldbl_is_dbl 0
diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h
deleted file mode 100644
index 6ea5e25e5a..0000000000
--- a/sysdeps/generic/math_private.h
+++ /dev/null
@@ -1,658 +0,0 @@
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/*
- * from: @(#)fdlibm.h 5.1 93/09/24
- */
-
-#ifndef _MATH_PRIVATE_H_
-#define _MATH_PRIVATE_H_
-
-#include <endian.h>
-#include <stdint.h>
-#include <sys/types.h>
-#include <fenv.h>
-#include <float.h>
-#include <get-rounding-mode.h>
-
-/* Gather machine dependent _Floatn support.  */
-#include <bits/floatn.h>
-
-/* The original fdlibm code used statements like:
-	n0 = ((*(int*)&one)>>29)^1;		* index of high word *
-	ix0 = *(n0+(int*)&x);			* high word of x *
-	ix1 = *((1-n0)+(int*)&x);		* low word of x *
-   to dig two 32 bit words out of the 64 bit IEEE floating point
-   value.  That is non-ANSI, and, moreover, the gcc instruction
-   scheduler gets it wrong.  We instead use the following macros.
-   Unlike the original code, we determine the endianness at compile
-   time, not at run time; I don't see much benefit to selecting
-   endianness at run time.  */
-
-/* A union which permits us to convert between a double and two 32 bit
-   ints.  */
-
-#if __FLOAT_WORD_ORDER == __BIG_ENDIAN
-
-typedef union
-{
-  double value;
-  struct
-  {
-    u_int32_t msw;
-    u_int32_t lsw;
-  } parts;
-  uint64_t word;
-} ieee_double_shape_type;
-
-#endif
-
-#if __FLOAT_WORD_ORDER == __LITTLE_ENDIAN
-
-typedef union
-{
-  double value;
-  struct
-  {
-    u_int32_t lsw;
-    u_int32_t msw;
-  } parts;
-  uint64_t word;
-} ieee_double_shape_type;
-
-#endif
-
-/* Get two 32 bit ints from a double.  */
-
-#define EXTRACT_WORDS(ix0,ix1,d)				\
-do {								\
-  ieee_double_shape_type ew_u;					\
-  ew_u.value = (d);						\
-  (ix0) = ew_u.parts.msw;					\
-  (ix1) = ew_u.parts.lsw;					\
-} while (0)
-
-/* Get the more significant 32 bit int from a double.  */
-
-#ifndef GET_HIGH_WORD
-# define GET_HIGH_WORD(i,d)					\
-do {								\
-  ieee_double_shape_type gh_u;					\
-  gh_u.value = (d);						\
-  (i) = gh_u.parts.msw;						\
-} while (0)
-#endif
-
-/* Get the less significant 32 bit int from a double.  */
-
-#ifndef GET_LOW_WORD
-# define GET_LOW_WORD(i,d)					\
-do {								\
-  ieee_double_shape_type gl_u;					\
-  gl_u.value = (d);						\
-  (i) = gl_u.parts.lsw;						\
-} while (0)
-#endif
-
-/* Get all in one, efficient on 64-bit machines.  */
-#ifndef EXTRACT_WORDS64
-# define EXTRACT_WORDS64(i,d)					\
-do {								\
-  ieee_double_shape_type gh_u;					\
-  gh_u.value = (d);						\
-  (i) = gh_u.word;						\
-} while (0)
-#endif
-
-/* Set a double from two 32 bit ints.  */
-#ifndef INSERT_WORDS
-# define INSERT_WORDS(d,ix0,ix1)				\
-do {								\
-  ieee_double_shape_type iw_u;					\
-  iw_u.parts.msw = (ix0);					\
-  iw_u.parts.lsw = (ix1);					\
-  (d) = iw_u.value;						\
-} while (0)
-#endif
-
-/* Get all in one, efficient on 64-bit machines.  */
-#ifndef INSERT_WORDS64
-# define INSERT_WORDS64(d,i)					\
-do {								\
-  ieee_double_shape_type iw_u;					\
-  iw_u.word = (i);						\
-  (d) = iw_u.value;						\
-} while (0)
-#endif
-
-/* Set the more significant 32 bits of a double from an int.  */
-#ifndef SET_HIGH_WORD
-#define SET_HIGH_WORD(d,v)					\
-do {								\
-  ieee_double_shape_type sh_u;					\
-  sh_u.value = (d);						\
-  sh_u.parts.msw = (v);						\
-  (d) = sh_u.value;						\
-} while (0)
-#endif
-
-/* Set the less significant 32 bits of a double from an int.  */
-#ifndef SET_LOW_WORD
-# define SET_LOW_WORD(d,v)					\
-do {								\
-  ieee_double_shape_type sl_u;					\
-  sl_u.value = (d);						\
-  sl_u.parts.lsw = (v);						\
-  (d) = sl_u.value;						\
-} while (0)
-#endif
-
-/* A union which permits us to convert between a float and a 32 bit
-   int.  */
-
-typedef union
-{
-  float value;
-  u_int32_t word;
-} ieee_float_shape_type;
-
-/* Get a 32 bit int from a float.  */
-#ifndef GET_FLOAT_WORD
-# define GET_FLOAT_WORD(i,d)					\
-do {								\
-  ieee_float_shape_type gf_u;					\
-  gf_u.value = (d);						\
-  (i) = gf_u.word;						\
-} while (0)
-#endif
-
-/* Set a float from a 32 bit int.  */
-#ifndef SET_FLOAT_WORD
-# define SET_FLOAT_WORD(d,i)					\
-do {								\
-  ieee_float_shape_type sf_u;					\
-  sf_u.word = (i);						\
-  (d) = sf_u.value;						\
-} while (0)
-#endif
-
-/* We need to guarantee an expansion of name when building
-   ldbl-128 files as another type (e.g _Float128).  */
-#define mathx_hidden_def(name) hidden_def(name)
-
-/* Get long double macros from a separate header.  */
-#include <math_ldbl.h>
-
-/* Include function declarations for each floating-point.  */
-#define _Mdouble_ double
-#define _MSUF_
-#include <math_private_calls.h>
-#undef _MSUF_
-#undef _Mdouble_
-
-#define _Mdouble_ float
-#define _MSUF_ f
-#define __MATH_DECLARING_FLOAT
-#include <math_private_calls.h>
-#undef __MATH_DECLARING_FLOAT
-#undef _MSUF_
-#undef _Mdouble_
-
-#define _Mdouble_ long double
-#define _MSUF_ l
-#define __MATH_DECLARING_LONG_DOUBLE
-#include <math_private_calls.h>
-#undef __MATH_DECLARING_LONG_DOUBLE
-#undef _MSUF_
-#undef _Mdouble_
-
-#if __HAVE_DISTINCT_FLOAT128
-# define _Mdouble_ _Float128
-# define _MSUF_ f128
-# define __MATH_DECLARING_FLOATN
-# include <math_private_calls.h>
-# undef __MATH_DECLARING_FLOATN
-# undef _MSUF_
-# undef _Mdouble_
-#endif
-
-#if __HAVE_DISTINCT_FLOAT128
-
-/* __builtin_isinf_sign is broken in GCC < 7 for float128.  */
-# if ! __GNUC_PREREQ (7, 0)
-#  include <ieee754_float128.h>
-extern inline int
-__isinff128 (_Float128 x)
-{
-  int64_t hx, lx;
-  GET_FLOAT128_WORDS64 (hx, lx, x);
-  lx |= (hx & 0x7fffffffffffffffLL) ^ 0x7fff000000000000LL;
-  lx |= -lx;
-  return ~(lx >> 63) & (hx >> 62);
-}
-# endif
-
-extern inline _Float128
-fabsf128 (_Float128 x)
-{
-  return __builtin_fabsf128 (x);
-}
-#endif
-
-
-
-/* fdlibm kernel function */
-extern double __kernel_standard (double,double,int);
-extern float __kernel_standard_f (float,float,int);
-extern long double __kernel_standard_l (long double,long double,int);
-
-/* Prototypes for functions of the IBM Accurate Mathematical Library.  */
-extern double __exp1 (double __x, double __xx, double __error);
-extern double __sin (double __x);
-extern double __cos (double __x);
-extern int __branred (double __x, double *__a, double *__aa);
-extern void __doasin (double __x, double __dx, double __v[]);
-extern void __dubsin (double __x, double __dx, double __v[]);
-extern void __dubcos (double __x, double __dx, double __v[]);
-extern double __halfulp (double __x, double __y);
-extern double __sin32 (double __x, double __res, double __res1);
-extern double __cos32 (double __x, double __res, double __res1);
-extern double __mpsin (double __x, double __dx, bool __range_reduce);
-extern double __mpcos (double __x, double __dx, bool __range_reduce);
-extern double __slowexp (double __x);
-extern double __slowpow (double __x, double __y, double __z);
-extern void __docos (double __x, double __dx, double __v[]);
-
-#ifndef math_opt_barrier
-# define math_opt_barrier(x) \
-({ __typeof (x) __x = (x); __asm ("" : "+m" (__x)); __x; })
-# define math_force_eval(x) \
-({ __typeof (x) __x = (x); __asm __volatile__ ("" : : "m" (__x)); })
-#endif
-
-/* math_narrow_eval reduces its floating-point argument to the range
-   and precision of its semantic type.  (The original evaluation may
-   still occur with excess range and precision, so the result may be
-   affected by double rounding.)  */
-#if FLT_EVAL_METHOD == 0
-# define math_narrow_eval(x) (x)
-#else
-# if FLT_EVAL_METHOD == 1
-#  define excess_precision(type) __builtin_types_compatible_p (type, float)
-# else
-#  define excess_precision(type) (__builtin_types_compatible_p (type, float) \
-				  || __builtin_types_compatible_p (type, \
-								   double))
-# endif
-# define math_narrow_eval(x)					\
-  ({								\
-    __typeof (x) math_narrow_eval_tmp = (x);			\
-    if (excess_precision (__typeof (math_narrow_eval_tmp)))	\
-      __asm__ ("" : "+m" (math_narrow_eval_tmp));		\
-    math_narrow_eval_tmp;					\
-   })
-#endif
-
-#if __HAVE_DISTINCT_FLOAT128
-# define __EXPR_FLT128(x, yes, no)				\
-  __builtin_choose_expr (__builtin_types_compatible_p		\
-			 (__typeof (x), long double), no, yes)
-#else
-# define __EXPR_FLT128(x, yes, no) no
-#endif
-
-
-#define fabs_tg(x) __MATH_TG ((x), (__typeof (x)) __builtin_fabs, (x))
-
-#define min_of_type(type) __builtin_choose_expr		\
-  (__builtin_types_compatible_p (type, float),		\
-   FLT_MIN,						\
-   __builtin_choose_expr				\
-   (__builtin_types_compatible_p (type, double),	\
-    DBL_MIN,						\
-    __EXPR_FLT128 (x, FLT128_MIN, LDBL_MIN)))
-
-/* If X (which is not a NaN) is subnormal, force an underflow
-   exception.  */
-#define math_check_force_underflow(x)				\
-  do								\
-    {								\
-      __typeof (x) force_underflow_tmp = (x);			\
-      if (fabs_tg (force_underflow_tmp)				\
-	  < min_of_type (__typeof (force_underflow_tmp)))	\
-	{							\
-	  __typeof (force_underflow_tmp) force_underflow_tmp2	\
-	    = force_underflow_tmp * force_underflow_tmp;	\
-	  math_force_eval (force_underflow_tmp2);		\
-	}							\
-    }								\
-  while (0)
-/* Likewise, but X is also known to be nonnegative.  */
-#define math_check_force_underflow_nonneg(x)			\
-  do								\
-    {								\
-      __typeof (x) force_underflow_tmp = (x);			\
-      if (force_underflow_tmp					\
-	  < min_of_type (__typeof (force_underflow_tmp)))	\
-	{							\
-	  __typeof (force_underflow_tmp) force_underflow_tmp2	\
-	    = force_underflow_tmp * force_underflow_tmp;	\
-	  math_force_eval (force_underflow_tmp2);		\
-	}							\
-    }								\
-  while (0)
-/* Likewise, for both real and imaginary parts of a complex
-   result.  */
-#define math_check_force_underflow_complex(x)				\
-  do									\
-    {									\
-      __typeof (x) force_underflow_complex_tmp = (x);			\
-      math_check_force_underflow (__real__ force_underflow_complex_tmp); \
-      math_check_force_underflow (__imag__ force_underflow_complex_tmp); \
-    }									\
-  while (0)
-
-/* The standards only specify one variant of the fenv.h interfaces.
-   But at least for some architectures we can be more efficient if we
-   know what operations are going to be performed.  Therefore we
-   define additional interfaces.  By default they refer to the normal
-   interfaces.  */
-
-static __always_inline void
-default_libc_feholdexcept (fenv_t *e)
-{
-  (void) __feholdexcept (e);
-}
-
-#ifndef libc_feholdexcept
-# define libc_feholdexcept  default_libc_feholdexcept
-#endif
-#ifndef libc_feholdexceptf
-# define libc_feholdexceptf default_libc_feholdexcept
-#endif
-#ifndef libc_feholdexceptl
-# define libc_feholdexceptl default_libc_feholdexcept
-#endif
-
-static __always_inline void
-default_libc_fesetround (int r)
-{
-  (void) __fesetround (r);
-}
-
-#ifndef libc_fesetround
-# define libc_fesetround  default_libc_fesetround
-#endif
-#ifndef libc_fesetroundf
-# define libc_fesetroundf default_libc_fesetround
-#endif
-#ifndef libc_fesetroundl
-# define libc_fesetroundl default_libc_fesetround
-#endif
-
-static __always_inline void
-default_libc_feholdexcept_setround (fenv_t *e, int r)
-{
-  __feholdexcept (e);
-  __fesetround (r);
-}
-
-#ifndef libc_feholdexcept_setround
-# define libc_feholdexcept_setround  default_libc_feholdexcept_setround
-#endif
-#ifndef libc_feholdexcept_setroundf
-# define libc_feholdexcept_setroundf default_libc_feholdexcept_setround
-#endif
-#ifndef libc_feholdexcept_setroundl
-# define libc_feholdexcept_setroundl default_libc_feholdexcept_setround
-#endif
-
-#ifndef libc_feholdsetround_53bit
-# define libc_feholdsetround_53bit libc_feholdsetround
-#endif
-
-#ifndef libc_fetestexcept
-# define libc_fetestexcept  fetestexcept
-#endif
-#ifndef libc_fetestexceptf
-# define libc_fetestexceptf fetestexcept
-#endif
-#ifndef libc_fetestexceptl
-# define libc_fetestexceptl fetestexcept
-#endif
-
-static __always_inline void
-default_libc_fesetenv (fenv_t *e)
-{
-  (void) __fesetenv (e);
-}
-
-#ifndef libc_fesetenv
-# define libc_fesetenv  default_libc_fesetenv
-#endif
-#ifndef libc_fesetenvf
-# define libc_fesetenvf default_libc_fesetenv
-#endif
-#ifndef libc_fesetenvl
-# define libc_fesetenvl default_libc_fesetenv
-#endif
-
-static __always_inline void
-default_libc_feupdateenv (fenv_t *e)
-{
-  (void) __feupdateenv (e);
-}
-
-#ifndef libc_feupdateenv
-# define libc_feupdateenv  default_libc_feupdateenv
-#endif
-#ifndef libc_feupdateenvf
-# define libc_feupdateenvf default_libc_feupdateenv
-#endif
-#ifndef libc_feupdateenvl
-# define libc_feupdateenvl default_libc_feupdateenv
-#endif
-
-#ifndef libc_feresetround_53bit
-# define libc_feresetround_53bit libc_feresetround
-#endif
-
-static __always_inline int
-default_libc_feupdateenv_test (fenv_t *e, int ex)
-{
-  int ret = fetestexcept (ex);
-  __feupdateenv (e);
-  return ret;
-}
-
-#ifndef libc_feupdateenv_test
-# define libc_feupdateenv_test  default_libc_feupdateenv_test
-#endif
-#ifndef libc_feupdateenv_testf
-# define libc_feupdateenv_testf default_libc_feupdateenv_test
-#endif
-#ifndef libc_feupdateenv_testl
-# define libc_feupdateenv_testl default_libc_feupdateenv_test
-#endif
-
-/* Save and set the rounding mode.  The use of fenv_t to store the old mode
-   allows a target-specific version of this function to avoid converting the
-   rounding mode from the fpu format.  By default we have no choice but to
-   manipulate the entire env.  */
-
-#ifndef libc_feholdsetround
-# define libc_feholdsetround  libc_feholdexcept_setround
-#endif
-#ifndef libc_feholdsetroundf
-# define libc_feholdsetroundf libc_feholdexcept_setroundf
-#endif
-#ifndef libc_feholdsetroundl
-# define libc_feholdsetroundl libc_feholdexcept_setroundl
-#endif
-
-/* ... and the reverse.  */
-
-#ifndef libc_feresetround
-# define libc_feresetround  libc_feupdateenv
-#endif
-#ifndef libc_feresetroundf
-# define libc_feresetroundf libc_feupdateenvf
-#endif
-#ifndef libc_feresetroundl
-# define libc_feresetroundl libc_feupdateenvl
-#endif
-
-/* ... and a version that may also discard exceptions.  */
-
-#ifndef libc_feresetround_noex
-# define libc_feresetround_noex  libc_fesetenv
-#endif
-#ifndef libc_feresetround_noexf
-# define libc_feresetround_noexf libc_fesetenvf
-#endif
-#ifndef libc_feresetround_noexl
-# define libc_feresetround_noexl libc_fesetenvl
-#endif
-
-#ifndef HAVE_RM_CTX
-# define HAVE_RM_CTX 0
-#endif
-
-#if HAVE_RM_CTX
-/* Set/Restore Rounding Modes only when necessary.  If defined, these functions
-   set/restore floating point state only if the state needed within the lexical
-   block is different from the current state.  This saves a lot of time when
-   the floating point unit is much slower than the fixed point units.  */
-
-# ifndef libc_feholdsetround_noex_ctx
-#   define libc_feholdsetround_noex_ctx  libc_feholdsetround_ctx
-# endif
-# ifndef libc_feholdsetround_noexf_ctx
-#   define libc_feholdsetround_noexf_ctx libc_feholdsetroundf_ctx
-# endif
-# ifndef libc_feholdsetround_noexl_ctx
-#   define libc_feholdsetround_noexl_ctx libc_feholdsetroundl_ctx
-# endif
-
-# ifndef libc_feresetround_noex_ctx
-#   define libc_feresetround_noex_ctx  libc_fesetenv_ctx
-# endif
-# ifndef libc_feresetround_noexf_ctx
-#   define libc_feresetround_noexf_ctx libc_fesetenvf_ctx
-# endif
-# ifndef libc_feresetround_noexl_ctx
-#   define libc_feresetround_noexl_ctx libc_fesetenvl_ctx
-# endif
-
-#else
-
-/* Default implementation using standard fenv functions.
-   Avoid unnecessary rounding mode changes by first checking the
-   current rounding mode.  Note the use of __glibc_unlikely is
-   important for performance.  */
-
-static __always_inline void
-libc_feholdsetround_ctx (struct rm_ctx *ctx, int round)
-{
-  ctx->updated_status = false;
-
-  /* Update rounding mode only if different.  */
-  if (__glibc_unlikely (round != get_rounding_mode ()))
-    {
-      ctx->updated_status = true;
-      __fegetenv (&ctx->env);
-      __fesetround (round);
-    }
-}
-
-static __always_inline void
-libc_feresetround_ctx (struct rm_ctx *ctx)
-{
-  /* Restore the rounding mode if updated.  */
-  if (__glibc_unlikely (ctx->updated_status))
-    __feupdateenv (&ctx->env);
-}
-
-static __always_inline void
-libc_feholdsetround_noex_ctx (struct rm_ctx *ctx, int round)
-{
-  /* Save exception flags and rounding mode.  */
-  __fegetenv (&ctx->env);
-
-  /* Update rounding mode only if different.  */
-  if (__glibc_unlikely (round != get_rounding_mode ()))
-    __fesetround (round);
-}
-
-static __always_inline void
-libc_feresetround_noex_ctx (struct rm_ctx *ctx)
-{
-  /* Restore exception flags and rounding mode.  */
-  __fesetenv (&ctx->env);
-}
-
-# define libc_feholdsetroundf_ctx libc_feholdsetround_ctx
-# define libc_feholdsetroundl_ctx libc_feholdsetround_ctx
-# define libc_feresetroundf_ctx   libc_feresetround_ctx
-# define libc_feresetroundl_ctx   libc_feresetround_ctx
-
-# define libc_feholdsetround_noexf_ctx libc_feholdsetround_noex_ctx
-# define libc_feholdsetround_noexl_ctx libc_feholdsetround_noex_ctx
-# define libc_feresetround_noexf_ctx   libc_feresetround_noex_ctx
-# define libc_feresetround_noexl_ctx   libc_feresetround_noex_ctx
-
-#endif
-
-#ifndef libc_feholdsetround_53bit_ctx
-#  define libc_feholdsetround_53bit_ctx libc_feholdsetround_ctx
-#endif
-#ifndef libc_feresetround_53bit_ctx
-#  define libc_feresetround_53bit_ctx libc_feresetround_ctx
-#endif
-
-#define SET_RESTORE_ROUND_GENERIC(RM,ROUNDFUNC,CLEANUPFUNC) \
-  struct rm_ctx ctx __attribute__((cleanup (CLEANUPFUNC ## _ctx))); \
-  ROUNDFUNC ## _ctx (&ctx, (RM))
-
-/* Set the rounding mode within a lexical block.  Restore the rounding mode to
-   the value at the start of the block.  The exception mode must be preserved.
-   Exceptions raised within the block must be set in the exception flags.
-   Non-stop mode may be enabled inside the block.  */
-
-#define SET_RESTORE_ROUND(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround, libc_feresetround)
-#define SET_RESTORE_ROUNDF(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundf, libc_feresetroundf)
-#define SET_RESTORE_ROUNDL(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetroundl, libc_feresetroundl)
-
-/* Set the rounding mode within a lexical block.  Restore the rounding mode to
-   the value at the start of the block.  The exception mode must be preserved.
-   Exceptions raised within the block must be discarded, and exception flags
-   are restored to the value at the start of the block.
-   Non-stop mode may be enabled inside the block.  */
-
-#define SET_RESTORE_ROUND_NOEX(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noex, \
-			     libc_feresetround_noex)
-#define SET_RESTORE_ROUND_NOEXF(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noexf, \
-			     libc_feresetround_noexf)
-#define SET_RESTORE_ROUND_NOEXL(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_noexl, \
-			     libc_feresetround_noexl)
-
-/* Like SET_RESTORE_ROUND, but also set rounding precision to 53 bits.  */
-#define SET_RESTORE_ROUND_53BIT(RM) \
-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_53bit,	      \
-			     libc_feresetround_53bit)
-
-#endif /* _MATH_PRIVATE_H_ */
diff --git a/sysdeps/generic/math_private_calls.h b/sysdeps/generic/math_private_calls.h
deleted file mode 100644
index 34bbd5e684..0000000000
--- a/sysdeps/generic/math_private_calls.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Private function declarations for libm.
-   Copyright (C) 2011-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#define __MSUF_X(x, suffix) x ## suffix
-#define __MSUF_S(...) __MSUF_X (__VA_ARGS__)
-#define __MSUF(x) __MSUF_S (x, _MSUF_)
-
-#define __MSUF_R_X(x, suffix) x ## suffix ## _r
-#define __MSUF_R_S(...) __MSUF_R_X (__VA_ARGS__)
-#define __MSUF_R(x) __MSUF_R_S (x, _MSUF_)
-
-/* IEEE style elementary functions.  */
-extern _Mdouble_ __MSUF (__ieee754_acos) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_acosh) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_asin) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_atan2) (_Mdouble_, _Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_atanh) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_cosh) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_exp) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_exp10) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_exp2) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_fmod) (_Mdouble_, _Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_gamma) (_Mdouble_);
-extern _Mdouble_ __MSUF_R (__ieee754_gamma) (_Mdouble_, int *);
-extern _Mdouble_ __MSUF (__ieee754_hypot) (_Mdouble_, _Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_j0) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_j1) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_jn) (int, _Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_lgamma) (_Mdouble_);
-extern _Mdouble_ __MSUF_R (__ieee754_lgamma) (_Mdouble_, int *);
-extern _Mdouble_ __MSUF (__ieee754_log) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_log10) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_log2) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_pow) (_Mdouble_, _Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_remainder) (_Mdouble_, _Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_sinh) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_sqrt) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_y0) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_y1) (_Mdouble_);
-extern _Mdouble_ __MSUF (__ieee754_yn) (int, _Mdouble_);
-
-extern _Mdouble_ __MSUF (__ieee754_scalb) (_Mdouble_, _Mdouble_);
-extern int __MSUF (__ieee754_ilogb) (_Mdouble_);
-
-extern int32_t __MSUF (__ieee754_rem_pio2) (_Mdouble_, _Mdouble_ *);
-
-/* fdlibm kernel functions.  */
-extern _Mdouble_ __MSUF (__kernel_sin) (_Mdouble_, _Mdouble_, int);
-extern _Mdouble_ __MSUF (__kernel_cos) (_Mdouble_, _Mdouble_);
-extern _Mdouble_ __MSUF (__kernel_tan) (_Mdouble_, _Mdouble_, int);
-
-#if defined __MATH_DECLARING_LONG_DOUBLE || defined __MATH_DECLARING_FLOATN
-extern void __MSUF (__kernel_sincos) (_Mdouble_, _Mdouble_,
-				      _Mdouble_ *, _Mdouble_ *, int);
-#endif
-
-#if !defined __MATH_DECLARING_LONG_DOUBLE || defined __MATH_DECLARING_FLOATN
-extern int __MSUF (__kernel_rem_pio2) (_Mdouble_ *, _Mdouble_ *, int,
-				       int, int, const int32_t *);
-#endif
-
-/* Internal functions.  */
-#if !defined __MATH_DECLARING_LONG_DOUBLE || !defined NO_LONG_DOUBLE
-extern _Mdouble_ __MSUF (__copysign) (_Mdouble_ x, _Mdouble_ __y);
-
-extern inline _Mdouble_
-__MSUF (__copysign) (_Mdouble_ x, _Mdouble_ __y)
-{
-  return __MSUF (__builtin_copysign) (x, __y);
-}
-#endif
-
-/* Return X^2 + Y^2 - 1, computed without large cancellation error.
-   It is given that 1 > X >= Y >= epsilon / 2, and that X^2 + Y^2 >=
-   0.5.  */
-extern _Mdouble_ __MSUF (__x2y2m1) (_Mdouble_ x, _Mdouble_ y);
-
-/* Compute the product of X + X_EPS, X + X_EPS + 1, ..., X + X_EPS + N
-   - 1, in the form R * (1 + *EPS) where the return value R is an
-   approximation to the product and *EPS is set to indicate the
-   approximate error in the return value.  X is such that all the
-   values X + 1, ..., X + N - 1 are exactly representable, and X_EPS /
-   X is small enough that factors quadratic in it can be
-   neglected.  */
-extern _Mdouble_ __MSUF (__gamma_product) (_Mdouble_ x, _Mdouble_ x_eps,
-					   int n, _Mdouble_ *eps);
-
-/* Compute lgamma of a negative argument X, if it is in a range
-   (depending on the floating-point format) for which expansion around
-   zeros is used, setting *SIGNGAMP accordingly.  */
-extern _Mdouble_ __MSUF (__lgamma_neg) (_Mdouble_ x, int *signgamp);
-
-/* Compute the product of 1 + (T / (X + X_EPS)), 1 + (T / (X + X_EPS +
-   1)), ..., 1 + (T / (X + X_EPS + N - 1)), minus 1.  X is such that
-   all the values X + 1, ..., X + N - 1 are exactly representable, and
-   X_EPS / X is small enough that factors quadratic in it can be
-   neglected.  */
-#if !defined __MATH_DECLARING_FLOAT
-extern _Mdouble_ __MSUF (__lgamma_product) (_Mdouble_ t, _Mdouble_ x,
-					    _Mdouble_ x_eps, int n);
-#endif
-
-#undef __MSUF_X
-#undef __MSUF_S
-#undef __MSUF
-
-#undef __MSUF_R_X
-#undef __MSUF_R_S
-#undef __MSUF_R
diff --git a/sysdeps/generic/memcopy.h b/sysdeps/generic/memcopy.h
deleted file mode 100644
index 83b8fd6de8..0000000000
--- a/sysdeps/generic/memcopy.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/* memcopy.h -- definitions for memory copy functions.  Generic C version.
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Torbjorn Granlund (tege@sics.se).
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _MEMCOPY_H
-#define _MEMCOPY_H	1
-
-/* The strategy of the memory functions is:
-
-     1. Copy bytes until the destination pointer is aligned.
-
-     2. Copy words in unrolled loops.  If the source and destination
-     are not aligned in the same way, use word memory operations,
-     but shift and merge two read words before writing.
-
-     3. Copy the few remaining bytes.
-
-   This is fast on processors that have at least 10 registers for
-   allocation by GCC, and that can access memory at reg+const in one
-   instruction.
-
-   I made an "exhaustive" test of this memmove when I wrote it,
-   exhaustive in the sense that I tried all alignment and length
-   combinations, with and without overlap.  */
-
-#include <sys/cdefs.h>
-#include <endian.h>
-#include <pagecopy.h>
-
-/* The macros defined in this file are:
-
-   BYTE_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_to_copy)
-
-   BYTE_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_to_copy)
-
-   WORD_COPY_FWD(dst_beg_ptr, src_beg_ptr, nbytes_remaining, nbytes_to_copy)
-
-   WORD_COPY_BWD(dst_end_ptr, src_end_ptr, nbytes_remaining, nbytes_to_copy)
-
-   MERGE(old_word, sh_1, new_word, sh_2)
-     [I fail to understand.  I feel stupid.  --roland]
-*/
-
-/* Type to use for aligned memory operations.
-   This should normally be the biggest type supported by a single load
-   and store.  */
-#define	op_t	unsigned long int
-#define OPSIZ	(sizeof(op_t))
-
-/* Type to use for unaligned operations.  */
-typedef unsigned char byte;
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-#define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-#define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
-#endif
-
-/* Copy exactly NBYTES bytes from SRC_BP to DST_BP,
-   without any assumptions about alignment of the pointers.  */
-#define BYTE_COPY_FWD(dst_bp, src_bp, nbytes)				      \
-  do									      \
-    {									      \
-      size_t __nbytes = (nbytes);					      \
-      while (__nbytes > 0)						      \
-	{								      \
-	  byte __x = ((byte *) src_bp)[0];				      \
-	  src_bp += 1;							      \
-	  __nbytes -= 1;						      \
-	  ((byte *) dst_bp)[0] = __x;					      \
-	  dst_bp += 1;							      \
-	}								      \
-    } while (0)
-
-/* Copy exactly NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
-   beginning at the bytes right before the pointers and continuing towards
-   smaller addresses.  Don't assume anything about alignment of the
-   pointers.  */
-#define BYTE_COPY_BWD(dst_ep, src_ep, nbytes)				      \
-  do									      \
-    {									      \
-      size_t __nbytes = (nbytes);					      \
-      while (__nbytes > 0)						      \
-	{								      \
-	  byte __x;							      \
-	  src_ep -= 1;							      \
-	  __x = ((byte *) src_ep)[0];					      \
-	  dst_ep -= 1;							      \
-	  __nbytes -= 1;						      \
-	  ((byte *) dst_ep)[0] = __x;					      \
-	}								      \
-    } while (0)
-
-/* Copy *up to* NBYTES bytes from SRC_BP to DST_BP, with
-   the assumption that DST_BP is aligned on an OPSIZ multiple.  If
-   not all bytes could be easily copied, store remaining number of bytes
-   in NBYTES_LEFT, otherwise store 0.  */
-extern void _wordcopy_fwd_aligned (long int, long int, size_t)
-  attribute_hidden __THROW;
-extern void _wordcopy_fwd_dest_aligned (long int, long int, size_t)
-  attribute_hidden __THROW;
-#define WORD_COPY_FWD(dst_bp, src_bp, nbytes_left, nbytes)		      \
-  do									      \
-    {									      \
-      if (src_bp % OPSIZ == 0)						      \
-	_wordcopy_fwd_aligned (dst_bp, src_bp, (nbytes) / OPSIZ);	      \
-      else								      \
-	_wordcopy_fwd_dest_aligned (dst_bp, src_bp, (nbytes) / OPSIZ);	      \
-      src_bp += (nbytes) & -OPSIZ;					      \
-      dst_bp += (nbytes) & -OPSIZ;					      \
-      (nbytes_left) = (nbytes) % OPSIZ;					      \
-    } while (0)
-
-/* Copy *up to* NBYTES_TO_COPY bytes from SRC_END_PTR to DST_END_PTR,
-   beginning at the words (of type op_t) right before the pointers and
-   continuing towards smaller addresses.  May take advantage of that
-   DST_END_PTR is aligned on an OPSIZ multiple.  If not all bytes could be
-   easily copied, store remaining number of bytes in NBYTES_REMAINING,
-   otherwise store 0.  */
-extern void _wordcopy_bwd_aligned (long int, long int, size_t)
-  attribute_hidden __THROW;
-extern void _wordcopy_bwd_dest_aligned (long int, long int, size_t)
-  attribute_hidden __THROW;
-#define WORD_COPY_BWD(dst_ep, src_ep, nbytes_left, nbytes)		      \
-  do									      \
-    {									      \
-      if (src_ep % OPSIZ == 0)						      \
-	_wordcopy_bwd_aligned (dst_ep, src_ep, (nbytes) / OPSIZ);	      \
-      else								      \
-	_wordcopy_bwd_dest_aligned (dst_ep, src_ep, (nbytes) / OPSIZ);	      \
-      src_ep -= (nbytes) & -OPSIZ;					      \
-      dst_ep -= (nbytes) & -OPSIZ;					      \
-      (nbytes_left) = (nbytes) % OPSIZ;					      \
-    } while (0)
-
-/* The macro PAGE_COPY_FWD_MAYBE (dstp, srcp, nbytes_left, nbytes) is invoked
-   like WORD_COPY_FWD et al.  The pointers should be at least word aligned.
-   This will check if virtual copying by pages can and should be done and do it
-   if so.  The pointers will be aligned to PAGE_SIZE bytes.  The macro requires
-   that pagecopy.h defines at least PAGE_COPY_THRESHOLD to 0.  If
-   PAGE_COPY_THRESHOLD is non-zero, the header must also define PAGE_COPY_FWD
-   and PAGE_SIZE.
-*/
-#if PAGE_COPY_THRESHOLD
-
-# include <assert.h>
-
-# define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes)		      \
-  do									      \
-    {									      \
-      if ((nbytes) >= PAGE_COPY_THRESHOLD &&				      \
-	  PAGE_OFFSET ((dstp) - (srcp)) == 0) 				      \
-	{								      \
-	  /* The amount to copy is past the threshold for copying	      \
-	     pages virtually with kernel VM operations, and the		      \
-	     source and destination addresses have the same alignment.  */    \
-	  size_t nbytes_before = PAGE_OFFSET (-(dstp));			      \
-	  if (nbytes_before != 0)					      \
-	    {								      \
-	      /* First copy the words before the first page boundary.  */     \
-	      WORD_COPY_FWD (dstp, srcp, nbytes_left, nbytes_before);	      \
-	      assert (nbytes_left == 0);				      \
-	      nbytes -= nbytes_before;					      \
-	    }								      \
-	  PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes);		      \
-	}								      \
-    } while (0)
-
-/* The page size is always a power of two, so we can avoid modulo division.  */
-# define PAGE_OFFSET(n)	((n) & (PAGE_SIZE - 1))
-
-#else
-
-# define PAGE_COPY_FWD_MAYBE(dstp, srcp, nbytes_left, nbytes) /* nada */
-
-#endif
-
-/* Threshold value for when to enter the unrolled loops.  */
-#define	OP_T_THRES	16
-
-/* Set to 1 if memcpy is safe to use for forward-copying memmove with
-   overlapping addresses.  This is 0 by default because memcpy implementations
-   are generally not safe for overlapping addresses.  */
-#define MEMCPY_OK_FOR_FWD_MEMMOVE 0
-
-#endif /* memcopy.h */
diff --git a/sysdeps/generic/memusage.h b/sysdeps/generic/memusage.h
deleted file mode 100644
index c640d6db1d..0000000000
--- a/sysdeps/generic/memusage.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-
-#include <limits.h>
-#include <atomic.h>
-#include <stdint.h>
-
-#ifndef GETSP
-# warning "GETSP is not defined for this architecture."
-# define GETSP 0
-#endif
-
-#ifndef GETTIME
-# define GETTIME(low,high) \
-  {									      \
-    struct timeval tval;						      \
-    uint64_t usecs;							      \
-    gettimeofday (&tval, NULL);						      \
-    usecs = (uint64_t) tval.tv_usec + (uint64_t) tval.tv_usec * 1000000;      \
-    low = usecs & 0xffffffff;						      \
-    high = usecs >> 32;							      \
-  }
-#endif
-
-#if LONG_BIT == 32
-# define memusage_cntr_t uatomic32_t
-#else
-# define memusage_cntr_t uatomic64_t
-#endif
-#ifndef memusage_size_t
-# if LONG_BIT == 32
-#  define memusage_size_t uatomic32_t
-# else
-#  define memusage_size_t uatomic64_t
-# endif
-#endif
diff --git a/sysdeps/generic/nan-high-order-bit.h b/sysdeps/generic/nan-high-order-bit.h
deleted file mode 100644
index 4ae711d9c4..0000000000
--- a/sysdeps/generic/nan-high-order-bit.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Specify NaN high-order bit conventions.  Generic version.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef NAN_HIGH_ORDER_BIT_H
-#define NAN_HIGH_ORDER_BIT_H	1
-
-/* Define this macro to 1 if the high-order bit of a NaN's mantissa is
-   set for signaling NaNs and clear for quiet NaNs, 0 otherwise (the
-   preferred IEEE convention).  */
-#define HIGH_ORDER_BIT_IS_SET_FOR_SNAN 0
-
-#endif /* nan-high-order-bit.h */
diff --git a/sysdeps/generic/net/if.h b/sysdeps/generic/net/if.h
deleted file mode 100644
index 31150e2a31..0000000000
--- a/sysdeps/generic/net/if.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* net/if.h -- declarations for inquiring about network interfaces
-   Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _NET_IF_H
-
-#define _NET_IF_H	1
-#include <features.h>
-
-
-__BEGIN_DECLS
-
-/* Convert an interface name to an index, and vice versa.  */
-
-extern unsigned int if_nametoindex (const char *__ifname) __THROW;
-extern char *if_indextoname (unsigned int __ifindex, char *__ifname) __THROW;
-
-/* Return a list of all interfaces and their indices.  */
-
-struct if_nameindex
-  {
-    unsigned int if_index;	/* 1, 2, ... */
-    char *if_name;		/* null terminated name: "eth0", ... */
-  };
-
-extern struct if_nameindex *if_nameindex (void) __THROW;
-
-/* Free the data returned from if_nameindex.  */
-
-extern void if_freenameindex (struct if_nameindex *__ptr) __THROW;
-
-__END_DECLS
-
-
-#endif /* net/if.h */
diff --git a/sysdeps/generic/netinet/if_ether.h b/sysdeps/generic/netinet/if_ether.h
deleted file mode 100644
index 123f9ef173..0000000000
--- a/sysdeps/generic/netinet/if_ether.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef __NETINET_IF_ETHER_H
-#define __NETINET_IF_ETHER_H	1
-
-#include <sys/types.h>
-
-#define ETH_ALEN	6	/* Octets in one ethernet address.  */
-
-/* This is a name for the 48 bit ethernet address available on many
-   systems.  */
-struct ether_addr
-{
-  uint8_t ether_addr_octet[ETH_ALEN];
-} __attribute__ ((__packed__));
-
-#endif /* netinet/if_ether.h */
diff --git a/sysdeps/generic/netinet/in_systm.h b/sysdeps/generic/netinet/in_systm.h
deleted file mode 100644
index 6697207a6c..0000000000
--- a/sysdeps/generic/netinet/in_systm.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* System specific type definitions for networking code.
-   Copyright (C) 1997-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _NETINET_IN_SYSTM_H
-#define _NETINET_IN_SYSTM_H 1
-
-#include <sys/types.h>
-#include <stdint.h>
-
-__BEGIN_DECLS
-
-/*
- * Network order versions of various data types. Unfortunately, BSD
- * assumes specific sizes for shorts (16 bit) and longs (32 bit) which
- * don't hold in general. As a consequence, the network order versions
- * may not reflect the actual size of the native data types.
- */
-
-typedef uint16_t n_short;      /* short as received from the net */
-typedef uint32_t n_long;       /* long as received from the net  */
-typedef uint32_t n_time;       /* ms since 00:00 GMT, byte rev   */
-
-__END_DECLS
-
-#endif /* netinet/in_systm.h */
diff --git a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h
deleted file mode 100644
index d57a0d9a1a..0000000000
--- a/sysdeps/generic/netinet/ip.h
+++ /dev/null
@@ -1,302 +0,0 @@
-/* Copyright (C) 1991-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef __NETINET_IP_H
-#define __NETINET_IP_H 1
-
-#include <features.h>
-#include <sys/types.h>
-
-#include <netinet/in.h>
-
-__BEGIN_DECLS
-
-struct timestamp
-  {
-    uint8_t len;
-    uint8_t ptr;
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    unsigned int flags:4;
-    unsigned int overflow:4;
-#elif __BYTE_ORDER == __BIG_ENDIAN
-    unsigned int overflow:4;
-    unsigned int flags:4;
-#else
-# error	"Please fix <bits/endian.h>"
-#endif
-    uint32_t data[9];
-  };
-
-struct iphdr
-  {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    unsigned int ihl:4;
-    unsigned int version:4;
-#elif __BYTE_ORDER == __BIG_ENDIAN
-    unsigned int version:4;
-    unsigned int ihl:4;
-#else
-# error	"Please fix <bits/endian.h>"
-#endif
-    uint8_t tos;
-    uint16_t tot_len;
-    uint16_t id;
-    uint16_t frag_off;
-    uint8_t ttl;
-    uint8_t protocol;
-    uint16_t check;
-    uint32_t saddr;
-    uint32_t daddr;
-    /*The options start here. */
-  };
-
-#ifdef __USE_MISC
-/*
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)ip.h	8.1 (Berkeley) 6/10/93
- */
-
-/*
- * Definitions for internet protocol version 4.
- * Per RFC 791, September 1981.
- */
-
-/*
- * Structure of an internet header, naked of options.
- */
-struct ip
-  {
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    unsigned int ip_hl:4;		/* header length */
-    unsigned int ip_v:4;		/* version */
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-    unsigned int ip_v:4;		/* version */
-    unsigned int ip_hl:4;		/* header length */
-#endif
-    uint8_t ip_tos;			/* type of service */
-    unsigned short ip_len;		/* total length */
-    unsigned short ip_id;		/* identification */
-    unsigned short ip_off;		/* fragment offset field */
-#define	IP_RF 0x8000			/* reserved fragment flag */
-#define	IP_DF 0x4000			/* dont fragment flag */
-#define	IP_MF 0x2000			/* more fragments flag */
-#define	IP_OFFMASK 0x1fff		/* mask for fragmenting bits */
-    uint8_t ip_ttl;			/* time to live */
-    uint8_t ip_p;			/* protocol */
-    unsigned short ip_sum;		/* checksum */
-    struct in_addr ip_src, ip_dst;	/* source and dest address */
-  };
-
-/*
- * Time stamp option structure.
- */
-struct ip_timestamp
-  {
-    uint8_t ipt_code;			/* IPOPT_TS */
-    uint8_t ipt_len;			/* size of structure (variable) */
-    uint8_t ipt_ptr;			/* index of current entry */
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-    unsigned int ipt_flg:4;		/* flags, see below */
-    unsigned int ipt_oflw:4;		/* overflow counter */
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-    unsigned int ipt_oflw:4;		/* overflow counter */
-    unsigned int ipt_flg:4;		/* flags, see below */
-#endif
-    uint32_t data[9];
-  };
-#endif /* __USE_MISC */
-
-#define	IPVERSION	4               /* IP version number */
-#define	IP_MAXPACKET	65535		/* maximum packet size */
-
-/*
- * Definitions for Explicit Congestion Notification (ECN)
- *
- * Taken from RFC-3168, Section 5.
- */
-
-#define	IPTOS_ECN_MASK		0x03
-#define	IPTOS_ECN(x)		((x) & IPTOS_ECN_MASK)
-#define	IPTOS_ECN_NOT_ECT	0x00
-#define	IPTOS_ECN_ECT1		0x01
-#define	IPTOS_ECN_ECT0		0x02
-#define	IPTOS_ECN_CE		0x03
-
-/*
- * Definitions for IP differentiated services code points (DSCP)
- *
- * Taken from RFC-2597, Section 6 and RFC-2598, Section 2.3.
- */
-
-#define	IPTOS_DSCP_MASK		0xfc
-#define	IPTOS_DSCP(x)		((x) & IPTOS_DSCP_MASK)
-#define	IPTOS_DSCP_AF11		0x28
-#define	IPTOS_DSCP_AF12		0x30
-#define	IPTOS_DSCP_AF13		0x38
-#define	IPTOS_DSCP_AF21		0x48
-#define	IPTOS_DSCP_AF22		0x50
-#define	IPTOS_DSCP_AF23		0x58
-#define	IPTOS_DSCP_AF31		0x68
-#define	IPTOS_DSCP_AF32		0x70
-#define	IPTOS_DSCP_AF33		0x78
-#define	IPTOS_DSCP_AF41		0x88
-#define	IPTOS_DSCP_AF42		0x90
-#define	IPTOS_DSCP_AF43		0x98
-#define	IPTOS_DSCP_EF		0xb8
-
-/*
- * In RFC 2474, Section 4.2.2.1, the Class Selector Codepoints subsume
- * the old ToS Precedence values.
- */
-
-#define	IPTOS_CLASS_MASK		0xe0
-#define	IPTOS_CLASS(class)		((class) & IPTOS_CLASS_MASK)
-#define	IPTOS_CLASS_CS0			0x00
-#define	IPTOS_CLASS_CS1			0x20
-#define	IPTOS_CLASS_CS2			0x40
-#define	IPTOS_CLASS_CS3			0x60
-#define	IPTOS_CLASS_CS4			0x80
-#define	IPTOS_CLASS_CS5			0xa0
-#define	IPTOS_CLASS_CS6			0xc0
-#define	IPTOS_CLASS_CS7			0xe0
-
-#define	IPTOS_CLASS_DEFAULT		IPTOS_CLASS_CS0
-
-/*
- * Definitions for IP type of service (ip_tos) [deprecated; use DSCP
- * and CS definitions above instead.]
- */
-#define	IPTOS_TOS_MASK		0x1E
-#define	IPTOS_TOS(tos)		((tos) & IPTOS_TOS_MASK)
-#define	IPTOS_LOWDELAY		0x10
-#define	IPTOS_THROUGHPUT	0x08
-#define	IPTOS_RELIABILITY	0x04
-#define	IPTOS_LOWCOST		0x02
-#define	IPTOS_MINCOST		IPTOS_LOWCOST
-
-/*
- * Definitions for IP precedence (also in ip_tos) [also deprecated.]
- */
-#define	IPTOS_PREC_MASK			IPTOS_CLASS_MASK
-#define	IPTOS_PREC(tos)			IPTOS_CLASS(tos)
-#define	IPTOS_PREC_NETCONTROL		IPTOS_CLASS_CS7
-#define	IPTOS_PREC_INTERNETCONTROL	IPTOS_CLASS_CS6
-#define	IPTOS_PREC_CRITIC_ECP		IPTOS_CLASS_CS5
-#define	IPTOS_PREC_FLASHOVERRIDE	IPTOS_CLASS_CS4
-#define	IPTOS_PREC_FLASH		IPTOS_CLASS_CS3
-#define	IPTOS_PREC_IMMEDIATE		IPTOS_CLASS_CS2
-#define	IPTOS_PREC_PRIORITY		IPTOS_CLASS_CS1
-#define	IPTOS_PREC_ROUTINE		IPTOS_CLASS_CS0
-
-/*
- * Definitions for options.
- */
-#define	IPOPT_COPY		0x80
-#define	IPOPT_CLASS_MASK	0x60
-#define	IPOPT_NUMBER_MASK	0x1f
-
-#define	IPOPT_COPIED(o)		((o) & IPOPT_COPY)
-#define	IPOPT_CLASS(o)		((o) & IPOPT_CLASS_MASK)
-#define	IPOPT_NUMBER(o)		((o) & IPOPT_NUMBER_MASK)
-
-#define	IPOPT_CONTROL		0x00
-#define	IPOPT_RESERVED1		0x20
-#define	IPOPT_DEBMEAS		0x40
-#define	IPOPT_MEASUREMENT       IPOPT_DEBMEAS
-#define	IPOPT_RESERVED2		0x60
-
-#define	IPOPT_EOL		0		/* end of option list */
-#define	IPOPT_END		IPOPT_EOL
-#define	IPOPT_NOP		1		/* no operation */
-#define	IPOPT_NOOP		IPOPT_NOP
-
-#define	IPOPT_RR		7		/* record packet route */
-#define	IPOPT_TS		68		/* timestamp */
-#define	IPOPT_TIMESTAMP		IPOPT_TS
-#define	IPOPT_SECURITY		130		/* provide s,c,h,tcc */
-#define	IPOPT_SEC		IPOPT_SECURITY
-#define	IPOPT_LSRR		131		/* loose source route */
-#define	IPOPT_SATID		136		/* satnet id */
-#define	IPOPT_SID		IPOPT_SATID
-#define	IPOPT_SSRR		137		/* strict source route */
-#define	IPOPT_RA		148		/* router alert */
-
-/*
- * Offsets to fields in options other than EOL and NOP.
- */
-#define	IPOPT_OPTVAL		0		/* option ID */
-#define	IPOPT_OLEN		1		/* option length */
-#define	IPOPT_OFFSET		2		/* offset within option */
-#define	IPOPT_MINOFF		4		/* min value of above */
-
-#define	MAX_IPOPTLEN		40
-
-/* flag bits for ipt_flg */
-#define	IPOPT_TS_TSONLY		0		/* timestamps only */
-#define	IPOPT_TS_TSANDADDR	1		/* timestamps and addresses */
-#define	IPOPT_TS_PRESPEC	3		/* specified modules only */
-
-/* bits for security (not byte swapped) */
-#define	IPOPT_SECUR_UNCLASS	0x0000
-#define	IPOPT_SECUR_CONFID	0xf135
-#define	IPOPT_SECUR_EFTO	0x789a
-#define	IPOPT_SECUR_MMMM	0xbc4d
-#define	IPOPT_SECUR_RESTR	0xaf13
-#define	IPOPT_SECUR_SECRET	0xd788
-#define	IPOPT_SECUR_TOPSECRET	0x6bc5
-
-/*
- * Internet implementation parameters.
- */
-#define	MAXTTL		255		/* maximum time to live (seconds) */
-#define	IPDEFTTL	64		/* default ttl, from RFC 1340 */
-#define	IPFRAGTTL	60		/* time to live for frags, slowhz */
-#define	IPTTLDEC	1		/* subtracted when forwarding */
-
-#define	IP_MSS		576		/* default maximum segment size */
-
-__END_DECLS
-
-#endif /* netinet/ip.h */
diff --git a/sysdeps/generic/netinet/tcp.h b/sysdeps/generic/netinet/tcp.h
deleted file mode 100644
index 49f1bfbc26..0000000000
--- a/sysdeps/generic/netinet/tcp.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)tcp.h	8.1 (Berkeley) 6/10/93
- */
-
-#ifndef _NETINET_TCP_H
-
-#define _NETINET_TCP_H	1
-#include <sys/cdefs.h>
-
-
-__BEGIN_DECLS
-
-typedef	unsigned int	tcp_seq;
-/*
- * TCP header.
- * Per RFC 793, September, 1981.
- */
-struct tcphdr {
-	unsigned short	th_sport;	/* source port */
-	unsigned short	th_dport;	/* destination port */
-	tcp_seq		th_seq;		/* sequence number */
-	tcp_seq		th_ack;		/* acknowledgement number */
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned char	th_x2:4,	/* (unused) */
-			th_off:4;	/* data offset */
-#endif
-#if __BYTE_ORDER == __BIG_ENDIAN
-	unsigned char	th_off:4,	/* data offset */
-			th_x2:4;	/* (unused) */
-#endif
-	unsigned char	th_flags;
-#define	TH_FIN	0x01
-#define	TH_SYN	0x02
-#define	TH_RST	0x04
-#define	TH_PUSH	0x08
-#define	TH_ACK	0x10
-#define	TH_URG	0x20
-	unsigned short	th_win;		/* window */
-	unsigned short	th_sum;		/* checksum */
-	unsigned short	th_urp;		/* urgent pointer */
-};
-
-#define	TCPOPT_EOL		0
-#define	TCPOPT_NOP		1
-#define	TCPOPT_MAXSEG		2
-#define TCPOLEN_MAXSEG		4
-#define TCPOPT_WINDOW		3
-#define TCPOLEN_WINDOW		3
-#define TCPOPT_SACK_PERMITTED	4		/* Experimental */
-#define TCPOLEN_SACK_PERMITTED	2
-#define TCPOPT_SACK		5		/* Experimental */
-#define TCPOPT_TIMESTAMP	8
-#define TCPOLEN_TIMESTAMP	10
-#define TCPOLEN_TSTAMP_APPA	(TCPOLEN_TIMESTAMP+2) /* appendix A */
-
-#define TCPOPT_TSTAMP_HDR	\
-    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
-
-/*
- * Default maximum segment size for TCP.
- * With an IP MSS of 576, this is 536,
- * but 512 is probably more convenient.
- * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
- */
-#define	TCP_MSS	512
-
-#define	TCP_MAXWIN	65535	/* largest value for (unscaled) window */
-
-#define TCP_MAX_WINSHIFT	14	/* maximum window shift */
-
-/*
- * User-settable options (used with setsockopt).
- */
-#define	TCP_NODELAY	0x01	/* don't delay send to coalesce packets */
-#define	TCP_MAXSEG	0x02	/* set maximum segment size */
-
-#define SOL_TCP		6	/* TCP level */
-
-__END_DECLS
-
-#endif /* netinet/tcp.h */
diff --git a/sysdeps/generic/nfs/nfs.h b/sysdeps/generic/nfs/nfs.h
deleted file mode 100644
index 89a878cea4..0000000000
--- a/sysdeps/generic/nfs/nfs.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* <nfs/nfs.h> -- ill-specified NFS-related definitions
-   Copyright (C) 1999-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _NFS_NFS_H
-#define _NFS_NFS_H 1
-
-/* This file is empty for now.  Its contents do not seem to be
-   standardized in any way.  It exists solely for the sake of
-   <rpcsvc/bootparam_prot.h> which insists on including <nfs/nfs.h>.
-
-   For the time being, we just provide this file here to smooth building
-   the libc distribution (i.e. librpcsvc).  We do not install this file for
-   users, since we haven't really figured out what the right thing to go
-   here is.  */
-
-#endif /* nfs/nfs.h */
diff --git a/sysdeps/generic/not-cancel.h b/sysdeps/generic/not-cancel.h
deleted file mode 100644
index 5eabd2b31a..0000000000
--- a/sysdeps/generic/not-cancel.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Uncancelable versions of cancelable interfaces.  Generic version.
-   Copyright (C) 2003-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-/* By default we have none.  Map the name to the normal functions.  */
-#define open_not_cancel(name, flags, mode) \
-  __libc_open (name, flags, mode)
-#define open_not_cancel_2(name, flags) \
-  __libc_open (name, flags)
-#define openat_not_cancel(fd, name, flags, mode) \
-  __openat (fd, name, flags, mode)
-#define openat_not_cancel_3(fd, name, flags) \
-  __openat (fd, name, flags, 0)
-#define openat64_not_cancel(fd, name, flags, mode) \
-  __openat64 (fd, name, flags, mode)
-#define openat64_not_cancel_3(fd, name, flags) \
-  __openat64 (fd, name, flags, 0)
-#define close_not_cancel(fd) \
-  __close (fd)
-#define close_not_cancel_no_status(fd) \
-  (void) __close (fd)
-#define read_not_cancel(fd, buf, n) \
-  __read (fd, buf, n)
-#define write_not_cancel(fd, buf, n) \
-  __write (fd, buf, n)
-#define writev_not_cancel_no_status(fd, iov, n) \
-  (void) __writev (fd, iov, n)
-#define fcntl_not_cancel(fd, cmd, val) \
-  __fcntl (fd, cmd, val)
-# define waitpid_not_cancel(pid, stat_loc, options) \
-  __waitpid (pid, stat_loc, options)
-#define pause_not_cancel() \
-  __pause ()
-#define nanosleep_not_cancel(requested_time, remaining) \
-  __nanosleep (requested_time, remaining)
-#define sigsuspend_not_cancel(set) \
-  __sigsuspend (set)
-
-#define NO_CANCELLATION 1
diff --git a/sysdeps/generic/nscd-types.h b/sysdeps/generic/nscd-types.h
deleted file mode 100644
index 1bcfdf4bca..0000000000
--- a/sysdeps/generic/nscd-types.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Types for the NSCD implementation.  Generic version.
-   Copyright (c) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdint.h>
-
-typedef int32_t nscd_ssize_t;
diff --git a/sysdeps/generic/pagecopy.h b/sysdeps/generic/pagecopy.h
deleted file mode 100644
index 3ef17070c9..0000000000
--- a/sysdeps/generic/pagecopy.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Macros for copying by pages; used in memcpy, memmove.
-   Copyright (C) 1995-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* The macro PAGE_COPY_FWD_MAYBE defined in memcopy.h is used in memmove if the
-   PAGE_COPY_THRESHOLD macro is set to a non-zero value.  The default is 0,
-   that is copying by pages is not implemented.
-
-   System-specific pagecopy.h files that want to support page copying should
-   define these macros:
-
-   PAGE_COPY_THRESHOLD
-   -- A non-zero minimum size for which virtual copying by pages is worthwhile.
-
-   PAGE_SIZE
-   -- Size of a page.
-
-   PAGE_COPY_FWD (dstp, srcp, nbytes_left, nbytes)
-   -- Macro to perform the virtual copy operation.
-   The pointers will be aligned to PAGE_SIZE bytes.
-*/
-
-#define PAGE_COPY_THRESHOLD 0
diff --git a/sysdeps/generic/paths.h b/sysdeps/generic/paths.h
deleted file mode 100644
index 893b4c2286..0000000000
--- a/sysdeps/generic/paths.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 1989, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)paths.h	8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _PATHS_H_
-#define	_PATHS_H_
-
-/* Default search path. */
-#define	_PATH_DEFPATH	"/usr/bin:/bin"
-/* All standard utilities path. */
-#define	_PATH_STDPATH \
-	"/usr/bin:/bin:/usr/sbin:/sbin"
-
-#define	_PATH_BSHELL	"/bin/sh"
-#define	_PATH_CONSOLE	"/dev/console"
-#define	_PATH_CSHELL	"/bin/csh"
-#define	_PATH_DEVDB	"/var/run/dev.db"
-#define	_PATH_DEVNULL	"/dev/null"
-#define	_PATH_DRUM	"/dev/drum"
-#define	_PATH_GSHADOW	"/etc/gshadow"
-#define	_PATH_KMEM	"/dev/kmem"
-#define	_PATH_LASTLOG	"/var/log/lastlog"
-#define	_PATH_MAILDIR	"/var/mail"
-#define	_PATH_MAN	"/usr/share/man"
-#define	_PATH_MEM	"/dev/mem"
-#define	_PATH_MNTTAB	"/etc/fstab"
-#define	_PATH_MOUNTED	"/var/run/mtab"
-#define	_PATH_NOLOGIN	"/etc/nologin"
-#define	_PATH_PRESERVE	"/var/lib"
-#define	_PATH_RWHODIR	"/var/spool/rwho"
-#define	_PATH_SENDMAIL	"/usr/sbin/sendmail"
-#define	_PATH_SHADOW	"/etc/shadow"
-#define	_PATH_SHELLS	"/etc/shells"
-#define	_PATH_TTY	"/dev/tty"
-#define	_PATH_UNIX	"/vmunix"
-#define	_PATH_UTMP	"/var/run/utmp"
-#define	_PATH_UTMP_DB	"/var/run/utmp.db"
-#define	_PATH_VI	"/usr/bin/vi"
-#define	_PATH_WTMP	"/var/log/wtmp"
-
-/* Provide trailing slash, since mostly used for building pathnames. */
-#define	_PATH_DEV	"/dev/"
-#define	_PATH_TMP	"/tmp/"
-#define	_PATH_VARDB	"/var/db/"
-#define	_PATH_VARRUN	"/var/run/"
-#define	_PATH_VARTMP	"/var/tmp/"
-
-#endif /* !_PATHS_H_ */
diff --git a/sysdeps/generic/profil-counter.h b/sysdeps/generic/profil-counter.h
deleted file mode 100644
index e2fc9ffdce..0000000000
--- a/sysdeps/generic/profil-counter.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Machine-dependent SIGPROF signal handler.  "Generic" version w/ sigcontext
-   Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* In many Unix systems signal handlers are called like this
-   and the interrupted PC is easily findable in the `struct sigcontext'.  */
-
-static void
-__profil_counter (int signr, int code, struct sigcontext *scp)
-{
-  profil_count ((void *) scp->sc_pc);
-}
diff --git a/sysdeps/generic/pty-private.h b/sysdeps/generic/pty-private.h
deleted file mode 100644
index e667ae89b3..0000000000
--- a/sysdeps/generic/pty-private.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Internal defenitions and declarations for pseudo terminal functions.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _PTY_PRIVATE_H
-#define _PTY_PRIVATE_H 1
-
-/* The group slave pseudo terminals belong to.  */
-#define TTY_GROUP "tty"
-
-/* The file descriptor connected to the master pseudo terminal.  */
-#define PTY_FILENO 3
-
-/* Path to the helper program that implements `grantpt' in user space.  */
-#define _PATH_PT_CHOWN LIBEXECDIR "/pt_chown"
-
-/* Test whether given TTY is really a Unix98 pseudo terminal.  */
-/* #define unix98_pseudo_p(Dev) ... */
-
-/* Exit codes for the helper program.  */
-enum  /* failure modes */
-{
-  FAIL_EBADF = 1,
-  FAIL_EINVAL,
-  FAIL_EACCES,
-  FAIL_EXEC,
-  FAIL_ENOMEM
-};
-
-#endif /* pty-private.h  */
diff --git a/sysdeps/generic/register-dump.h b/sysdeps/generic/register-dump.h
deleted file mode 100644
index 2af34a9295..0000000000
--- a/sysdeps/generic/register-dump.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Dump registers.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-/* In general we cannot do anything.  */
diff --git a/sysdeps/generic/rtld-lowlevel.h b/sysdeps/generic/rtld-lowlevel.h
deleted file mode 100644
index 353fad28d4..0000000000
--- a/sysdeps/generic/rtld-lowlevel.h
+++ /dev/null
@@ -1 +0,0 @@
-#error "Lowlevel primitives for ld.so not implemented"
diff --git a/sysdeps/generic/safe-fatal.h b/sysdeps/generic/safe-fatal.h
deleted file mode 100644
index 05129250c4..0000000000
--- a/sysdeps/generic/safe-fatal.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Crash the process immediately, without possibility of deadlock.  Generic.
-   Copyright (C) 2014-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SAFE_FATAL_H
-#define _SAFE_FATAL_H   1
-
-#include <abort-instr.h>
-
-static inline void
-__safe_fatal (void)
-{
-#ifdef ABORT_INSTRUCTION
-  /* This is not guaranteed to be free from the possibility of deadlock,
-     since it might generate a signal that can be caught.  But it's better
-     than nothing.  */
-  ABORT_INSTRUCTION;
-#else
-# error Need an OS-specific or machine-specific safe-fatal.h
-#endif
-}
-
-#endif  /* safe-fatal.h */
diff --git a/sysdeps/generic/sigcontextinfo.h b/sysdeps/generic/sigcontextinfo.h
deleted file mode 100644
index d25a787d05..0000000000
--- a/sysdeps/generic/sigcontextinfo.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-/* In general we cannot provide any information.  */
-#define SIGCONTEXT struct sigcontext *
-#define SIGCONTEXT_EXTRA_ARGS
-#define GET_PC(ctx)	((void *) 0)
-#define GET_FRAME(ctx)	((void *) 0)
-#define GET_STACK(ctx)	((void *) 0)
-#define CALL_SIGHANDLER(handler, signo, ctx) \
-  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
diff --git a/sysdeps/generic/siglist.h b/sysdeps/generic/siglist.h
deleted file mode 100644
index dd72929ed5..0000000000
--- a/sysdeps/generic/siglist.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Canonical list of all signal names.
-   Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* This file should be usable for any platform, since it just associates
-   the SIG* macros with text names and descriptions.  The actual values
-   come from <bits/signum.h> (via <signal.h>).  For any signal macros do not
-   exist on every platform, we can use #ifdef tests here and still use
-   this single common file for all platforms.  */
-
-/* This file is included multiple times.  */
-
-/* Standard signals  */
-  init_sig (SIGHUP, "HUP", N_("Hangup"))
-  init_sig (SIGINT, "INT", N_("Interrupt"))
-  init_sig (SIGQUIT, "QUIT", N_("Quit"))
-  init_sig (SIGILL, "ILL", N_("Illegal instruction"))
-  init_sig (SIGTRAP, "TRAP", N_("Trace/breakpoint trap"))
-  init_sig (SIGABRT, "ABRT", N_("Aborted"))
-  init_sig (SIGFPE, "FPE", N_("Floating point exception"))
-  init_sig (SIGKILL, "KILL", N_("Killed"))
-  init_sig (SIGBUS, "BUS", N_("Bus error"))
-  init_sig (SIGSEGV, "SEGV", N_("Segmentation fault"))
-  init_sig (SIGPIPE, "PIPE", N_("Broken pipe"))
-  init_sig (SIGALRM, "ALRM", N_("Alarm clock"))
-  init_sig (SIGTERM, "TERM", N_("Terminated"))
-  init_sig (SIGURG, "URG", N_("Urgent I/O condition"))
-  init_sig (SIGSTOP, "STOP", N_("Stopped (signal)"))
-  init_sig (SIGTSTP, "TSTP", N_("Stopped"))
-  init_sig (SIGCONT, "CONT", N_("Continued"))
-  init_sig (SIGCHLD, "CHLD", N_("Child exited"))
-  init_sig (SIGTTIN, "TTIN", N_("Stopped (tty input)"))
-  init_sig (SIGTTOU, "TTOU", N_("Stopped (tty output)"))
-  init_sig (SIGIO, "IO", N_("I/O possible"))
-  init_sig (SIGXCPU, "XCPU", N_("CPU time limit exceeded"))
-  init_sig (SIGXFSZ, "XFSZ", N_("File size limit exceeded"))
-  init_sig (SIGVTALRM, "VTALRM", N_("Virtual timer expired"))
-  init_sig (SIGPROF, "PROF", N_("Profiling timer expired"))
-  init_sig (SIGUSR1, "USR1", N_("User defined signal 1"))
-  init_sig (SIGUSR2, "USR2", N_("User defined signal 2"))
-
-/* Variations  */
-#ifdef SIGEMT
-  init_sig (SIGEMT, "EMT", N_("EMT trap"))
-#endif
-#ifdef SIGSYS
-  init_sig (SIGSYS, "SYS", N_("Bad system call"))
-#endif
-#ifdef SIGSTKFLT
-  init_sig (SIGSTKFLT, "STKFLT", N_("Stack fault"))
-#endif
-#ifdef SIGINFO
-  init_sig (SIGINFO, "INFO", N_("Information request"))
-#elif defined(SIGPWR) && (!defined(SIGLOST) || (SIGPWR != SIGLOST))
-  init_sig (SIGPWR, "PWR", N_("Power failure"))
-#endif
-#ifdef SIGLOST
-  init_sig (SIGLOST, "LOST", N_("Resource lost"))
-#endif
-#ifdef SIGWINCH
-  init_sig (SIGWINCH, "WINCH", N_("Window changed"))
-#endif
diff --git a/sysdeps/generic/sigset-cvt-mask.h b/sysdeps/generic/sigset-cvt-mask.h
deleted file mode 100644
index b73bc64028..0000000000
--- a/sysdeps/generic/sigset-cvt-mask.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Convert between lowlevel sigmask and libc representation of sigset_t.
-   Generic version.
-   Copyright (C) 1998-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Joe Keane <jgk@jgk.org>.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-/* Convert between an old-style 32-bit signal mask and a POSIX sigset_t.  */
-
-/* Perform *SET = MASK.  Unused bits of *SET are set to 0.
-   Returns zero for success or -1 for errors (from sigaddset/sigemptyset).  */
-static inline int __attribute__ ((unused))
-sigset_set_old_mask (sigset_t *set, int mask)
-{
-  if (sizeof (__sigset_t) == sizeof (unsigned int))
-    *set = (unsigned int) mask;
-  else
-    {
-      unsigned int __sig;
-
-      if (__sigemptyset (set) < 0)
-	return -1;
-
-      for (__sig = 1; __sig < NSIG && __sig <= sizeof (mask) * 8; __sig++)
-	if (mask & sigmask (__sig))
-	  if (__sigaddset (set, __sig) < 0)
-	    return -1;
-    }
-  return 0;
-}
-
-/* Return the sigmask corresponding to *SET.
-   Unused bits of *SET are thrown away.  */
-static inline int __attribute__ ((unused))
-sigset_get_old_mask (const sigset_t *set)
-{
-  if (sizeof (sigset_t) == sizeof (unsigned int))
-    return (unsigned int) *set;
-  else
-    {
-      unsigned int mask = 0;
-      unsigned int sig;
-
-      for (sig = 1; sig < NSIG && sig <= sizeof (mask) * 8; sig++)
-	if (__sigismember (set, sig))
-	  mask |= sigmask (sig);
-
-      return mask;
-    }
-}
diff --git a/sysdeps/generic/sigsetops.h b/sysdeps/generic/sigsetops.h
deleted file mode 100644
index e8e5553981..0000000000
--- a/sysdeps/generic/sigsetops.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/* __sigset_t manipulators.  Generic/BSD version.
-   Copyright (C) 1991-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SIGSETOPS_H
-#define _SIGSETOPS_H 1
-
-#include <signal.h>
-
-/* Return a mask that includes SIG only.  The cast to `sigset_t' avoids
-   overflow if `sigset_t' is wider than `int'.  */
-# define __sigmask(sig) (((__sigset_t) 1) << ((sig) - 1))
-
-#define __sigemptyset(set)			\
-  (__extension__ ({				\
-    *(set) = (__sigset_t) 0;			\
-    (void)0;					\
-  }))
-#define __sigfillset(set)			\
-  (__extension__ ({				\
-    *(set) = ~(__sigset_t) 0;			\
-    (void)0;					\
-  }))
-
-# define __sigisemptyset(set)			\
-  (*(set) == (__sigset_t) 0)
-
-# define __sigandset(dest, left, right)		\
-  (__extension__ ({				\
-    *(dest) = *(left) & *(right);		\
-    (void)0;					\
-  }))
-
-# define __sigorset(dest, left, right)		\
-  (__extension__ ({				\
-    *(dest) = *(left) | *(right);		\
-    (void)0;					\
-  }))
-#endif
-
-/* These macros needn't check for a bogus signal number;
-   checking is done in the non-__ versions.  */
-# define __sigismember(set, sig)		\
-  (__extension__ ({				\
-    __sigset_t __mask = __sigmask (sig);	\
-    (set) & __mask ? 1 : 0;			\
-  }))
-
-# define __sigaddset(set, sig)			\
-  (__extension__ ({				\
-    __sigset_t __mask = __sigmask (sig);	\
-    (set) |= __mask;				\
-    (void)0;					\
-  }))
-
-# define __sigdelset(set, sig)			\
-  (__extension__ ({				\
-    __sigset_t __mask = __sigmask (sig);	\
-    (set) &= ~__mask;				\
-    (void)0;					\
-  }))
-
-#endif
diff --git a/sysdeps/generic/stackguard-macros.h b/sysdeps/generic/stackguard-macros.h
deleted file mode 100644
index b4a6b23ff8..0000000000
--- a/sysdeps/generic/stackguard-macros.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdint.h>
-
-extern uintptr_t __stack_chk_guard;
-#define STACK_CHK_GUARD __stack_chk_guard
-
-#ifdef PTRGUARD_LOCAL
-extern uintptr_t __pointer_chk_guard_local;
-# define POINTER_CHK_GUARD __pointer_chk_guard_local
-#else
-extern uintptr_t __pointer_chk_guard;
-# define POINTER_CHK_GUARD __pointer_chk_guard
-#endif
diff --git a/sysdeps/generic/stackinfo.h b/sysdeps/generic/stackinfo.h
deleted file mode 100644
index 718c74582a..0000000000
--- a/sysdeps/generic/stackinfo.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Copyright (C) 1999-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* This file contains a bit of information about the stack allocation
-   of the processor.  Since there is no general truth we can't say
-   anything here.  */
diff --git a/sysdeps/generic/stdint.h b/sysdeps/generic/stdint.h
deleted file mode 100644
index b553c52665..0000000000
--- a/sysdeps/generic/stdint.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/* Copyright (C) 1997-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/*
- *	ISO C99: 7.18 Integer types <stdint.h>
- */
-
-#ifndef _STDINT_H
-#define _STDINT_H	1
-
-#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
-#include <bits/libc-header-start.h>
-#include <bits/types.h>
-#include <bits/wchar.h>
-#include <bits/wordsize.h>
-
-/* Exact integral types.  */
-
-/* Signed.  */
-#include <bits/stdint-intn.h>
-
-/* Unsigned.  */
-#include <bits/stdint-uintn.h>
-
-
-/* Small types.  */
-
-/* Signed.  */
-typedef signed char		int_least8_t;
-typedef short int		int_least16_t;
-typedef int			int_least32_t;
-#if __WORDSIZE == 64
-typedef long int		int_least64_t;
-#else
-__extension__
-typedef long long int		int_least64_t;
-#endif
-
-/* Unsigned.  */
-typedef unsigned char		uint_least8_t;
-typedef unsigned short int	uint_least16_t;
-typedef unsigned int		uint_least32_t;
-#if __WORDSIZE == 64
-typedef unsigned long int	uint_least64_t;
-#else
-__extension__
-typedef unsigned long long int	uint_least64_t;
-#endif
-
-
-/* Fast types.  */
-
-/* Signed.  */
-typedef signed char		int_fast8_t;
-#if __WORDSIZE == 64
-typedef long int		int_fast16_t;
-typedef long int		int_fast32_t;
-typedef long int		int_fast64_t;
-#else
-typedef int			int_fast16_t;
-typedef int			int_fast32_t;
-__extension__
-typedef long long int		int_fast64_t;
-#endif
-
-/* Unsigned.  */
-typedef unsigned char		uint_fast8_t;
-#if __WORDSIZE == 64
-typedef unsigned long int	uint_fast16_t;
-typedef unsigned long int	uint_fast32_t;
-typedef unsigned long int	uint_fast64_t;
-#else
-typedef unsigned int		uint_fast16_t;
-typedef unsigned int		uint_fast32_t;
-__extension__
-typedef unsigned long long int	uint_fast64_t;
-#endif
-
-
-/* Types for `void *' pointers.  */
-#if __WORDSIZE == 64
-# ifndef __intptr_t_defined
-typedef long int		intptr_t;
-#  define __intptr_t_defined
-# endif
-typedef unsigned long int	uintptr_t;
-#else
-# ifndef __intptr_t_defined
-typedef int			intptr_t;
-#  define __intptr_t_defined
-# endif
-typedef unsigned int		uintptr_t;
-#endif
-
-
-/* Largest integral types.  */
-typedef __intmax_t		intmax_t;
-typedef __uintmax_t		uintmax_t;
-
-
-# if __WORDSIZE == 64
-#  define __INT64_C(c)	c ## L
-#  define __UINT64_C(c)	c ## UL
-# else
-#  define __INT64_C(c)	c ## LL
-#  define __UINT64_C(c)	c ## ULL
-# endif
-
-/* Limits of integral types.  */
-
-/* Minimum of signed integral types.  */
-# define INT8_MIN		(-128)
-# define INT16_MIN		(-32767-1)
-# define INT32_MIN		(-2147483647-1)
-# define INT64_MIN		(-__INT64_C(9223372036854775807)-1)
-/* Maximum of signed integral types.  */
-# define INT8_MAX		(127)
-# define INT16_MAX		(32767)
-# define INT32_MAX		(2147483647)
-# define INT64_MAX		(__INT64_C(9223372036854775807))
-
-/* Maximum of unsigned integral types.  */
-# define UINT8_MAX		(255)
-# define UINT16_MAX		(65535)
-# define UINT32_MAX		(4294967295U)
-# define UINT64_MAX		(__UINT64_C(18446744073709551615))
-
-
-/* Minimum of signed integral types having a minimum size.  */
-# define INT_LEAST8_MIN		(-128)
-# define INT_LEAST16_MIN	(-32767-1)
-# define INT_LEAST32_MIN	(-2147483647-1)
-# define INT_LEAST64_MIN	(-__INT64_C(9223372036854775807)-1)
-/* Maximum of signed integral types having a minimum size.  */
-# define INT_LEAST8_MAX		(127)
-# define INT_LEAST16_MAX	(32767)
-# define INT_LEAST32_MAX	(2147483647)
-# define INT_LEAST64_MAX	(__INT64_C(9223372036854775807))
-
-/* Maximum of unsigned integral types having a minimum size.  */
-# define UINT_LEAST8_MAX	(255)
-# define UINT_LEAST16_MAX	(65535)
-# define UINT_LEAST32_MAX	(4294967295U)
-# define UINT_LEAST64_MAX	(__UINT64_C(18446744073709551615))
-
-
-/* Minimum of fast signed integral types having a minimum size.  */
-# define INT_FAST8_MIN		(-128)
-# if __WORDSIZE == 64
-#  define INT_FAST16_MIN	(-9223372036854775807L-1)
-#  define INT_FAST32_MIN	(-9223372036854775807L-1)
-# else
-#  define INT_FAST16_MIN	(-2147483647-1)
-#  define INT_FAST32_MIN	(-2147483647-1)
-# endif
-# define INT_FAST64_MIN		(-__INT64_C(9223372036854775807)-1)
-/* Maximum of fast signed integral types having a minimum size.  */
-# define INT_FAST8_MAX		(127)
-# if __WORDSIZE == 64
-#  define INT_FAST16_MAX	(9223372036854775807L)
-#  define INT_FAST32_MAX	(9223372036854775807L)
-# else
-#  define INT_FAST16_MAX	(2147483647)
-#  define INT_FAST32_MAX	(2147483647)
-# endif
-# define INT_FAST64_MAX		(__INT64_C(9223372036854775807))
-
-/* Maximum of fast unsigned integral types having a minimum size.  */
-# define UINT_FAST8_MAX		(255)
-# if __WORDSIZE == 64
-#  define UINT_FAST16_MAX	(18446744073709551615UL)
-#  define UINT_FAST32_MAX	(18446744073709551615UL)
-# else
-#  define UINT_FAST16_MAX	(4294967295U)
-#  define UINT_FAST32_MAX	(4294967295U)
-# endif
-# define UINT_FAST64_MAX	(__UINT64_C(18446744073709551615))
-
-
-/* Values to test for integral types holding `void *' pointer.  */
-# if __WORDSIZE == 64
-#  define INTPTR_MIN		(-9223372036854775807L-1)
-#  define INTPTR_MAX		(9223372036854775807L)
-#  define UINTPTR_MAX		(18446744073709551615UL)
-# else
-#  define INTPTR_MIN		(-2147483647-1)
-#  define INTPTR_MAX		(2147483647)
-#  define UINTPTR_MAX		(4294967295U)
-# endif
-
-
-/* Minimum for largest signed integral type.  */
-# define INTMAX_MIN		(-__INT64_C(9223372036854775807)-1)
-/* Maximum for largest signed integral type.  */
-# define INTMAX_MAX		(__INT64_C(9223372036854775807))
-
-/* Maximum for largest unsigned integral type.  */
-# define UINTMAX_MAX		(__UINT64_C(18446744073709551615))
-
-
-/* Limits of other integer types.  */
-
-/* Limits of `ptrdiff_t' type.  */
-# if __WORDSIZE == 64
-#  define PTRDIFF_MIN		(-9223372036854775807L-1)
-#  define PTRDIFF_MAX		(9223372036854775807L)
-# else
-#  if __WORDSIZE32_PTRDIFF_LONG
-#   define PTRDIFF_MIN		(-2147483647L-1)
-#   define PTRDIFF_MAX		(2147483647L)
-#  else
-#   define PTRDIFF_MIN		(-2147483647-1)
-#   define PTRDIFF_MAX		(2147483647)
-#  endif
-# endif
-
-/* Limits of `sig_atomic_t'.  */
-# define SIG_ATOMIC_MIN		(-2147483647-1)
-# define SIG_ATOMIC_MAX		(2147483647)
-
-/* Limit of `size_t' type.  */
-# if __WORDSIZE == 64
-#  define SIZE_MAX		(18446744073709551615UL)
-# else
-#  if __WORDSIZE32_SIZE_ULONG
-#   define SIZE_MAX		(4294967295UL)
-#  else
-#   define SIZE_MAX		(4294967295U)
-#  endif
-# endif
-
-/* Limits of `wchar_t'.  */
-# ifndef WCHAR_MIN
-/* These constants might also be defined in <wchar.h>.  */
-#  define WCHAR_MIN		__WCHAR_MIN
-#  define WCHAR_MAX		__WCHAR_MAX
-# endif
-
-/* Limits of `wint_t'.  */
-# define WINT_MIN		(0u)
-# define WINT_MAX		(4294967295u)
-
-/* Signed.  */
-# define INT8_C(c)	c
-# define INT16_C(c)	c
-# define INT32_C(c)	c
-# if __WORDSIZE == 64
-#  define INT64_C(c)	c ## L
-# else
-#  define INT64_C(c)	c ## LL
-# endif
-
-/* Unsigned.  */
-# define UINT8_C(c)	c
-# define UINT16_C(c)	c
-# define UINT32_C(c)	c ## U
-# if __WORDSIZE == 64
-#  define UINT64_C(c)	c ## UL
-# else
-#  define UINT64_C(c)	c ## ULL
-# endif
-
-/* Maximal type.  */
-# if __WORDSIZE == 64
-#  define INTMAX_C(c)	c ## L
-#  define UINTMAX_C(c)	c ## UL
-# else
-#  define INTMAX_C(c)	c ## LL
-#  define UINTMAX_C(c)	c ## ULL
-# endif
-
-#if __GLIBC_USE (IEC_60559_BFP_EXT)
-
-# define INT8_WIDTH 8
-# define UINT8_WIDTH 8
-# define INT16_WIDTH 16
-# define UINT16_WIDTH 16
-# define INT32_WIDTH 32
-# define UINT32_WIDTH 32
-# define INT64_WIDTH 64
-# define UINT64_WIDTH 64
-
-# define INT_LEAST8_WIDTH 8
-# define UINT_LEAST8_WIDTH 8
-# define INT_LEAST16_WIDTH 16
-# define UINT_LEAST16_WIDTH 16
-# define INT_LEAST32_WIDTH 32
-# define UINT_LEAST32_WIDTH 32
-# define INT_LEAST64_WIDTH 64
-# define UINT_LEAST64_WIDTH 64
-
-# define INT_FAST8_WIDTH 8
-# define UINT_FAST8_WIDTH 8
-# define INT_FAST16_WIDTH __WORDSIZE
-# define UINT_FAST16_WIDTH __WORDSIZE
-# define INT_FAST32_WIDTH __WORDSIZE
-# define UINT_FAST32_WIDTH __WORDSIZE
-# define INT_FAST64_WIDTH 64
-# define UINT_FAST64_WIDTH 64
-
-# define INTPTR_WIDTH __WORDSIZE
-# define UINTPTR_WIDTH __WORDSIZE
-
-# define INTMAX_WIDTH 64
-# define UINTMAX_WIDTH 64
-
-# define PTRDIFF_WIDTH __WORDSIZE
-# define SIG_ATOMIC_WIDTH 32
-# define SIZE_WIDTH __WORDSIZE
-# define WCHAR_WIDTH 32
-# define WINT_WIDTH 32
-
-#endif
-
-#endif /* stdint.h */
diff --git a/sysdeps/generic/stdio-lock.h b/sysdeps/generic/stdio-lock.h
deleted file mode 100644
index 763c7d465a..0000000000
--- a/sysdeps/generic/stdio-lock.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* Thread package specific definitions of stream lock type.  Generic version.
-   Copyright (C) 2000-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _STDIO_LOCK_H
-#define _STDIO_LOCK_H 1
-
-#include <libc-lock.h>
-
-__libc_lock_define_recursive (typedef, _IO_lock_t)
-#define _IO_lock_t_defined 1
-
-/* We need recursive (counting) mutexes.  */
-#ifdef _LIBC_LOCK_RECURSIVE_INITIALIZER
-# define _IO_lock_initializer _LIBC_LOCK_RECURSIVE_INITIALIZER
-#elif _IO_MTSAFE_IO
- #error libio needs recursive mutexes for _IO_MTSAFE_IO
-#endif
-
-#define _IO_lock_init(_name)	__libc_lock_init_recursive (_name)
-#define _IO_lock_fini(_name)	__libc_lock_fini_recursive (_name)
-#define _IO_lock_lock(_name)	__libc_lock_lock_recursive (_name)
-#define _IO_lock_trylock(_name)	__libc_lock_trylock_recursive (_name)
-#define _IO_lock_unlock(_name)	__libc_lock_unlock_recursive (_name)
-
-
-#define _IO_cleanup_region_start(_fct, _fp) \
-  __libc_cleanup_region_start (((_fp)->_flags & _IO_USER_LOCK) == 0, _fct, _fp)
-#define _IO_cleanup_region_start_noarg(_fct) \
-  __libc_cleanup_region_start (1, _fct, NULL)
-#define _IO_cleanup_region_end(_doit) \
-  __libc_cleanup_region_end (_doit)
-
-#if defined _LIBC && IS_IN (libc)
-
-# ifdef __EXCEPTIONS
-# define _IO_acquire_lock(_fp) \
-  do {									      \
-    _IO_FILE *_IO_acquire_lock_file					      \
-	__attribute__((cleanup (_IO_acquire_lock_fct)))			      \
-	= (_fp);							      \
-    _IO_flockfile (_IO_acquire_lock_file);
-#  define _IO_acquire_lock_clear_flags2(_fp) \
-  do {									      \
-    _IO_FILE *_IO_acquire_lock_file					      \
-	__attribute__((cleanup (_IO_acquire_lock_clear_flags2_fct)))	      \
-	= (_fp);							      \
-    _IO_flockfile (_IO_acquire_lock_file);
-# else
-#  define _IO_acquire_lock(_fp) _IO_acquire_lock_needs_exceptions_enabled
-#  define _IO_acquire_lock_clear_flags2(_fp) _IO_acquire_lock (_fp)
-# endif
-# define _IO_release_lock(_fp) ; } while (0)
-
-#endif
-
-#endif /* stdio-lock.h */
diff --git a/sysdeps/generic/string_private.h b/sysdeps/generic/string_private.h
deleted file mode 100644
index e117a590f1..0000000000
--- a/sysdeps/generic/string_private.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Define _STRING_ARCH_unaligned.  Generic version.
-   Copyright (C) 2016-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* Define to 1 if architecture can access unaligned multi-byte
-   variables.  */
-#define _STRING_ARCH_unaligned   0
diff --git a/sysdeps/generic/symbol-hacks.h b/sysdeps/generic/symbol-hacks.h
deleted file mode 100644
index d614c099c9..0000000000
--- a/sysdeps/generic/symbol-hacks.h
+++ /dev/null
@@ -1,19 +0,0 @@
-/* Some compiler optimizations may transform loops into memset/memmove
-   calls and without proper declaration it may generate PLT calls.  */
-#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED
-asm ("memmove = __GI_memmove");
-asm ("memset = __GI_memset");
-asm ("memcpy = __GI_memcpy");
-
-/* Some targets do not use __stack_chk_fail_local.  In libc.so,
-   redirect __stack_chk_fail to a hidden reference
-   __stack_chk_fail_local, to avoid the PLT reference.
-   __stack_chk_fail itself is a global symbol, exported from libc.so,
-   and cannot be made hidden.  */
-
-# if IS_IN (libc) && defined SHARED && \
-  defined STACK_PROTECTOR_LEVEL && STACK_PROTECTOR_LEVEL > 0
-asm (".hidden __stack_chk_fail_local\n"
-     "__stack_chk_fail = __stack_chk_fail_local");
-# endif
-#endif
diff --git a/sysdeps/generic/sys/ptrace.h b/sysdeps/generic/sys/ptrace.h
deleted file mode 100644
index 2b5ce4d74d..0000000000
--- a/sysdeps/generic/sys/ptrace.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* `ptrace' debugger support interface.  Generic version; constants are common.
-   Copyright (C) 1991-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef	_PTRACE_H
-
-#define	_PTRACE_H	1
-#include <features.h>
-
-__BEGIN_DECLS
-
-
-/* Type of the REQUEST argument to `ptrace.'  */
-enum __ptrace_request
-{
-  /* Indicate that the process making this request should be traced.
-     All signals received by this process can be intercepted by its
-     parent, and its parent can use the other `ptrace' requests.  */
-  PTRACE_TRACEME = 0,
-#define PT_TRACE_ME PTRACE_TRACEME
-
-  /* Return the word in the process's text space at address ADDR.  */
-  PTRACE_PEEKTEXT,
-#define PT_READ_I PTRACE_PEEKTEXT
-
-  /* Return the word in the process's data space at address ADDR.  */
-  PTRACE_PEEKDATA,
-#define PT_READ_D PTRACE_PEEKDATA
-
-  /* Return the word in the process's user area at offset ADDR.  */
-  PTRACE_PEEKUSER,
-#define PT_READ_U PTRACE_PEEKUSER
-
-  /* Write the word DATA into the process's text space at address ADDR.  */
-  PTRACE_POKETEXT,
-#define PT_WRITE_I PTRACE_POKETEXT
-
-  /* Write the word DATA into the process's data space at address ADDR.  */
-  PTRACE_POKEDATA,
-#define PT_WRITE_D PTRACE_POKEDATA
-
-  /* Write the word DATA into the process's user space at offset ADDR.  */
-  PTRACE_POKEUSER,
-#define PT_WRITE_U PTRACE_POKEUSER
-
-  /* Continue the process.  */
-  PTRACE_CONT,
-#define PT_CONTINUE PTRACE_CONT
-
-  /* Kill the process.  */
-  PTRACE_KILL,
-#define PT_KILL PTRACE_KILL
-
-  /* Single step the process.
-     This is not supported on all machines.  */
-  PTRACE_SINGLESTEP,
-#define PT_STEP PTRACE_SINGLESTEP
-
-  /* Attach to a process that is already running. */
-  PTRACE_ATTACH,
-#define PT_ATTACH PTRACE_ATTACH
-
-  /* Detach from a process attached to with PTRACE_ATTACH.  */
-  PTRACE_DETACH,
-#define PT_DETACH PTRACE_DETACH
-
-  /* Get the process's registers (not including floating-point registers)
-     and put them in the `struct regs' (see <machine/regs.h>) at ADDR.  */
-  PTRACE_GETREGS = 12,
-
-  /* Set the process's registers (not including floating-point registers)
-     to the contents of the `struct regs' (see <machine/regs.h>) at ADDR.  */
-  PTRACE_SETREGS,
-
-  /* Get the process's floating point registers and put them
-     in the `struct fp_status' (see <machine/regs.h>) at ADDR.  */
-  PTRACE_GETFPREGS = 14,
-
-  /* Set the process's floating point registers to the contents
-     of the `struct fp_status' (see <machine/regs.h>) at ADDR.  */
-  PTRACE_SETFPREGS,
-
-  /* Read DATA bytes from the process's data space at address ADDR.
-     Put the result starting at address ADDR2 in the caller's
-     address space.  */
-  PTRACE_READDATA = 16,
-
-  /* Write DATA bytes from ADDR2 in the caller's address space into
-     the process's data space at address ADDR.  */
-  PTRACE_WRITEDATA,
-
-  /* Read DATA bytes from the process's text space at address ADDR.
-     Put the result starting at address ADDR2 in the caller's
-     address space.  */
-  PTRACE_READTEXT = 18,
-
-  /* Write DATA bytes from ADDR2 in the caller's address space into
-     the process's text space at address ADDR.  */
-  PTRACE_WRITETEXT,
-
-  /* Read the floating-point accelerator unit registers and
-     put them into the `struct fpa_regs' (see <machine/regs.h>) at ADDR.  */
-  PTRACE_GETFPAREGS = 20,
-
-  /* Write the floating-point accelerator unit registers from
-     the contents of the `struct fpa_regs' at ADDR.  */
-  PTRACE_SETFPAREGS
-};
-
-/* Perform process tracing functions.  REQUEST is one of the values
-   above, and determines the action to be taken.
-   For all requests except PTRACE_TRACEME, PID specifies the process to be
-   traced.
-
-   PID and the other arguments described above for the various requests should
-   appear (those that are used for the particular request) as:
-     pid_t PID, void *ADDR, int DATA, void *ADDR2
-   after REQUEST.  */
-extern int ptrace (enum __ptrace_request __request, ...);
-
-__END_DECLS
-
-#endif /* ptrace.h */
diff --git a/sysdeps/generic/sys/reboot.h b/sysdeps/generic/sys/reboot.h
deleted file mode 100644
index bada28dd6c..0000000000
--- a/sysdeps/generic/sys/reboot.h
+++ /dev/null
@@ -1,9 +0,0 @@
-/* This file should define RB_* macros to be used as flag
-   bits in the argument to the `reboot' system call.  */
-
-#ifndef _SYS_REBOOT_H
-#define _SYS_REBOOT_H
-
-#define RB_AUTOBOOT	0
-
-#endif	/* <sys/reboot.h> */
diff --git a/sysdeps/generic/sys/socketvar.h b/sysdeps/generic/sys/socketvar.h
deleted file mode 100644
index b177158d0b..0000000000
--- a/sysdeps/generic/sys/socketvar.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* This header is used on many systems but for GNU we have everything
-   already defined in the standard header.  */
-#include <sys/socket.h>
diff --git a/sysdeps/generic/sys/swap.h b/sysdeps/generic/sys/swap.h
deleted file mode 100644
index f86df4a607..0000000000
--- a/sysdeps/generic/sys/swap.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Calls to enable and disable swapping on specified locations.  Unix version.
-   Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef __SYS_SWAP_H
-
-#define __SYS_SWAP_H	1
-#include <features.h>
-
-
-/* Make the block special device PATH available to the system for swapping.
-   This call is restricted to the super-user.  */
-extern int swapon (const char *__path, int __flags) __THROW;
-
-/* Stop using block special device PATH for swapping.  */
-extern int swapoff (const char *__path) __THROW;
-
-#endif /* sys/swap.h */
diff --git a/sysdeps/generic/sys/syscall.h b/sysdeps/generic/sys/syscall.h
deleted file mode 100644
index 719bd08904..0000000000
--- a/sysdeps/generic/sys/syscall.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* For Unix-like systems, this file should contain definitions
-   of macros SYS_call for each system call, giving the call numbers.  */
diff --git a/sysdeps/generic/sys/sysinfo.h b/sysdeps/generic/sys/sysinfo.h
deleted file mode 100644
index 279493de7e..0000000000
--- a/sysdeps/generic/sys/sysinfo.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (C) 1996-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _SYS_SYSINFO_H
-#define _SYS_SYSINFO_H	1
-
-#include <features.h>
-
-__BEGIN_DECLS
-
-/* Return number of configured processors.  */
-extern int get_nprocs_conf (void) __THROW;
-
-/* Return number of available processors.  */
-extern int get_nprocs (void) __THROW;
-
-
-/* Return number of physical pages of memory in the system.  */
-extern long int get_phys_pages (void) __THROW;
-
-/* Return number of available physical pages of memory in the system.  */
-extern long int get_avphys_pages (void) __THROW;
-
-__END_DECLS
-
-#endif	/* sys/sysinfo.h */
diff --git a/sysdeps/generic/sys/ttydefaults.h b/sysdeps/generic/sys/ttydefaults.h
deleted file mode 100644
index 683dc8d805..0000000000
--- a/sysdeps/generic/sys/ttydefaults.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*-
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)ttydefaults.h	8.4 (Berkeley) 1/21/94
- */
-
-/*
- * System wide defaults for terminal state.  4.4 BSD/generic GNU version.
- */
-#ifndef _SYS_TTYDEFAULTS_H_
-#define	_SYS_TTYDEFAULTS_H_
-
-/*
- * Defaults on "first" open.
- */
-#define	TTYDEF_IFLAG	(BRKINT | ISTRIP | ICRNL | IMAXBEL | IXON | IXANY)
-#define TTYDEF_OFLAG	(OPOST | ONLCR | OXTABS)
-#define TTYDEF_LFLAG	(ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL)
-#define TTYDEF_CFLAG	(CREAD | CS7 | PARENB | HUPCL)
-#define TTYDEF_SPEED	(B9600)
-
-/*
- * Control Character Defaults
- */
-#define CTRL(x)	(x&037)
-#define	CEOF		CTRL('d')
-#ifdef _POSIX_VDISABLE
-# define CEOL		_POSIX_VDISABLE
-#else
-# define CEOL		((unsigned char)'\377')	/* XXX avoid _POSIX_VDISABLE */
-#endif
-#define	CERASE		0177
-#define	CINTR		CTRL('c')
-#ifdef _POSIX_VDISABLE
-# define CSTATUS	_POSIX_VDISABLE
-#else
-# define CSTATUS	((unsigned char)'\377')	/* XXX avoid _POSIX_VDISABLE */
-#endif
-#define	CKILL		CTRL('u')
-#define	CMIN		1
-#define	CQUIT		034		/* FS, ^\ */
-#define	CSUSP		CTRL('z')
-#define	CTIME		0
-#define	CDSUSP		CTRL('y')
-#define	CSTART		CTRL('q')
-#define	CSTOP		CTRL('s')
-#define	CLNEXT		CTRL('v')
-#define	CDISCARD 	CTRL('o')
-#define	CWERASE 	CTRL('w')
-#define	CREPRINT 	CTRL('r')
-#define	CEOT		CEOF
-/* compat */
-#define	CBRK		CEOL
-#define CRPRNT		CREPRINT
-#define	CFLUSH		CDISCARD
-
-/* PROTECTED INCLUSION ENDS HERE */
-#endif /* !_SYS_TTYDEFAULTS_H_ */
-
-/*
- * #define TTYDEFCHARS to include an array of default control characters.
- */
-#ifdef TTYDEFCHARS
-cc_t	ttydefchars[NCCS] = {
-	CEOF,	CEOL,	CEOL,	CERASE, CWERASE, CKILL, CREPRINT,
-	_POSIX_VDISABLE, CINTR,	CQUIT,	CSUSP,	CDSUSP,	CSTART,	CSTOP,	CLNEXT,
-	CDISCARD, CMIN,	CTIME,  CSTATUS, _POSIX_VDISABLE
-};
-#undef TTYDEFCHARS
-#endif
diff --git a/sysdeps/generic/sys/ucontext.h b/sysdeps/generic/sys/ucontext.h
deleted file mode 100644
index a64460c9ae..0000000000
--- a/sysdeps/generic/sys/ucontext.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Data structures for user-level context switching.  Generic version.
-   Copyright (C) 1997-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* This file's definitions suffice for any platform where all
-   the machine-specific state is described in `struct sigcontext'.  */
-
-#ifndef _SYS_UCONTEXT_H
-#define _SYS_UCONTEXT_H	1
-
-#include <features.h>
-
-#include <bits/types/sigset_t.h>
-#include <bits/sigcontext.h>
-#include <bits/types/stack_t.h>
-
-
-typedef struct sigcontext mcontext_t;
-
-/* Userlevel context.  */
-typedef struct ucontext
-  {
-    unsigned long int uc_flags;
-    struct ucontext *uc_link;
-    stack_t uc_stack;
-    mcontext_t uc_mcontext;
-    sigset_t uc_sigmask;
-  } ucontext_t;
-
-#endif /* sys/ucontext.h */
diff --git a/sysdeps/generic/sysdep-cancel.h b/sysdeps/generic/sysdep-cancel.h
deleted file mode 100644
index ba6a1e04ba..0000000000
--- a/sysdeps/generic/sysdep-cancel.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#include <sysdep.h>
-
-/* No multi-thread handling enabled.  */
-#define SINGLE_THREAD_P (1)
-#define RTLD_SINGLE_THREAD_P (1)
-#define LIBC_CANCEL_ASYNC()	0 /* Just a dummy value.  */
-#define LIBC_CANCEL_RESET(val)	((void)(val)) /* Nothing, but evaluate it.  */
-#define LIBC_CANCEL_HANDLED()	/* Nothing.  */
diff --git a/sysdeps/generic/sysdep.h b/sysdeps/generic/sysdep.h
deleted file mode 100644
index dfb34e3a3f..0000000000
--- a/sysdeps/generic/sysdep.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Generic asm macros used on many machines.
-   Copyright (C) 1991-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef C_LABEL
-
-/* Define a macro we can use to construct the asm name for a C symbol.  */
-# define C_LABEL(name)	name##:
-
-#endif
-
-#ifdef __ASSEMBLER__
-/* Mark the end of function named SYM.  This is used on some platforms
-   to generate correct debugging information.  */
-# ifndef END
-#  define END(sym)
-# endif
-
-# ifndef JUMPTARGET
-#  define JUMPTARGET(sym)	sym
-# endif
-#endif
-
-/* Makros to generate eh_frame unwind information.  */
-#ifdef __ASSEMBLER__
-# define cfi_startproc			.cfi_startproc
-# define cfi_endproc			.cfi_endproc
-# define cfi_def_cfa(reg, off)		.cfi_def_cfa reg, off
-# define cfi_def_cfa_register(reg)	.cfi_def_cfa_register reg
-# define cfi_def_cfa_offset(off)	.cfi_def_cfa_offset off
-# define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
-# define cfi_offset(reg, off)		.cfi_offset reg, off
-# define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
-# define cfi_register(r1, r2)		.cfi_register r1, r2
-# define cfi_return_column(reg)	.cfi_return_column reg
-# define cfi_restore(reg)		.cfi_restore reg
-# define cfi_same_value(reg)		.cfi_same_value reg
-# define cfi_undefined(reg)		.cfi_undefined reg
-# define cfi_remember_state		.cfi_remember_state
-# define cfi_restore_state		.cfi_restore_state
-# define cfi_window_save		.cfi_window_save
-# define cfi_personality(enc, exp)	.cfi_personality enc, exp
-# define cfi_lsda(enc, exp)		.cfi_lsda enc, exp
-
-#else /* ! ASSEMBLER */
-
-# define CFI_STRINGIFY(Name) CFI_STRINGIFY2 (Name)
-# define CFI_STRINGIFY2(Name) #Name
-# define CFI_STARTPROC	".cfi_startproc"
-# define CFI_ENDPROC	".cfi_endproc"
-# define CFI_DEF_CFA(reg, off)	\
-   ".cfi_def_cfa " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
-# define CFI_DEF_CFA_REGISTER(reg) \
-   ".cfi_def_cfa_register " CFI_STRINGIFY(reg)
-# define CFI_DEF_CFA_OFFSET(off) \
-   ".cfi_def_cfa_offset " CFI_STRINGIFY(off)
-# define CFI_ADJUST_CFA_OFFSET(off) \
-   ".cfi_adjust_cfa_offset " CFI_STRINGIFY(off)
-# define CFI_OFFSET(reg, off) \
-   ".cfi_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
-# define CFI_REL_OFFSET(reg, off) \
-   ".cfi_rel_offset " CFI_STRINGIFY(reg) "," CFI_STRINGIFY(off)
-# define CFI_REGISTER(r1, r2) \
-   ".cfi_register " CFI_STRINGIFY(r1) "," CFI_STRINGIFY(r2)
-# define CFI_RETURN_COLUMN(reg) \
-   ".cfi_return_column " CFI_STRINGIFY(reg)
-# define CFI_RESTORE(reg) \
-   ".cfi_restore " CFI_STRINGIFY(reg)
-# define CFI_UNDEFINED(reg) \
-   ".cfi_undefined " CFI_STRINGIFY(reg)
-# define CFI_REMEMBER_STATE \
-   ".cfi_remember_state"
-# define CFI_RESTORE_STATE \
-   ".cfi_restore_state"
-# define CFI_WINDOW_SAVE \
-   ".cfi_window_save"
-# define CFI_PERSONALITY(enc, exp) \
-   ".cfi_personality " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp)
-# define CFI_LSDA(enc, exp) \
-   ".cfi_lsda " CFI_STRINGIFY(enc) "," CFI_STRINGIFY(exp)
-#endif
-
-#include "dwarf2.h"
diff --git a/sysdeps/generic/thread_state.h b/sysdeps/generic/thread_state.h
deleted file mode 100644
index ca579ee493..0000000000
--- a/sysdeps/generic/thread_state.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Mach thread state definitions for machine-independent code.  Stub version.
-   Copyright (C) 1994-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* Everything else is called `thread_state', but CMU's header file is
-   called `thread_status'.  Oh boy.  */
-#include <mach/thread_state.h>
-
-/* Replace <machine> with "i386" or "mips" or whatever.  */
-
-#define MACHINE_THREAD_STATE_FLAVOR	<machine>_THREAD_STATE
-#define MACHINE_THREAD_STATE_COUNT	<machine>_THREAD_STATE_COUNT
-
-#define machine_thread_state <machine>_thread_state
-
-/* Define these to the member names in `struct <machine>_thread_state'
-   for the PC and stack pointer.  */
-#define PC ?
-#define SP ?
-
-/* This structure should contain all of the different flavors of thread
-   state structures which are meaningful for this machine.  Every machine's
-   definition of this structure should have a member `int set' which is a
-   bit mask (1 << FLAVOR) of the flavors of thread state in the structure
-   which are filled in; and a member `struct machine_thread_state basic'.
-   On some machines those are the only members (e.g. i386); on others,
-   there are several relevant flavors of thread state (e.g. mips).  */
-struct machine_thread_all_state
-  {
-    int set;			/* Mask of bits (1 << FLAVOR).  */
-    struct <machine>_thread_state basic;
-  };
diff --git a/sysdeps/generic/tininess.h b/sysdeps/generic/tininess.h
deleted file mode 100644
index bafdaacd15..0000000000
--- a/sysdeps/generic/tininess.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Specify architecture-specific rules for determining tininess of
-   floating-point results.  Generic version.
-   Copyright (C) 2012-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifndef _TININESS_H
-#define _TININESS_H	1
-
-/* Under IEEE 754, an architecture may determine tininess of
-   floating-point results either "before rounding" or "after
-   rounding", but must do so in the same way for all operations
-   returning binary results.  Define TININESS_AFTER_ROUNDING to 1 for
-   "after rounding" architectures, 0 for "before rounding"
-   architectures.  The test stdlib/tst-tininess will fail if the
-   definition is incorrect.  */
-
-#define TININESS_AFTER_ROUNDING	0
-
-#endif /* tininess.h */
diff --git a/sysdeps/generic/tls-macros.h b/sysdeps/generic/tls-macros.h
deleted file mode 100644
index 0a08f7c145..0000000000
--- a/sysdeps/generic/tls-macros.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Macros to support TLS testing in times of missing compiler support.
-   Stub version.
-
-   These macros should yield int * expressions for the TLS symbol X
-   accessed using the various TLS access models.  Macros for some machines
-   are defined in elf/tls-macros.h, but ports can instead provide this file.
-
-#define TLS_LE(x)
-#define TLS_IE(x)
-#define TLS_LD(x)
-#define TLS_GD(x)
-*/
diff --git a/sysdeps/generic/tls.h b/sysdeps/generic/tls.h
deleted file mode 100644
index 90c5c792ff..0000000000
--- a/sysdeps/generic/tls.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Definition for thread-local data handling.  Generic version.
-   Copyright (C) 2002-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* An architecture-specific version of this file has to defined a
-   number of symbols:
-
-     TLS_TCB_AT_TP  or  TLS_DTV_AT_TP
-
-     The presence of one of these symbols signals which variant of
-     the TLS ABI is used.  There are in the moment two variants
-     available:
-
-     * the thread pointer points to a thread control block
-
-     * the thread pointer points to the dynamic thread vector
-
-
-     TLS_TCB_SIZE
-
-     This is the size of the thread control block structure.  How
-     this is actually defined depends on the ABI.  The thread control
-     block could be internal descriptor of the thread library or
-     just a data structure which allows finding the DTV.
-
-     TLS_INIT_TCB_SIZE
-
-     Similarly, but this value is only used at startup and in the
-     dynamic linker itself.  There are no threads in use at that time.
-
-
-     TLS_TCB_ALIGN
-
-     Alignment requirements for the TCB structure.
-
-     TLS_INIT_TCB_ALIGN
-
-     Similarly, but for the structure used at startup time.
-
-
-     INSTALL_DTV(tcb, init_dtv)
-
-     This macro must install the given initial DTV into the thread control
-     block TCB.  The normal runtime functionality must then be able to
-     use the value.
-
-
-     TLS_INIT_TP(tcb)
-
-     This macro must initialize the thread pointer to enable normal TLS
-     operation.  The parameter is a pointer to the thread control block.
-     ld.so calls this macro once.
-
-
-     THREAD_DTV()
-
-     This macro returns the address of the DTV of the current thread.
-     This normally is done using the thread register which points
-     to the dtv or the TCB (from which the DTV can found).
-  */
diff --git a/sysdeps/generic/tst-audit.h b/sysdeps/generic/tst-audit.h
deleted file mode 100644
index 45bc6039b2..0000000000
--- a/sysdeps/generic/tst-audit.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Machines can supply a tst-audit.h to define these macros used in
-   elf/tst-auditmod1.c.
-
-
-# define pltenter la_CPU_gnu_pltenter
-# define pltexit la_CPU_gnu_pltexit
-# define La_regs La_CPU_regs
-# define La_retval La_CPU_retval
-# define int_retval lrv_RETVALREG
-
-*/
diff --git a/sysdeps/generic/tst-stack-align.h b/sysdeps/generic/tst-stack-align.h
deleted file mode 100644
index 2433b8beaf..0000000000
--- a/sysdeps/generic/tst-stack-align.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Copyright (C) 2003-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <stdio.h>
-#include <stdint.h>
-
-#define TEST_STACK_ALIGN() \
-  ({									     \
-    double _d = 12.0;							     \
-    long double _ld = 15.0;						     \
-    int _ret = 0;							     \
-    printf ("double:  %g %p %zu\n", _d, &_d, __alignof (double));	     \
-    if ((((uintptr_t) &_d) & (__alignof (double) - 1)) != 0)		     \
-      _ret = 1;								     \
-									     \
-    printf ("ldouble: %Lg %p %zu\n", _ld, &_ld, __alignof (long double));    \
-    if ((((uintptr_t) &_ld) & (__alignof (long double) - 1)) != 0)	     \
-      _ret = 1;								     \
-    _ret;								     \
-    })
diff --git a/sysdeps/generic/unsecvars.h b/sysdeps/generic/unsecvars.h
deleted file mode 100644
index 5ea8a4a259..0000000000
--- a/sysdeps/generic/unsecvars.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#if !HAVE_TUNABLES
-# define GLIBC_TUNABLES_ENVVAR "GLIBC_TUNABLES\0"
-#else
-# define GLIBC_TUNABLES_ENVVAR
-#endif
-
-/* Environment variable to be removed for SUID programs.  The names are
-   all stuffed in a single string which means they have to be terminated
-   with a '\0' explicitly.  */
-#define UNSECURE_ENVVARS \
-  "GCONV_PATH\0"							      \
-  "GETCONF_DIR\0"							      \
-  GLIBC_TUNABLES_ENVVAR							      \
-  "HOSTALIASES\0"							      \
-  "LD_AUDIT\0"								      \
-  "LD_DEBUG\0"								      \
-  "LD_DEBUG_OUTPUT\0"							      \
-  "LD_DYNAMIC_WEAK\0"							      \
-  "LD_HWCAP_MASK\0"							      \
-  "LD_LIBRARY_PATH\0"							      \
-  "LD_ORIGIN_PATH\0"							      \
-  "LD_PRELOAD\0"							      \
-  "LD_PROFILE\0"							      \
-  "LD_SHOW_AUXV\0"							      \
-  "LD_USE_LOAD_BIAS\0"							      \
-  "LOCALDOMAIN\0"							      \
-  "LOCPATH\0"								      \
-  "MALLOC_TRACE\0"							      \
-  "NIS_PATH\0"								      \
-  "NLSPATH\0"								      \
-  "RESOLV_HOST_CONF\0"							      \
-  "RES_OPTIONS\0"							      \
-  "TMPDIR\0"								      \
-  "TZDIR\0"
diff --git a/sysdeps/generic/unwind-dw2-fde-glibc.c b/sysdeps/generic/unwind-dw2-fde-glibc.c
deleted file mode 100644
index 9d698d575b..0000000000
--- a/sysdeps/generic/unwind-dw2-fde-glibc.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/* Copyright (C) 2001-2017 Free Software Foundation, Inc.
-   Contributed by Jakub Jelinek <jakub@redhat.com>.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-/* Locate the FDE entry for a given address, using PT_GNU_EH_FRAME ELF
-   segment and dl_iterate_phdr to avoid register/deregister calls at
-   DSO load/unload.  */
-
-#ifdef _LIBC
-# include <shlib-compat.h>
-#endif
-
-#if !defined _LIBC || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2_5)
-
-#include <link.h>
-#include <stddef.h>
-
-#define _Unwind_Find_FDE _Unwind_Find_registered_FDE
-
-#include <unwind-dw2-fde.c>
-
-#undef _Unwind_Find_FDE
-
-extern fde * _Unwind_Find_registered_FDE (void *pc,
-					  struct dwarf_eh_bases *bases);
-extern fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
-
-struct unw_eh_callback_data
-{
-  _Unwind_Ptr pc;
-  void *tbase;
-  void *dbase;
-  void *func;
-  fde *ret;
-};
-
-struct unw_eh_frame_hdr
-{
-  unsigned char version;
-  unsigned char eh_frame_ptr_enc;
-  unsigned char fde_count_enc;
-  unsigned char table_enc;
-};
-
-/* Like base_of_encoded_value, but take the base from a struct object
-   instead of an _Unwind_Context.  */
-
-static _Unwind_Ptr
-base_from_cb_data (unsigned char encoding, struct unw_eh_callback_data *data)
-{
-  if (encoding == DW_EH_PE_omit)
-    return 0;
-
-  switch (encoding & 0x70)
-    {
-    case DW_EH_PE_absptr:
-    case DW_EH_PE_pcrel:
-    case DW_EH_PE_aligned:
-      return 0;
-
-    case DW_EH_PE_textrel:
-      return (_Unwind_Ptr) data->tbase;
-    case DW_EH_PE_datarel:
-      return (_Unwind_Ptr) data->dbase;
-    }
-  abort ();
-}
-
-static int
-_Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
-{
-  struct unw_eh_callback_data *data = (struct unw_eh_callback_data *) ptr;
-  const ElfW(Phdr) *phdr, *p_eh_frame_hdr;
-  const ElfW(Phdr) *p_dynamic __attribute__ ((unused));
-  long n, match;
-  _Unwind_Ptr load_base;
-  const unsigned char *p;
-  const struct unw_eh_frame_hdr *hdr;
-  _Unwind_Ptr eh_frame;
-  struct object ob;
-
-  /* Make sure struct dl_phdr_info is at least as big as we need.  */
-  if (size < offsetof (struct dl_phdr_info, dlpi_phnum)
-	     + sizeof (info->dlpi_phnum))
-    return -1;
-
-  match = 0;
-  phdr = info->dlpi_phdr;
-  load_base = info->dlpi_addr;
-  p_eh_frame_hdr = NULL;
-  p_dynamic = NULL;
-
-  /* See if PC falls into one of the loaded segments.  Find the eh_frame
-     segment at the same time.  */
-  for (n = info->dlpi_phnum; --n >= 0; phdr++)
-    {
-      if (phdr->p_type == PT_LOAD)
-	{
-	  _Unwind_Ptr vaddr = phdr->p_vaddr + load_base;
-	  if (data->pc >= vaddr && data->pc < vaddr + phdr->p_memsz)
-	    match = 1;
-	}
-      else if (phdr->p_type == PT_GNU_EH_FRAME)
-	p_eh_frame_hdr = phdr;
-      else if (phdr->p_type == PT_DYNAMIC)
-	p_dynamic = phdr;
-    }
-  if (!match || !p_eh_frame_hdr)
-    return 0;
-
-  /* Read .eh_frame_hdr header.  */
-  hdr = (const struct unw_eh_frame_hdr *)
-	(p_eh_frame_hdr->p_vaddr + load_base);
-  if (hdr->version != 1)
-    return 1;
-
-#ifdef CRT_GET_RFIB_DATA
-# ifdef __i386__
-  data->dbase = NULL;
-  if (p_dynamic)
-    {
-      /* For dynamicly linked executables and shared libraries,
-	 DT_PLTGOT is the gp value for that object.  */
-      ElfW(Dyn) *dyn = (ElfW(Dyn) *)(p_dynamic->p_vaddr + load_base);
-      for (; dyn->d_tag != DT_NULL ; dyn++)
-	if (dyn->d_tag == DT_PLTGOT)
-	  {
-	    /* On IA-32, _DYNAMIC is writable and GLIBC has relocated it.  */
-	    data->dbase = (void *) dyn->d_un.d_ptr;
-	    break;
-	  }
-    }
-# else
-#  error What is DW_EH_PE_datarel base on this platform?
-# endif
-#endif
-#ifdef CRT_GET_RFIB_TEXT
-# error What is DW_EH_PE_textrel base on this platform?
-#endif
-
-  p = read_encoded_value_with_base (hdr->eh_frame_ptr_enc,
-				    base_from_cb_data (hdr->eh_frame_ptr_enc,
-						       data),
-				    (const unsigned char *) (hdr + 1),
-				    &eh_frame);
-
-  /* We require here specific table encoding to speed things up.
-     Also, DW_EH_PE_datarel here means using PT_GNU_EH_FRAME start
-     as base, not the processor specific DW_EH_PE_datarel.  */
-  if (hdr->fde_count_enc != DW_EH_PE_omit
-      && hdr->table_enc == (DW_EH_PE_datarel | DW_EH_PE_sdata4))
-    {
-      _Unwind_Ptr fde_count;
-
-      p = read_encoded_value_with_base (hdr->fde_count_enc,
-					base_from_cb_data (hdr->fde_count_enc,
-							   data),
-					p, &fde_count);
-      /* Shouldn't happen.  */
-      if (fde_count == 0)
-	return 1;
-      if ((((_Unwind_Ptr) p) & 3) == 0)
-	{
-	  struct fde_table {
-	    signed initial_loc __attribute__ ((mode (SI)));
-	    signed fde __attribute__ ((mode (SI)));
-	  };
-	  const struct fde_table *table = (const struct fde_table *) p;
-	  size_t lo, hi, mid;
-	  _Unwind_Ptr data_base = (_Unwind_Ptr) hdr;
-	  fde *f;
-	  unsigned int f_enc, f_enc_size;
-	  _Unwind_Ptr range;
-
-	  mid = fde_count - 1;
-	  if (data->pc < table[0].initial_loc + data_base)
-	    return 1;
-	  else if (data->pc < table[mid].initial_loc + data_base)
-	    {
-	      lo = 0;
-	      hi = mid;
-
-	      while (lo < hi)
-		{
-		  mid = (lo + hi) / 2;
-		  if (data->pc < table[mid].initial_loc + data_base)
-		    hi = mid;
-		  else if (data->pc >= table[mid + 1].initial_loc + data_base)
-		    lo = mid + 1;
-		  else
-		    break;
-		}
-
-	      if (lo >= hi)
-		__gxx_abort ();
-	    }
-
-	  f = (fde *) (table[mid].fde + data_base);
-	  f_enc = get_fde_encoding (f);
-	  f_enc_size = size_of_encoded_value (f_enc);
-	  read_encoded_value_with_base (f_enc & 0x0f, 0,
-					&f->pc_begin[f_enc_size], &range);
-	  if (data->pc < table[mid].initial_loc + data_base + range)
-	    data->ret = f;
-	  data->func = (void *) (table[mid].initial_loc + data_base);
-	  return 1;
-	}
-    }
-
-  /* We have no sorted search table, so need to go the slow way.
-     As soon as GLIBC will provide API so to notify that a library has been
-     removed, we could cache this (and thus use search_object).  */
-  ob.pc_begin = NULL;
-  ob.tbase = data->tbase;
-  ob.dbase = data->dbase;
-  ob.u.single = (fde *) eh_frame;
-  ob.s.i = 0;
-  ob.s.b.mixed_encoding = 1;  /* Need to assume worst case.  */
-  data->ret = linear_search_fdes (&ob, (fde *) eh_frame, (void *) data->pc);
-  if (data->ret != NULL)
-    {
-      unsigned int encoding = get_fde_encoding (data->ret);
-      _Unwind_Ptr func;
-      read_encoded_value_with_base (encoding,
-				    base_from_cb_data (encoding, data),
-				    data->ret->pc_begin, &func);
-      data->func = (void *) func;
-    }
-  return 1;
-}
-
-# ifdef _LIBC
-# define dl_iterate_phdr __dl_iterate_phdr
-# endif
-
-fde *
-_Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases)
-{
-  struct unw_eh_callback_data data;
-  fde *ret;
-
-  ret = _Unwind_Find_registered_FDE (pc, bases);
-  if (ret != NULL)
-    return ret;
-
-  data.pc = (_Unwind_Ptr) pc;
-  data.tbase = NULL;
-  data.dbase = NULL;
-  data.func = NULL;
-  data.ret = NULL;
-
-  if (dl_iterate_phdr (_Unwind_IteratePhdrCallback, &data) < 0)
-    return NULL;
-
-  if (data.ret)
-    {
-      bases->tbase = data.tbase;
-      bases->dbase = data.dbase;
-      bases->func = data.func;
-    }
-  return data.ret;
-}
-
-#endif
diff --git a/sysdeps/generic/unwind-dw2-fde.c b/sysdeps/generic/unwind-dw2-fde.c
deleted file mode 100644
index 104a2552b4..0000000000
--- a/sysdeps/generic/unwind-dw2-fde.c
+++ /dev/null
@@ -1,1079 +0,0 @@
-/* Subroutines needed for unwinding stack frames for exception handling.  */
-/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   Contributed by Jason Merrill <jason@cygnus.com>.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifdef _LIBC
-# include <shlib-compat.h>
-#endif
-
-#if !defined _LIBC || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2_5)
-
-#ifdef _LIBC
-#include <stdlib.h>
-#include <string.h>
-#include <libc-lock.h>
-#include <dwarf2.h>
-#include <unwind.h>
-#define NO_BASE_OF_ENCODED_VALUE
-#include <unwind-pe.h>
-#include <unwind-dw2-fde.h>
-#else
-#ifndef _Unwind_Find_FDE
-#include "tconfig.h"
-#include "tsystem.h"
-#include "dwarf2.h"
-#include "unwind.h"
-#define NO_BASE_OF_ENCODED_VALUE
-#include "unwind-pe.h"
-#include "unwind-dw2-fde.h"
-#include "gthr.h"
-#endif
-#endif
-
-/* The unseen_objects list contains objects that have been registered
-   but not yet categorized in any way.  The seen_objects list has had
-   it's pc_begin and count fields initialized at minimum, and is sorted
-   by decreasing value of pc_begin.  */
-static struct object *unseen_objects;
-static struct object *seen_objects;
-
-#ifdef _LIBC
-
-__libc_lock_define_initialized (static, object_mutex)
-#define init_object_mutex_once()
-#define __gthread_mutex_lock(m) __libc_lock_lock (*(m))
-#define __gthread_mutex_unlock(m) __libc_lock_unlock (*(m))
-
-void __register_frame_info_bases (void *begin, struct object *ob,
-				  void *tbase, void *dbase);
-hidden_proto (__register_frame_info_bases)
-void __register_frame_info_table_bases (void *begin,
-					struct object *ob,
-					void *tbase, void *dbase);
-hidden_proto (__register_frame_info_table_bases)
-void *__deregister_frame_info_bases (void *begin);
-hidden_proto (__deregister_frame_info_bases)
-
-#else
-
-#ifdef __GTHREAD_MUTEX_INIT
-static __gthread_mutex_t object_mutex = __GTHREAD_MUTEX_INIT;
-#else
-static __gthread_mutex_t object_mutex;
-#endif
-
-#ifdef __GTHREAD_MUTEX_INIT_FUNCTION
-static void
-init_object_mutex (void)
-{
-  __GTHREAD_MUTEX_INIT_FUNCTION (&object_mutex);
-}
-
-static void
-init_object_mutex_once (void)
-{
-  static __gthread_once_t once = __GTHREAD_ONCE_INIT;
-  __gthread_once (&once, init_object_mutex);
-}
-#else
-#define init_object_mutex_once()
-#endif
-
-#endif /* _LIBC */
-
-/* Called from crtbegin.o to register the unwind info for an object.  */
-
-void
-__register_frame_info_bases (void *begin, struct object *ob,
-			     void *tbase, void *dbase)
-{
-  /* If .eh_frame is empty, don't register at all.  */
-  if (*(uword *) begin == 0)
-    return;
-
-  ob->pc_begin = (void *)-1;
-  ob->tbase = tbase;
-  ob->dbase = dbase;
-  ob->u.single = begin;
-  ob->s.i = 0;
-  ob->s.b.encoding = DW_EH_PE_omit;
-#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
-  ob->fde_end = NULL;
-#endif
-
-  init_object_mutex_once ();
-  __gthread_mutex_lock (&object_mutex);
-
-  ob->next = unseen_objects;
-  unseen_objects = ob;
-
-  __gthread_mutex_unlock (&object_mutex);
-}
-hidden_def (__register_frame_info_bases)
-
-void
-__register_frame_info (void *begin, struct object *ob)
-{
-  __register_frame_info_bases (begin, ob, 0, 0);
-}
-
-void
-__register_frame (void *begin)
-{
-  struct object *ob;
-
-  /* If .eh_frame is empty, don't register at all.  */
-  if (*(uword *) begin == 0)
-    return;
-
-  ob = (struct object *) malloc (sizeof (struct object));
-  __register_frame_info_bases (begin, ob, 0, 0);
-}
-
-/* Similar, but BEGIN is actually a pointer to a table of unwind entries
-   for different translation units.  Called from the file generated by
-   collect2.  */
-
-void
-__register_frame_info_table_bases (void *begin, struct object *ob,
-				   void *tbase, void *dbase)
-{
-  ob->pc_begin = (void *)-1;
-  ob->tbase = tbase;
-  ob->dbase = dbase;
-  ob->u.array = begin;
-  ob->s.i = 0;
-  ob->s.b.from_array = 1;
-  ob->s.b.encoding = DW_EH_PE_omit;
-
-  init_object_mutex_once ();
-  __gthread_mutex_lock (&object_mutex);
-
-  ob->next = unseen_objects;
-  unseen_objects = ob;
-
-  __gthread_mutex_unlock (&object_mutex);
-}
-hidden_def (__register_frame_info_table_bases)
-
-void
-__register_frame_info_table (void *begin, struct object *ob)
-{
-  __register_frame_info_table_bases (begin, ob, 0, 0);
-}
-
-void
-__register_frame_table (void *begin)
-{
-  struct object *ob = (struct object *) malloc (sizeof (struct object));
-  __register_frame_info_table_bases (begin, ob, 0, 0);
-}
-
-/* Called from crtbegin.o to deregister the unwind info for an object.  */
-/* ??? Glibc has for a while now exported __register_frame_info and
-   __deregister_frame_info.  If we call __register_frame_info_bases
-   from crtbegin (wherein it is declared weak), and this object does
-   not get pulled from libgcc.a for other reasons, then the
-   invocation of __deregister_frame_info will be resolved from glibc.
-   Since the registration did not happen there, we'll abort.
-
-   Therefore, declare a new deregistration entry point that does the
-   exact same thing, but will resolve to the same library as
-   implements __register_frame_info_bases.  */
-
-void *
-__deregister_frame_info_bases (void *begin)
-{
-  struct object **p;
-  struct object *ob = 0;
-  struct fde_vector *tofree = NULL;
-
-  /* If .eh_frame is empty, we haven't registered.  */
-  if (*(uword *) begin == 0)
-    return ob;
-
-  init_object_mutex_once ();
-  __gthread_mutex_lock (&object_mutex);
-
-  for (p = &unseen_objects; *p ; p = &(*p)->next)
-    if ((*p)->u.single == begin)
-      {
-	ob = *p;
-	*p = ob->next;
-	goto out;
-      }
-
-  for (p = &seen_objects; *p ; p = &(*p)->next)
-    if ((*p)->s.b.sorted)
-      {
-	if ((*p)->u.sort->orig_data == begin)
-	  {
-	    ob = *p;
-	    *p = ob->next;
-	    tofree = ob->u.sort;
-	    goto out;
-	  }
-      }
-    else
-      {
-	if ((*p)->u.single == begin)
-	  {
-	    ob = *p;
-	    *p = ob->next;
-	    goto out;
-	  }
-      }
-
-  __gthread_mutex_unlock (&object_mutex);
-  abort ();
-
- out:
-  __gthread_mutex_unlock (&object_mutex);
-  free (tofree);
-  return (void *) ob;
-}
-hidden_def (__deregister_frame_info_bases)
-
-void *
-__deregister_frame_info (void *begin)
-{
-  return __deregister_frame_info_bases (begin);
-}
-
-void
-__deregister_frame (void *begin)
-{
-  /* If .eh_frame is empty, we haven't registered.  */
-  if (*(uword *) begin != 0)
-    free (__deregister_frame_info_bases (begin));
-}
-
-
-/* Like base_of_encoded_value, but take the base from a struct object
-   instead of an _Unwind_Context.  */
-
-static _Unwind_Ptr
-base_from_object (unsigned char encoding, struct object *ob)
-{
-  if (encoding == DW_EH_PE_omit)
-    return 0;
-
-  switch (encoding & 0x70)
-    {
-    case DW_EH_PE_absptr:
-    case DW_EH_PE_pcrel:
-    case DW_EH_PE_aligned:
-      return 0;
-
-    case DW_EH_PE_textrel:
-      return (_Unwind_Ptr) ob->tbase;
-    case DW_EH_PE_datarel:
-      return (_Unwind_Ptr) ob->dbase;
-    }
-  abort ();
-}
-
-/* Return the FDE pointer encoding from the CIE.  */
-/* ??? This is a subset of extract_cie_info from unwind-dw2.c.  */
-
-static int
-get_cie_encoding (struct dwarf_cie *cie)
-{
-  const unsigned char *aug, *p;
-  _Unwind_Ptr dummy;
-  _Unwind_Word utmp;
-  _Unwind_Sword stmp;
-
-  aug = cie->augmentation;
-  if (aug[0] != 'z')
-    return DW_EH_PE_absptr;
-
-  /* Skip the augmentation string.  */
-  p = aug + strlen ((const char *) aug) + 1;
-  p = read_uleb128 (p, &utmp);		/* Skip code alignment.  */
-  p = read_sleb128 (p, &stmp);		/* Skip data alignment.  */
-  p++;					/* Skip return address column.  */
-
-  aug++;				/* Skip 'z' */
-  p = read_uleb128 (p, &utmp);		/* Skip augmentation length.  */
-  while (1)
-    {
-      /* This is what we're looking for.  */
-      if (*aug == 'R')
-	return *p;
-      /* Personality encoding and pointer.  */
-      else if (*aug == 'P')
-	{
-	  /* ??? Avoid dereferencing indirect pointers, since we're
-	     faking the base address.  Gotta keep DW_EH_PE_aligned
-	     intact, however.  */
-	  p = read_encoded_value_with_base (*p & 0x7F, 0, p + 1, &dummy);
-	}
-      /* LSDA encoding.  */
-      else if (*aug == 'L')
-	p++;
-      /* Otherwise end of string, or unknown augmentation.  */
-      else
-	return DW_EH_PE_absptr;
-      aug++;
-    }
-}
-
-static inline int
-get_fde_encoding (struct dwarf_fde *f)
-{
-  return get_cie_encoding (get_cie (f));
-}
-
-
-/* Sorting an array of FDEs by address.
-   (Ideally we would have the linker sort the FDEs so we don't have to do
-   it at run time. But the linkers are not yet prepared for this.)  */
-
-/* Return the Nth pc_begin value from FDE x.  */
-
-static inline _Unwind_Ptr
-get_pc_begin (fde *x, size_t n)
-{
-  _Unwind_Ptr p;
-  memcpy (&p, x->pc_begin + n * sizeof (_Unwind_Ptr), sizeof (_Unwind_Ptr));
-  return p;
-}
-
-/* Comparison routines.  Three variants of increasing complexity.  */
-
-static int
-fde_unencoded_compare (struct object *ob __attribute__((unused)),
-		       fde *x, fde *y)
-{
-  _Unwind_Ptr x_ptr = get_pc_begin (x, 0);
-  _Unwind_Ptr y_ptr = get_pc_begin (y, 0);
-
-  if (x_ptr > y_ptr)
-    return 1;
-  if (x_ptr < y_ptr)
-    return -1;
-  return 0;
-}
-
-static int
-fde_single_encoding_compare (struct object *ob, fde *x, fde *y)
-{
-  _Unwind_Ptr base, x_ptr, y_ptr;
-
-  base = base_from_object (ob->s.b.encoding, ob);
-  read_encoded_value_with_base (ob->s.b.encoding, base, x->pc_begin, &x_ptr);
-  read_encoded_value_with_base (ob->s.b.encoding, base, y->pc_begin, &y_ptr);
-
-  if (x_ptr > y_ptr)
-    return 1;
-  if (x_ptr < y_ptr)
-    return -1;
-  return 0;
-}
-
-static int
-fde_mixed_encoding_compare (struct object *ob, fde *x, fde *y)
-{
-  int x_encoding, y_encoding;
-  _Unwind_Ptr x_ptr, y_ptr;
-
-  x_encoding = get_fde_encoding (x);
-  read_encoded_value_with_base (x_encoding, base_from_object (x_encoding, ob),
-				x->pc_begin, &x_ptr);
-
-  y_encoding = get_fde_encoding (y);
-  read_encoded_value_with_base (y_encoding, base_from_object (y_encoding, ob),
-				y->pc_begin, &y_ptr);
-
-  if (x_ptr > y_ptr)
-    return 1;
-  if (x_ptr < y_ptr)
-    return -1;
-  return 0;
-}
-
-typedef int (*fde_compare_t) (struct object *, fde *, fde *);
-
-
-/* This is a special mix of insertion sort and heap sort, optimized for
-   the data sets that actually occur. They look like
-   101 102 103 127 128 105 108 110 190 111 115 119 125 160 126 129 130.
-   I.e. a linearly increasing sequence (coming from functions in the text
-   section), with additionally a few unordered elements (coming from functions
-   in gnu_linkonce sections) whose values are higher than the values in the
-   surrounding linear sequence (but not necessarily higher than the values
-   at the end of the linear sequence!).
-   The worst-case total run time is O(N) + O(n log (n)), where N is the
-   total number of FDEs and n is the number of erratic ones.  */
-
-struct fde_accumulator
-{
-  struct fde_vector *linear;
-  struct fde_vector *erratic;
-};
-
-static int
-start_fde_sort (struct fde_accumulator *accu, size_t count)
-{
-  size_t size;
-  if (! count)
-    return 0;
-
-  size = sizeof (struct fde_vector) + sizeof (fde *) * count;
-  if ((accu->linear = (struct fde_vector *) malloc (size)))
-    {
-      accu->linear->count = 0;
-      if ((accu->erratic = (struct fde_vector *) malloc (size)))
-	accu->erratic->count = 0;
-      return 1;
-    }
-  else
-    return 0;
-}
-
-static inline void
-fde_insert (struct fde_accumulator *accu, fde *this_fde)
-{
-  if (accu->linear)
-    accu->linear->array[accu->linear->count++] = this_fde;
-}
-
-/* Split LINEAR into a linear sequence with low values and an erratic
-   sequence with high values, put the linear one (of longest possible
-   length) into LINEAR and the erratic one into ERRATIC. This is O(N).
-
-   Because the longest linear sequence we are trying to locate within the
-   incoming LINEAR array can be interspersed with (high valued) erratic
-   entries.  We construct a chain indicating the sequenced entries.
-   To avoid having to allocate this chain, we overlay it onto the space of
-   the ERRATIC array during construction.  A final pass iterates over the
-   chain to determine what should be placed in the ERRATIC array, and
-   what is the linear sequence.  This overlay is safe from aliasing.  */
-
-static void
-fde_split (struct object *ob, fde_compare_t fde_compare,
-	   struct fde_vector *linear, struct fde_vector *erratic)
-{
-  static fde *marker;
-  size_t count = linear->count;
-  fde **chain_end = &marker;
-  size_t i, j, k;
-
-  /* This should optimize out, but it is wise to make sure this assumption
-     is correct. Should these have different sizes, we cannot cast between
-     them and the overlaying onto ERRATIC will not work.  */
-  if (sizeof (fde *) != sizeof (fde **))
-    abort ();
-
-  for (i = 0; i < count; i++)
-    {
-      fde **probe;
-
-      for (probe = chain_end;
-	   probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0;
-	   probe = chain_end)
-	{
-	  chain_end = (fde **) erratic->array[probe - linear->array];
-	  erratic->array[probe - linear->array] = NULL;
-	}
-      erratic->array[i] = (fde *) chain_end;
-      chain_end = &linear->array[i];
-    }
-
-  /* Each entry in LINEAR which is part of the linear sequence we have
-     discovered will correspond to a non-NULL entry in the chain we built in
-     the ERRATIC array.  */
-  for (i = j = k = 0; i < count; i++)
-    if (erratic->array[i])
-      linear->array[j++] = linear->array[i];
-    else
-      erratic->array[k++] = linear->array[i];
-  linear->count = j;
-  erratic->count = k;
-}
-
-/* This is O(n log(n)).  BSD/OS defines heapsort in stdlib.h, so we must
-   use a name that does not conflict.  */
-
-static void
-frame_heapsort (struct object *ob, fde_compare_t fde_compare,
-		struct fde_vector *erratic)
-{
-  /* For a description of this algorithm, see:
-     Samuel P. Harbison, Guy L. Steele Jr.: C, a reference manual, 2nd ed.,
-     p. 60-61.  */
-  fde ** a = erratic->array;
-  /* A portion of the array is called a "heap" if for all i>=0:
-     If i and 2i+1 are valid indices, then a[i] >= a[2i+1].
-     If i and 2i+2 are valid indices, then a[i] >= a[2i+2].  */
-#define SWAP(x,y) do { fde * tmp = x; x = y; y = tmp; } while (0)
-  size_t n = erratic->count;
-  size_t m = n;
-  size_t i;
-
-  while (m > 0)
-    {
-      /* Invariant: a[m..n-1] is a heap.  */
-      m--;
-      for (i = m; 2*i+1 < n; )
-	{
-	  if (2*i+2 < n
-	      && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
-	      && fde_compare (ob, a[2*i+2], a[i]) > 0)
-	    {
-	      SWAP (a[i], a[2*i+2]);
-	      i = 2*i+2;
-	    }
-	  else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
-	    {
-	      SWAP (a[i], a[2*i+1]);
-	      i = 2*i+1;
-	    }
-	  else
-	    break;
-	}
-    }
-  while (n > 1)
-    {
-      /* Invariant: a[0..n-1] is a heap.  */
-      n--;
-      SWAP (a[0], a[n]);
-      for (i = 0; 2*i+1 < n; )
-	{
-	  if (2*i+2 < n
-	      && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0
-	      && fde_compare (ob, a[2*i+2], a[i]) > 0)
-	    {
-	      SWAP (a[i], a[2*i+2]);
-	      i = 2*i+2;
-	    }
-	  else if (fde_compare (ob, a[2*i+1], a[i]) > 0)
-	    {
-	      SWAP (a[i], a[2*i+1]);
-	      i = 2*i+1;
-	    }
-	  else
-	    break;
-	}
-    }
-#undef SWAP
-}
-
-/* Merge V1 and V2, both sorted, and put the result into V1.  */
-static void
-fde_merge (struct object *ob, fde_compare_t fde_compare,
-	   struct fde_vector *v1, struct fde_vector *v2)
-{
-  size_t i1, i2;
-  fde * fde2;
-
-  i2 = v2->count;
-  if (i2 > 0)
-    {
-      i1 = v1->count;
-      do
-	{
-	  i2--;
-	  fde2 = v2->array[i2];
-	  while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0)
-	    {
-	      v1->array[i1+i2] = v1->array[i1-1];
-	      i1--;
-	    }
-	  v1->array[i1+i2] = fde2;
-	}
-      while (i2 > 0);
-      v1->count += v2->count;
-    }
-}
-
-static void
-end_fde_sort (struct object *ob, struct fde_accumulator *accu, size_t count)
-{
-  fde_compare_t fde_compare;
-
-  if (accu->linear->count != count)
-    abort ();
-
-  if (ob->s.b.mixed_encoding)
-    fde_compare = fde_mixed_encoding_compare;
-  else if (ob->s.b.encoding == DW_EH_PE_absptr)
-    fde_compare = fde_unencoded_compare;
-  else
-    fde_compare = fde_single_encoding_compare;
-
-  if (accu->erratic)
-    {
-      fde_split (ob, fde_compare, accu->linear, accu->erratic);
-      if (accu->linear->count + accu->erratic->count != count)
-	abort ();
-      frame_heapsort (ob, fde_compare, accu->erratic);
-      fde_merge (ob, fde_compare, accu->linear, accu->erratic);
-      free (accu->erratic);
-    }
-  else
-    {
-      /* We've not managed to malloc an erratic array,
-	 so heap sort in the linear one.  */
-      frame_heapsort (ob, fde_compare, accu->linear);
-    }
-}
-
-
-/* Update encoding, mixed_encoding, and pc_begin for OB for the
-   fde array beginning at THIS_FDE.  Return the number of fdes
-   encountered along the way.  */
-
-static size_t
-classify_object_over_fdes (struct object *ob, fde *this_fde)
-{
-  struct dwarf_cie *last_cie = 0;
-  size_t count = 0;
-  int encoding = DW_EH_PE_absptr;
-  _Unwind_Ptr base = 0;
-
-  for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
-    {
-      struct dwarf_cie *this_cie;
-      _Unwind_Ptr mask, pc_begin;
-
-      /* Skip CIEs.  */
-      if (this_fde->CIE_delta == 0)
-	continue;
-
-      /* Determine the encoding for this FDE.  Note mixed encoded
-	 objects for later.  */
-      this_cie = get_cie (this_fde);
-      if (this_cie != last_cie)
-	{
-	  last_cie = this_cie;
-	  encoding = get_cie_encoding (this_cie);
-	  base = base_from_object (encoding, ob);
-	  if (ob->s.b.encoding == DW_EH_PE_omit)
-	    ob->s.b.encoding = encoding;
-	  else if (ob->s.b.encoding != encoding)
-	    ob->s.b.mixed_encoding = 1;
-	}
-
-      read_encoded_value_with_base (encoding, base, this_fde->pc_begin,
-				    &pc_begin);
-
-      /* Take care to ignore link-once functions that were removed.
-	 In these cases, the function address will be NULL, but if
-	 the encoding is smaller than a pointer a true NULL may not
-	 be representable.  Assume 0 in the representable bits is NULL.  */
-      mask = size_of_encoded_value (encoding);
-      if (mask < sizeof (void *))
-	mask = (1L << (mask << 3)) - 1;
-      else
-	mask = -1;
-
-      if ((pc_begin & mask) == 0)
-	continue;
-
-      count += 1;
-      if ((void *) pc_begin < ob->pc_begin)
-	ob->pc_begin = (void *) pc_begin;
-    }
-
-  return count;
-}
-
-static void
-add_fdes (struct object *ob, struct fde_accumulator *accu, fde *this_fde)
-{
-  struct dwarf_cie *last_cie = 0;
-  int encoding = ob->s.b.encoding;
-  _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob);
-
-  for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
-    {
-      struct dwarf_cie *this_cie;
-
-      /* Skip CIEs.  */
-      if (this_fde->CIE_delta == 0)
-	continue;
-
-      if (ob->s.b.mixed_encoding)
-	{
-	  /* Determine the encoding for this FDE.  Note mixed encoded
-	     objects for later.  */
-	  this_cie = get_cie (this_fde);
-	  if (this_cie != last_cie)
-	    {
-	      last_cie = this_cie;
-	      encoding = get_cie_encoding (this_cie);
-	      base = base_from_object (encoding, ob);
-	    }
-	}
-
-      if (encoding == DW_EH_PE_absptr)
-	{
-	  if (get_pc_begin (this_fde, 0) == 0)
-	    continue;
-	}
-      else
-	{
-	  _Unwind_Ptr pc_begin, mask;
-
-	  read_encoded_value_with_base (encoding, base, this_fde->pc_begin,
-					&pc_begin);
-
-	  /* Take care to ignore link-once functions that were removed.
-	     In these cases, the function address will be NULL, but if
-	     the encoding is smaller than a pointer a true NULL may not
-	     be representable.  Assume 0 in the representable bits is NULL.  */
-	  mask = size_of_encoded_value (encoding);
-	  if (mask < sizeof (void *))
-	    mask = (1L << (mask << 3)) - 1;
-	  else
-	    mask = -1;
-
-	  if ((pc_begin & mask) == 0)
-	    continue;
-	}
-
-      fde_insert (accu, this_fde);
-    }
-}
-
-/* Set up a sorted array of pointers to FDEs for a loaded object.  We
-   count up the entries before allocating the array because it's likely to
-   be faster.  We can be called multiple times, should we have failed to
-   allocate a sorted fde array on a previous occasion.  */
-
-static void
-init_object (struct object* ob)
-{
-  struct fde_accumulator accu;
-  size_t count;
-
-  count = ob->s.b.count;
-  if (count == 0)
-    {
-      if (ob->s.b.from_array)
-	{
-	  fde **p = ob->u.array;
-	  for (count = 0; *p; ++p)
-	    count += classify_object_over_fdes (ob, *p);
-	}
-      else
-	count = classify_object_over_fdes (ob, ob->u.single);
-
-      /* The count field we have in the main struct object is somewhat
-	 limited, but should suffice for virtually all cases.  If the
-	 counted value doesn't fit, re-write a zero.  The worst that
-	 happens is that we re-count next time -- admittedly non-trivial
-	 in that this implies some 2M fdes, but at least we function.  */
-      ob->s.b.count = count;
-      if (ob->s.b.count != count)
-	ob->s.b.count = 0;
-    }
-
-  if (!start_fde_sort (&accu, count))
-    return;
-
-  if (ob->s.b.from_array)
-    {
-      fde **p;
-      for (p = ob->u.array; *p; ++p)
-	add_fdes (ob, &accu, *p);
-    }
-  else
-    add_fdes (ob, &accu, ob->u.single);
-
-  end_fde_sort (ob, &accu, count);
-
-  /* Save the original fde pointer, since this is the key by which the
-     DSO will deregister the object.  */
-  accu.linear->orig_data = ob->u.single;
-  ob->u.sort = accu.linear;
-
-  ob->s.b.sorted = 1;
-}
-
-/* A linear search through a set of FDEs for the given PC.  This is
-   used when there was insufficient memory to allocate and sort an
-   array.  */
-
-static fde *
-linear_search_fdes (struct object *ob, fde *this_fde, void *pc)
-{
-  struct dwarf_cie *last_cie = 0;
-  int encoding = ob->s.b.encoding;
-  _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob);
-
-  for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde))
-    {
-      struct dwarf_cie *this_cie;
-      _Unwind_Ptr pc_begin, pc_range;
-
-      /* Skip CIEs.  */
-      if (this_fde->CIE_delta == 0)
-	continue;
-
-      if (ob->s.b.mixed_encoding)
-	{
-	  /* Determine the encoding for this FDE.  Note mixed encoded
-	     objects for later.  */
-	  this_cie = get_cie (this_fde);
-	  if (this_cie != last_cie)
-	    {
-	      last_cie = this_cie;
-	      encoding = get_cie_encoding (this_cie);
-	      base = base_from_object (encoding, ob);
-	    }
-	}
-
-      if (encoding == DW_EH_PE_absptr)
-	{
-	  pc_begin = get_pc_begin (this_fde, 0);
-	  pc_range = get_pc_begin (this_fde, 1);
-	  if (pc_begin == 0)
-	    continue;
-	}
-      else
-	{
-	  _Unwind_Ptr mask;
-	  const unsigned char *p;
-
-	  p = read_encoded_value_with_base (encoding, base,
-					    this_fde->pc_begin, &pc_begin);
-	  read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
-
-	  /* Take care to ignore link-once functions that were removed.
-	     In these cases, the function address will be NULL, but if
-	     the encoding is smaller than a pointer a true NULL may not
-	     be representable.  Assume 0 in the representable bits is NULL.  */
-	  mask = size_of_encoded_value (encoding);
-	  if (mask < sizeof (void *))
-	    mask = (1L << (mask << 3)) - 1;
-	  else
-	    mask = -1;
-
-	  if ((pc_begin & mask) == 0)
-	    continue;
-	}
-
-      if ((_Unwind_Ptr) pc - pc_begin < pc_range)
-	return this_fde;
-    }
-
-  return NULL;
-}
-
-/* Binary search for an FDE containing the given PC.  Here are three
-   implementations of increasing complexity.  */
-
-static fde *
-binary_search_unencoded_fdes (struct object *ob, void *pc)
-{
-  struct fde_vector *vec = ob->u.sort;
-  size_t lo, hi;
-
-  for (lo = 0, hi = vec->count; lo < hi; )
-    {
-      size_t i = (lo + hi) / 2;
-      fde *f = vec->array[i];
-      void *pc_begin;
-      uaddr pc_range;
-
-      pc_begin = (void *) get_pc_begin (f, 0);
-      pc_range = (uaddr) get_pc_begin (f, 1);
-
-      if (pc < pc_begin)
-	hi = i;
-      else if (pc >= pc_begin + pc_range)
-	lo = i + 1;
-      else
-	return f;
-    }
-
-  return NULL;
-}
-
-static fde *
-binary_search_single_encoding_fdes (struct object *ob, void *pc)
-{
-  struct fde_vector *vec = ob->u.sort;
-  int encoding = ob->s.b.encoding;
-  _Unwind_Ptr base = base_from_object (encoding, ob);
-  size_t lo, hi;
-
-  for (lo = 0, hi = vec->count; lo < hi; )
-    {
-      size_t i = (lo + hi) / 2;
-      fde *f = vec->array[i];
-      _Unwind_Ptr pc_begin, pc_range;
-      const unsigned char *p;
-
-      p = read_encoded_value_with_base (encoding, base, f->pc_begin,
-					&pc_begin);
-      read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
-
-      if ((_Unwind_Ptr) pc < pc_begin)
-	hi = i;
-      else if ((_Unwind_Ptr) pc >= pc_begin + pc_range)
-	lo = i + 1;
-      else
-	return f;
-    }
-
-  return NULL;
-}
-
-static fde *
-binary_search_mixed_encoding_fdes (struct object *ob, void *pc)
-{
-  struct fde_vector *vec = ob->u.sort;
-  size_t lo, hi;
-
-  for (lo = 0, hi = vec->count; lo < hi; )
-    {
-      size_t i = (lo + hi) / 2;
-      fde *f = vec->array[i];
-      _Unwind_Ptr pc_begin, pc_range;
-      const unsigned char *p;
-      int encoding;
-
-      encoding = get_fde_encoding (f);
-      p = read_encoded_value_with_base (encoding,
-					base_from_object (encoding, ob),
-					f->pc_begin, &pc_begin);
-      read_encoded_value_with_base (encoding & 0x0F, 0, p, &pc_range);
-
-      if ((_Unwind_Ptr) pc < pc_begin)
-	hi = i;
-      else if ((_Unwind_Ptr) pc >= pc_begin + pc_range)
-	lo = i + 1;
-      else
-	return f;
-    }
-
-  return NULL;
-}
-
-static fde *
-search_object (struct object* ob, void *pc)
-{
-  /* If the data hasn't been sorted, try to do this now.  We may have
-     more memory available than last time we tried.  */
-  if (! ob->s.b.sorted)
-    {
-      init_object (ob);
-
-      /* Despite the above comment, the normal reason to get here is
-	 that we've not processed this object before.  A quick range
-	 check is in order.  */
-      if (pc < ob->pc_begin)
-	return NULL;
-    }
-
-  if (ob->s.b.sorted)
-    {
-      if (ob->s.b.mixed_encoding)
-	return binary_search_mixed_encoding_fdes (ob, pc);
-      else if (ob->s.b.encoding == DW_EH_PE_absptr)
-	return binary_search_unencoded_fdes (ob, pc);
-      else
-	return binary_search_single_encoding_fdes (ob, pc);
-    }
-  else
-    {
-      /* Long slow labourious linear search, cos we've no memory.  */
-      if (ob->s.b.from_array)
-	{
-	  fde **p;
-	  for (p = ob->u.array; *p ; p++)
-	    {
-	      fde *f = linear_search_fdes (ob, *p, pc);
-	      if (f)
-		return f;
-	    }
-	  return NULL;
-	}
-      else
-	return linear_search_fdes (ob, ob->u.single, pc);
-    }
-}
-
-fde *
-_Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases)
-{
-  struct object *ob;
-  fde *f = NULL;
-
-  init_object_mutex_once ();
-  __gthread_mutex_lock (&object_mutex);
-
-  /* Linear search through the classified objects, to find the one
-     containing the pc.  Note that pc_begin is sorted descending, and
-     we expect objects to be non-overlapping.  */
-  for (ob = seen_objects; ob; ob = ob->next)
-    if (pc >= ob->pc_begin)
-      {
-	f = search_object (ob, pc);
-	if (f)
-	  goto fini;
-	break;
-      }
-
-  /* Classify and search the objects we've not yet processed.  */
-  while ((ob = unseen_objects))
-    {
-      struct object **p;
-
-      unseen_objects = ob->next;
-      f = search_object (ob, pc);
-
-      /* Insert the object into the classified list.  */
-      for (p = &seen_objects; *p ; p = &(*p)->next)
-	if ((*p)->pc_begin < ob->pc_begin)
-	  break;
-      ob->next = *p;
-      *p = ob;
-
-      if (f)
-	goto fini;
-    }
-
- fini:
-  __gthread_mutex_unlock (&object_mutex);
-
-  if (f)
-    {
-      int encoding;
-      _Unwind_Ptr func;
-
-      bases->tbase = ob->tbase;
-      bases->dbase = ob->dbase;
-
-      encoding = ob->s.b.encoding;
-      if (ob->s.b.mixed_encoding)
-	encoding = get_fde_encoding (f);
-      read_encoded_value_with_base (encoding, base_from_object (encoding, ob),
-				    f->pc_begin, &func);
-      bases->func = (void *) func;
-    }
-
-  return f;
-}
-
-#endif
diff --git a/sysdeps/generic/unwind-dw2-fde.h b/sysdeps/generic/unwind-dw2-fde.h
deleted file mode 100644
index 941ab80d7b..0000000000
--- a/sysdeps/generic/unwind-dw2-fde.h
+++ /dev/null
@@ -1,169 +0,0 @@
-/* Subroutines needed for unwinding stack frames for exception handling.  */
-/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
-   Contributed by Jason Merrill <jason@cygnus.com>.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-
-struct fde_vector
-{
-  void *orig_data;
-  size_t count;
-  struct dwarf_fde *array __flexarr;
-};
-
-#ifdef _LIBC
-#include <gccframe.h>
-#else
-struct object
-{
-  void *pc_begin;
-  void *tbase;
-  void *dbase;
-  union {
-    struct dwarf_fde *single;
-    struct dwarf_fde **array;
-    struct fde_vector *sort;
-  } u;
-
-  union {
-    struct {
-      unsigned long sorted : 1;
-      unsigned long from_array : 1;
-      unsigned long mixed_encoding : 1;
-      unsigned long encoding : 8;
-      /* ??? Wish there was an easy way to detect a 64-bit host here;
-	 we've got 32 bits left to play with...  */
-      unsigned long count : 21;
-    } b;
-    size_t i;
-  } s;
-
-#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
-  char *fde_end;
-#endif
-
-  struct object *next;
-};
-#endif
-
-/* This is the original definition of struct object.  While the struct
-   itself was opaque to users, they did know how large it was, and
-   allocate one statically in crtbegin for each DSO.  Keep this around
-   so that we're aware of the static size limitations for the new struct.  */
-struct old_object
-{
-  void *pc_begin;
-  void *pc_end;
-  struct dwarf_fde *fde_begin;
-  struct dwarf_fde **fde_array;
-  size_t count;
-  struct old_object *next;
-};
-
-struct dwarf_eh_bases
-{
-  void *tbase;
-  void *dbase;
-  void *func;
-};
-
-
-extern void __register_frame_info_bases (void *, struct object *,
-					 void *, void *);
-extern void __register_frame_info (void *, struct object *);
-extern void __register_frame (void *);
-extern void __register_frame_info_table_bases (void *, struct object *,
-					       void *, void *);
-extern void __register_frame_info_table (void *, struct object *);
-extern void __register_frame_table (void *);
-extern void *__deregister_frame_info (void *);
-extern void *__deregister_frame_info_bases (void *);
-extern void __deregister_frame (void *);
-
-
-typedef          int  sword __attribute__ ((mode (SI)));
-typedef unsigned int  uword __attribute__ ((mode (SI)));
-typedef unsigned int  uaddr __attribute__ ((mode (pointer)));
-typedef          int  saddr __attribute__ ((mode (pointer)));
-typedef unsigned char ubyte;
-
-/* Terminology:
-   CIE - Common Information Element
-   FDE - Frame Descriptor Element
-
-   There is one per function, and it describes where the function code
-   is located, and what the register lifetimes and stack layout are
-   within the function.
-
-   The data structures are defined in the DWARF specification, although
-   not in a very readable way (see LITERATURE).
-
-   Every time an exception is thrown, the code needs to locate the FDE
-   for the current function, and starts to look for exception regions
-   from that FDE. This works in a two-level search:
-   a) in a linear search, find the shared image (i.e. DLL) containing
-      the PC
-   b) using the FDE table for that shared object, locate the FDE using
-      binary search (which requires the sorting).  */
-
-/* The first few fields of a CIE.  The CIE_id field is 0 for a CIE,
-   to distinguish it from a valid FDE.  FDEs are aligned to an addressing
-   unit boundary, but the fields within are unaligned.  */
-struct dwarf_cie
-{
-  uword length;
-  sword CIE_id;
-  ubyte version;
-  unsigned char augmentation __flexarr;
-} __attribute__ ((packed, aligned (__alignof__ (void *))));
-
-/* The first few fields of an FDE.  */
-struct dwarf_fde
-{
-  uword length;
-  sword CIE_delta;
-  unsigned char pc_begin __flexarr;
-} __attribute__ ((packed, aligned (__alignof__ (void *))));
-
-typedef struct dwarf_fde fde;
-
-/* Locate the CIE for a given FDE.  */
-
-static inline struct dwarf_cie *
-get_cie (struct dwarf_fde *f)
-{
-  return (void *)&f->CIE_delta - f->CIE_delta;
-}
-
-static inline fde *
-next_fde (fde *f)
-{
-  return (fde *) ((char *) f + f->length + sizeof (f->length));
-}
-
-extern fde * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
-
-static inline int
-last_fde (struct object *obj __attribute__ ((__unused__)), fde *f)
-{
-#ifdef DWARF2_OBJECT_END_PTR_EXTENSION
-  return (char *)f == obj->fde_end || f->length == 0;
-#else
-  return f->length == 0;
-#endif
-}
diff --git a/sysdeps/generic/unwind-dw2.c b/sysdeps/generic/unwind-dw2.c
deleted file mode 100644
index 42b23517d5..0000000000
--- a/sysdeps/generic/unwind-dw2.c
+++ /dev/null
@@ -1,1306 +0,0 @@
-/* DWARF2 exception handling and frame unwind runtime interface routines.
-   Copyright (C) 1997-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-#ifdef _LIBC
-#include <stdlib.h>
-#include <string.h>
-#include <error.h>
-#include <libintl.h>
-#include <dwarf2.h>
-#include <stdio.h>
-#include <unwind.h>
-#include <unwind-pe.h>
-#include <unwind-dw2-fde.h>
-#else
-#include "tconfig.h"
-#include "tsystem.h"
-#include "dwarf2.h"
-#include "unwind.h"
-#include "unwind-pe.h"
-#include "unwind-dw2-fde.h"
-#include "gthr.h"
-#endif
-
-
-
-#ifndef STACK_GROWS_DOWNWARD
-#define STACK_GROWS_DOWNWARD 0
-#else
-#undef STACK_GROWS_DOWNWARD
-#define STACK_GROWS_DOWNWARD 1
-#endif
-
-/* A target can override (perhaps for backward compatibility) how
-   many dwarf2 columns are unwound.  */
-#ifndef DWARF_FRAME_REGISTERS
-#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER
-#endif
-
-/* Dwarf frame registers used for pre gcc 3.0 compiled glibc.  */
-#ifndef PRE_GCC3_DWARF_FRAME_REGISTERS
-#define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS
-#endif
-
-/* This is the register and unwind state for a particular frame.  This
-   provides the information necessary to unwind up past a frame and return
-   to its caller.  */
-struct _Unwind_Context
-{
-  void *reg[DWARF_FRAME_REGISTERS+1];
-  void *cfa;
-  void *ra;
-  void *lsda;
-  struct dwarf_eh_bases bases;
-  _Unwind_Word args_size;
-};
-
-#ifndef _LIBC
-/* Byte size of every register managed by these routines.  */
-static unsigned char dwarf_reg_size_table[DWARF_FRAME_REGISTERS];
-#endif
-
-
-/* The result of interpreting the frame unwind info for a frame.
-   This is all symbolic at this point, as none of the values can
-   be resolved until the target pc is located.  */
-typedef struct
-{
-  /* Each register save state can be described in terms of a CFA slot,
-     another register, or a location expression.  */
-  struct frame_state_reg_info
-  {
-    struct {
-      union {
-	_Unwind_Word reg;
-	_Unwind_Sword offset;
-	const unsigned char *exp;
-      } loc;
-      enum {
-	REG_UNSAVED,
-	REG_SAVED_OFFSET,
-	REG_SAVED_REG,
-	REG_SAVED_EXP,
-      } how;
-    } reg[DWARF_FRAME_REGISTERS+1];
-
-    /* Used to implement DW_CFA_remember_state.  */
-    struct frame_state_reg_info *prev;
-  } regs;
-
-  /* The CFA can be described in terms of a reg+offset or a
-     location expression.  */
-  _Unwind_Sword cfa_offset;
-  _Unwind_Word cfa_reg;
-  const unsigned char *cfa_exp;
-  enum {
-    CFA_UNSET,
-    CFA_REG_OFFSET,
-    CFA_EXP,
-  } cfa_how;
-
-  /* The PC described by the current frame state.  */
-  void *pc;
-
-  /* The information we care about from the CIE/FDE.  */
-  _Unwind_Personality_Fn personality;
-  _Unwind_Sword data_align;
-  _Unwind_Word code_align;
-  unsigned char retaddr_column;
-  unsigned char fde_encoding;
-  unsigned char lsda_encoding;
-  unsigned char saw_z;
-  void *eh_ptr;
-} _Unwind_FrameState;
-
-/* Read unaligned data from the instruction buffer.  */
-
-union unaligned
-{
-  void *p;
-  unsigned u2 __attribute__ ((mode (HI)));
-  unsigned u4 __attribute__ ((mode (SI)));
-  unsigned u8 __attribute__ ((mode (DI)));
-  signed s2 __attribute__ ((mode (HI)));
-  signed s4 __attribute__ ((mode (SI)));
-  signed s8 __attribute__ ((mode (DI)));
-} __attribute__ ((packed));
-
-static inline void *
-read_pointer (const void *p) { const union unaligned *up = p; return up->p; }
-
-static inline int
-read_1u (const void *p) { return *(const unsigned char *) p; }
-
-static inline int
-read_1s (const void *p) { return *(const signed char *) p; }
-
-static inline int
-read_2u (const void *p) { const union unaligned *up = p; return up->u2; }
-
-static inline int
-read_2s (const void *p) { const union unaligned *up = p; return up->s2; }
-
-static inline unsigned int
-read_4u (const void *p) { const union unaligned *up = p; return up->u4; }
-
-static inline int
-read_4s (const void *p) { const union unaligned *up = p; return up->s4; }
-
-static inline unsigned long
-read_8u (const void *p) { const union unaligned *up = p; return up->u8; }
-
-static inline unsigned long
-read_8s (const void *p) { const union unaligned *up = p; return up->s8; }
-
-/* Get the value of register REG as saved in CONTEXT.  */
-
-inline _Unwind_Word
-_Unwind_GetGR (struct _Unwind_Context *context, int index)
-{
-  /* This will segfault if the register hasn't been saved.  */
-  return * (_Unwind_Word *) context->reg[index];
-}
-
-/* Get the value of the CFA as saved in CONTEXT.  */
-
-_Unwind_Word
-_Unwind_GetCFA (struct _Unwind_Context *context)
-{
-  return (_Unwind_Ptr) context->cfa;
-}
-
-/* Overwrite the saved value for register REG in CONTEXT with VAL.  */
-
-inline void
-_Unwind_SetGR (struct _Unwind_Context *context, int index, _Unwind_Word val)
-{
-  * (_Unwind_Word *) context->reg[index] = val;
-}
-
-/* Retrieve the return address for CONTEXT.  */
-
-inline _Unwind_Ptr
-_Unwind_GetIP (struct _Unwind_Context *context)
-{
-  return (_Unwind_Ptr) context->ra;
-}
-
-/* Overwrite the return address for CONTEXT with VAL.  */
-
-inline void
-_Unwind_SetIP (struct _Unwind_Context *context, _Unwind_Ptr val)
-{
-  context->ra = (void *) val;
-}
-
-void *
-_Unwind_GetLanguageSpecificData (struct _Unwind_Context *context)
-{
-  return context->lsda;
-}
-
-_Unwind_Ptr
-_Unwind_GetRegionStart (struct _Unwind_Context *context)
-{
-  return (_Unwind_Ptr) context->bases.func;
-}
-
-void *
-_Unwind_FindEnclosingFunction (void *pc)
-{
-  struct dwarf_eh_bases bases;
-  struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases);
-  if (fde)
-    return bases.func;
-  else
-    return NULL;
-}
-
-#ifndef __ia64__
-_Unwind_Ptr
-_Unwind_GetDataRelBase (struct _Unwind_Context *context)
-{
-  return (_Unwind_Ptr) context->bases.dbase;
-}
-
-_Unwind_Ptr
-_Unwind_GetTextRelBase (struct _Unwind_Context *context)
-{
-  return (_Unwind_Ptr) context->bases.tbase;
-}
-#endif
-
-/* Extract any interesting information from the CIE for the translation
-   unit F belongs to.  Return a pointer to the byte after the augmentation,
-   or NULL if we encountered an undecipherable augmentation.  */
-
-static const unsigned char *
-extract_cie_info (struct dwarf_cie *cie, struct _Unwind_Context *context,
-		  _Unwind_FrameState *fs)
-{
-  const unsigned char *aug = cie->augmentation;
-  const unsigned char *p = aug + strlen ((const char *) aug) + 1;
-  const unsigned char *ret = NULL;
-  _Unwind_Word utmp;
-
-  /* g++ v2 "eh" has pointer immediately following augmentation string,
-     so it must be handled first.  */
-  if (aug[0] == 'e' && aug[1] == 'h')
-    {
-      fs->eh_ptr = read_pointer (p);
-      p += sizeof (void *);
-      aug += 2;
-    }
-
-  /* Immediately following the augmentation are the code and
-     data alignment and return address column.  */
-  p = read_uleb128 (p, &fs->code_align);
-  p = read_sleb128 (p, &fs->data_align);
-  fs->retaddr_column = *p++;
-  fs->lsda_encoding = DW_EH_PE_omit;
-
-  /* If the augmentation starts with 'z', then a uleb128 immediately
-     follows containing the length of the augmentation field following
-     the size.  */
-  if (*aug == 'z')
-    {
-      p = read_uleb128 (p, &utmp);
-      ret = p + utmp;
-
-      fs->saw_z = 1;
-      ++aug;
-    }
-
-  /* Iterate over recognized augmentation subsequences.  */
-  while (*aug != '\0')
-    {
-      /* "L" indicates a byte showing how the LSDA pointer is encoded.  */
-      if (aug[0] == 'L')
-	{
-	  fs->lsda_encoding = *p++;
-	  aug += 1;
-	}
-
-      /* "R" indicates a byte indicating how FDE addresses are encoded.  */
-      else if (aug[0] == 'R')
-	{
-	  fs->fde_encoding = *p++;
-	  aug += 1;
-	}
-
-      /* "P" indicates a personality routine in the CIE augmentation.  */
-      else if (aug[0] == 'P')
-	{
-	  _Unwind_Ptr personality;
-	  p = read_encoded_value (context, *p, p + 1, &personality);
-	  fs->personality = (_Unwind_Personality_Fn) personality;
-	  aug += 1;
-	}
-
-      /* Otherwise we have an unknown augmentation string.
-	 Bail unless we saw a 'z' prefix.  */
-      else
-	return ret;
-    }
-
-  return ret ? ret : p;
-}
-
-#ifndef _LIBC
-/* Decode a DW_OP stack program.  Return the top of stack.  Push INITIAL
-   onto the stack to start.  */
-
-static _Unwind_Word
-execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
-		  struct _Unwind_Context *context, _Unwind_Word initial)
-{
-  _Unwind_Word stack[64];	/* ??? Assume this is enough.  */
-  int stack_elt;
-
-  stack[0] = initial;
-  stack_elt = 1;
-
-  while (op_ptr < op_end)
-    {
-      enum dwarf_location_atom op = *op_ptr++;
-      _Unwind_Word result, reg, utmp;
-      _Unwind_Sword offset, stmp;
-
-      switch (op)
-	{
-	case DW_OP_lit0:
-	case DW_OP_lit1:
-	case DW_OP_lit2:
-	case DW_OP_lit3:
-	case DW_OP_lit4:
-	case DW_OP_lit5:
-	case DW_OP_lit6:
-	case DW_OP_lit7:
-	case DW_OP_lit8:
-	case DW_OP_lit9:
-	case DW_OP_lit10:
-	case DW_OP_lit11:
-	case DW_OP_lit12:
-	case DW_OP_lit13:
-	case DW_OP_lit14:
-	case DW_OP_lit15:
-	case DW_OP_lit16:
-	case DW_OP_lit17:
-	case DW_OP_lit18:
-	case DW_OP_lit19:
-	case DW_OP_lit20:
-	case DW_OP_lit21:
-	case DW_OP_lit22:
-	case DW_OP_lit23:
-	case DW_OP_lit24:
-	case DW_OP_lit25:
-	case DW_OP_lit26:
-	case DW_OP_lit27:
-	case DW_OP_lit28:
-	case DW_OP_lit29:
-	case DW_OP_lit30:
-	case DW_OP_lit31:
-	  result = op - DW_OP_lit0;
-	  break;
-
-	case DW_OP_addr:
-	  result = (_Unwind_Word) (_Unwind_Ptr) read_pointer (op_ptr);
-	  op_ptr += sizeof (void *);
-	  break;
-
-	case DW_OP_const1u:
-	  result = read_1u (op_ptr);
-	  op_ptr += 1;
-	  break;
-	case DW_OP_const1s:
-	  result = read_1s (op_ptr);
-	  op_ptr += 1;
-	  break;
-	case DW_OP_const2u:
-	  result = read_2u (op_ptr);
-	  op_ptr += 2;
-	  break;
-	case DW_OP_const2s:
-	  result = read_2s (op_ptr);
-	  op_ptr += 2;
-	  break;
-	case DW_OP_const4u:
-	  result = read_4u (op_ptr);
-	  op_ptr += 4;
-	  break;
-	case DW_OP_const4s:
-	  result = read_4s (op_ptr);
-	  op_ptr += 4;
-	  break;
-	case DW_OP_const8u:
-	  result = read_8u (op_ptr);
-	  op_ptr += 8;
-	  break;
-	case DW_OP_const8s:
-	  result = read_8s (op_ptr);
-	  op_ptr += 8;
-	  break;
-	case DW_OP_constu:
-	  op_ptr = read_uleb128 (op_ptr, &result);
-	  break;
-	case DW_OP_consts:
-	  op_ptr = read_sleb128 (op_ptr, &stmp);
-	  result = stmp;
-	  break;
-
-	case DW_OP_reg0:
-	case DW_OP_reg1:
-	case DW_OP_reg2:
-	case DW_OP_reg3:
-	case DW_OP_reg4:
-	case DW_OP_reg5:
-	case DW_OP_reg6:
-	case DW_OP_reg7:
-	case DW_OP_reg8:
-	case DW_OP_reg9:
-	case DW_OP_reg10:
-	case DW_OP_reg11:
-	case DW_OP_reg12:
-	case DW_OP_reg13:
-	case DW_OP_reg14:
-	case DW_OP_reg15:
-	case DW_OP_reg16:
-	case DW_OP_reg17:
-	case DW_OP_reg18:
-	case DW_OP_reg19:
-	case DW_OP_reg20:
-	case DW_OP_reg21:
-	case DW_OP_reg22:
-	case DW_OP_reg23:
-	case DW_OP_reg24:
-	case DW_OP_reg25:
-	case DW_OP_reg26:
-	case DW_OP_reg27:
-	case DW_OP_reg28:
-	case DW_OP_reg29:
-	case DW_OP_reg30:
-	case DW_OP_reg31:
-	  result = _Unwind_GetGR (context, op - DW_OP_reg0);
-	  break;
-	case DW_OP_regx:
-	  op_ptr = read_uleb128 (op_ptr, &reg);
-	  result = _Unwind_GetGR (context, reg);
-	  break;
-
-	case DW_OP_breg0:
-	case DW_OP_breg1:
-	case DW_OP_breg2:
-	case DW_OP_breg3:
-	case DW_OP_breg4:
-	case DW_OP_breg5:
-	case DW_OP_breg6:
-	case DW_OP_breg7:
-	case DW_OP_breg8:
-	case DW_OP_breg9:
-	case DW_OP_breg10:
-	case DW_OP_breg11:
-	case DW_OP_breg12:
-	case DW_OP_breg13:
-	case DW_OP_breg14:
-	case DW_OP_breg15:
-	case DW_OP_breg16:
-	case DW_OP_breg17:
-	case DW_OP_breg18:
-	case DW_OP_breg19:
-	case DW_OP_breg20:
-	case DW_OP_breg21:
-	case DW_OP_breg22:
-	case DW_OP_breg23:
-	case DW_OP_breg24:
-	case DW_OP_breg25:
-	case DW_OP_breg26:
-	case DW_OP_breg27:
-	case DW_OP_breg28:
-	case DW_OP_breg29:
-	case DW_OP_breg30:
-	case DW_OP_breg31:
-	  op_ptr = read_sleb128 (op_ptr, &offset);
-	  result = _Unwind_GetGR (context, op - DW_OP_breg0) + offset;
-	  break;
-	case DW_OP_bregx:
-	  op_ptr = read_uleb128 (op_ptr, &reg);
-	  op_ptr = read_sleb128 (op_ptr, &offset);
-	  result = _Unwind_GetGR (context, reg) + offset;
-	  break;
-
-	case DW_OP_dup:
-	  if (stack_elt < 1)
-	    abort ();
-	  result = stack[stack_elt - 1];
-	  break;
-
-	case DW_OP_drop:
-	  if (--stack_elt < 0)
-	    abort ();
-	  goto no_push;
-
-	case DW_OP_pick:
-	  offset = *op_ptr++;
-	  if (offset >= stack_elt - 1)
-	    abort ();
-	  result = stack[stack_elt - 1 - offset];
-	  break;
-
-	case DW_OP_over:
-	  if (stack_elt < 2)
-	    abort ();
-	  result = stack[stack_elt - 2];
-	  break;
-
-	case DW_OP_rot:
-	  {
-	    _Unwind_Word t1, t2, t3;
-
-	    if (stack_elt < 3)
-	      abort ();
-	    t1 = stack[stack_elt - 1];
-	    t2 = stack[stack_elt - 2];
-	    t3 = stack[stack_elt - 3];
-	    stack[stack_elt - 1] = t2;
-	    stack[stack_elt - 2] = t3;
-	    stack[stack_elt - 3] = t1;
-	    goto no_push;
-	  }
-
-	case DW_OP_deref:
-	case DW_OP_deref_size:
-	case DW_OP_abs:
-	case DW_OP_neg:
-	case DW_OP_not:
-	case DW_OP_plus_uconst:
-	  /* Unary operations.  */
-	  if (--stack_elt < 0)
-	    abort ();
-	  result = stack[stack_elt];
-
-	  switch (op)
-	    {
-	    case DW_OP_deref:
-	      {
-		void *ptr = (void *) (_Unwind_Ptr) result;
-		result = (_Unwind_Ptr) read_pointer (ptr);
-	      }
-	      break;
-
-	    case DW_OP_deref_size:
-	      {
-		void *ptr = (void *) (_Unwind_Ptr) result;
-		switch (*op_ptr++)
-		  {
-		  case 1:
-		    result = read_1u (ptr);
-		    break;
-		  case 2:
-		    result = read_2u (ptr);
-		    break;
-		  case 4:
-		    result = read_4u (ptr);
-		    break;
-		  case 8:
-		    result = read_8u (ptr);
-		    break;
-		  default:
-		    abort ();
-		  }
-	      }
-	      break;
-
-	    case DW_OP_abs:
-	      if ((_Unwind_Sword) result < 0)
-		result = -result;
-	      break;
-	    case DW_OP_neg:
-	      result = -result;
-	      break;
-	    case DW_OP_not:
-	      result = ~result;
-	      break;
-	    case DW_OP_plus_uconst:
-	      op_ptr = read_uleb128 (op_ptr, &utmp);
-	      result += utmp;
-	      break;
-
-	    default:
-	      abort ();
-	    }
-	  break;
-
-	case DW_OP_and:
-	case DW_OP_div:
-	case DW_OP_minus:
-	case DW_OP_mod:
-	case DW_OP_mul:
-	case DW_OP_or:
-	case DW_OP_plus:
-	case DW_OP_le:
-	case DW_OP_ge:
-	case DW_OP_eq:
-	case DW_OP_lt:
-	case DW_OP_gt:
-	case DW_OP_ne:
-	  {
-	    /* Binary operations.  */
-	    _Unwind_Word first, second;
-	    if ((stack_elt -= 2) < 0)
-	      abort ();
-	    second = stack[stack_elt];
-	    first = stack[stack_elt + 1];
-
-	    switch (op)
-	      {
-	      case DW_OP_and:
-		result = second & first;
-		break;
-	      case DW_OP_div:
-		result = (_Unwind_Sword) second / (_Unwind_Sword) first;
-		break;
-	      case DW_OP_minus:
-		result = second - first;
-		break;
-	      case DW_OP_mod:
-		result = (_Unwind_Sword) second % (_Unwind_Sword) first;
-		break;
-	      case DW_OP_mul:
-		result = second * first;
-		break;
-	      case DW_OP_or:
-		result = second | first;
-		break;
-	      case DW_OP_plus:
-		result = second + first;
-		break;
-	      case DW_OP_shl:
-		result = second << first;
-		break;
-	      case DW_OP_shr:
-		result = second >> first;
-		break;
-	      case DW_OP_shra:
-		result = (_Unwind_Sword) second >> first;
-		break;
-	      case DW_OP_xor:
-		result = second ^ first;
-		break;
-	      case DW_OP_le:
-		result = (_Unwind_Sword) first <= (_Unwind_Sword) second;
-		break;
-	      case DW_OP_ge:
-		result = (_Unwind_Sword) first >= (_Unwind_Sword) second;
-		break;
-	      case DW_OP_eq:
-		result = (_Unwind_Sword) first == (_Unwind_Sword) second;
-		break;
-	      case DW_OP_lt:
-		result = (_Unwind_Sword) first < (_Unwind_Sword) second;
-		break;
-	      case DW_OP_gt:
-		result = (_Unwind_Sword) first > (_Unwind_Sword) second;
-		break;
-	      case DW_OP_ne:
-		result = (_Unwind_Sword) first != (_Unwind_Sword) second;
-		break;
-
-	      default:
-		abort ();
-	      }
-	  }
-	  break;
-
-	case DW_OP_skip:
-	  offset = read_2s (op_ptr);
-	  op_ptr += 2;
-	  op_ptr += offset;
-	  goto no_push;
-
-	case DW_OP_bra:
-	  if (--stack_elt < 0)
-	    abort ();
-	  offset = read_2s (op_ptr);
-	  op_ptr += 2;
-	  if (stack[stack_elt] != 0)
-	    op_ptr += offset;
-	  goto no_push;
-
-	case DW_OP_nop:
-	  goto no_push;
-
-	default:
-	  abort ();
-	}
-
-      /* Most things push a result value.  */
-      if ((size_t) stack_elt >= sizeof(stack)/sizeof(*stack))
-	abort ();
-      stack[stack_elt++] = result;
-    no_push:;
-    }
-
-  /* We were executing this program to get a value.  It should be
-     at top of stack.  */
-  if (--stack_elt < 0)
-    abort ();
-  return stack[stack_elt];
-}
-#endif
-
-/* Decode DWARF 2 call frame information. Takes pointers the
-   instruction sequence to decode, current register information and
-   CIE info, and the PC range to evaluate.  */
-
-static void
-execute_cfa_program (const unsigned char *insn_ptr,
-		     const unsigned char *insn_end,
-		     struct _Unwind_Context *context,
-		     _Unwind_FrameState *fs)
-{
-  struct frame_state_reg_info *unused_rs = NULL;
-
-  /* Don't allow remember/restore between CIE and FDE programs.  */
-  fs->regs.prev = NULL;
-
-  /* The comparison with the return address uses < rather than <= because
-     we are only interested in the effects of code before the call; for a
-     noreturn function, the return address may point to unrelated code with
-     a different stack configuration that we are not interested in.  We
-     assume that the call itself is unwind info-neutral; if not, or if
-     there are delay instructions that adjust the stack, these must be
-     reflected at the point immediately before the call insn.  */
-  while (insn_ptr < insn_end && fs->pc < context->ra)
-    {
-      unsigned char insn = *insn_ptr++;
-      _Unwind_Word reg, utmp;
-      _Unwind_Sword offset, stmp;
-
-      if ((insn & 0xc0) == DW_CFA_advance_loc)
-	fs->pc += (insn & 0x3f) * fs->code_align;
-      else if ((insn & 0xc0) == DW_CFA_offset)
-	{
-	  reg = insn & 0x3f;
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  offset = (_Unwind_Sword) utmp * fs->data_align;
-	  fs->regs.reg[reg].how = REG_SAVED_OFFSET;
-	  fs->regs.reg[reg].loc.offset = offset;
-	}
-      else if ((insn & 0xc0) == DW_CFA_restore)
-	{
-	  reg = insn & 0x3f;
-	  fs->regs.reg[reg].how = REG_UNSAVED;
-	}
-      else switch (insn)
-	{
-	case DW_CFA_set_loc:
-	  {
-	    _Unwind_Ptr pc;
-	    insn_ptr = read_encoded_value (context, fs->fde_encoding,
-					   insn_ptr, &pc);
-	    fs->pc = (void *) pc;
-	  }
-	  break;
-
-	case DW_CFA_advance_loc1:
-	  fs->pc += read_1u (insn_ptr) * fs->code_align;
-	  insn_ptr += 1;
-	  break;
-	case DW_CFA_advance_loc2:
-	  fs->pc += read_2u (insn_ptr) * fs->code_align;
-	  insn_ptr += 2;
-	  break;
-	case DW_CFA_advance_loc4:
-	  fs->pc += read_4u (insn_ptr) * fs->code_align;
-	  insn_ptr += 4;
-	  break;
-
-	case DW_CFA_offset_extended:
-	  insn_ptr = read_uleb128 (insn_ptr, &reg);
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  offset = (_Unwind_Sword) utmp * fs->data_align;
-	  fs->regs.reg[reg].how = REG_SAVED_OFFSET;
-	  fs->regs.reg[reg].loc.offset = offset;
-	  break;
-
-	case DW_CFA_restore_extended:
-	  insn_ptr = read_uleb128 (insn_ptr, &reg);
-	  fs->regs.reg[reg].how = REG_UNSAVED;
-	  break;
-
-	case DW_CFA_undefined:
-	case DW_CFA_same_value:
-	  insn_ptr = read_uleb128 (insn_ptr, &reg);
-	  break;
-
-	case DW_CFA_nop:
-	  break;
-
-	case DW_CFA_register:
-	  {
-	    _Unwind_Word reg2;
-	    insn_ptr = read_uleb128 (insn_ptr, &reg);
-	    insn_ptr = read_uleb128 (insn_ptr, &reg2);
-	    fs->regs.reg[reg].how = REG_SAVED_REG;
-	    fs->regs.reg[reg].loc.reg = reg2;
-	  }
-	  break;
-
-	case DW_CFA_remember_state:
-	  {
-	    struct frame_state_reg_info *new_rs;
-	    if (unused_rs)
-	      {
-		new_rs = unused_rs;
-		unused_rs = unused_rs->prev;
-	      }
-	    else
-	      new_rs = __builtin_alloca (sizeof (struct frame_state_reg_info));
-
-	    *new_rs = fs->regs;
-	    fs->regs.prev = new_rs;
-	  }
-	  break;
-
-	case DW_CFA_restore_state:
-	  {
-	    struct frame_state_reg_info *old_rs = fs->regs.prev;
-#ifdef _LIBC
-	    if (old_rs == NULL)
-	      __libc_fatal ("invalid DWARF unwind data");
-	    else
-#endif
-	      {
-		fs->regs = *old_rs;
-		old_rs->prev = unused_rs;
-		unused_rs = old_rs;
-	      }
-	  }
-	  break;
-
-	case DW_CFA_def_cfa:
-	  insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  fs->cfa_offset = utmp;
-	  fs->cfa_how = CFA_REG_OFFSET;
-	  break;
-
-	case DW_CFA_def_cfa_register:
-	  insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
-	  fs->cfa_how = CFA_REG_OFFSET;
-	  break;
-
-	case DW_CFA_def_cfa_offset:
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  fs->cfa_offset = utmp;
-	  /* cfa_how deliberately not set.  */
-	  break;
-
-	case DW_CFA_def_cfa_expression:
-	  fs->cfa_exp = insn_ptr;
-	  fs->cfa_how = CFA_EXP;
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  insn_ptr += utmp;
-	  break;
-
-	case DW_CFA_expression:
-	  insn_ptr = read_uleb128 (insn_ptr, &reg);
-	  fs->regs.reg[reg].how = REG_SAVED_EXP;
-	  fs->regs.reg[reg].loc.exp = insn_ptr;
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  insn_ptr += utmp;
-	  break;
-
-	  /* From the 2.1 draft.  */
-	case DW_CFA_offset_extended_sf:
-	  insn_ptr = read_uleb128 (insn_ptr, &reg);
-	  insn_ptr = read_sleb128 (insn_ptr, &stmp);
-	  offset = stmp * fs->data_align;
-	  fs->regs.reg[reg].how = REG_SAVED_OFFSET;
-	  fs->regs.reg[reg].loc.offset = offset;
-	  break;
-
-	case DW_CFA_def_cfa_sf:
-	  insn_ptr = read_uleb128 (insn_ptr, &fs->cfa_reg);
-	  insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
-	  fs->cfa_how = CFA_REG_OFFSET;
-	  break;
-
-	case DW_CFA_def_cfa_offset_sf:
-	  insn_ptr = read_sleb128 (insn_ptr, &fs->cfa_offset);
-	  /* cfa_how deliberately not set.  */
-	  break;
-
-	case DW_CFA_GNU_window_save:
-	  /* ??? Hardcoded for SPARC register window configuration.
-	     At least do not do anything for archs which explicitly
-	     define a lower register number.  */
-#if DWARF_FRAME_REGISTERS >= 32
-	  for (reg = 16; reg < 32; ++reg)
-	    {
-	      fs->regs.reg[reg].how = REG_SAVED_OFFSET;
-	      fs->regs.reg[reg].loc.offset = (reg - 16) * sizeof (void *);
-	    }
-#endif
-	  break;
-
-	case DW_CFA_GNU_args_size:
-	  insn_ptr = read_uleb128 (insn_ptr, &context->args_size);
-	  break;
-
-	case DW_CFA_GNU_negative_offset_extended:
-	  /* Obsoleted by DW_CFA_offset_extended_sf, but used by
-	     older PowerPC code.  */
-	  insn_ptr = read_uleb128 (insn_ptr, &reg);
-	  insn_ptr = read_uleb128 (insn_ptr, &utmp);
-	  offset = (_Unwind_Word) utmp * fs->data_align;
-	  fs->regs.reg[reg].how = REG_SAVED_OFFSET;
-	  fs->regs.reg[reg].loc.offset = -offset;
-	  break;
-
-	default:
-	  abort ();
-	}
-    }
-}
-
-/* Given the _Unwind_Context CONTEXT for a stack frame, look up the FDE for
-   its caller and decode it into FS.  This function also sets the
-   args_size and lsda members of CONTEXT, as they are really information
-   about the caller's frame.  */
-
-static _Unwind_Reason_Code
-uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
-{
-  struct dwarf_fde *fde;
-  struct dwarf_cie *cie;
-  const unsigned char *aug, *insn, *end;
-
-  memset (fs, 0, sizeof (*fs));
-  context->args_size = 0;
-  context->lsda = 0;
-
-  fde = _Unwind_Find_FDE (context->ra - 1, &context->bases);
-  if (fde == NULL)
-    {
-      /* Couldn't find frame unwind info for this function.  Try a
-	 target-specific fallback mechanism.  This will necessarily
-	 not provide a personality routine or LSDA.  */
-#ifdef MD_FALLBACK_FRAME_STATE_FOR
-      MD_FALLBACK_FRAME_STATE_FOR (context, fs, success);
-      return _URC_END_OF_STACK;
-    success:
-      return _URC_NO_REASON;
-#else
-      return _URC_END_OF_STACK;
-#endif
-    }
-
-  fs->pc = context->bases.func;
-
-  cie = get_cie (fde);
-  insn = extract_cie_info (cie, context, fs);
-  if (insn == NULL)
-    /* CIE contained unknown augmentation.  */
-    return _URC_FATAL_PHASE1_ERROR;
-
-  /* First decode all the insns in the CIE.  */
-  end = (unsigned char *) next_fde ((struct dwarf_fde *) cie);
-  execute_cfa_program (insn, end, context, fs);
-
-  /* Locate augmentation for the fde.  */
-  aug = (unsigned char *) fde + sizeof (*fde);
-  aug += 2 * size_of_encoded_value (fs->fde_encoding);
-  insn = NULL;
-  if (fs->saw_z)
-    {
-      _Unwind_Word i;
-      aug = read_uleb128 (aug, &i);
-      insn = aug + i;
-    }
-  if (fs->lsda_encoding != DW_EH_PE_omit)
-    {
-      _Unwind_Ptr lsda;
-      aug = read_encoded_value (context, fs->lsda_encoding, aug, &lsda);
-      context->lsda = (void *) lsda;
-    }
-
-  /* Then the insns in the FDE up to our target PC.  */
-  if (insn == NULL)
-    insn = aug;
-  end = (unsigned char *) next_fde (fde);
-  execute_cfa_program (insn, end, context, fs);
-
-  return _URC_NO_REASON;
-}
-
-typedef struct frame_state
-{
-  void *cfa;
-  void *eh_ptr;
-  long cfa_offset;
-  long args_size;
-  long reg_or_offset[PRE_GCC3_DWARF_FRAME_REGISTERS+1];
-  unsigned short cfa_reg;
-  unsigned short retaddr_column;
-  char saved[PRE_GCC3_DWARF_FRAME_REGISTERS+1];
-} frame_state;
-
-#ifndef STATIC
-# define STATIC
-#endif
-
-STATIC
-struct frame_state * __frame_state_for (void *, struct frame_state *);
-
-/* Called from pre-G++ 3.0 __throw to find the registers to restore for
-   a given PC_TARGET.  The caller should allocate a local variable of
-   `struct frame_state' and pass its address to STATE_IN.  */
-
-STATIC
-struct frame_state *
-__frame_state_for (void *pc_target, struct frame_state *state_in)
-{
-  struct _Unwind_Context context;
-  _Unwind_FrameState fs;
-  int reg;
-
-  memset (&context, 0, sizeof (struct _Unwind_Context));
-  context.ra = pc_target + 1;
-
-  if (uw_frame_state_for (&context, &fs) != _URC_NO_REASON)
-    return 0;
-
-  /* We have no way to pass a location expression for the CFA to our
-     caller.  It wouldn't understand it anyway.  */
-  if (fs.cfa_how == CFA_EXP)
-    return 0;
-
-  for (reg = 0; reg < PRE_GCC3_DWARF_FRAME_REGISTERS + 1; reg++)
-    {
-      state_in->saved[reg] = fs.regs.reg[reg].how;
-      switch (state_in->saved[reg])
-	{
-	case REG_SAVED_REG:
-	  state_in->reg_or_offset[reg] = fs.regs.reg[reg].loc.reg;
-	  break;
-	case REG_SAVED_OFFSET:
-	  state_in->reg_or_offset[reg] = fs.regs.reg[reg].loc.offset;
-	  break;
-	default:
-	  state_in->reg_or_offset[reg] = 0;
-	  break;
-	}
-    }
-
-  state_in->cfa_offset = fs.cfa_offset;
-  state_in->cfa_reg = fs.cfa_reg;
-  state_in->retaddr_column = fs.retaddr_column;
-  state_in->args_size = context.args_size;
-  state_in->eh_ptr = fs.eh_ptr;
-
-  return state_in;
-}
-
-#ifndef _LIBC
-
-static void
-uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs)
-{
-  struct _Unwind_Context orig_context = *context;
-  void *cfa;
-  long i;
-
-#ifdef EH_RETURN_STACKADJ_RTX
-  /* Special handling here: Many machines do not use a frame pointer,
-     and track the CFA only through offsets from the stack pointer from
-     one frame to the next.  In this case, the stack pointer is never
-     stored, so it has no saved address in the context.  What we do
-     have is the CFA from the previous stack frame.
-
-     In very special situations (such as unwind info for signal return),
-     there may be location expressions that use the stack pointer as well.
-
-     Do this conditionally for one frame.  This allows the unwind info
-     for one frame to save a copy of the stack pointer from the previous
-     frame, and be able to use much easier CFA mechanisms to do it.
-     Always zap the saved stack pointer value for the next frame; carrying
-     the value over from one frame to another doesn't make sense.  */
-
-  _Unwind_Word tmp_sp;
-
-  if (!orig_context.reg[__builtin_dwarf_sp_column ()])
-    {
-      tmp_sp = (_Unwind_Ptr) context->cfa;
-      orig_context.reg[__builtin_dwarf_sp_column ()] = &tmp_sp;
-    }
-  context->reg[__builtin_dwarf_sp_column ()] = NULL;
-#endif
-
-  /* Compute this frame's CFA.  */
-  switch (fs->cfa_how)
-    {
-    case CFA_REG_OFFSET:
-      cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (&orig_context, fs->cfa_reg);
-      cfa += fs->cfa_offset;
-      break;
-
-    case CFA_EXP:
-      {
-	const unsigned char *exp = fs->cfa_exp;
-	_Unwind_Word len;
-
-	exp = read_uleb128 (exp, &len);
-	cfa = (void *) (_Unwind_Ptr)
-	  execute_stack_op (exp, exp + len, &orig_context, 0);
-	break;
-      }
-
-    default:
-      abort ();
-    }
-  context->cfa = cfa;
-
-  /* Compute the addresses of all registers saved in this frame.  */
-  for (i = 0; i < DWARF_FRAME_REGISTERS + 1; ++i)
-    switch (fs->regs.reg[i].how)
-      {
-      case REG_UNSAVED:
-	break;
-
-      case REG_SAVED_OFFSET:
-	context->reg[i] = cfa + fs->regs.reg[i].loc.offset;
-	break;
-
-      case REG_SAVED_REG:
-	context->reg[i] = orig_context.reg[fs->regs.reg[i].loc.reg];
-	break;
-
-      case REG_SAVED_EXP:
-	{
-	  const unsigned char *exp = fs->regs.reg[i].loc.exp;
-	  _Unwind_Word len;
-	  _Unwind_Ptr val;
-
-	  exp = read_uleb128 (exp, &len);
-	  val = execute_stack_op (exp, exp + len, &orig_context,
-				  (_Unwind_Ptr) cfa);
-	  context->reg[i] = (void *) val;
-	}
-	break;
-      }
-}
-
-/* CONTEXT describes the unwind state for a frame, and FS describes the FDE
-   of its caller.  Update CONTEXT to refer to the caller as well.  Note
-   that the args_size and lsda members are not updated here, but later in
-   uw_frame_state_for.  */
-
-static void
-uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
-{
-  uw_update_context_1 (context, fs);
-
-  /* Compute the return address now, since the return address column
-     can change from frame to frame.  */
-  context->ra = __builtin_extract_return_addr
-    ((void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->retaddr_column));
-}
-
-/* Fill in CONTEXT for top-of-stack.  The only valid registers at this
-   level will be the return address and the CFA.  */
-
-#define uw_init_context(CONTEXT)					   \
-  do									   \
-    {									   \
-      /* Do any necessary initialization to access arbitrary stack frames. \
-	 On the SPARC, this means flushing the register windows.  */	   \
-      __builtin_unwind_init ();						   \
-      uw_init_context_1 (CONTEXT, __builtin_dwarf_cfa (),		   \
-			 __builtin_return_address (0));			   \
-    }									   \
-  while (0)
-
-static void
-uw_init_context_1 (struct _Unwind_Context *context,
-		   void *outer_cfa, void *outer_ra)
-{
-  void *ra = __builtin_extract_return_addr (__builtin_return_address (0));
-  _Unwind_FrameState fs;
-  _Unwind_Word sp_slot;
-
-  memset (context, 0, sizeof (struct _Unwind_Context));
-  context->ra = ra;
-
-  if (uw_frame_state_for (context, &fs) != _URC_NO_REASON)
-    abort ();
-
-  /* Force the frame state to use the known cfa value.  */
-  sp_slot = (_Unwind_Ptr) outer_cfa;
-  context->reg[__builtin_dwarf_sp_column ()] = &sp_slot;
-  fs.cfa_how = CFA_REG_OFFSET;
-  fs.cfa_reg = __builtin_dwarf_sp_column ();
-  fs.cfa_offset = 0;
-
-  uw_update_context_1 (context, &fs);
-
-  /* If the return address column was saved in a register in the
-     initialization context, then we can't see it in the given
-     call frame data.  So have the initialization context tell us.  */
-  context->ra = __builtin_extract_return_addr (outer_ra);
-}
-
-
-/* Install TARGET into CURRENT so that we can return to it.  This is a
-   macro because __builtin_eh_return must be invoked in the context of
-   our caller.  */
-
-#define uw_install_context(CURRENT, TARGET)				 \
-  do									 \
-    {									 \
-      long offset = uw_install_context_1 ((CURRENT), (TARGET));		 \
-      void *handler = __builtin_frob_return_addr ((TARGET)->ra);	 \
-      __builtin_eh_return (offset, handler);				 \
-    }									 \
-  while (0)
-
-static inline void
-init_dwarf_reg_size_table (void)
-{
-  __builtin_init_dwarf_reg_size_table (dwarf_reg_size_table);
-}
-
-static long
-uw_install_context_1 (struct _Unwind_Context *current,
-		      struct _Unwind_Context *target)
-{
-  long i;
-
-#if __GTHREADS
-  {
-    static __gthread_once_t once_regsizes = __GTHREAD_ONCE_INIT;
-    if (__gthread_once (&once_regsizes, init_dwarf_reg_size_table) != 0
-	|| dwarf_reg_size_table[0] == 0)
-      init_dwarf_reg_size_table ();
-  }
-#else
-  if (dwarf_reg_size_table[0] == 0)
-    init_dwarf_reg_size_table ();
-#endif
-
-  for (i = 0; i < DWARF_FRAME_REGISTERS; ++i)
-    {
-      void *c = current->reg[i];
-      void *t = target->reg[i];
-      if (t && c && t != c)
-	memcpy (c, t, dwarf_reg_size_table[i]);
-    }
-
-#ifdef EH_RETURN_STACKADJ_RTX
-  {
-    void *target_cfa;
-
-    /* If the last frame records a saved stack pointer, use it.  */
-    if (target->reg[__builtin_dwarf_sp_column ()])
-      target_cfa = (void *)(_Unwind_Ptr)
-        _Unwind_GetGR (target, __builtin_dwarf_sp_column ());
-    else
-      target_cfa = target->cfa;
-
-    /* We adjust SP by the difference between CURRENT and TARGET's CFA.  */
-    if (STACK_GROWS_DOWNWARD)
-      return target_cfa - current->cfa + target->args_size;
-    else
-      return current->cfa - target_cfa - target->args_size;
-  }
-#else
-  return 0;
-#endif
-}
-
-static inline _Unwind_Ptr
-uw_identify_context (struct _Unwind_Context *context)
-{
-  return _Unwind_GetIP (context);
-}
-
-
-#include "unwind.inc"
-
-#endif /* _LIBC */
diff --git a/sysdeps/generic/unwind-pe.c b/sysdeps/generic/unwind-pe.c
deleted file mode 100644
index 4085eb2bd1..0000000000
--- a/sysdeps/generic/unwind-pe.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <stdlib.h>
-#include <unwind.h>
-
-#define _LIBC_DEFINITIONS
-#include "unwind-pe.h"
diff --git a/sysdeps/generic/unwind-pe.h b/sysdeps/generic/unwind-pe.h
deleted file mode 100644
index 4e2aa12074..0000000000
--- a/sysdeps/generic/unwind-pe.h
+++ /dev/null
@@ -1,305 +0,0 @@
-/* Exception handling and frame unwind runtime interface routines.
-   Copyright (C) 2001-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* @@@ Really this should be out of line, but this also causes link
-   compatibility problems with the base ABI.  This is slightly better
-   than duplicating code, however.  */
-
-/* If using C++, references to abort have to be qualified with std::.  */
-#ifdef __cplusplus
-#define __gxx_abort std::abort
-#else
-#define __gxx_abort abort
-#endif
-
-/* Pointer encodings, from dwarf2.h.  */
-#define DW_EH_PE_absptr         0x00
-#define DW_EH_PE_omit           0xff
-
-#define DW_EH_PE_uleb128        0x01
-#define DW_EH_PE_udata2         0x02
-#define DW_EH_PE_udata4         0x03
-#define DW_EH_PE_udata8         0x04
-#define DW_EH_PE_sleb128        0x09
-#define DW_EH_PE_sdata2         0x0A
-#define DW_EH_PE_sdata4         0x0B
-#define DW_EH_PE_sdata8         0x0C
-#define DW_EH_PE_signed         0x08
-
-#define DW_EH_PE_pcrel          0x10
-#define DW_EH_PE_textrel        0x20
-#define DW_EH_PE_datarel        0x30
-#define DW_EH_PE_funcrel        0x40
-#define DW_EH_PE_aligned        0x50
-
-#define DW_EH_PE_indirect	0x80
-
-
-#if defined(_LIBC)
-
-/* Prototypes.  */
-extern unsigned int size_of_encoded_value (unsigned char encoding)
-  attribute_hidden;
-
-extern const unsigned char *read_encoded_value_with_base
-  (unsigned char encoding, _Unwind_Ptr base,
-   const unsigned char *p, _Unwind_Ptr *val)
-  attribute_hidden;
-
-extern const unsigned char * read_encoded_value
-  (struct _Unwind_Context *context, unsigned char encoding,
-   const unsigned char *p, _Unwind_Ptr *val)
-  attribute_hidden;
-
-extern const unsigned char * read_uleb128 (const unsigned char *p,
-					   _Unwind_Word *val)
-  attribute_hidden;
-extern const unsigned char * read_sleb128 (const unsigned char *p,
-					   _Unwind_Sword *val)
-  attribute_hidden;
-
-#endif
-#if defined(_LIBC) && defined(_LIBC_DEFINITIONS)
-
-#ifdef _LIBC
-#define STATIC
-#else
-#define STATIC static
-#endif
-
-/* Given an encoding, return the number of bytes the format occupies.
-   This is only defined for fixed-size encodings, and so does not
-   include leb128.  */
-
-STATIC unsigned int
-size_of_encoded_value (unsigned char encoding)
-{
-  if (encoding == DW_EH_PE_omit)
-    return 0;
-
-  switch (encoding & 0x07)
-    {
-    case DW_EH_PE_absptr:
-      return sizeof (void *);
-    case DW_EH_PE_udata2:
-      return 2;
-    case DW_EH_PE_udata4:
-      return 4;
-    case DW_EH_PE_udata8:
-      return 8;
-    }
-  __gxx_abort ();
-}
-
-#ifndef NO_BASE_OF_ENCODED_VALUE
-
-/* Given an encoding and an _Unwind_Context, return the base to which
-   the encoding is relative.  This base may then be passed to
-   read_encoded_value_with_base for use when the _Unwind_Context is
-   not available.  */
-
-STATIC _Unwind_Ptr
-base_of_encoded_value (unsigned char encoding, struct _Unwind_Context *context)
-{
-  if (encoding == DW_EH_PE_omit)
-    return 0;
-
-  switch (encoding & 0x70)
-    {
-    case DW_EH_PE_absptr:
-    case DW_EH_PE_pcrel:
-    case DW_EH_PE_aligned:
-      return 0;
-
-    case DW_EH_PE_textrel:
-      return _Unwind_GetTextRelBase (context);
-    case DW_EH_PE_datarel:
-      return _Unwind_GetDataRelBase (context);
-    case DW_EH_PE_funcrel:
-      return _Unwind_GetRegionStart (context);
-    }
-  __gxx_abort ();
-}
-
-#endif
-
-/* Read an unsigned leb128 value from P, store the value in VAL, return
-   P incremented past the value.  We assume that a word is large enough to
-   hold any value so encoded; if it is smaller than a pointer on some target,
-   pointers should not be leb128 encoded on that target.  */
-
-STATIC const unsigned char *
-read_uleb128 (const unsigned char *p, _Unwind_Word *val)
-{
-  unsigned int shift = 0;
-  unsigned char byte;
-  _Unwind_Word result;
-
-  result = 0;
-  do
-    {
-      byte = *p++;
-      result |= (byte & 0x7f) << shift;
-      shift += 7;
-    }
-  while (byte & 0x80);
-
-  *val = result;
-  return p;
-}
-
-/* Similar, but read a signed leb128 value.  */
-
-STATIC const unsigned char *
-read_sleb128 (const unsigned char *p, _Unwind_Sword *val)
-{
-  unsigned int shift = 0;
-  unsigned char byte;
-  _Unwind_Word result;
-
-  result = 0;
-  do
-    {
-      byte = *p++;
-      result |= (byte & 0x7f) << shift;
-      shift += 7;
-    }
-  while (byte & 0x80);
-
-  /* Sign-extend a negative value.  */
-  if (shift < 8 * sizeof(result) && (byte & 0x40) != 0)
-    result |= -(1L << shift);
-
-  *val = (_Unwind_Sword) result;
-  return p;
-}
-
-/* Load an encoded value from memory at P.  The value is returned in VAL;
-   The function returns P incremented past the value.  BASE is as given
-   by base_of_encoded_value for this encoding in the appropriate context.  */
-
-STATIC const unsigned char *
-read_encoded_value_with_base (unsigned char encoding, _Unwind_Ptr base,
-			      const unsigned char *p, _Unwind_Ptr *val)
-{
-  union unaligned
-    {
-      void *ptr;
-      unsigned u2 __attribute__ ((mode (HI)));
-      unsigned u4 __attribute__ ((mode (SI)));
-      unsigned u8 __attribute__ ((mode (DI)));
-      signed s2 __attribute__ ((mode (HI)));
-      signed s4 __attribute__ ((mode (SI)));
-      signed s8 __attribute__ ((mode (DI)));
-    } __attribute__((__packed__));
-
-  union unaligned *u = (union unaligned *) p;
-  _Unwind_Internal_Ptr result;
-
-  if (encoding == DW_EH_PE_aligned)
-    {
-      _Unwind_Internal_Ptr a = (_Unwind_Internal_Ptr) p;
-      a = (a + sizeof (void *) - 1) & - sizeof(void *);
-      result = *(_Unwind_Internal_Ptr *) a;
-      p = (const unsigned char *) (a + sizeof (void *));
-    }
-  else
-    {
-      switch (encoding & 0x0f)
-	{
-	case DW_EH_PE_absptr:
-	  result = (_Unwind_Internal_Ptr) u->ptr;
-	  p += sizeof (void *);
-	  break;
-
-	case DW_EH_PE_uleb128:
-	  {
-	    _Unwind_Word tmp;
-	    p = read_uleb128 (p, &tmp);
-	    result = (_Unwind_Internal_Ptr) tmp;
-	  }
-	  break;
-
-	case DW_EH_PE_sleb128:
-	  {
-	    _Unwind_Sword tmp;
-	    p = read_sleb128 (p, &tmp);
-	    result = (_Unwind_Internal_Ptr) tmp;
-	  }
-	  break;
-
-	case DW_EH_PE_udata2:
-	  result = u->u2;
-	  p += 2;
-	  break;
-	case DW_EH_PE_udata4:
-	  result = u->u4;
-	  p += 4;
-	  break;
-	case DW_EH_PE_udata8:
-	  result = u->u8;
-	  p += 8;
-	  break;
-
-	case DW_EH_PE_sdata2:
-	  result = u->s2;
-	  p += 2;
-	  break;
-	case DW_EH_PE_sdata4:
-	  result = u->s4;
-	  p += 4;
-	  break;
-	case DW_EH_PE_sdata8:
-	  result = u->s8;
-	  p += 8;
-	  break;
-
-	default:
-	  __gxx_abort ();
-	}
-
-      if (result != 0)
-	{
-	  result += ((encoding & 0x70) == DW_EH_PE_pcrel
-		     ? (_Unwind_Internal_Ptr) u : base);
-	  if (encoding & DW_EH_PE_indirect)
-	    result = *(_Unwind_Internal_Ptr *) result;
-	}
-    }
-
-  *val = result;
-  return p;
-}
-
-#ifndef NO_BASE_OF_ENCODED_VALUE
-
-/* Like read_encoded_value_with_base, but get the base from the context
-   rather than providing it directly.  */
-
-STATIC const unsigned char *
-read_encoded_value (struct _Unwind_Context *context, unsigned char encoding,
-		    const unsigned char *p, _Unwind_Ptr *val)
-{
-  return read_encoded_value_with_base (encoding,
-		base_of_encoded_value (encoding, context),
-		p, val);
-}
-
-#endif
-#endif /* _LIBC */
diff --git a/sysdeps/generic/unwind-resume.h b/sysdeps/generic/unwind-resume.h
deleted file mode 100644
index 8da6563fad..0000000000
--- a/sysdeps/generic/unwind-resume.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Definitions for unwind-resume.c.  Generic version.
-   Copyright (C) 2015-2017 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; see the file COPYING.LIB.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-/* These describe the arguments to unwinder personality functions,
-   specifically __gcc_personality_v0.  A machine-specific sysdeps
-   file might define them differently.  */
-#define PERSONALITY_PROTO                       \
-  (int version, _Unwind_Action actions,         \
-   _Unwind_Exception_Class exception_class,     \
-   struct _Unwind_Exception *ue_header,         \
-   struct _Unwind_Context *context)
-#define PERSONALITY_ARGS                                        \
-  (version, actions, exception_class, ue_header, context)
-
-/* This is defined nonzero by a machine-specific sysdeps file if
-   _Unwind_Resume is provided separately and thus the generic C
-   version should not be defined.  */
-#define HAVE_ARCH_UNWIND_RESUME		0
diff --git a/sysdeps/generic/unwind.h b/sysdeps/generic/unwind.h
deleted file mode 100644
index 37ec61e33b..0000000000
--- a/sysdeps/generic/unwind.h
+++ /dev/null
@@ -1,219 +0,0 @@
-/* Exception handling and frame unwind runtime interface routines.
-   Copyright (C) 2001-2017 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
-   <http://www.gnu.org/licenses/>.  */
-
-/* This is derived from the C++ ABI for IA-64.  Where we diverge
-   for cross-architecture compatibility are noted with "@@@".  */
-
-#ifndef _UNWIND_H
-#define _UNWIND_H	1
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Level 1: Base ABI  */
-
-/* @@@ The IA-64 ABI uses uint64 throughout.  Most places this is
-   inefficient for 32-bit and smaller machines.  */
-typedef unsigned _Unwind_Word __attribute__((__mode__(__unwind_word__)));
-typedef signed _Unwind_Sword __attribute__((__mode__(__unwind_word__)));
-#if defined(__ia64__) && defined(__hpux__)
-typedef unsigned _Unwind_Ptr __attribute__((__mode__(__word__)));
-#else
-typedef unsigned _Unwind_Ptr __attribute__((__mode__(__pointer__)));
-#endif
-typedef unsigned _Unwind_Internal_Ptr __attribute__((__mode__(__pointer__)));
-
-/* @@@ The IA-64 ABI uses a 64-bit word to identify the producer and
-   consumer of an exception.  We'll go along with this for now even on
-   32-bit machines.  We'll need to provide some other option for
-   16-bit machines and for machines with > 8 bits per byte.  */
-typedef unsigned _Unwind_Exception_Class __attribute__((__mode__(__DI__)));
-
-/* The unwind interface uses reason codes in several contexts to
-   identify the reasons for failures or other actions.  */
-typedef enum
-{
-  _URC_NO_REASON = 0,
-  _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
-  _URC_FATAL_PHASE2_ERROR = 2,
-  _URC_FATAL_PHASE1_ERROR = 3,
-  _URC_NORMAL_STOP = 4,
-  _URC_END_OF_STACK = 5,
-  _URC_HANDLER_FOUND = 6,
-  _URC_INSTALL_CONTEXT = 7,
-  _URC_CONTINUE_UNWIND = 8
-} _Unwind_Reason_Code;
-
-
-/* The unwind interface uses a pointer to an exception header object
-   as its representation of an exception being thrown. In general, the
-   full representation of an exception object is language- and
-   implementation-specific, but it will be prefixed by a header
-   understood by the unwind interface.  */
-
-struct _Unwind_Exception;
-
-typedef void (*_Unwind_Exception_Cleanup_Fn) (_Unwind_Reason_Code,
-					      struct _Unwind_Exception *);
-
-struct _Unwind_Exception
-{
-  _Unwind_Exception_Class exception_class;
-  _Unwind_Exception_Cleanup_Fn exception_cleanup;
-  _Unwind_Word private_1;
-  _Unwind_Word private_2;
-
-  /* @@@ The IA-64 ABI says that this structure must be double-word aligned.
-     Taking that literally does not make much sense generically.  Instead we
-     provide the maximum alignment required by any type for the machine.  */
-} __attribute__((__aligned__));
-
-
-/* The ACTIONS argument to the personality routine is a bitwise OR of one
-   or more of the following constants.  */
-typedef int _Unwind_Action;
-
-#define _UA_SEARCH_PHASE	1
-#define _UA_CLEANUP_PHASE	2
-#define _UA_HANDLER_FRAME	4
-#define _UA_FORCE_UNWIND	8
-#define _UA_END_OF_STACK	16
-
-/* This is an opaque type used to refer to a system-specific data
-   structure used by the system unwinder. This context is created and
-   destroyed by the system, and passed to the personality routine
-   during unwinding.  */
-struct _Unwind_Context;
-
-/* Raise an exception, passing along the given exception object.  */
-extern _Unwind_Reason_Code _Unwind_RaiseException (struct _Unwind_Exception *);
-
-/* Raise an exception for forced unwinding.  */
-
-typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)
-     (int, _Unwind_Action, _Unwind_Exception_Class,
-      struct _Unwind_Exception *, struct _Unwind_Context *, void *);
-
-extern _Unwind_Reason_Code _Unwind_ForcedUnwind (struct _Unwind_Exception *,
-						 _Unwind_Stop_Fn,
-						 void *);
-
-/* Helper to invoke the exception_cleanup routine.  */
-extern void _Unwind_DeleteException (struct _Unwind_Exception *);
-
-/* Resume propagation of an existing exception.  This is used after
-   e.g. executing cleanup code, and not to implement rethrowing.  */
-extern void _Unwind_Resume (struct _Unwind_Exception *);
-
-/* @@@ Use unwind data to perform a stack backtrace.  The trace callback
-   is called for every stack frame in the call chain, but no cleanup
-   actions are performed.  */
-typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)
-     (struct _Unwind_Context *, void *);
-
-extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);
-
-/* These functions are used for communicating information about the unwind
-   context (i.e. the unwind descriptors and the user register state) between
-   the unwind library and the personality routine and landing pad.  Only
-   selected registers maybe manipulated.  */
-
-extern _Unwind_Word _Unwind_GetGR (struct _Unwind_Context *, int);
-extern void _Unwind_SetGR (struct _Unwind_Context *, int, _Unwind_Word);
-
-extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);
-extern void _Unwind_SetIP (struct _Unwind_Context *, _Unwind_Ptr);
-
-/* @@@ Retrieve the CFA of the given context.  */
-extern _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
-
-extern void *_Unwind_GetLanguageSpecificData (struct _Unwind_Context *);
-
-extern _Unwind_Ptr _Unwind_GetRegionStart (struct _Unwind_Context *);
-
-
-/* The personality routine is the function in the C++ (or other language)
-   runtime library which serves as an interface between the system unwind
-   library and language-specific exception handling semantics.  It is
-   specific to the code fragment described by an unwind info block, and
-   it is always referenced via the pointer in the unwind info block, and
-   hence it has no ABI-specified name.
-
-   Note that this implies that two different C++ implementations can
-   use different names, and have different contents in the language
-   specific data area.  Moreover, that the language specific data
-   area contains no version info because name of the function invoked
-   provides more effective versioning by detecting at link time the
-   lack of code to handle the different data format.  */
-
-typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)
-     (int, _Unwind_Action, _Unwind_Exception_Class,
-      struct _Unwind_Exception *, struct _Unwind_Context *);
-
-/* @@@ The following alternate entry points are for setjmp/longjmp
-   based unwinding.  */
-
-struct SjLj_Function_Context;
-extern void _Unwind_SjLj_Register (struct SjLj_Function_Context *);
-extern void _Unwind_SjLj_Unregister (struct SjLj_Function_Context *);
-
-extern _Unwind_Reason_Code _Unwind_SjLj_RaiseException
-     (struct _Unwind_Exception *);
-extern _Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind
-     (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-extern void _Unwind_SjLj_Resume (struct _Unwind_Exception *);
-
-/* @@@ The following provide access to the base addresses for text
-   and data-relative addressing in the LDSA.  In order to stay link
-   compatible with the standard ABI for IA-64, we inline these.  */
-
-#ifdef __ia64__
-#include <stdlib.h>
-
-static inline _Unwind_Ptr
-_Unwind_GetDataRelBase (struct _Unwind_Context *_C)
-{
-  /* The GP is stored in R1.  */
-  return _Unwind_GetGR (_C, 1);
-}
-
-static inline _Unwind_Ptr
-_Unwind_GetTextRelBase (struct _Unwind_Context *_C)
-{
-  abort ();
-  return 0;
-}
-
-/* @@@ Retrieve the Backing Store Pointer of the given context.  */
-extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
-#else
-extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
-extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
-#endif
-
-/* @@@ Given an address, return the entry point of the function that
-   contains it.  */
-extern void * _Unwind_FindEnclosingFunction (void *pc);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif	/* unwind.h */
diff --git a/sysdeps/generic/utmp-equal.h b/sysdeps/generic/utmp-equal.h
deleted file mode 100644
index 6205bbb365..0000000000
--- a/sysdeps/generic/utmp-equal.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Helper function for utmp functions to see if two entries are equal.
-   Copyright (C) 1996-2017 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>
-   and Paul Janzen <pcj@primenet.com>, 1996.
-
-   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
-   <http://www.gnu.org/licenses/>.  */
-
-#include <string.h>
-#include <utmp.h>
-
-#include "utmp-private.h"
-
-/* Test whether two entries match.  */
-static int
-__utmp_equal (const struct utmp *entry, const struct utmp *match)
-{
-  return
-    (
-#if _HAVE_UT_TYPE - 0
-     (entry->ut_type == INIT_PROCESS
-      || entry->ut_type == LOGIN_PROCESS
-      || entry->ut_type == USER_PROCESS
-      || entry->ut_type == DEAD_PROCESS)
-     &&
-     (match->ut_type == INIT_PROCESS
-      || match->ut_type == LOGIN_PROCESS
-      || match->ut_type == USER_PROCESS
-      || match->ut_type == DEAD_PROCESS)
-     &&
-#endif
-#if _HAVE_UT_ID - 0
-     (entry->ut_id[0] && match->ut_id[0]
-      ? strncmp (entry->ut_id, match->ut_id, sizeof match->ut_id) == 0
-      : strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line) == 0)
-#else
-     strncmp (entry->ut_line, match->ut_line, sizeof match->ut_line) == 0
-#endif
-     );
-}