#include <assert.h>
#include <unistd.h>
-/* Work around gcc's refusal to create aliases. */
+/* Work around gcc's refusal to create aliases.
+ * TODO: Add in a define to disable the aliases? */
+
+#if UINT_MAX == ULONG_MAX
#define atoi __ignore_atoi
#define abs __ignore_abs
+#endif
+#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
+#define llabs __ignore_llabs
+#define atoll __ignore_atoll
+#define strtoll __ignore_strtoll
+#define strtoull __ignore_strtoull
+#endif
+
#include <stdlib.h>
+
+#if UINT_MAX == ULONG_MAX
#undef atoi
#undef abs
+#endif
+#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
+#undef llabs
+#undef atoll
+#undef strtoll
+#undef strtoull
+#endif
extern unsigned long
_stdlib_strto_l(register const char * __restrict str,
#endif
#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
-long long int llabs (long long int j)
-{
- return (j >= 0) ? j : -j;
-}
+strong_alias(labs,llabs)
#endif
#if ULONG_MAX == UINTMAX_MAX
#endif
#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
-long long int atoll (const char *nptr)
-{
- return strtol(nptr, (char **) NULL, 10);
-}
+strong_alias(atol,atoll)
#endif
long atol(const char *nptr)
#endif
#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
-long long int strtoll (__const char *__restrict str, char **__restrict endptr, int base)
-{
- return _stdlib_strto_l(str, endptr, base, 1);
-}
+strong_alias(strtol,strtoll)
#endif
long strtol(const char * __restrict str, char ** __restrict endptr, int base)
{
return _stdlib_strto_l(str, endptr, base, 1);
}
+
#endif
/**********************************************************************/
#ifdef L_strtoll
#endif
#if defined(ULLONG_MAX) && (ULLONG_MAX == ULONG_MAX)
-unsigned long long int strtoull (__const char *__restrict str,
- char **__restrict endptr, int base)
-{
- return _stdlib_strto_l(str, endptr, base, 0);
-}
+strong_alias(strtoul,strtoull)
#endif
-unsigned long strtoul(const char * __restrict str,
- char ** __restrict endptr, int base)
+unsigned long strtoul(const char * __restrict str,
+ char ** __restrict endptr, int base)
{
return _stdlib_strto_l(str, endptr, base, 0);
}