diff options
Diffstat (limited to 'sysdeps/wordsize-32')
-rw-r--r-- | sysdeps/wordsize-32/Versions | 7 | ||||
-rw-r--r-- | sysdeps/wordsize-32/bits/wordsize.h | 21 | ||||
-rw-r--r-- | sysdeps/wordsize-32/divdi3-symbol-hacks.h | 31 | ||||
-rw-r--r-- | sysdeps/wordsize-32/divdi3.c | 342 | ||||
-rw-r--r-- | sysdeps/wordsize-32/llabs.c | 22 | ||||
-rw-r--r-- | sysdeps/wordsize-32/lldiv.c | 26 | ||||
-rw-r--r-- | sysdeps/wordsize-32/strtoimax.c | 27 | ||||
-rw-r--r-- | sysdeps/wordsize-32/strtoumax.c | 27 | ||||
-rw-r--r-- | sysdeps/wordsize-32/wcstoimax.c | 28 | ||||
-rw-r--r-- | sysdeps/wordsize-32/wcstoumax.c | 28 |
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); -} |