aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2020-12-08 18:15:27 +0000
committerJoseph Myers <joseph@codesourcery.com>2020-12-08 18:15:27 +0000
commit224b419d1e750e3e9ced5c57774bb2bdd5292e28 (patch)
tree270809a5e89155afa1990475bcff36a5d7ae6f24
parent4d3a77c73594c3704992f8d5b779c8be053cff35 (diff)
downloadglibc-224b419d1e750e3e9ced5c57774bb2bdd5292e28.zip
glibc-224b419d1e750e3e9ced5c57774bb2bdd5292e28.tar.gz
glibc-224b419d1e750e3e9ced5c57774bb2bdd5292e28.tar.bz2
Make strtoimax, strtoumax, wcstoimax, wcstoumax into aliases
The functions strtoimax, strtoumax, wcstoimax, wcstoumax currently have three implementations each (wordsize-32, wordsize-64 and dummy implementation in stdlib/ using #error), defining the functions as thin wrappers round corresponding *_internal functions. Simplify the code by changing them into aliases of functions such as strtol and wcstoull. This is more consistent with how e.g. imaxdiv is handled. Tested for x86_64 and x86.
-rw-r--r--include/inttypes.h3
-rw-r--r--stdlib/Makefile1
-rw-r--r--stdlib/strtoimax.c1
-rw-r--r--stdlib/strtoll.c1
-rw-r--r--stdlib/strtoull.c1
-rw-r--r--stdlib/strtoumax.c1
-rw-r--r--stdlib/wcstoimax.c1
-rw-r--r--stdlib/wcstoumax.c1
-rw-r--r--sysdeps/wordsize-32/strtoimax.c27
-rw-r--r--sysdeps/wordsize-32/strtoumax.c28
-rw-r--r--sysdeps/wordsize-32/wcstoimax.c28
-rw-r--r--sysdeps/wordsize-32/wcstoumax.c28
-rw-r--r--sysdeps/wordsize-64/strtoimax.c27
-rw-r--r--sysdeps/wordsize-64/strtol.c1
-rw-r--r--sysdeps/wordsize-64/strtoul.c1
-rw-r--r--sysdeps/wordsize-64/strtoumax.c28
-rw-r--r--sysdeps/wordsize-64/wcstoimax.c28
-rw-r--r--sysdeps/wordsize-64/wcstol.c1
-rw-r--r--sysdeps/wordsize-64/wcstoul.c1
-rw-r--r--sysdeps/wordsize-64/wcstoumax.c28
-rw-r--r--wcsmbs/wcstoll.c1
-rw-r--r--wcsmbs/wcstoull.c1
22 files changed, 8 insertions, 230 deletions
diff --git a/include/inttypes.h b/include/inttypes.h
index 3a583c6..9cb6636 100644
--- a/include/inttypes.h
+++ b/include/inttypes.h
@@ -1,6 +1,3 @@
#ifndef _INTTYPES_H
#include <stdlib/inttypes.h>
-#ifndef _ISOMAC
-libc_hidden_proto (strtoumax)
-#endif
#endif
diff --git a/stdlib/Makefile b/stdlib/Makefile
index f8a1660..29b7cd7 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -56,7 +56,6 @@ routines := \
system canonicalize \
a64l l64a \
rpmatch strfmon strfmon_l getsubopt xpg_basename fmtmsg \
- strtoimax strtoumax wcstoimax wcstoumax \
getcontext setcontext makecontext swapcontext
aux = grouping groupingwc tens_in_limb
diff --git a/stdlib/strtoimax.c b/stdlib/strtoimax.c
deleted file mode 100644
index f1de70f..0000000
--- a/stdlib/strtoimax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `intmax_t' type"
diff --git a/stdlib/strtoll.c b/stdlib/strtoll.c
index b156665..a6b693a 100644
--- a/stdlib/strtoll.c
+++ b/stdlib/strtoll.c
@@ -30,4 +30,5 @@ compat_symbol (libc, __strtoll_internal, __strtoq_internal, GLIBC_2_0);
# endif
weak_alias (strtoll, strtoq)
+weak_alias (strtoll, strtoimax)
#endif
diff --git a/stdlib/strtoull.c b/stdlib/strtoull.c
index b4bf9a9..dd57aa5 100644
--- a/stdlib/strtoull.c
+++ b/stdlib/strtoull.c
@@ -30,4 +30,5 @@ compat_symbol (libc, __strtoull_internal, __strtouq_internal, GLIBC_2_0);
# endif
weak_alias (strtoull, strtouq)
+weak_alias (strtoull, strtoumax)
#endif
diff --git a/stdlib/strtoumax.c b/stdlib/strtoumax.c
deleted file mode 100644
index 508cb19..0000000
--- a/stdlib/strtoumax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `uintmax_t' type"
diff --git a/stdlib/wcstoimax.c b/stdlib/wcstoimax.c
deleted file mode 100644
index f1de70f..0000000
--- a/stdlib/wcstoimax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `intmax_t' type"
diff --git a/stdlib/wcstoumax.c b/stdlib/wcstoumax.c
deleted file mode 100644
index 508cb19..0000000
--- a/stdlib/wcstoumax.c
+++ /dev/null
@@ -1 +0,0 @@
-#error "The correct implementation must be chosen based on the `uintmax_t' type"
diff --git a/sysdeps/wordsize-32/strtoimax.c b/sysdeps/wordsize-32/strtoimax.c
deleted file mode 100644
index be1b71e..0000000
--- a/sysdeps/wordsize-32/strtoimax.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Convert string to maximal integer.
- Copyright (C) 1997-2020 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
- <https://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 c6f090c..0000000
--- a/sysdeps/wordsize-32/strtoumax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert string to maximal unsigned integer.
- Copyright (C) 1997-2020 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
- <https://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);
-}
-libc_hidden_def (strtoumax)
diff --git a/sysdeps/wordsize-32/wcstoimax.c b/sysdeps/wordsize-32/wcstoimax.c
deleted file mode 100644
index ce72558..0000000
--- a/sysdeps/wordsize-32/wcstoimax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert wide-character string to maximal integer.
- Copyright (C) 1997-2020 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
- <https://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 ee47b25..0000000
--- a/sysdeps/wordsize-32/wcstoumax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert wide-character string to maximal unsigned integer.
- Copyright (C) 1997-2020 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
- <https://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);
-}
diff --git a/sysdeps/wordsize-64/strtoimax.c b/sysdeps/wordsize-64/strtoimax.c
deleted file mode 100644
index 9df5f2f..0000000
--- a/sysdeps/wordsize-64/strtoimax.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/* Convert string to maximal integer.
- Copyright (C) 1997-2020 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
- <https://www.gnu.org/licenses/>. */
-
-#include <inttypes.h>
-#include <stdlib.h>
-
-intmax_t
-strtoimax (const char *__restrict nptr, char **__restrict endptr, int base)
-{
- return __strtol_internal (nptr, endptr, base, 0);
-}
diff --git a/sysdeps/wordsize-64/strtol.c b/sysdeps/wordsize-64/strtol.c
index ac17bbe..a1b2374 100644
--- a/sysdeps/wordsize-64/strtol.c
+++ b/sysdeps/wordsize-64/strtol.c
@@ -14,3 +14,4 @@ weak_alias (strtol, strtoll)
libc_hidden_ver (strtol, strtoll)
weak_alias (strtol, strtoq)
libc_hidden_ver (strtol, strtoq)
+weak_alias (strtol, strtoimax)
diff --git a/sysdeps/wordsize-64/strtoul.c b/sysdeps/wordsize-64/strtoul.c
index 401882c..856aa11 100644
--- a/sysdeps/wordsize-64/strtoul.c
+++ b/sysdeps/wordsize-64/strtoul.c
@@ -12,3 +12,4 @@ strong_alias (__strtoul_internal, __strtoull_internal)
libc_hidden_ver (__strtoul_internal, __strtoull_internal)
weak_alias (strtoul, strtoull)
weak_alias (strtoul, strtouq)
+weak_alias (strtoul, strtoumax)
diff --git a/sysdeps/wordsize-64/strtoumax.c b/sysdeps/wordsize-64/strtoumax.c
deleted file mode 100644
index aad697b..0000000
--- a/sysdeps/wordsize-64/strtoumax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert string to maximal unsigned integer.
- Copyright (C) 1997-2020 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
- <https://www.gnu.org/licenses/>. */
-
-#include <inttypes.h>
-#include <stdlib.h>
-
-uintmax_t
-strtoumax (const char *__restrict nptr, char **__restrict endptr, int base)
-{
- return __strtoul_internal (nptr, endptr, base, 0);
-}
-libc_hidden_def (strtoumax)
diff --git a/sysdeps/wordsize-64/wcstoimax.c b/sysdeps/wordsize-64/wcstoimax.c
deleted file mode 100644
index 6a91737..0000000
--- a/sysdeps/wordsize-64/wcstoimax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert wide-character string to maximal integer.
- Copyright (C) 1997-2020 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
- <https://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 __wcstol_internal (nptr, endptr, base, 0);
-}
diff --git a/sysdeps/wordsize-64/wcstol.c b/sysdeps/wordsize-64/wcstol.c
index b10895a..f99c273 100644
--- a/sysdeps/wordsize-64/wcstol.c
+++ b/sysdeps/wordsize-64/wcstol.c
@@ -12,3 +12,4 @@ strong_alias (__wcstol_internal, __wcstoll_internal)
libc_hidden_ver (__wcstol_internal, __wcstoll_internal)
weak_alias (wcstol, wcstoll)
weak_alias (wcstol, wcstoq)
+weak_alias (wcstol, wcstoimax)
diff --git a/sysdeps/wordsize-64/wcstoul.c b/sysdeps/wordsize-64/wcstoul.c
index 2becb80..e1458e1 100644
--- a/sysdeps/wordsize-64/wcstoul.c
+++ b/sysdeps/wordsize-64/wcstoul.c
@@ -12,3 +12,4 @@ strong_alias (__wcstoul_internal, __wcstoull_internal)
libc_hidden_ver (__wcstoul_internal, __wcstoull_internal)
weak_alias (wcstoul, wcstoull)
weak_alias (wcstoul, wcstouq)
+weak_alias (wcstoul, wcstoumax)
diff --git a/sysdeps/wordsize-64/wcstoumax.c b/sysdeps/wordsize-64/wcstoumax.c
deleted file mode 100644
index c11053c..0000000
--- a/sysdeps/wordsize-64/wcstoumax.c
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Convert wide-character string to maximal unsigned integer.
- Copyright (C) 1997-2020 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
- <https://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 __wcstoul_internal (nptr, endptr, base, 0);
-}
diff --git a/wcsmbs/wcstoll.c b/wcsmbs/wcstoll.c
index 9f5ea00..2871db8 100644
--- a/wcsmbs/wcstoll.c
+++ b/wcsmbs/wcstoll.c
@@ -22,3 +22,4 @@
#include "wcstol.c"
weak_alias (wcstoll, wcstoq)
+weak_alias (wcstoll, wcstoimax)
diff --git a/wcsmbs/wcstoull.c b/wcsmbs/wcstoull.c
index 7ba8ebd..b908030 100644
--- a/wcsmbs/wcstoull.c
+++ b/wcsmbs/wcstoull.c
@@ -22,3 +22,4 @@
#include "wcstoul.c"
weak_alias (wcstoull, wcstouq)
+weak_alias (wcstoull, wcstoumax)