Skip to content

Commit

Permalink
* include/stdlib.h: Add libc_hidden_proto for strto*, __strto*_l.
Browse files Browse the repository at this point in the history
	Remove __strto*_l inlines.
	* include/wchar.h: Add libc_hidden_proto for wcsto*, __wcsto*_l.
	* stdlib/strtod.c: Add libc_hidden_def.
	* stdlib/strtod_l.c: Likewise.
	* stdlib/strtold.c [__LONG_DOUBLE_MATH_OPTIONAL]: Add libc_hidden_proto
	for __new_strtold and __new_wcstold.
	* sysdeps/ieee754/ldbl-128ibm/strtold_l.c: Add libc_hidden_proto for
	__STRTOF, STRTOF.
	* stdlib/strtol.c: Add libc_hidden_def.
	* stdlib/strtol_l.c: Likewise.
	* sysdeps/wordsize-64/strtol.c: Add libc_hidden_ver for strtoll and
	strtoq.

	* scripts/data/localplt-powerpc-linux-gnu.data: New file.

	* scripts/data/localplt-x86_64-linux-gnu.data: File renamed to ...
	* scripts/data/localplt-generic.data: ... here.
	* elf/Makefile (check-data): Get generic file if no other.
	($(objpfx)check-localplt.out): Make target unconditional.
  • Loading branch information
Roland McGrath committed Aug 7, 2007
1 parent eef38c2 commit 773e305
Showing 13 changed files with 87 additions and 59 deletions.
21 changes: 21 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
2007-08-06 Roland McGrath <roland@redhat.com>

* include/stdlib.h: Add libc_hidden_proto for strto*, __strto*_l.
Remove __strto*_l inlines.
* include/wchar.h: Add libc_hidden_proto for wcsto*, __wcsto*_l.
* stdlib/strtod.c: Add libc_hidden_def.
* stdlib/strtod_l.c: Likewise.
* stdlib/strtold.c [__LONG_DOUBLE_MATH_OPTIONAL]: Add libc_hidden_proto
for __new_strtold and __new_wcstold.
* sysdeps/ieee754/ldbl-128ibm/strtold_l.c: Add libc_hidden_proto for
__STRTOF, STRTOF.
* stdlib/strtol.c: Add libc_hidden_def.
* stdlib/strtol_l.c: Likewise.
* sysdeps/wordsize-64/strtol.c: Add libc_hidden_ver for strtoll and
strtoq.

* scripts/data/localplt-powerpc-linux-gnu.data: New file.

* scripts/data/localplt-x86_64-linux-gnu.data: File renamed to ...
* scripts/data/localplt-generic.data: ... here.
* elf/Makefile (check-data): Get generic file if no other.
($(objpfx)check-localplt.out): Make target unconditional.

* sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_discover_osversion):
Use ElfW(Nhdr).

22 changes: 10 additions & 12 deletions elf/Makefile
Original file line number Diff line number Diff line change
@@ -837,28 +837,26 @@ $(objpfx)tst-dlmodcount: $(libdl)
$(objpfx)tst-dlmodcount.out: $(test-modules)

check-data := $(firstword $(wildcard \
$(foreach M,$(config-machine) $(base-machine),\
../scripts/data/localplt-$M-$(config-os).data)))
ifneq (,$(check-data))
$(patsubst %,../scripts/data/localplt-%.data,\
$(addsuffix -$(config-os),\
$(config-machine) $(base-machine))\
generic)))
tests: $(objpfx)check-localplt.out

ifeq ($(have-thread-library),yes)
thread-dso := $(filter-out %_nonshared.a, $(shared-thread-library))
endif

$(objpfx)check-localplt.out: $(objpfx)check-localplt $(common-objpfx)libc.so \
$(common-objpfx)math/libm.so $(thread-dso) \
$(common-objpfx)rt/librt.so \
$(common-objpfx)dlfcn/libdl.so \
$(objpfx)check-localplt.out: $(objpfx)check-localplt \
$(common-objpfx)libc.so \
$(common-objpfx)math/libm.so $(thread-dso) \
$(common-objpfx)rt/librt.so \
$(common-objpfx)dlfcn/libdl.so \
$(check-data)
$(objpfx)check-localplt $(common-objpfx)libc.so \
$(common-objpfx)math/libm.so $(thread-dso) \
$(common-objpfx)rt/librt.so \
$(common-objpfx)dlfcn/libdl.so | \
$(dir $<)$(notdir $<) $(filter-out $< $(check-data),$^) | \
LC_ALL=C sort | \
diff -u $(check-data) - > $@
endif
endif

$(objpfx)tst-dlopenrpathmod.so: $(libdl)
$(objpfx)tst-dlopenrpath: $(objpfx)tst-dlopenrpathmod.so $(libdl)
56 changes: 14 additions & 42 deletions include/stdlib.h
Original file line number Diff line number Diff line change
@@ -19,6 +19,13 @@ extern __typeof (strtoull_l) __strtoull_l;
extern __typeof (strtod_l) __strtod_l;
extern __typeof (strtof_l) __strtof_l;
extern __typeof (strtold_l) __strtold_l;
libc_hidden_proto (__strtol_l)
libc_hidden_proto (__strtoul_l)
libc_hidden_proto (__strtoll_l)
libc_hidden_proto (__strtoull_l)
libc_hidden_proto (__strtod_l)
libc_hidden_proto (__strtof_l)
libc_hidden_proto (__strtold_l)

libc_hidden_proto (exit)
libc_hidden_proto (abort)
@@ -170,48 +177,13 @@ libc_hidden_proto (____strtoll_l_internal)
libc_hidden_proto (____strtoul_l_internal)
libc_hidden_proto (____strtoull_l_internal)

extern __inline double
__NTH (__strtod_l (__const char *__restrict __nptr, char **__restrict __endptr,
__locale_t __loc))
{
return ____strtod_l_internal (__nptr, __endptr, 0, __loc);
}
extern __inline long int
__NTH (__strtol_l (__const char *__restrict __nptr, char **__restrict __endptr,
int __base, __locale_t __loc))
{
return ____strtol_l_internal (__nptr, __endptr, __base, 0, __loc);
}
extern __inline unsigned long int
__NTH (__strtoul_l (__const char *__restrict __nptr,
char **__restrict __endptr, int __base, __locale_t __loc))
{
return ____strtoul_l_internal (__nptr, __endptr, __base, 0, __loc);
}
extern __inline float
__NTH (__strtof_l (__const char *__restrict __nptr, char **__restrict __endptr,
__locale_t __loc))
{
return ____strtof_l_internal (__nptr, __endptr, 0, __loc);
}
extern __inline long double
__NTH (__strtold_l (__const char *__restrict __nptr,
char **__restrict __endptr, __locale_t __loc))
{
return ____strtold_l_internal (__nptr, __endptr, 0, __loc);
}
__extension__ extern __inline long long int
__NTH (__strtoll_l (__const char *__restrict __nptr,
char **__restrict __endptr, int __base, __locale_t __loc))
{
return ____strtoll_l_internal (__nptr, __endptr, __base, 0, __loc);
}
__extension__ extern __inline unsigned long long int
__NTH (__strtoull_l (__const char * __restrict __nptr,
char **__restrict __endptr, int __base, __locale_t __loc))
{
return ____strtoull_l_internal (__nptr, __endptr, __base, 0, __loc);
}
libc_hidden_proto (strtof)
libc_hidden_proto (strtod)
libc_hidden_proto (strtold)
libc_hidden_proto (strtol)
libc_hidden_proto (strtoll)
libc_hidden_proto (strtoul)
libc_hidden_proto (strtoull)

extern char *__ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign);
14 changes: 14 additions & 0 deletions include/wchar.h
Original file line number Diff line number Diff line change
@@ -15,6 +15,13 @@ extern __typeof (wcstod_l) __wcstod_l;
extern __typeof (wcstof_l) __wcstof_l;
extern __typeof (wcstold_l) __wcstold_l;
extern __typeof (wcsftime_l) __wcsftime_l;
libc_hidden_proto (__wcstol_l)
libc_hidden_proto (__wcstoul_l)
libc_hidden_proto (__wcstoll_l)
libc_hidden_proto (__wcstoull_l)
libc_hidden_proto (__wcstod_l)
libc_hidden_proto (__wcstof_l)
libc_hidden_proto (__wcstold_l)
libc_hidden_proto (__wcsftime_l)


@@ -51,6 +58,13 @@ libc_hidden_proto (__wcstol_internal)
libc_hidden_proto (__wcstoll_internal)
libc_hidden_proto (__wcstoul_internal)
libc_hidden_proto (__wcstoull_internal)
libc_hidden_proto (wcstof)
libc_hidden_proto (wcstod)
libc_hidden_proto (wcstold)
libc_hidden_proto (wcstol)
libc_hidden_proto (wcstoll)
libc_hidden_proto (wcstoul)
libc_hidden_proto (wcstoull)

libc_hidden_proto (__wcscasecmp_l)
libc_hidden_proto (__wcsncasecmp_l)
File renamed without changes.
7 changes: 7 additions & 0 deletions scripts/data/localplt-powerpc-linux-gnu.data
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
libc.so: _Unwind_Find_FDE
libc.so: calloc
libc.so: free
libc.so: malloc
libc.so: memalign
libc.so: realloc
libm.so: matherr
5 changes: 4 additions & 1 deletion stdlib/strtod.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* Read decimal floating point numbers.
This file is part of the GNU C Library.
Copyright (C) 1995-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
Copyright (C) 1995-2002,2003,2004,2006,2007 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
The GNU C Library is free software; you can redistribute it and/or
@@ -69,6 +69,9 @@ STRTOF (nptr, endptr)
{
return INTERNAL(STRTOF_L) (nptr, endptr, 0, _NL_CURRENT_LOCALE);
}
#if defined _LIBC
libc_hidden_def (STRTOF)
#endif

#ifdef LONG_DOUBLE_COMPAT
# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
4 changes: 4 additions & 0 deletions stdlib/strtod_l.c
Original file line number Diff line number Diff line change
@@ -1599,6 +1599,10 @@ __STRTOF (nptr, endptr, loc)
{
return ____STRTOF_INTERNAL (nptr, endptr, 0, loc);
}
#if defined _LIBC
libc_hidden_def (__STRTOF)
libc_hidden_ver (__STRTOF, STRTOF)
#endif
weak_alias (__STRTOF, STRTOF)

#ifdef LONG_DOUBLE_COMPAT
3 changes: 2 additions & 1 deletion stdlib/strtol.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Convert string representation of a number into an integer value.
Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001,2002,2003,2004
Copyright (C) 1991,92,94,95,96,97,98,99,2000,2001,2002,2003,2004,2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -109,3 +109,4 @@ strtol (nptr, endptr, base)
{
return INTERNAL (__strtol_l) (nptr, endptr, base, 0, _NL_CURRENT_LOCALE);
}
libc_hidden_def (strtol)
3 changes: 2 additions & 1 deletion stdlib/strtol_l.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* Convert string representing a number to integer value, using given locale.
Copyright (C) 1997, 2002, 2004, 2006 Free Software Foundation, Inc.
Copyright (C) 1997, 2002, 2004, 2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -561,4 +561,5 @@ __strtol_l (nptr, endptr, base, loc)
{
return INTERNAL (__strtol_l) (nptr, endptr, base, 0, loc);
}
libc_hidden_def (__strtol_l)
weak_alias (__strtol_l, strtol_l)
4 changes: 3 additions & 1 deletion stdlib/strtold.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/* Read decimal floating point numbers.
This file is part of the GNU C Library.
Copyright (C) 1995-2002, 2003, 2004, 2006 Free Software Foundation, Inc.
Copyright (C) 1995-2002,2003,2004,2006,2007 Free Software Foundation, Inc.
Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
The GNU C Library is free software; you can redistribute it and/or
@@ -33,6 +33,8 @@ long double ____new_wcstold_internal (const wchar_t *, wchar_t **, int);
long double __new_wcstold (const wchar_t *, wchar_t **);
libc_hidden_proto (____new_strtold_internal)
libc_hidden_proto (____new_wcstold_internal)
libc_hidden_proto (__new_strtold)
libc_hidden_proto (__new_wcstold)
#else
# define NEW(x) x
#endif
5 changes: 4 additions & 1 deletion sysdeps/ieee754/ldbl-128ibm/strtold_l.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* Copyright (C) 1999, 2006 Free Software Foundation, Inc.
/* Copyright (C) 1999, 2006, 2007 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
@@ -37,6 +37,9 @@ extern long double ____new_strtold_l (const char *, char **, __locale_t);
# define __STRTOF ____new_strtold_l
# define ____STRTOF_INTERNAL ____strtold_l_internal
#endif
extern __typeof (__STRTOF) STRTOF;
libc_hidden_proto (__STRTOF)
libc_hidden_proto (STRTOF)
#define MPN2FLOAT __mpn_construct_long_double
#define FLOAT_HUGE_VAL HUGE_VALL
# define SET_MANTISSA(flt, mant) \
2 changes: 2 additions & 0 deletions sysdeps/wordsize-64/strtol.c
Original file line number Diff line number Diff line change
@@ -11,4 +11,6 @@
strong_alias (__strtol_internal, __strtoll_internal)
libc_hidden_ver (__strtol_internal, __strtoll_internal)
weak_alias (strtol, strtoll)
libc_hidden_ver (strtol, strtoll)
weak_alias (strtol, strtoq)
libc_hidden_ver (strtol, strtoq)

0 comments on commit 773e305

Please sign in to comment.