aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog74
-rw-r--r--ctype/ctype.h2
-rw-r--r--include/bits/endian.h1
-rw-r--r--string/Makefile3
-rw-r--r--string/bits/endian.h49
-rw-r--r--string/endian.h39
-rw-r--r--sysdeps/aarch64/bits/endian.h30
-rw-r--r--sysdeps/aarch64/bits/endianness.h15
-rw-r--r--sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/alpha/bits/endian.h7
-rw-r--r--sysdeps/alpha/bits/endianness.h11
-rw-r--r--sysdeps/arm/bits/endian.h10
-rw-r--r--sysdeps/arm/bits/endianness.h15
-rw-r--r--sysdeps/arm/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/csky/bits/endian.h9
-rw-r--r--sysdeps/csky/bits/endianness.h14
-rw-r--r--sysdeps/csky/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/hppa/bits/endian.h7
-rw-r--r--sysdeps/hppa/bits/endianness.h11
-rw-r--r--sysdeps/ia64/bits/endianness.h11
-rw-r--r--sysdeps/ia64/ieee754.h4
-rw-r--r--sysdeps/ieee754/ieee754.h4
-rw-r--r--sysdeps/ieee754/ldbl-128/ieee754.h4
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/ieee754.h4
-rw-r--r--sysdeps/m68k/bits/endian.h7
-rw-r--r--sysdeps/m68k/bits/endianness.h11
-rw-r--r--sysdeps/m68k/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/microblaze/bits/endian.h30
-rw-r--r--sysdeps/microblaze/bits/endianness.h15
-rw-r--r--sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/mips/bits/endian.h15
-rw-r--r--sysdeps/mips/bits/endianness.h16
-rw-r--r--sysdeps/mips/ieee754/ieee754.h17
-rw-r--r--sysdeps/mips/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/nios2/bits/endian.h12
-rw-r--r--sysdeps/nios2/bits/endianness.h16
-rw-r--r--sysdeps/nios2/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/nptl/pthread.h2
-rw-r--r--sysdeps/powerpc/bits/endian.h36
-rw-r--r--sysdeps/powerpc/bits/endianness.h16
-rw-r--r--sysdeps/riscv/bits/endian.h5
-rw-r--r--sysdeps/riscv/bits/endianness.h11
-rw-r--r--sysdeps/riscv/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/s390/bits/endian.h7
-rw-r--r--sysdeps/s390/bits/endianness.h11
-rw-r--r--sysdeps/sh/bits/endian.h13
-rw-r--r--sysdeps/sh/bits/endianness.h15
-rw-r--r--sysdeps/sh/nptl/bits/pthreadtypes-arch.h2
-rw-r--r--sysdeps/sparc/bits/endianness.h (renamed from sysdeps/sparc/bits/endian.h)12
-rw-r--r--sysdeps/sparc/sparc32/ieee754.h4
-rw-r--r--sysdeps/unix/sysv/linux/generic/bits/stat.h2
-rw-r--r--sysdeps/unix/sysv/linux/generic/bits/statfs.h2
-rw-r--r--sysdeps/unix/sysv/linux/hppa/pthread.h1
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/endian.h7
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/htm.h2
-rw-r--r--sysdeps/unix/sysv/linux/sys/acct.h2
-rw-r--r--sysdeps/x86/bits/endian.h7
-rw-r--r--sysdeps/x86/bits/endianness.h11
-rw-r--r--wctype/bits/wctype-wchar.h2
59 files changed, 375 insertions, 274 deletions
diff --git a/ChangeLog b/ChangeLog
index e5ec6891dd..17ff0ade2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,77 @@
+2019-10-01 Zack Weinberg <zackw@panix.com>
+ Alistair Francis <alistair.francis@wdc.com>
+
+ * string/endian.h: Unconditionally define LITTLE_ENDIAN,
+ BIG_ENDIAN, PDP_ENDIAN, and BYTE_ORDER. Condition byteswapping
+ macros only on !__ASSEMBLER__. Move the definitions of
+ __BIG_ENDIAN, __LITTLE_ENDIAN, __PDP_ENDIAN, __FLOAT_WORD_ORDER,
+ and __LONG_LONG_PAIR to...
+ * string/bits/endian.h: ...this new file, which includes
+ the renamed header bits/endianness.h for the definition of
+ __BYTE_ORDER and possibly __FLOAT_WORD_ORDER.
+
+ * string/Makefile: Install bits/endianness.h.
+ * include/bits/endian.h: New wrapper.
+
+ * bits/endian.h: Rename to bits/endianness.h.
+ Add multiple-include guard. Rewrite the comment explaining what
+ the machine-specific variants of this file should do.
+
+ * sysdeps/unix/sysv/linux/ia64/bits/endian.h:
+ Move to sysdeps/ia64.
+
+ * sysdeps/aarch64/bits/endian.h
+ * sysdeps/alpha/bits/endian.h
+ * sysdeps/arm/bits/endian.h
+ * sysdeps/csky/bits/endian.h
+ * sysdeps/hppa/bits/endian.h
+ * sysdeps/ia64/bits/endian.h
+ * sysdeps/m68k/bits/endian.h
+ * sysdeps/microblaze/bits/endian.h
+ * sysdeps/mips/bits/endian.h
+ * sysdeps/nios2/bits/endian.h
+ * sysdeps/powerpc/bits/endian.h
+ * sysdeps/riscv/bits/endian.h
+ * sysdeps/s390/bits/endian.h
+ * sysdeps/sh/bits/endian.h
+ * sysdeps/sparc/bits/endian.h
+ * sysdeps/x86/bits/endian.h:
+ Rename to endianness.h; canonicalize form of file; remove
+ redundant definitions of __FLOAT_WORD_ORDER.
+
+ * sysdeps/powerpc/bits/endianness.h: Remove logic to check for
+ broken compilers.
+
+ * ctype/ctype.h
+ * sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/arm/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/csky/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/ia64/ieee754.h
+ * sysdeps/ieee754/ieee754.h
+ * sysdeps/ieee754/ldbl-128/ieee754.h
+ * sysdeps/ieee754/ldbl-128ibm/ieee754.h
+ * sysdeps/m68k/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/mips/ieee754/ieee754.h
+ * sysdeps/mips/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/nios2/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/nptl/pthread.h
+ * sysdeps/riscv/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/sh/nptl/bits/pthreadtypes-arch.h
+ * sysdeps/sparc/sparc32/ieee754.h
+ * sysdeps/unix/sysv/linux/generic/bits/stat.h
+ * sysdeps/unix/sysv/linux/generic/bits/statfs.h
+ * sysdeps/unix/sysv/linux/sys/acct.h
+ * wctype/bits/wctype-wchar.h:
+ Include bits/endian.h, not endian.h.
+
+ * sysdeps/unix/sysv/linux/hppa/pthread.h: Don’t include endian.h.
+
+ * sysdeps/mips/ieee754/ieee754.h: Use __LDBL_MANT_DIG__
+ in ifdefs, instead of LDBL_MANT_DIG. Only include float.h
+ when __LDBL_MANT_DIG__ is not predefined, in which case
+ define __LDBL_MANT_DIG__ to equal LDBL_MANT_DIG.
+
2019-09-17 Mike FABIAN <mfabian@redhat.com>
* localedata/locales/az_AZ: Make lang_name agree with CLDR
diff --git a/ctype/ctype.h b/ctype/ctype.h
index 35efe0d2cf..d17f727cf0 100644
--- a/ctype/ctype.h
+++ b/ctype/ctype.h
@@ -36,7 +36,7 @@ __BEGIN_DECLS
endian). We define the bit value interpretations here dependent on the
machine's byte order. */
-# include <endian.h>
+# include <bits/endian.h>
# if __BYTE_ORDER == __BIG_ENDIAN
# define _ISbit(bit) (1 << (bit))
# else /* __BYTE_ORDER == __LITTLE_ENDIAN */
diff --git a/include/bits/endian.h b/include/bits/endian.h
new file mode 100644
index 0000000000..ad614f1c1a
--- /dev/null
+++ b/include/bits/endian.h
@@ -0,0 +1 @@
+#include <string/bits/endian.h>
diff --git a/string/Makefile b/string/Makefile
index 52fe28207c..f01b34509a 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -25,7 +25,8 @@ include ../Makeconfig
headers := string.h bits/string_fortified.h \
strings.h bits/strings_fortified.h \
byteswap.h bits/byteswap.h \
- endian.h bits/endian.h bits/uintn-identity.h \
+ endian.h bits/endian.h bits/endianness.h \
+ bits/uintn-identity.h \
memory.h argz.h envz.h
routines := strcat strchr strcmp strcoll strcpy strcspn \
diff --git a/string/bits/endian.h b/string/bits/endian.h
new file mode 100644
index 0000000000..2217990cde
--- /dev/null
+++ b/string/bits/endian.h
@@ -0,0 +1,49 @@
+/* Endian macros for string.h functions
+ Copyright (C) 1992-2019 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 _BITS_ENDIAN_H
+#define _BITS_ENDIAN_H 1
+
+/* Definitions for byte order, according to significance of bytes,
+ from low addresses to high addresses. The value is what you get by
+ putting '4' in the most significant byte, '3' in the second most
+ significant byte, '2' in the second least significant byte, and '1'
+ in the least significant byte, and then writing down one digit for
+ each byte, starting with the byte at the lowest address at the left,
+ and proceeding to the byte with the highest address at the right. */
+
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __PDP_ENDIAN 3412
+
+/* This file defines `__BYTE_ORDER' for the particular machine. */
+#include <bits/endianness.h>
+
+/* Some machines may need to use a different endianness for floating point
+ values. */
+#ifndef __FLOAT_WORD_ORDER
+# define __FLOAT_WORD_ORDER __BYTE_ORDER
+#endif
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+# define __LONG_LONG_PAIR(HI, LO) LO, HI
+#elif __BYTE_ORDER == __BIG_ENDIAN
+# define __LONG_LONG_PAIR(HI, LO) HI, LO
+#endif
+
+#endif /* bits/endian.h */
diff --git a/string/endian.h b/string/endian.h
index 17e4e893fb..0eb534e434 100644
--- a/string/endian.h
+++ b/string/endian.h
@@ -20,42 +20,15 @@
#include <features.h>
-/* Definitions for byte order, according to significance of bytes,
- from low addresses to high addresses. The value is what you get by
- putting '4' in the most significant byte, '3' in the second most
- significant byte, '2' in the second least significant byte, and '1'
- in the least significant byte, and then writing down one digit for
- each byte, starting with the byte at the lowest address at the left,
- and proceeding to the byte with the highest address at the right. */
-
-#define __LITTLE_ENDIAN 1234
-#define __BIG_ENDIAN 4321
-#define __PDP_ENDIAN 3412
-
-/* This file defines `__BYTE_ORDER' for the particular machine. */
+/* Get the definitions of __*_ENDIAN, __BYTE_ORDER, and __FLOAT_WORD_ORDER. */
#include <bits/endian.h>
-/* Some machines may need to use a different endianness for floating point
- values. */
-#ifndef __FLOAT_WORD_ORDER
-# define __FLOAT_WORD_ORDER __BYTE_ORDER
-#endif
-
-#ifdef __USE_MISC
-# define LITTLE_ENDIAN __LITTLE_ENDIAN
-# define BIG_ENDIAN __BIG_ENDIAN
-# define PDP_ENDIAN __PDP_ENDIAN
-# define BYTE_ORDER __BYTE_ORDER
-#endif
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
-# define __LONG_LONG_PAIR(HI, LO) LO, HI
-#elif __BYTE_ORDER == __BIG_ENDIAN
-# define __LONG_LONG_PAIR(HI, LO) HI, LO
-#endif
-
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define BIG_ENDIAN __BIG_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
-#if defined __USE_MISC && !defined __ASSEMBLER__
+#ifndef __ASSEMBLER__
/* Conversion interfaces. */
# include <bits/byteswap.h>
# include <bits/uintn-identity.h>
diff --git a/sysdeps/aarch64/bits/endian.h b/sysdeps/aarch64/bits/endian.h
deleted file mode 100644
index 03801d312a..0000000000
--- a/sysdeps/aarch64/bits/endian.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 1997-2019 Free Software Foundation, Inc.
-
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <https://www.gnu.org/licenses/>. */
-
-#ifndef _ENDIAN_H
-# error "Never use <bits/endian.h> directly; include <endian.h> instead."
-#endif
-
-/* AArch64 can be either big or little endian. */
-#ifdef __AARCH64EB__
-# define __BYTE_ORDER __BIG_ENDIAN
-#else
-# define __BYTE_ORDER __LITTLE_ENDIAN
-#endif
-
-#define __FLOAT_WORD_ORDER __BYTE_ORDER
diff --git a/sysdeps/aarch64/bits/endianness.h b/sysdeps/aarch64/bits/endianness.h
new file mode 100644
index 0000000000..300ebc8f9c
--- /dev/null
+++ b/sysdeps/aarch64/bits/endianness.h
@@ -0,0 +1,15 @@
+#ifndef _BITS_ENDIANNESS_H
+#define _BITS_ENDIANNESS_H 1
+
+#ifndef _BITS_ENDIAN_H
+# error "Never use <bits/endianness.h> directly; include <endian.h> instead."
+#endif
+