aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/wordsize-32
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
committerZack Weinberg <zackw@panix.com>2017-06-08 15:39:03 -0400
commit5046dbb4a7eba5eccfd258f92f4735c9ffc8d069 (patch)
tree4470480d904b65cf14ca524f96f79eca818c3eaf /sysdeps/wordsize-32
parent199fc19d3aaaf57944ef036e15904febe877fc93 (diff)
downloadglibc-zack/build-layout-experiment.tar
glibc-zack/build-layout-experiment.tar.gz
glibc-zack/build-layout-experiment.tar.bz2
glibc-zack/build-layout-experiment.zip
Prepare for radical source tree reorganization.zack/build-layout-experiment
All top-level files and directories are moved into a temporary storage directory, REORG.TODO, except for files that will certainly still exist in their current form at top level when we're done (COPYING, COPYING.LIB, LICENSES, NEWS, README), all old ChangeLog files (which are moved to the new directory OldChangeLogs, instead), and the generated file INSTALL (which is just deleted; in the new order, there will be no generated files checked into version control).
Diffstat (limited to 'sysdeps/wordsize-32')
-rw-r--r--sysdeps/wordsize-32/Versions7
-rw-r--r--sysdeps/wordsize-32/bits/wordsize.h21
-rw-r--r--sysdeps/wordsize-32/divdi3-symbol-hacks.h31
-rw-r--r--sysdeps/wordsize-32/divdi3.c342
-rw-r--r--sysdeps/wordsize-32/llabs.c22
-rw-r--r--sysdeps/wordsize-32/lldiv.c26
-rw-r--r--sysdeps/wordsize-32/strtoimax.c27
-rw-r--r--sysdeps/wordsize-32/strtoumax.c27
-rw-r--r--sysdeps/wordsize-32/wcstoimax.c28
-rw-r--r--sysdeps/wordsize-32/wcstoumax.c28
10 files changed, 0 insertions, 559 deletions
diff --git a/sysdeps/wordsize-32/Versions b/sysdeps/wordsize-32/Versions
deleted file mode 100644
index e950290065..0000000000
--- a/sysdeps/wordsize-32/Versions
+++ /dev/null
@@ -1,7 +0,0 @@
-libc {
- GLIBC_2.3 {
- # These were erroneously omitted for 64-bit platforms in 2.3
- # and so we don't put them in locale/Versions.
- strtoll_l; strtoull_l;
- }
-}
diff --git a/sysdeps/wordsize-32/bits/wordsize.h b/sysdeps/wordsize-32/bits/wordsize.h
deleted file mode 100644
index 9a5b072daa..0000000000
--- a/sysdeps/wordsize-32/bits/wordsize.h
+++ /dev/null
@@ -1,21 +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/>. */
-
-#define __WORDSIZE 32
-#define __WORDSIZE_TIME64_COMPAT32 0
-#define __WORDSIZE32_SIZE_ULONG 0
-#define __WORDSIZE32_PTRDIFF_LONG 0
diff --git a/sysdeps/wordsize-32/divdi3-symbol-hacks.h b/sysdeps/wordsize-32/divdi3-symbol-hacks.h
deleted file mode 100644
index 6c90cb796d..0000000000
--- a/sysdeps/wordsize-32/divdi3-symbol-hacks.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Hacks needed for divdi3 symbol manipulation.
- Copyright (C) 2004-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/>. */
-
-/* A very dirty trick: gcc emits references to __divdi3, __udivdi3,
- __moddi3, and __umoddi3. These functions are exported and
- therefore we get PLTs. Unnecessarily so. Changing gcc is a big
- task which might not be worth it so we play tricks with the
- assembler.
- Note: in_divdi3_c is only used to avoid symbol alias on divdi3
- build itself. */
-#if !defined __ASSEMBLER__ && !defined in_divdi3_c && IS_IN (libc) && defined SHARED
-asm ("__divdi3 = __divdi3_internal");
-asm ("__udivdi3 = __udivdi3_internal");
-asm ("__moddi3 = __moddi3_internal");
-asm ("__umoddi3 = __umoddi3_internal");
-#endif
diff --git a/sysdeps/wordsize-32/divdi3.c b/sysdeps/wordsize-32/divdi3.c
deleted file mode 100644
index 03de8215f9..0000000000
--- a/sysdeps/wordsize-32/divdi3.c
+++ /dev/null
@@ -1,342 +0,0 @@
-/* 64-bit multiplication and division
- Copyright (C) 1989, 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/>. */
-
-#include <endian.h>
-#include <stdlib.h>
-#include <bits/wordsize.h>
-
-#if __WORDSIZE != 32
-#error This is for 32-bit targets only
-#endif
-
-typedef unsigned int UQItype __attribute__ ((mode (QI)));
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-typedef int DItype __attribute__ ((mode (DI)));
-typedef unsigned int UDItype __attribute__ ((mode (DI)));
-#define Wtype SItype
-#define HWtype SItype
-#define DWtype DItype
-#define UWtype USItype
-#define UHWtype USItype
-#define UDWtype UDItype
-#define W_TYPE_SIZE 32
-
-#include <stdlib/longlong.h>
-
-#if __BYTE_ORDER == __BIG_ENDIAN
-struct DWstruct { Wtype high, low;};
-#elif __BYTE_ORDER == __LITTLE_ENDIAN
-struct DWstruct { Wtype low, high;};
-#else
-#error Unhandled endianity
-#endif
-typedef union { struct DWstruct s; DWtype ll; } DWunion;
-
-/* Prototypes of exported functions. */
-extern DWtype __divdi3 (DWtype u, DWtype v);
-extern DWtype __moddi3 (DWtype u, DWtype v);
-extern UDWtype __udivdi3 (UDWtype u, UDWtype v);
-extern UDWtype __umoddi3 (UDWtype u, UDWtype v);
-
-static UDWtype
-__udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp)
-{
- DWunion ww;
- DWunion nn, dd;
- DWunion rr;
- UWtype d0, d1, n0, n1, n2;
- UWtype q0, q1;
- UWtype b, bm;
-
- nn.ll = n;
- dd.ll = d;
-
- d0 = dd.s.low;
- d1 = dd.s.high;
- n0 = nn.s.low;
- n1 = nn.s.high;
-
-#if !UDIV_NEEDS_NORMALIZATION
- if (d1 == 0)
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
-
- udiv_qrnnd (q0, n0, n1, n0, d0);
- q1 = 0;
-
- /* Remainder in n0. */
- }
- else
- {
- /* qq = NN / 0d */
-
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
-
- udiv_qrnnd (q1, n1, 0, n1, d0);
- udiv_qrnnd (q0, n0, n1, n0, d0);
-
- /* Remainder in n0. */
- }
-
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = 0;
- *rp = rr.ll;
- }
- }
-
-#else /* UDIV_NEEDS_NORMALIZATION */
-
- if (d1 == 0)
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
-
- count_leading_zeros (bm, d0);
-
- if (bm != 0)
- {
- /* Normalize, i.e. make the most significant bit of the
- denominator set. */
-
- d0 = d0 << bm;
- n1 = (n1 << bm) | (n0 >> (W_TYPE_SIZE - bm));
- n0 = n0 << bm;
- }
-
- udiv_qrnnd (q0, n0, n1, n0, d0);
- q1 = 0;
-
- /* Remainder in n0 >> bm. */
- }
- else
- {
- /* qq = NN / 0d */
-
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
-
- count_leading_zeros (bm, d0);
-
- if (bm == 0)
- {
- /* From (n1 >= d0) /\ (the most significant bit of d0 is set),
- conclude (the most significant bit of n1 is set) /\ (the
- leading quotient digit q1 = 1).
-
- This special case is necessary, not an optimization.
- (Shifts counts of W_TYPE_SIZE are undefined.) */
-
- n1 -= d0;
- q1 = 1;
- }
- else
- {
- /* Normalize. */
-
- b = W_TYPE_SIZE - bm;
-
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
-
- udiv_qrnnd (q1, n1, n2, n1, d0);
- }
-
- /* n1 != d0... */
-
- udiv_qrnnd (q0, n0, n1, n0, d0);
-
- /* Remainder in n0 >> bm. */
- }
-
- if (rp != 0)
- {
- rr.s.low = n0 >> bm;
- rr.s.high = 0;
- *rp = rr.ll;
- }
- }
-#endif /* UDIV_NEEDS_NORMALIZATION */
-
- else
- {
- if (d1 > n1)
- {
- /* 00 = nn / DD */
-
- q0 = 0;
- q1 = 0;
-
- /* Remainder in n1n0. */
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = n1;
- *rp = rr.ll;
- }
- }
- else
- {
- /* 0q = NN / dd */
-
- count_leading_zeros (bm, d1);
- if (bm == 0)
- {
- /* From (n1 >= d1) /\ (the most significant bit of d1 is set),
- conclude (the most significant bit of n1 is set) /\ (the
- quotient digit q0 = 0 or 1).
-
- This special case is necessary, not an optimization. */
-
- /* The condition on the next line takes advantage of that
- n1 >= d1 (true due to program flow). */
- if (n1 > d1 || n0 >= d0)
- {
- q0 = 1;
- sub_ddmmss (n1, n0, n1, n0, d1, d0);
- }
- else
- q0 = 0;
-
- q1 = 0;
-
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = n1;
- *rp = rr.ll;
- }
- }
- else
- {
- UWtype m1, m0;
- /* Normalize. */
-
- b = W_TYPE_SIZE - bm;
-
- d1 = (d1 << bm) | (d0 >> b);
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
-
- udiv_qrnnd (q0, n1, n2, n1, d1);
- umul_ppmm (m1, m0, q0, d0);
-
- if (m1 > n1 || (m1 == n1 && m0 > n0))
- {
- q0--;
- sub_ddmmss (m1, m0, m1, m0, d1, d0);
- }
-
- q1 = 0;
-
- /* Remainder in (n1n0 - m1m0) >> bm. */
- if (rp != 0)
- {
- sub_ddmmss (n1, n0, n1, n0, m1, m0);
- rr.s.low = (n1 << b) | (n0 >> bm);
- rr.s.high = n1 >> bm;
- *rp = rr.ll;
- }
- }
- }
- }
-
- ww.s.low = q0;
- ww.s.high = q1;
- return ww.ll;
-}
-
-DWtype
-__divdi3 (DWtype u, DWtype v)
-{
- Wtype c = 0;
- DWtype w;
-
- if (u < 0)
- {
- c = ~c;
- u = -u;
- }
- if (v < 0)
- {
- c = ~c;
- v = -v;
- }
- w = __udivmoddi4 (u, v, NULL);
- if (c)
- w = -w;
- return w;
-}
-strong_alias (__divdi3, __divdi3_internal)
-
-DWtype
-__moddi3 (DWtype u, DWtype v)
-{
- Wtype c = 0;
- DWtype w;
-
- if (u < 0)
- {
- c = ~c;
- u = -u;
- }
- if (v < 0)
- v = -v;
- __udivmoddi4 (u, v, (UDWtype *) &w);
- if (c)
- w = -w;
- return w;
-}
-strong_alias (__moddi3, __moddi3_internal)
-
-UDWtype
-__udivdi3 (UDWtype u, UDWtype v)
-{
- return __udivmoddi4 (u, v, NULL);
-}
-strong_alias (__udivdi3, __udivdi3_internal)
-
-UDWtype
-__umoddi3 (UDWtype u, UDWtype v)
-{
- UDWtype w;
-
- __udivmoddi4 (u, v, &w);
- return w;
-}
-strong_alias (__umoddi3, __umoddi3_internal)
-
-/* We declare these with compat_symbol so that they are not visible at
- link time. Programs must use the functions from libgcc. */
-#ifdef SHARED
-# include <shlib-compat.h>
-compat_symbol (libc, __divdi3, __divdi3, GLIBC_2_0);
-compat_symbol (libc, __moddi3, __moddi3, GLIBC_2_0);
-compat_symbol (libc, __udivdi3, __udivdi3, GLIBC_2_0);
-compat_symbol (libc, __umoddi3, __umoddi3, GLIBC_2_0);
-#endif
diff --git a/sysdeps/wordsize-32/llabs.c b/sysdeps/wordsize-32/llabs.c
deleted file mode 100644
index ef4d4875a2..0000000000
--- a/sysdeps/wordsize-32/llabs.c
+++ /dev/null
@@ -1,22 +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/>. */
-
-#include <inttypes.h>
-
-#include <stdlib/llabs.c>
-
-weak_alias (llabs, imaxabs)
diff --git a/sysdeps/wordsize-32/lldiv.c b/sysdeps/wordsize-32/lldiv.c
deleted file mode 100644
index 81465aa43c..0000000000
--- a/sysdeps/wordsize-32/lldiv.c
+++ /dev/null
@@ -1,26 +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/>. */
-
-/* Ugly trick ahead to make the alias work. */
-#define imaxdiv __libc_imaxdiv
-
-#include <inttypes.h>
-
-#include <stdlib/lldiv.c>
-
-#undef imaxdiv
-weak_alias (lldiv, imaxdiv)
diff --git a/sysdeps/wordsize-32/strtoimax.c b/sysdeps/wordsize-32/strtoimax.c
deleted file mode 100644
index eb01a46dc1..0000000000
--- a/sysdeps/wordsize-32/strtoimax.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Convert string to maximal integer.
- Copyright (C) 1997-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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 <inttypes.h>
-#include <stdlib.h>
-
-intmax_t
-strtoimax (const char *__restrict nptr, char **__restrict endptr, int base)
-{
- return __strtoll_internal (nptr, endptr, base, 0);
-}
diff --git a/sysdeps/wordsize-32/strtoumax.c b/sysdeps/wordsize-32/strtoumax.c
deleted file mode 100644
index bd3b94125b..0000000000
--- a/sysdeps/wordsize-32/strtoumax.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Convert string to maximal unsigned integer.
- Copyright (C) 1997-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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 <inttypes.h>
-#include <stdlib.h>
-
-uintmax_t
-strtoumax (const char *__restrict nptr, char **__restrict endptr, int base)
-{
- return __strtoull_internal (nptr, endptr, base, 0);
-}
diff --git a/sysdeps/wordsize-32/wcstoimax.c b/sysdeps/wordsize-32/wcstoimax.c
deleted file mode 100644
index de1273181c..0000000000
--- a/sysdeps/wordsize-32/wcstoimax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert wide-character string to maximal integer.
- Copyright (C) 1997-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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 <inttypes.h>
-#include <wchar.h>
-
-intmax_t
-wcstoimax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
- int base)
-{
- return __wcstoll_internal (nptr, endptr, base, 0);
-}
diff --git a/sysdeps/wordsize-32/wcstoumax.c b/sysdeps/wordsize-32/wcstoumax.c
deleted file mode 100644
index 57b802a954..0000000000
--- a/sysdeps/wordsize-32/wcstoumax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert wide-character string to maximal unsigned integer.
- Copyright (C) 1997-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
- 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 <inttypes.h>
-#include <wchar.h>
-
-uintmax_t
-wcstoumax (const wchar_t *__restrict nptr, wchar_t **__restrict endptr,
- int base)
-{
- return __wcstoull_internal (nptr, endptr, base, 0);
-}