aboutsummaryrefslogtreecommitdiff
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
- );
-}