Compare commits

...
Author SHA1 Message Date
David S. Miller a95535fc09 NEWS: Add 16885 to fixed bug list. 2014-05-01 16:42:27 -04:00
David S. Miller df137ce8ce Fix v9/64-bit strcmp when string ends in multiple zero bytes.
[BZ #16885]
	* sysdeps/sparc/sparc64/strcmp.S: Fix end comparison handling when
	multiple zero bytes exist at the end of a string.
	Reported by Aurelien Jarno <aurelien@aurel32.net>

	* string/test-strcmp.c (check): Add explicit test for situations where
	there are multiple zero bytes after the first.
2014-05-01 15:19:02 -04:00
Carlos O'Donell d9ba4bd3ea [PATCH] Make sunrpc code usable again
New configure option --enable-obsolete-rpc makes the deprecated RPC
headers and functions available at compile time as they were before
version 2.14.  This option will be removed at some time in the future
after the TI-RPC library becomes fully sufficient for the needs of
existing applications.

(cheery pick from commit 82071029502b354886f86e315c230b808d99afc2)
2014-01-30 15:03:04 -05:00
Carlos O'Donell 7def6a63a0 Don't parse %s format argument as multibyte string
2012-09-28  Andreas Schwab  <schwab@linux-m68k.org>

            [BZ #6530]
            * stdio-common/vfprintf.c (process_string_arg): Revert
            2000-07-22 change.

2011-09-28  Jonathan Nieder  <jrnieder@gmail.com>

            * stdio-common/Makefile (tst-sprintf-ENV): Set environment
            for testcase.
            * stdio-common/tst-sprintf.c: Include <locale.h>
            (main): Test sprintf's handling of incomplete multibyte
            characters.

(cherry picked from commit 715a900c90)
2014-01-30 13:19:58 -05:00
Andreas Schwab 1ba48eb07a Fix invalid memory access in do_lookup_x.
[BZ #13579] Do not free l_initfini and allow it to be reused
on subsequent dl_open calls for the same library. This fixes
the invalid memory access in do_lookup_x when the previously
free'd l_initfini was accessed through l_searchlist when a
library had been opened for the second time.

(cherry picked from commit 0479b305c5)
2014-01-30 13:05:40 -05:00
Ulrich Drepper e8b5394afb Fix locking in fmtmsg
(cherry picked from commit 7724defcf8)
2014-01-30 02:18:43 -05:00
Ulrich Drepper 4a659bb814 Sort objects before relocations
(cherry picked from commit 6ee65ed6dd)
2014-01-30 01:05:58 -05:00
Maxim Kuvyrkov 9875bb2221 Fix race in free() of fastbin chunk: BZ #15073
Perform sanity check only if we have_lock.  Due to lockless nature of fastbins
we need to be careful derefencing pointers to fastbin entries (chunksize(old)
in this case) in multithreaded environments.

The fix is to add have_lock to the if-condition checks.  The rest of the patch
only makes code more readable.

	* malloc/malloc.c (_int_free): Perform sanity check only if we
	have_lock.

Conflicts:

	ChangeLog
	NEWS
2014-01-05 15:02:11 +13:00
Chris Metcalf 53fa2b6063 Add 13773 to NEWS for 2.15.1. 2013-09-23 12:03:08 -04:00
Chris Metcalf c8fb02d89e Call __fxstatat64 from faccessat() to avoid PLT in -Os builds.
(cherry picked from commit 3601428fb0)
2013-09-23 11:57:21 -04:00
Carlos O'Donell 1f7f8afb4c Add 11261 and 13754 to NEWS for 2.15.1. 2013-03-17 18:14:22 -04:00
Andreas Schwab 291392f02a Fix missing nearbyintl@GLIBC_2.1 on powerpc
(cherry picked from commit 412bd96612)
2012-12-01 18:36:33 +01:00
Andreas Schwab b9584b603a Revert "2012-11-07 Andreas Jaeger <aj@suse.de>"
This reverts commit fc8c942ba4.

The issue has been fixed in the kernel.
2012-11-27 16:45:53 +01:00
Jeff Law fc8c942ba4 2012-11-07 Andreas Jaeger <aj@suse.de>
[BZ #14809]
        * sysdeps/unix/sysv/linux/sys/sysctl.h (_UAPI_LINUX_KERNEL_H)
        (_UAPI_LINUX_TYPES_H): Starting with Linux 3.7, the include header
        guards are changed.  Only define if not yet defined, #undef back
        after including linux/sysctl.h if defined here.
(cherry picked from commit 01f34a3bd8)

Conflicts:
	ChangeLog
	NEWS
2012-11-13 09:22:33 +01:00
H.J. Lu 494251ab9f Define HAS_FMA with bit_FMA_Usable
cherry-pick 0569936773

Conflicts:
	ChangeLog
	NEWS
2012-10-04 07:28:33 -07:00
Joseph Myers 6d3997c51b Use size_t instead of int for internal variables in glob (bug 14621).
(cherry picked from commit b87c4b24d9)

Conflicts:

	ChangeLog
2012-09-27 21:40:59 +00:00
Joseph Myers 8a780f7f68 Fix strtod integer/buffer overflow (bug 14459).
(cherry picked from commit d6e70f4368)

Conflicts:

	ChangeLog
	NEWS
	stdlib/Makefile
2012-08-27 22:59:56 +00:00
Chris Metcalf 2fbd159a77 Call __fxstatat64 from faccessat() to avoid PLT in -Os builds.
(cherry picked from commit 3601428fb0)
2012-06-28 11:05:49 -04:00
Chris Metcalf 730ca05f09 Use include/sys/epoll.h to provide libc_hidden_proto for epoll_pwait().
(cherry picked from commit 463de86252)
2012-06-28 10:18:37 -04:00
Chris Metcalf 287f25ea2c Use <> brackets for not-cancel.h in sysdeps/unix/sysv/linux/grantpt.c.
(cherry picked from commit 540d7568ae)
2012-06-28 10:18:37 -04:00
Chris Metcalf 6c746d4f80 Update config.guess, config.sub from upstream config git repository.
(cherry picked from commit 607998afaa)
2012-06-28 10:18:36 -04:00
Chris Metcalf 3f0282ad25 Add Tile relocation types.
(cherry picked from commit 3ac8b282b6)
2012-06-28 10:18:36 -04:00
Joseph Myers 725b8ee08a Fix wordsize-64 cosh regression (bug 14273).
(cherry picked from commit b7abb4bf78)
2012-06-28 12:12:16 +00:00
Adhemerval Zanella b640404bd8 Fix for wrong ldbl128-ibm fmodl commit
(cherry picked from commit 1b671feb61)
2012-06-25 23:14:10 +00:00
Adhemerval Zanella c95a1e5f35 Fix ldbl128ibm fmodl for subnormals.
(cherry picked from commit 34ae0b3270)
2012-06-25 23:13:37 +00:00
Joseph Myers 2676061a91 Fix fmod for subnormals (bug 14048).
(cherry picked from commit c5bfe3d5ba)
2012-06-25 23:12:39 +00:00
Joseph Myers 3e5bea052b Fix x86 strcasecmp_l (bug 13786).
(cherry picked from commit 0bab47b6b2)
2012-06-25 21:43:15 +00:00
Carlos O'Donell e0ca0a0f76 Regenerate libc.pot.
Enhance scripts/list-sources.sh to search glibc-ports
for translatable strings.

(backported from trunk)
2012-06-24 22:22:39 +00:00
Carlos O'Donell 91fdff8d85 Set default charset to UTF-8 for libc.pot.
(cherry picked from commit 771766df5a)
2012-06-24 22:19:22 +00:00
Joseph Myers 48f6b23f2b Backport LIBC_TRY_CC_OPTION and regenerate configure scripts. 2012-06-21 15:25:20 +00:00
Carlos O'Donell b3073e90d7 Add BZ#14167 to NEWS. 2012-05-29 23:07:42 -04:00
Andreas Schwab b7bd97fde1 Disable use of FMA instructions in branred
(cherry picked from commit 7998fa7899)
2012-05-25 07:19:49 -04:00
Joseph Myers ddeb5e27dd Fix makefile/configure problems with sse2avx changes.
(cherry picked from commit 3b1004624e)
2012-05-25 07:09:15 -04:00
Ulrich Drepper e3d5df796c Use -msse2avx option for x86-64 libm functions
(cherry picked from commit 56f6f6a240)
2012-05-25 07:05:35 -04:00
Ulrich Drepper 7cf8e20d03 Handle ARENA_TEST correctly
(cherry picked from commit 41b81892f1)
2012-05-24 20:46:22 -04:00
Chris Metcalf 60ff996420 Fix bug in firstversions.awk version range handling.
(cherry picked from commit e034841eac)
2012-05-18 17:44:05 -04:00
Carlos O'Donell 6bee67b6cb Fixed BZ#13774. 2012-05-18 17:30:08 -04:00
Carlos O'Donell 8d93c8972c BZ#14059: Fix AVX and FMA4 detection.
Fix AVX and FMA4 detection by following the guidelines
set out by Intel and AMD for detecting these features.

(cherry picked from commit 1a0994f535)
2012-05-18 16:22:54 -04:00
Ulrich Drepper b934126eb2 Really fix AVX tests
There is no problem with strcmp, it doesn't use the YMM registers.
The math routines might since gcc perhaps generates such code.
Introduce bit_YMM_USBALE and use it in the math routines.

(cherry picked from commit 08cf777f9e)
2012-05-01 22:23:31 -04:00
Ulrich Drepper c37ba8a260 Reset bit_AVX in __cpu_features is OS support is missing
(cherry picked from commit afc5ed09cb)
2012-05-01 22:15:39 -04:00
Richard Henderson 3088c58cbb Use <> for include of kernel-features.h.
(cherry-picked from commit af850b1c97)
2012-05-01 20:13:32 -04:00
David S. Miller 13ccceff48 Add O_FSYNC define to sparc just like other platforms.
(cherry-picked from commit fb59b3a4f5)
2012-05-01 15:52:33 -04:00
David S. Miller c444059457 Fix ldbl-128 rintl/nearbyintl just like flt-32 variants.
* sysdeps/ieee754/ldbl-128/s_nearbyintl.c (__nearbyintl): Do not
	manipulate bits before adding and subtracting TWO112[sx].
	* sysdeps/ieee754/ldbl-128/s_rintl.c (__rintl): Likewise.

(cherry-picked from commit a78bc6549c)
2012-05-01 14:21:27 -04:00
Joseph Myers 228abdc277 Fix rintf rounding.
(cherry-picked from commit fe45ce09f3)
2012-05-01 14:18:24 -04:00
Joseph Myers e02cc8de8c Fix nearbyintf rounding.
(cherry-picked from commit 6cbeae4719)
2012-05-01 14:16:47 -04:00
Aurelien Jarno 21902de70d Use non-signaling floating-point comparisons in math functions.
(cherry-picked from commit 92221550d7)
2012-05-01 14:14:33 -04:00
Carlos O'Donell b657f1c558 Add NEWS section for upcoming 2.15.1 release.
Leave bugs fixed section for 2.15 as-is.

Add newly fixed bugs to the 2.15.1 section.
2012-04-23 09:14:44 -04:00
Carlos O'Donell 75b1233353 Fix merge conflict for sparc32/sparc64 ULPS. 2012-04-22 19:52:06 -04:00
Carlos O'Donell 406a752bf9 Update NEWS with BZ #13731. 2012-04-22 19:48:09 -04:00
David S. Miller 727675e0f7 Update long-double sparc math ULPs missed by previous changes.
* sysdeps/sparc/sparc32/fpu/libm-test-ulps: More jn test ULP updates.
	* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Likewise.

(cherry picked from commit 586394099c)
2012-04-22 17:41:46 -04:00
Andreas Schwab e1159da2d8 Reduce ldouble ULPs for jn tests on x86
(cherry picked from commit 06b99b0263)
2012-04-22 17:37:30 -04:00
Andreas Schwab 4904c344f1 Fix loss of precision in jn tests
(cherry picked from commit cfdc0dd7fa)
2012-04-22 17:32:43 -04:00
Carlos O'Donell 08e83d36e7 Cleanup trailing whitespace in NEWS. 2012-04-22 15:39:37 -04:00
Carlos O'Donell fd4d8d759c Update NEWS with BZ #13748. 2012-04-22 15:34:10 -04:00
Thomas Schwinge 13ad7387d3 Fix x86 PLT slot usage for feraiseexcept.
Then we're elf/check-localplt.out-clean again.
2012-04-22 15:29:16 -04:00
Carlos O'Donell 3836d4d661 Redefine __i686 for use with older compilers.
This is a conservative fix for BZ #411 which is already fixed
on trunk. In this fix we don't touch any of the thunks or
do any other work other than to redefine the compiler define.
This is the minimum change required to build on a broader range
of distributions.
2012-04-22 12:06:09 -04:00
186 changed files with 3853 additions and 1842 deletions
+389
View File
@@ -1,3 +1,392 @@
2014-05-01 David S. Miller <davem@davemloft.net>
[BZ #16885]
* sysdeps/sparc/sparc64/strcmp.S: Fix end comparison handling when
multiple zero bytes exist at the end of a string.
Reported by Aurelien Jarno <aurelien@aurel32.net>
* string/test-strcmp.c (check): Add explicit test for situations where
there are multiple zero bytes after the first.
2012-09-28 Andreas Schwab <schwab@linux-m68k.org>
[BZ #6530]
* stdio-common/vfprintf.c (process_string_arg): Revert
2000-07-22 change.
2011-09-28 Jonathan Nieder <jrnieder@gmail.com>
* stdio-common/Makefile (tst-sprintf-ENV): Set environment
for testcase.
* stdio-common/tst-sprintf.c: Include <locale.h>
(main): Test sprintf's handling of incomplete multibyte
characters.
2012-06-22 Andreas Schwab <schwab@redhat.com>
[BZ #13579]
* include/link.h (struct link_map): Add l_free_initfini.
* elf/dl-deps.c (_dl_map_object_deps): Set it when assigning
l_initfini.
* elf/dl-close.c (_dl_close_worker): Don't free l_initfini.
* elf/rtld.c (dl_main): Clear it on all objects loaded on startup.
* elf/dl-libc.c (free_mem): Free l_initfini if l_free_initfini is
set.
2012-02-24 Ulrich Drepper <drepper@gmail.com>
* stdlib/fmtmsg.c (fmtmsg): Lock around use of severity list.
Reported by Peng Haitao <penght@cn.fujitsu.com>.
2012-01-27 Ulrich Drepper <drepper@gmail.com>
[BZ #13618]
* elf/dl-open.c (dl_open_worker): Sort objects by dependency before
relocation.
* Makeconfig (libm): Define.
* elf/Makefile: Add rules to build and run tst-relsort1.
* elf/tst-relsort1.c: New file.
* elf/tst-relsort1mod1.c: New file.
* elf/tst-relsort1mod2.c: New file.
2014-01-04 Maxim Kuvyrkov <maxim@kugelworks.com>
Ondřej Bílka <neleai@seznam.cz>
[BZ #15073]
* malloc/malloc.c (_int_free): Perform sanity check only if we
have_lock.
2012-01-28 Chris Metcalf <cmetcalf@tilera.com>
* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Call __fxstatat64.
2012-05-01 Andreas Schwab <schwab@linux-m68k.org>
[BZ #14040]
* sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S (nearbyintl): Define
in version GLIBC_2.1, not GLIBC_2.0.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S (nearbyintl):
Likewise.
2012-10-04 H.J. Lu <hongjiu.lu@intel.com>
[BZ #14648]
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
Set bit_FMA_Usable if FMA is supported.
* sysdeps/x86_64/multiarch/init-arch.h (bit_FMA_Usable): New
macro.
(bit_FMA4_Usable): Updated.
(index_FMA_Usable): New macro.
(CPUID_FMA): Likewise
(HAS_FMA): Defined with bit_FMA_Usable.
2012-09-25 Joseph Myers <joseph@codesourcery.com>
[BZ #14621]
* posix/glob.c (next_brace_sub): Use size_t instead of unsigned
int as type of variable DEPTH.
(glob): Use size_t instead of int as type of variables NEWCOUNT
and OLD_PATHC.
2012-08-27 Joseph Myers <joseph@codesourcery.com>
[BZ #14459]
* stdlib/strtod_l.c: Include <stdint.h>.
(NDEBUG): Do not define.
(round_and_return): Change EXPONENT parameter to type intmax_t.
Rearrange calculations to avoid internal overflow possibilities.
(str_to_mpn): Change EXPONENT parameter to type intmax_t *.
Rearrange calculations to avoid internal overflow possibilities.
Assert that number fits inside MPNSIZE limbs.
(____STRTOF_INTERNAL): Change EXPONENT variable to type intmax_t.
Change DIG_NO, INT_NO and LEAD_ZERO to type size_t. Rearrange
calculations and add assertions to avoid internal overflow
possibilities. Add casts to avoid signed/unsigned operations.
* stdlib/tst-strtod-overflow.c: New file.
* stdlib/Makefile (tests): Add tst-strtod-overflow.
2012-01-28 Chris Metcalf <cmetcalf@tilera.com>
* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Call __fxstatat64.
2012-01-28 Chris Metcalf <cmetcalf@tilera.com>
* include/sys/epoll.h: New file.
* sysdeps/unix/sysv/linux/epoll_pwait.c (epoll_pwait): Mark as
libc_hidden_def.
2012-01-28 Chris Metcalf <cmetcalf@tilera.com>
* sysdeps/unix/sysv/linux/grantpt.c: Use <> brackets for not-cancel.h.
2012-01-29 Chris Metcalf <cmetcalf@tilera.com>
* scripts/config.guess: Update from upstream config git repository.
* scripts/config.sub: Likewise.
2012-01-28 Chris Metcalf <cmetcalf@tilera.com>
* elf/elf.h (EM_TILEPRO, EM_TILEGX): New macros.
(EM_NUM): Update.
(R_TILEPRO_*, R_TILEGX_*): New macros.
2012-06-24 Carlos O'Donell <carlos@systemhalted.org>
* scripts/list-sources.sh: Scan PORTS for translations.
* po/libc.pot: Regenerated.
2012-06-13 Carlos O'Donell <carlos_odonell@mentor.com>
* po/Makefile (libc.pot): Use UTF-8 charset.
2012-06-21 Joseph Myers <joseph@codesourcery.com>
[BZ #14273]
* sysdeps/ieee754/dbl-64/wordsize-64/e_cosh.c (__ieee754_cosh):
Clear sign bit of 64-bit integer value before comparing against
overflow value.
[BZ #14167]
* aclocal.m4 (LIBC_TRY_CC_OPTION): New macro.
* configure: Regenerated.
* sysdeps/ia64/configure: Likewise.
* sysdeps/mach/configure: Likewise.
* sysdeps/mach/hurd/configure: Likewise.
2012-06-05 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c: Fix for wrong ldbl128-ibm
fmodl commit.
2012-06-04 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c (__ieee754_fmodl): Fix
subnormal exponent extraction and add some __builtin_expect.
* sysdeps/ieee754/ldbl-128ibm/math_ldbl.h (ldbl_extract_mantissa):
Fix for subnormal mantissa calculation.
2012-06-01 Joseph Myers <joseph@codesourcery.com>
[BZ #14048]
* sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c (__ieee754_fmod):
Use int64_t for variable i.
2012-05-17 Andreas Jaeger <aj@suse.de>
Carlos O'Donell <carlos_odonell@mentor.com>
[BZ #14059]
* sysdeps/x86_64/multiarch/init-arch.h
(bit_YMM_Usable): Rename to...
(bit_AVX_Usable): ... this.
(bit_FMA4_Usable): New macro.
(bit_XMM_state): New macro.
(bit_YMM_state): New macro.
[__ASSEMBLER__] (index_YMM_Usable): Rename to...
[__ASSEMBLER__] (index_AVX_Usable): ... this.
[__ASSEMBLER__] (index_FMA4_Usable): New macro.
(CPUID_OSXSAVE): New macro.
(CPUID_AVX): New macro.
(CPUID_FMA4): New macro.
(index_YMM_Usable): Rename to...
(index_AVX_Usable): ... this.
(HAS_AVX): Use HAS_ARCH_FEATURE.
(HAS_FMA4): Likewise.
(HAS_YMM_USABLE): Remove.
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
Enable AVX or FMA4 IFF YMM and XMM states are usable and the features
are present.
* sysdeps/x86_64/multiarch/strcmp.S: Use bit_AVX_Usable.
* sysdeps/i386/i686/multiarch/Makefile: Add test-multiarch to tests.
* sysdeps/x86_64/multiarch/Makefile: Likewise.
* sysdeps/i386/i686/multiarch/test-multiarch.c: New file.
* sysdeps/x86_64/multiarch/test-multiarch.c: New file.
2012-03-21 Andreas Schwab <schwab@linux-m68k.org>
* configure.in (libc_cv_cc_nofma): Check for option to disable
generation of FMA instructions.
* configure: Regenerate.
* config.make.in (config-cflags-nofma): Set from libc_cv_cc_nofma.
* sysdeps/ieee754/dbl-64/Makefile: New file.
* sysdeps/x86_64/fpu/multiarch/Makefile (libm-sysdep_routines):
Remove brandred-fma4.
(CFLAGS-brandred-fma4.c): Remove.
* sysdeps/x86_64/fpu/multiarch/brandred-fma4.c: Remove.
* sysdeps/x86_64/fpu/multiarch/s_sin-fma4.c (__branred): Don't
define.
* sysdeps/x86_64/fpu/multiarch/s_tan-fma4.c (__branred): Don't
define.
2012-02-29 Joseph Myers <joseph@codesourcery.com>
[BZ #13786]
* sysdeps/i386/i686/multiarch/strcmp.S [USE_AS_STRCASECMP_L]: Do
not include ../strcmp.S.
[USE_AS_STRNCASECMP_L]: Likewise.
* sysdeps/i386/i686/multiarch/strcasecmp_l-c.c
(__strcasecmp_l_ia32): Define as alias to __strcasecmp_l_nonascii.
* sysdeps/i386/i686/multiarch/strncase_l-c.c
(__strncasecmp_l_ia32): Define as alias to
__strncasecmp_l_nonascii.
2012-02-27 David S. Miller <davem@davemloft.net>
* sysdeps/ieee754/ldbl-128/s_nearbyintl.c (__nearbyintl): Do not
manipulate bits before adding and subtracting TWO112[sx].
* sysdeps/ieee754/ldbl-128/s_rintl.c (__rintl): Likewise.
2012-02-22 Joseph Myers <joseph@codesourcery.com>
[BZ #2547]
[BZ #11365]
* sysdeps/ieee754/flt-32/s_nearbyintf.c (__nearbyintf): Do not
manipulate bits before adding and subtracting TWO23[sx].
* math/libm-test.inc (nearbyint_test): Add more tests.
2012-02-22 Joseph Myers <joseph@codesourcery.com>
[BZ #2548]
* sysdeps/ieee754/flt-32/s_rintf.c (__rintf): Do not manipulate
bits before adding and subtracting TWO23[sx].
* math/libm-test.inc (rint_test): Add more tests.
(rint_test_tonearest): Likewise.
(rint_test_towardzero): Likewise.
(rint_test_downward): Likewise.
(rint_test_upward: Likewise.
2012-02-21 David S. Miller <davem@davemloft.net>
* sysdeps/sparc/sparc32/fpu/libm-test-ulps: More jn test ULP updates.
* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Likewise.
2012-02-19 Aurelien Jarno <aurelien@aurel32.net>
* math/w_acos.c: Use non-signaling floating-point comparisons.
* math/w_acosf.c: Likewise.
* math/w_acosh.c: Likewise.
* math/w_acoshf.c: Likewise.
* math/w_acoshl.c: Likewise.
* math/w_acosl.c: Likewise.
* math/w_asin.c: Likewise.
* math/w_asinf.c: Likewise.
* math/w_asinl.c: Likewise.
* math/w_atanh.c: Likewise.
* math/w_atanhf.c: Likewise.
* math/w_atanhl.c: Likewise.
* math/w_exp2.c: Likewise.
* math/w_exp2f.c: Likewise.
* math/w_exp2l.c: Likewise.
* math/w_j0.c: Likewise.
* math/w_j0f.c: Likewise.
* math/w_j0l.c: Likewise.
* math/w_j1.c: Likewise.
* math/w_j1f.c: Likewise.
* math/w_j1l.c: Likewise.
* math/w_jn.c: Likewise.
* math/w_jnf.c: Likewise.
* math/w_log.c: Likewise.
* math/w_log10.c: Likewise.
* math/w_log10f.c: Likewise.
* math/w_log10l.c: Likewise.
* math/w_log2.c: Likewise.
* math/w_log2f.c: Likewise.
* math/w_log2l.c: Likewise.
* math/w_logf.c: Likewise.
* math/w_logl.c: Likewise.
* math/w_sqrt.c: Likewise.
* math/w_sqrtf.c: Likewise.
* math/w_sqrtl.c: Likewise.
* sysdeps/ieee754/dbl-64/e_atanh.c: Likewise.
* sysdeps/ieee754/dbl-64/w_exp.c: Likewise.
* sysdeps/ieee754/flt-32/e_atanhf.c: Likewise.
* sysdeps/ieee754/flt-32/w_expf.c: Likewise.
* sysdeps/ieee754/ldbl-96/w_expl.c: Likewise.
2012-02-22 Carlos O'Donell <carlos_odonell@mentor.com>
[BZ #411]
* sysdeps/unix/sysv/linux/i386/sysdep.h: Redefine __i686.
2012-02-16 David S. Miller <davem@davemloft.net>
[BZ #11494]
* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h (O_FSYNC): Define.
2012-02-09 Richard Henderson <rth@twiddle.net>
* sysdeps/unix/sysv/linux/internal_statvfs.c: Use <> for include
of kernel-features.h.
2012-02-08 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/i386/fpu/libm-test-ulps: Reduce ldouble ULPs for jn
tests.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2012-02-07 Andreas Schwab <schwab@linux-m68k.org>
* math/libm-test.inc (jn_test): Add missing L suffix.
2012-02-10 Thomas Schwinge <thomas@codesourcery.com>
* sysdeps/i386/fpu/feupdateenv.c (__feupdateenv) Invoke __feraiseexcept
instead of feraiseexcept.
2012-01-31 Ulrich Drepper <drepper@gmail.com>
* malloc/arena.c (arena_get2): Really don't call __get_nprocs if
ARENA_TEST says not to. Simplify test for creation of a new arena.
Partially based on a patch by Siddhesh Poyarekar <siddhesh@redhat.com>.
2012-01-30 Joseph Myers <joseph@codesourcery.com>
* configure.in (libc_cv_cc_sse2avx): AC_SUBST.
* configure: Regenerate.
* config.make.in (config-cflags-sse2avx): Define.
* sysdeps/x86_64/fpu/multiarch/Makefile (CFLAGS-slowexp-avx.c):
Fix typo.
2012-01-28 Ulrich Drepper <drepper@gmail.com>
* config.h.in: Define HAVE_SSE2AVX_SUPPORT.
* math/math_private.h: Remove libc_fegetround* and
libc_fesetround*.
* sysdeps/i386/configure.in: Check for -msse2avx.
* sysdeps/x86_64/fpu/math_private.h: Use VEX-encoded instructions
also if SSE2AVX is defined.
Remove libc_fegetround* and libc_fesetround*.
* sysdeps/x86_64/fpu/multiarch/Makefile: Compile *-avx functions
if config-cflags-sse2avx is yes. Also add -DSSE2AVX to defines.
* sysdeps/x86_64/fpu/multiarch/e_atan2.c: Use HAS_AVX again instead
of HAS_YMM_USABLE.
* sysdeps/x86_64/fpu/multiarch/e_exp.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/e_log.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/s_atan.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise.
* sysdeps/x86_64/fpu/math_private.h: Simplify use of AVX instructions.
2012-01-28 Chris Metcalf <cmetcalf@tilera.com>
* scripts/firstversions.awk: Fix bug in version range handling.
2012-01-26 Ulrich Drepper <drepper@gmail.com>
[BZ #13583]
* sysdeps/x86_64/multiarch/init-arch.h: Define bit_OSXSAVE.
Clean up HAS_* macros.
* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features): If
bit_AVX is set also check OSXAVE/XCR0 and set bit_YMM_Usable if
possible.
* sysdeps/x86_64/fpu/multiarch/e_atan2.c: Use HAS_YMM_USABLE, not
HAS_AVX.
* sysdeps/x86_64/fpu/multiarch/e_exp.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/e_log.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/s_atan.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/s_sin.c: Likewise.
* sysdeps/x86_64/fpu/multiarch/s_tan.c: Likewise.
2012-01-01 Ulrich Drepper <drepper@gmail.com>
* posix/getconf.c: Update copyright year.
+6
View File
@@ -950,6 +950,12 @@ libdl =
endif
endif
ifeq ($(build-shared),yes)
libm = $(common-objpfx)math/libm.so$(libm.so-version)
else
libm = $(common-objpfx)math/libm.a
endif
# These are the subdirectories containing the library source. The order
# is more or less arbitrary. The sorting step will take care of the
# dependencies.
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1991-2002,2003,2004,2005,2006,2008,2009,2011
# Copyright (C) 1991-2002,2003,2004,2005,2006,2008,2009,2011,2012
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
+10 -1
View File
@@ -1,10 +1,19 @@
GNU C Library NEWS -- history of user-visible changes. 2011-12-23
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1992-2014 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
Version 2.15.1
* The following bugs are resolved with this release:
411, 2547, 2548, 6530, 11261, 11365, 11494, 13583, 13618, 13731, 13732,
13733, 13747, 13748, 13749, 13753, 13754, 13756, 13765, 13771, 13773,
13774, 13786, 14048, 14059, 14167, 14273, 14284, 14459, 14621, 14648,
14040, 14287, 15073, 16885
Version 2.15
* The following bugs are resolved with this release:
Vendored
+6
View File
@@ -114,3 +114,9 @@ AC_CACHE_CHECK(whether $LD is GNU ld, libc_cv_prog_ld_gnu,
[LIBC_PROG_FOO_GNU($LD, libc_cv_prog_ld_gnu=yes, libc_cv_prog_ld_gnu=no)])
gnu_ld=$libc_cv_prog_ld_gnu
])
dnl Test a compiler option or options with an empty input file.
dnl LIBC_TRY_CC_OPTION([options], [action-if-true], [action-if-false])
AC_DEFUN([LIBC_TRY_CC_OPTION],
[AS_IF([AC_TRY_COMMAND([${CC-cc} $1 -xc /dev/null -S -o /dev/null])],
[$2], [$3])])
+9 -3
View File
@@ -102,7 +102,7 @@
certain registers (CR0, MQ, CTR, LR) in asm statements. */
#undef BROKEN_PPC_ASM_CR0
/* Defined on SPARC if ld doesn't handle R_SPARC_WDISP22 against .hidden
/* Defined on SPARC if ld does not handle R_SPARC_WDISP22 against .hidden
symbol. sysdeps/sparc/sparc32/elf/configure. */
#undef BROKEN_SPARC_WDISP22
@@ -118,17 +118,20 @@
/* Define if gcc supports AVX. */
#undef HAVE_AVX_SUPPORT
/* Define if gcc supports VEX encoding. */
#undef HAVE_SSE2AVX_SUPPORT
/* Define if gcc supports FMA4. */
#undef HAVE_FMA4_SUPPORT
/* Define if the compiler's exception support is based on libunwind. */
/* Define if the compiler\'s exception support is based on libunwind. */
#undef HAVE_CC_WITH_LIBUNWIND
/* Define if the access to static and hidden variables is position independent
and does not need relocations. */
#undef PI_STATIC_AND_HIDDEN
/* Define this to disable the `hidden_proto' et al macros in
/* Define this to disable the 'hidden_proto' et al macros in
include/libc-symbols.h that avoid PLT slots in the shared objects. */
#undef NO_HIDDEN
@@ -187,6 +190,9 @@
/* Define if `.ctors' and `.dtors' sections shouldn't be used. */
#undef NO_CTORS_DTORS_SECTIONS
/* Define if obsolete RPC code should be made available for user-level code
to link against. */
#undef LINK_OBSOLETE_RPC
/*
*/
+3
View File
@@ -36,7 +36,9 @@ asflags-cpu = @libc_cv_cc_submachine@
config-cflags-sse4 = @libc_cv_cc_sse4@
config-cflags-avx = @libc_cv_cc_avx@
config-cflags-sse2avx = @libc_cv_cc_sse2avx@
config-cflags-novzeroupper = @libc_cv_cc_novzeroupper@
config-cflags-nofma = @libc_cv_cc_nofma@
config-asflags-i686 = @libc_cv_as_i686@
defines = @DEFINES@
@@ -101,6 +103,7 @@ add-on-subdirs = @add_on_subdirs@
sysdeps-add-ons = @sysdeps_add_ons@
cross-compiling = @cross_compiling@
force-install = @force_install@
link-obsolete-rpc = @link_obsolete_rpc@
# Build tools.
CC = @CC@
Vendored
+42
View File
@@ -622,8 +622,10 @@ elf
ldd_rewrite_script
use_ldconfig
libc_cv_as_i686
libc_cv_cc_nofma
libc_cv_cc_fma4
libc_cv_cc_novzeroupper
libc_cv_cc_sse2avx
libc_cv_cc_avx
libc_cv_cc_sse4
libc_cv_cpp_asm_debuginfo
@@ -693,6 +695,7 @@ multi_arch
base_machine
add_on_subdirs
add_ons
link_obsolete_rpc
libc_cv_nss_crypt
all_warnings
force_install
@@ -791,6 +794,7 @@ enable_kernel
enable_all_warnings
enable_multi_arch
enable_nss_crypt
enable_obsolete_rpc
with_cpu
'
ac_precious_vars='build_alias
@@ -1450,6 +1454,8 @@ Optional Features:
--enable-multi-arch enable single DSO with optimizations for multiple
architectures
--enable-nss-crypt enable libcrypt to use nss
--enable-obsolete-rpc build and install the obsolete RPC code for
link-time usage
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3804,6 +3810,20 @@ else
fi
# Check whether --enable-obsolete-rpc was given.
if test "${enable_obsolete_rpc+set}" = set; then :
enableval=$enable_obsolete_rpc; link_obsolete_rpc=$enableval
else
link_obsolete_rpc=no
fi
if test "$link_obsolete_rpc" = yes; then
$as_echo "#define LINK_OBSOLETE_RPC 1" >>confdefs.h
fi
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
@@ -7328,6 +7348,26 @@ if test "$libc_cv_gcc_tls_model_attr" = no; then
as_fn_error $? "support for the tls_model attribute is required" "$LINENO" 5
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option to disable generation of FMA instructions" >&5
$as_echo_n "checking for compiler option to disable generation of FMA instructions... " >&6; }
if ${libc_cv_cc_nofma+:} false; then :
$as_echo_n "(cached) " >&6
else
libc_cv_cc_nofma=
for opt in -ffp-contract=off -mno-fused-madd; do
if { ac_try='${CC-cc} $opt -xc /dev/null -S -o /dev/null'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then :
libc_cv_cc_nofma=$opt; break
fi
done
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_nofma" >&5
$as_echo "$libc_cv_cc_nofma" >&6; }
if test -n "$submachine"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler option for CPU variant" >&5
$as_echo_n "checking for compiler option for CPU variant... " >&6; }
@@ -7944,6 +7984,8 @@ fi
if test $elf = yes; then
$as_echo "#define HAVE_ELF 1" >>confdefs.h
+21
View File
@@ -290,6 +290,17 @@ else
fi
AC_SUBST(libc_cv_nss_crypt)
AC_ARG_ENABLE([obsolete-rpc],
AC_HELP_STRING([--enable-obsolete-rpc],
[build and install the obsolete RPC code for link-time usage]),
[link_obsolete_rpc=$enableval],
[link_obsolete_rpc=no])
AC_SUBST(link_obsolete_rpc)
if test "$link_obsolete_rpc" = yes; then
AC_DEFINE(LINK_OBSOLETE_RPC)
fi
# The way shlib-versions is used to generate soversions.mk uses a
# fairly simplistic model for name recognition that can't distinguish
# i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os
@@ -2196,6 +2207,14 @@ if test "$libc_cv_gcc_tls_model_attr" = no; then
AC_MSG_ERROR([support for the tls_model attribute is required])
fi
dnl Determine how to disable generation of FMA instructions.
AC_CACHE_CHECK([for compiler option to disable generation of FMA instructions],
libc_cv_cc_nofma, [dnl
libc_cv_cc_nofma=
for opt in -ffp-contract=off -mno-fused-madd; do
LIBC_TRY_CC_OPTION([$opt], [libc_cv_cc_nofma=$opt; break])
done])
if test -n "$submachine"; then
AC_CACHE_CHECK([for compiler option for CPU variant],
libc_cv_cc_submachine, [dnl
@@ -2337,8 +2356,10 @@ dnl sysdeps/CPU/configure.in checks set this via arch-specific asm tests
AC_SUBST(libc_cv_cpp_asm_debuginfo)
AC_SUBST(libc_cv_cc_sse4)
AC_SUBST(libc_cv_cc_avx)
AC_SUBST(libc_cv_cc_sse2avx)
AC_SUBST(libc_cv_cc_novzeroupper)
AC_SUBST(libc_cv_cc_fma4)
AC_SUBST(libc_cv_cc_nofma)
AC_SUBST(libc_cv_as_i686)
AC_SUBST(use_ldconfig)
+12 -3
View File
@@ -124,7 +124,8 @@ distribute := rtld-Rules \
tst-initordera1.c tst-initordera2.c tst-initorderb1.c \
tst-initorderb2.c tst-initordera3.c tst-initordera4.c \
tst-initorder.c \
tst-initorder2.c
tst-initorder2.c \
tst-relsort1.c tst-relsort1mod1.c tst-relsort1mod2.c
CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
@@ -229,7 +230,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
tst-audit1 tst-audit2 \
tst-stackguard1 tst-addr1 tst-thrlock \
tst-unique1 tst-unique2 tst-unique3 tst-unique4 \
tst-initorder tst-initorder2
tst-initorder tst-initorder2 tst-relsort1
# reldep9
test-srcs = tst-pathopt
selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null)
@@ -292,7 +293,9 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
tst-initordera1 tst-initorderb1 \
tst-initordera2 tst-initorderb2 \
tst-initordera3 tst-initordera4 \
tst-initorder2a tst-initorder2b tst-initorder2c tst-initorder2d
tst-initorder2a tst-initorder2b tst-initorder2c \
tst-initorder2d \
tst-relsort1mod1 tst-relsort1mod2
ifeq (yes,$(have-initfini-array))
modules-names += tst-array2dep tst-array5dep
endif
@@ -1197,3 +1200,9 @@ CFLAGS-tst-auditmod6b.c += $(AVX-CFLAGS)
CFLAGS-tst-auditmod6c.c += $(AVX-CFLAGS)
CFLAGS-tst-auditmod7b.c += $(AVX-CFLAGS)
endif
$(objpfx)tst-relsort1: $(libdl)
$(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
$(objpfx)tst-relsort1mod2.so: $(libm)
$(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
$(objpfx)tst-relsort1mod2.so
+3 -12
View File
@@ -1,5 +1,5 @@
/* Close a shared object opened by `_dl_open'.
Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1996-2012 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
@@ -119,17 +119,8 @@ _dl_close_worker (struct link_map *map)
if (map->l_direct_opencount > 0 || map->l_type != lt_loaded
|| dl_close_state != not_pending)
{
if (map->l_direct_opencount == 0)
{
if (map->l_type == lt_loaded)
dl_close_state = rerun;
else if (map->l_type == lt_library)
{
struct link_map **oldp = map->l_initfini;
map->l_initfini = map->l_orig_initfini;
_dl_scope_free (oldp);
}
}
if (map->l_direct_opencount == 0 && map->l_type == lt_loaded)
dl_close_state = rerun;
/* There are still references to this object. Do nothing more. */
if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_FILES, 0))
+4 -3
View File
@@ -1,6 +1,5 @@
/* Load the dependencies of a mapped object.
Copyright (C) 1996-2003, 2004, 2005, 2006, 2007, 2010, 2011
Free Software Foundation, Inc.
Copyright (C) 1996-2012 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
@@ -489,6 +488,7 @@ _dl_map_object_deps (struct link_map *map,
nneeded * sizeof needed[0]);
atomic_write_barrier ();
l->l_initfini = l_initfini;
l->l_free_initfini = 1;
}
/* If we have no auxiliary objects just go on to the next map. */
@@ -689,6 +689,7 @@ Filters not supported with LD_TRACE_PRELINKING"));
l_initfini[nlist] = NULL;
atomic_write_barrier ();
map->l_initfini = l_initfini;
map->l_free_initfini = 1;
if (l_reldeps != NULL)
{
atomic_write_barrier ();
@@ -697,7 +698,7 @@ Filters not supported with LD_TRACE_PRELINKING"));
_dl_scope_free (old_l_reldeps);
}
if (old_l_initfini != NULL)
map->l_orig_initfini = old_l_initfini;
_dl_scope_free (old_l_initfini);
if (errno_reason)
_dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
+6 -3
View File
@@ -1,6 +1,5 @@
/* Handle loading and unloading shared objects for internal libc purposes.
Copyright (C) 1999-2002,2004-2006,2009,2010,2011
Free Software Foundation, Inc.
Copyright (C) 1999-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.columbia.edu>, 1999.
@@ -270,13 +269,13 @@ libc_freeres_fn (free_mem)
for (Lmid_t ns = 0; ns < GL(dl_nns); ++ns)
{
/* Remove all additional names added to the objects. */
for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)
{
struct libname_list *lnp = l->l_libname->next;
l->l_libname->next = NULL;
/* Remove all additional names added to the objects. */
while (lnp != NULL)
{
struct libname_list *old = lnp;
@@ -284,6 +283,10 @@ libc_freeres_fn (free_mem)
if (! old->dont_free)
free (old);
}
/* Free the initfini dependency list. */
if (l->l_free_initfini)
free (l->l_initfini);
}
if (__builtin_expect (GL(dl_ns)[ns]._ns_global_scope_alloc, 0) != 0
+94 -30
View File
@@ -1,5 +1,5 @@
/* Load a shared object at runtime, relocate it, and run its initializer.
Copyright (C) 1996-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1996-2007, 2009, 2010, 2011, 2012 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
@@ -302,45 +302,109 @@ dl_open_worker (void *a)
if (GLRO(dl_lazy))
reloc_mode |= mode & RTLD_LAZY;
/* Relocate the objects loaded. We do this in reverse order so that copy
relocs of earlier objects overwrite the data written by later objects. */
/* Sort the objects by dependency for the relocation process. This
allows IFUNC relocations to work and it also means copy
relocation of dependencies are if necessary overwritten. */
size_t nmaps = 0;
struct link_map *l = new;
while (l->l_next)
l = l->l_next;
while (1)
do
{
if (! l->l_real->l_relocated)
++nmaps;
l = l->l_next;
}
while (l != NULL);
struct link_map *maps[nmaps];
nmaps = 0;
l = new;
do
{
if (! l->l_real->l_relocated)
maps[nmaps++] = l;
l = l->l_next;
}
while (l != NULL);
if (nmaps > 1)
{
char seen[nmaps];
memset (seen, '\0', nmaps);
size_t i = 0;
while (1)
{
#ifdef SHARED
if (__builtin_expect (GLRO(dl_profile) != NULL, 0))
++seen[i];
struct link_map *thisp = maps[i];
/* Find the last object in the list for which the current one is
a dependency and move the current object behind the object
with the dependency. */
size_t k = nmaps - 1;
while (k > i)
{
/* If this here is the shared object which we want to profile
make sure the profile is started. We can find out whether
this is necessary or not by observing the `_dl_profile_map'
variable. If was NULL but is not NULL afterwars we must
start the profiling. */
struct link_map *old_profile_map = GL(dl_profile_map);
struct link_map **runp = maps[k]->l_initfini;
if (runp != NULL)
/* Look through the dependencies of the object. */
while (*runp != NULL)
if (__builtin_expect (*runp++ == thisp, 0))
{
/* Move the current object to the back past the last
object with it as the dependency. */
memmove (&maps[i], &maps[i + 1],
(k - i) * sizeof (maps[0]));
maps[k] = thisp;
_dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
if (seen[i + 1] > 1)
{
++i;
goto next_clear;
}
if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
{
/* We must prepare the profiling. */
_dl_start_profile ();
char this_seen = seen[i];
memmove (&seen[i], &seen[i + 1],
(k - i) * sizeof (seen[0]));
seen[k] = this_seen;
/* Prevent unloading the object. */
GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
}
goto next;
}
--k;
}
else
#endif
_dl_relocate_object (l, l->l_scope, reloc_mode, 0);
}
if (l == new)
break;
l = l->l_prev;
if (++i == nmaps)
break;
next_clear:
memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0]));
next:;
}
}
for (size_t i = nmaps; i-- > 0; )
{
l = maps[i];
#ifdef SHARED
if (__builtin_expect (GLRO(dl_profile) != NULL, 0))
{
/* If this here is the shared object which we want to profile
make sure the profile is started. We can find out whether
this is necessary or not by observing the `_dl_profile_map'
variable. If it was NULL but is not NULL afterwars we must
start the profiling. */
struct link_map *old_profile_map = GL(dl_profile_map);
_dl_relocate_object (l, l->l_scope, reloc_mode | RTLD_LAZY, 1);
if (old_profile_map == NULL && GL(dl_profile_map) != NULL)
{
/* We must prepare the profiling. */
_dl_start_profile ();
/* Prevent unloading the object. */
GL(dl_profile_map)->l_flags_1 |= DF_1_NODELETE;
}
}
else
#endif
_dl_relocate_object (l, l->l_scope, reloc_mode, 0);
}
/* If the file is not loaded now as a dependency, add the search
+219 -3
View File
@@ -1,6 +1,5 @@
/* This file defines standard ELF types, structures, and macros.
Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009,2010,2011
Free Software Foundation, Inc.
Copyright (C) 1995-2012 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
@@ -251,7 +250,9 @@ typedef struct
#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
#define EM_ARC_A5 93 /* ARC Cores Tangent-A5 */
#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
#define EM_NUM 95
#define EM_TILEPRO 188 /* Tilera TILEPro */
#define EM_TILEGX 191 /* Tilera TILE-Gx */
#define EM_NUM 192
/* If it is necessary to assign new unofficial EM_* values, please
pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the
@@ -2791,6 +2792,221 @@ typedef Elf32_Addr Elf32_Conflict;
#define R_M32R_NUM 256 /* Keep this the last entry. */
/* TILEPro relocations. */
#define R_TILEPRO_NONE 0 /* No reloc */
#define R_TILEPRO_32 1 /* Direct 32 bit */
#define R_TILEPRO_16 2 /* Direct 16 bit */
#define R_TILEPRO_8 3 /* Direct 8 bit */
#define R_TILEPRO_32_PCREL 4 /* PC relative 32 bit */
#define R_TILEPRO_16_PCREL 5 /* PC relative 16 bit */
#define R_TILEPRO_8_PCREL 6 /* PC relative 8 bit */
#define R_TILEPRO_LO16 7 /* Low 16 bit */
#define R_TILEPRO_HI16 8 /* High 16 bit */
#define R_TILEPRO_HA16 9 /* High 16 bit, adjusted */
#define R_TILEPRO_COPY 10 /* Copy relocation */
#define R_TILEPRO_GLOB_DAT 11 /* Create GOT entry */
#define R_TILEPRO_JMP_SLOT 12 /* Create PLT entry */
#define R_TILEPRO_RELATIVE 13 /* Adjust by program base */
#define R_TILEPRO_BROFF_X1 14 /* X1 pipe branch offset */
#define R_TILEPRO_JOFFLONG_X1 15 /* X1 pipe jump offset */
#define R_TILEPRO_JOFFLONG_X1_PLT 16 /* X1 pipe jump offset to PLT */
#define R_TILEPRO_IMM8_X0 17 /* X0 pipe 8-bit */
#define R_TILEPRO_IMM8_Y0 18 /* Y0 pipe 8-bit */
#define R_TILEPRO_IMM8_X1 19 /* X1 pipe 8-bit */
#define R_TILEPRO_IMM8_Y1 20 /* Y1 pipe 8-bit */
#define R_TILEPRO_MT_IMM15_X1 21 /* X1 pipe mtspr */
#define R_TILEPRO_MF_IMM15_X1 22 /* X1 pipe mfspr */
#define R_TILEPRO_IMM16_X0 23 /* X0 pipe 16-bit */
#define R_TILEPRO_IMM16_X1 24 /* X1 pipe 16-bit */
#define R_TILEPRO_IMM16_X0_LO 25 /* X0 pipe low 16-bit */
#define R_TILEPRO_IMM16_X1_LO 26 /* X1 pipe low 16-bit */
#define R_TILEPRO_IMM16_X0_HI 27 /* X0 pipe high 16-bit */
#define R_TILEPRO_IMM16_X1_HI 28 /* X1 pipe high 16-bit */
#define R_TILEPRO_IMM16_X0_HA 29 /* X0 pipe high 16-bit, adjusted */
#define R_TILEPRO_IMM16_X1_HA 30 /* X1 pipe high 16-bit, adjusted */
#define R_TILEPRO_IMM16_X0_PCREL 31 /* X0 pipe PC relative 16 bit */
#define R_TILEPRO_IMM16_X1_PCREL 32 /* X1 pipe PC relative 16 bit */
#define R_TILEPRO_IMM16_X0_LO_PCREL 33 /* X0 pipe PC relative low 16 bit */
#define R_TILEPRO_IMM16_X1_LO_PCREL 34 /* X1 pipe PC relative low 16 bit */
#define R_TILEPRO_IMM16_X0_HI_PCREL 35 /* X0 pipe PC relative high 16 bit */
#define R_TILEPRO_IMM16_X1_HI_PCREL 36 /* X1 pipe PC relative high 16 bit */
#define R_TILEPRO_IMM16_X0_HA_PCREL 37 /* X0 pipe PC relative ha() 16 bit */
#define R_TILEPRO_IMM16_X1_HA_PCREL 38 /* X1 pipe PC relative ha() 16 bit */
#define R_TILEPRO_IMM16_X0_GOT 39 /* X0 pipe 16-bit GOT offset */
#define R_TILEPRO_IMM16_X1_GOT 40 /* X1 pipe 16-bit GOT offset */
#define R_TILEPRO_IMM16_X0_GOT_LO 41 /* X0 pipe low 16-bit GOT offset */
#define R_TILEPRO_IMM16_X1_GOT_LO 42 /* X1 pipe low 16-bit GOT offset */
#define R_TILEPRO_IMM16_X0_GOT_HI 43 /* X0 pipe high 16-bit GOT offset */
#define R_TILEPRO_IMM16_X1_GOT_HI 44 /* X1 pipe high 16-bit GOT offset */
#define R_TILEPRO_IMM16_X0_GOT_HA 45 /* X0 pipe ha() 16-bit GOT offset */
#define R_TILEPRO_IMM16_X1_GOT_HA 46 /* X1 pipe ha() 16-bit GOT offset */
#define R_TILEPRO_MMSTART_X0 47 /* X0 pipe mm "start" */
#define R_TILEPRO_MMEND_X0 48 /* X0 pipe mm "end" */
#define R_TILEPRO_MMSTART_X1 49 /* X1 pipe mm "start" */
#define R_TILEPRO_MMEND_X1 50 /* X1 pipe mm "end" */
#define R_TILEPRO_SHAMT_X0 51 /* X0 pipe shift amount */
#define R_TILEPRO_SHAMT_X1 52 /* X1 pipe shift amount */
#define R_TILEPRO_SHAMT_Y0 53 /* Y0 pipe shift amount */
#define R_TILEPRO_SHAMT_Y1 54 /* Y1 pipe shift amount */
#define R_TILEPRO_DEST_IMM8_X1 55 /* X1 pipe destination 8-bit */
/* Relocs 56-59 are currently not defined. */
#define R_TILEPRO_TLS_GD_CALL 60 /* "jal" for TLS GD */
#define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61 /* X0 pipe "addi" for TLS GD */
#define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62 /* X1 pipe "addi" for TLS GD */
#define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63 /* Y0 pipe "addi" for TLS GD */
#define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64 /* Y1 pipe "addi" for TLS GD */
#define R_TILEPRO_TLS_IE_LOAD 65 /* "lw_tls" for TLS IE */
#define R_TILEPRO_IMM16_X0_TLS_GD 66 /* X0 pipe 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X1_TLS_GD 67 /* X1 pipe 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X0_TLS_GD_LO 68 /* X0 pipe low 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X1_TLS_GD_LO 69 /* X1 pipe low 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X0_TLS_GD_HI 70 /* X0 pipe high 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X1_TLS_GD_HI 71 /* X1 pipe high 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X0_TLS_GD_HA 72 /* X0 pipe ha() 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X1_TLS_GD_HA 73 /* X1 pipe ha() 16-bit TLS GD offset */
#define R_TILEPRO_IMM16_X0_TLS_IE 74 /* X0 pipe 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X1_TLS_IE 75 /* X1 pipe 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X0_TLS_IE_LO 76 /* X0 pipe low 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X1_TLS_IE_LO 77 /* X1 pipe low 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X0_TLS_IE_HI 78 /* X0 pipe high 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X1_TLS_IE_HI 79 /* X1 pipe high 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X0_TLS_IE_HA 80 /* X0 pipe ha() 16-bit TLS IE offset */
#define R_TILEPRO_IMM16_X1_TLS_IE_HA 81 /* X1 pipe ha() 16-bit TLS IE offset */
#define R_TILEPRO_TLS_DTPMOD32 82 /* ID of module containing symbol */
#define R_TILEPRO_TLS_DTPOFF32 83 /* Offset in TLS block */
#define R_TILEPRO_TLS_TPOFF32 84 /* Offset in static TLS block */
#define R_TILEPRO_IMM16_X0_TLS_LE 85 /* X0 pipe 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X1_TLS_LE 86 /* X1 pipe 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X0_TLS_LE_LO 87 /* X0 pipe low 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X1_TLS_LE_LO 88 /* X1 pipe low 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X0_TLS_LE_HI 89 /* X0 pipe high 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X1_TLS_LE_HI 90 /* X1 pipe high 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X0_TLS_LE_HA 91 /* X0 pipe ha() 16-bit TLS LE offset */
#define R_TILEPRO_IMM16_X1_TLS_LE_HA 92 /* X1 pipe ha() 16-bit TLS LE offset */
#define R_TILEPRO_GNU_VTINHERIT 128 /* GNU C++ vtable hierarchy */
#define R_TILEPRO_GNU_VTENTRY 129 /* GNU C++ vtable member usage */
#define R_TILEPRO_NUM 130
/* TILE-Gx relocations. */
#define R_TILEGX_NONE 0 /* No reloc */
#define R_TILEGX_64 1 /* Direct 64 bit */
#define R_TILEGX_32 2 /* Direct 32 bit */
#define R_TILEGX_16 3 /* Direct 16 bit */
#define R_TILEGX_8 4 /* Direct 8 bit */
#define R_TILEGX_64_PCREL 5 /* PC relative 64 bit */
#define R_TILEGX_32_PCREL 6 /* PC relative 32 bit */
#define R_TILEGX_16_PCREL 7 /* PC relative 16 bit */
#define R_TILEGX_8_PCREL 8 /* PC relative 8 bit */
#define R_TILEGX_HW0 9 /* hword 0 16-bit */
#define R_TILEGX_HW1 10 /* hword 1 16-bit */
#define R_TILEGX_HW2 11 /* hword 2 16-bit */
#define R_TILEGX_HW3 12 /* hword 3 16-bit */
#define R_TILEGX_HW0_LAST 13 /* last hword 0 16-bit */
#define R_TILEGX_HW1_LAST 14 /* last hword 1 16-bit */
#define R_TILEGX_HW2_LAST 15 /* last hword 2 16-bit */
#define R_TILEGX_COPY 16 /* Copy relocation */
#define R_TILEGX_GLOB_DAT 17 /* Create GOT entry */
#define R_TILEGX_JMP_SLOT 18 /* Create PLT entry */
#define R_TILEGX_RELATIVE 19 /* Adjust by program base */
#define R_TILEGX_BROFF_X1 20 /* X1 pipe branch offset */
#define R_TILEGX_JUMPOFF_X1 21 /* X1 pipe jump offset */
#define R_TILEGX_JUMPOFF_X1_PLT 22 /* X1 pipe jump offset to PLT */
#define R_TILEGX_IMM8_X0 23 /* X0 pipe 8-bit */
#define R_TILEGX_IMM8_Y0 24 /* Y0 pipe 8-bit */
#define R_TILEGX_IMM8_X1 25 /* X1 pipe 8-bit */
#define R_TILEGX_IMM8_Y1 26 /* Y1 pipe 8-bit */
#define R_TILEGX_DEST_IMM8_X1 27 /* X1 pipe destination 8-bit */
#define R_TILEGX_MT_IMM14_X1 28 /* X1 pipe mtspr */
#define R_TILEGX_MF_IMM14_X1 29 /* X1 pipe mfspr */
#define R_TILEGX_MMSTART_X0 30 /* X0 pipe mm "start" */
#define R_TILEGX_MMEND_X0 31 /* X0 pipe mm "end" */
#define R_TILEGX_SHAMT_X0 32 /* X0 pipe shift amount */
#define R_TILEGX_SHAMT_X1 33 /* X1 pipe shift amount */
#define R_TILEGX_SHAMT_Y0 34 /* Y0 pipe shift amount */
#define R_TILEGX_SHAMT_Y1 35 /* Y1 pipe shift amount */
#define R_TILEGX_IMM16_X0_HW0 36 /* X0 pipe hword 0 */
#define R_TILEGX_IMM16_X1_HW0 37 /* X1 pipe hword 0 */
#define R_TILEGX_IMM16_X0_HW1 38 /* X0 pipe hword 1 */
#define R_TILEGX_IMM16_X1_HW1 39 /* X1 pipe hword 1 */
#define R_TILEGX_IMM16_X0_HW2 40 /* X0 pipe hword 2 */
#define R_TILEGX_IMM16_X1_HW2 41 /* X1 pipe hword 2 */
#define R_TILEGX_IMM16_X0_HW3 42 /* X0 pipe hword 3 */
#define R_TILEGX_IMM16_X1_HW3 43 /* X1 pipe hword 3 */
#define R_TILEGX_IMM16_X0_HW0_LAST 44 /* X0 pipe last hword 0 */
#define R_TILEGX_IMM16_X1_HW0_LAST 45 /* X1 pipe last hword 0 */
#define R_TILEGX_IMM16_X0_HW1_LAST 46 /* X0 pipe last hword 1 */
#define R_TILEGX_IMM16_X1_HW1_LAST 47 /* X1 pipe last hword 1 */
#define R_TILEGX_IMM16_X0_HW2_LAST 48 /* X0 pipe last hword 2 */
#define R_TILEGX_IMM16_X1_HW2_LAST 49 /* X1 pipe last hword 2 */
#define R_TILEGX_IMM16_X0_HW0_PCREL 50 /* X0 pipe PC relative hword 0 */
#define R_TILEGX_IMM16_X1_HW0_PCREL 51 /* X1 pipe PC relative hword 0 */
#define R_TILEGX_IMM16_X0_HW1_PCREL 52 /* X0 pipe PC relative hword 1 */
#define R_TILEGX_IMM16_X1_HW1_PCREL 53 /* X1 pipe PC relative hword 1 */
#define R_TILEGX_IMM16_X0_HW2_PCREL 54 /* X0 pipe PC relative hword 2 */
#define R_TILEGX_IMM16_X1_HW2_PCREL 55 /* X1 pipe PC relative hword 2 */
#define R_TILEGX_IMM16_X0_HW3_PCREL 56 /* X0 pipe PC relative hword 3 */
#define R_TILEGX_IMM16_X1_HW3_PCREL 57 /* X1 pipe PC relative hword 3 */
#define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58 /* X0 pipe PC-rel last hword 0 */
#define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59 /* X1 pipe PC-rel last hword 0 */
#define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60 /* X0 pipe PC-rel last hword 1 */
#define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61 /* X1 pipe PC-rel last hword 1 */
#define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62 /* X0 pipe PC-rel last hword 2 */
#define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 /* X1 pipe PC-rel last hword 2 */
#define R_TILEGX_IMM16_X0_HW0_GOT 64 /* X0 pipe hword 0 GOT offset */
#define R_TILEGX_IMM16_X1_HW0_GOT 65 /* X1 pipe hword 0 GOT offset */
/* Relocs 66-71 are currently not defined. */
#define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 /* X0 pipe last hword 0 GOT offset */
#define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 /* X1 pipe last hword 0 GOT offset */
#define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 /* X0 pipe last hword 1 GOT offset */
#define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 /* X1 pipe last hword 1 GOT offset */
/* Relocs 76-77 are currently not defined. */
#define R_TILEGX_IMM16_X0_HW0_TLS_GD 78 /* X0 pipe hword 0 TLS GD offset */
#define R_TILEGX_IMM16_X1_HW0_TLS_GD 79 /* X1 pipe hword 0 TLS GD offset */
#define R_TILEGX_IMM16_X0_HW0_TLS_LE 80 /* X0 pipe hword 0 TLS LE offset */
#define R_TILEGX_IMM16_X1_HW0_TLS_LE 81 /* X1 pipe hword 0 TLS LE offset */
#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82 /* X0 pipe last hword 0 LE off */
#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83 /* X1 pipe last hword 0 LE off */
#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84 /* X0 pipe last hword 1 LE off */
#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85 /* X1 pipe last hword 1 LE off */
#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86 /* X0 pipe last hword 0 GD off */
#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87 /* X1 pipe last hword 0 GD off */
#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88 /* X0 pipe last hword 1 GD off */
#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89 /* X1 pipe last hword 1 GD off */
/* Relocs 90-91 are currently not defined. */
#define R_TILEGX_IMM16_X0_HW0_TLS_IE 92 /* X0 pipe hword 0 TLS IE offset */
#define R_TILEGX_IMM16_X1_HW0_TLS_IE 93 /* X1 pipe hword 0 TLS IE offset */
/* Relocs 94-99 are currently not defined. */
#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 /* X0 pipe last hword 0 IE off */
#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 /* X1 pipe last hword 0 IE off */
#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 /* X0 pipe last hword 1 IE off */
#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103 /* X1 pipe last hword 1 IE off */
/* Relocs 104-105 are currently not defined. */
#define R_TILEGX_TLS_DTPMOD64 106 /* 64-bit ID of symbol's module */
#define R_TILEGX_TLS_DTPOFF64 107 /* 64-bit offset in TLS block */
#define R_TILEGX_TLS_TPOFF64 108 /* 64-bit offset in static TLS block */
#define R_TILEGX_TLS_DTPMOD32 109 /* 32-bit ID of symbol's module */
#define R_TILEGX_TLS_DTPOFF32 110 /* 32-bit offset in TLS block */
#define R_TILEGX_TLS_TPOFF32 111 /* 32-bit offset in static TLS block */
#define R_TILEGX_TLS_GD_CALL 112 /* "jal" for TLS GD */
#define R_TILEGX_IMM8_X0_TLS_GD_ADD 113 /* X0 pipe "addi" for TLS GD */
#define R_TILEGX_IMM8_X1_TLS_GD_ADD 114 /* X1 pipe "addi" for TLS GD */
#define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115 /* Y0 pipe "addi" for TLS GD */
#define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116 /* Y1 pipe "addi" for TLS GD */
#define R_TILEGX_TLS_IE_LOAD 117 /* "ld_tls" for TLS IE */
#define R_TILEGX_IMM8_X0_TLS_ADD 118 /* X0 pipe "addi" for TLS GD/IE */
#define R_TILEGX_IMM8_X1_TLS_ADD 119 /* X1 pipe "addi" for TLS GD/IE */
#define R_TILEGX_IMM8_Y0_TLS_ADD 120 /* Y0 pipe "addi" for TLS GD/IE */
#define R_TILEGX_IMM8_Y1_TLS_ADD 121 /* Y1 pipe "addi" for TLS GD/IE */
#define R_TILEGX_GNU_VTINHERIT 128 /* GNU C++ vtable hierarchy */
#define R_TILEGX_GNU_VTENTRY 129 /* GNU C++ vtable member usage */
#define R_TILEGX_NUM 130
__END_DECLS
#endif /* elf.h */
+2
View File
@@ -2276,6 +2276,8 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
lnp->dont_free = 1;
lnp = lnp->next;
}
/* Also allocated with the fake malloc(). */
l->l_free_initfini = 0;
if (l != &GL(dl_rtld_map))
_dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
+19
View File
@@ -0,0 +1,19 @@
#include <dlfcn.h>
#include <stdio.h>
static int
do_test ()
{
const char lib[] = "$ORIGIN/tst-relsort1mod1.so";
void *h = dlopen (lib, RTLD_NOW);
if (h == NULL)
{
puts (dlerror ());
return 1;
}
return 0;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
+7
View File
@@ -0,0 +1,7 @@
extern int foo (double);
int
bar (void)
{
return foo (1.2);
}
+7
View File
@@ -0,0 +1,7 @@
#include <math.h>
int
foo (double d)
{
return floor (d) != 0.0;
}
+7 -2
View File
@@ -1,6 +1,6 @@
/* Support macros for making weak and strong aliases for symbols,
and for using symbol sets and linker warnings with GNU ld.
Copyright (C) 1995-1998,2000-2006,2008,2009,2011
Copyright (C) 1995-1998,2000-2006,2008,2009,2011,2012
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -626,7 +626,12 @@ for linking")
# define libc_hidden_proto(name, attrs...) hidden_proto (name, ##attrs)
# define libc_hidden_def(name) hidden_def (name)
# define libc_hidden_weak(name) hidden_weak (name)
# define libc_hidden_nolink(name, version) hidden_nolink (name, libc, version)
# ifdef LINK_OBSOLETE_RPC
/* libc_hidden_nolink_sunrpc should only get used in sunrpc code. */
# define libc_hidden_nolink_sunrpc(name, version) hidden_def (name)
# else
# define libc_hidden_nolink_sunrpc(name, version) hidden_nolink (name, libc, version)
# endif
# define libc_hidden_ver(local, name) hidden_ver (local, name)
# define libc_hidden_data_def(name) hidden_data_def (name)
# define libc_hidden_data_weak(name) hidden_data_weak (name)
+4 -4
View File
@@ -1,6 +1,6 @@
/* Data structure for communication from the run-time dynamic linker for
loaded ELF shared objects.
Copyright (C) 1995-2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (C) 1995-2012 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
@@ -192,6 +192,9 @@ struct link_map
during LD_TRACE_PRELINKING=1
contains any DT_SYMBOLIC
libraries. */
unsigned int l_free_initfini:1; /* Nonzero if l_initfini can be
freed, ie. not allocated with
the dummy malloc in ld.so. */
/* Collected information about own RPATH directories. */
struct r_search_path_struct l_rpath_dirs;
@@ -240,9 +243,6 @@ struct link_map
/* List of object in order of the init and fini calls. */
struct link_map **l_initfini;
/* The init and fini list generated at startup, saved when the
object is also loaded dynamically. */
struct link_map **l_orig_initfini;
/* List of the dependencies introduced through symbol binding. */
struct link_map_reldeps
+6
View File
@@ -0,0 +1,6 @@
#ifndef _SYS_EPOLL_H
#include_next <sys/epoll.h>
libc_hidden_proto (epoll_pwait)
#endif
+9 -2
View File
@@ -828,7 +828,7 @@ arena_get2(mstate a_tsd, size_t size)
{
if (mp_.arena_max != 0)
narenas_limit = mp_.arena_max;
else
else if (narenas > mp_.arena_test)
{
int n = __get_nprocs ();
@@ -842,7 +842,14 @@ arena_get2(mstate a_tsd, size_t size)
}
repeat:;
size_t n = narenas;
if (__builtin_expect (n <= mp_.arena_test || n < narenas_limit, 0))
/* NB: the following depends on the fact that (size_t)0 - 1 is a
very large number and that the underflow is OK. If arena_max
is set the value of arena_test is irrelevant. If arena_test
is set but narenas is not yet larger or equal to arena_test
narenas_limit is 0. There is no possibility for narenas to
be too big for the test to always fail since there is not
enough address space to create that many arenas. */
if (__builtin_expect (n <= narenas_limit - 1, 0))
{
if (catomic_compare_and_exchange_bool_acq (&narenas, n + 1, n))
goto repeat;
+12 -8
View File
@@ -3989,25 +3989,29 @@ _int_free(mstate av, mchunkptr p, int have_lock)
unsigned int idx = fastbin_index(size);
fb = &fastbin (av, idx);
mchunkptr fd;
mchunkptr old = *fb;
/* Atomically link P to its fastbin: P->FD = *FB; *FB = P; */
mchunkptr old = *fb, old2;
unsigned int old_idx = ~0u;
do
{
/* Another simple check: make sure the top of the bin is not the
record we are going to add (i.e., double free). */
/* Check that the top of the bin is not the record we are going to add
(i.e., double free). */
if (__builtin_expect (old == p, 0))
{
errstr = "double free or corruption (fasttop)";
goto errout;
}
if (old != NULL)
/* Check that size of fastbin chunk at the top is the same as
size of the chunk that we are adding. We can dereference OLD
only if we have the lock, otherwise it might have already been
deallocated. See use of OLD_IDX below for the actual check. */
if (have_lock && old != NULL)
old_idx = fastbin_index(chunksize(old));
p->fd = fd = old;
p->fd = old2 = old;
}
while ((old = catomic_compare_and_exchange_val_rel (fb, p, fd)) != fd);
while ((old = catomic_compare_and_exchange_val_rel (fb, p, old2)) != old2);
if (fd != NULL && __builtin_expect (old_idx != idx, 0))
if (have_lock && old != NULL && __builtin_expect (old_idx != idx, 0))
{
errstr = "invalid fastbin entry (free)";
goto errout;
+112 -9
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 1997-2006, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
/* Copyright (C) 1997-2006, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
@@ -3286,14 +3286,14 @@ jn_test (void)
TEST_ff_f (jn, 10, 10.0, 0.207486106633358857697278723518753428L);
/* BZ #11589 .*/
TEST_ff_f (jn, 2, 2.4048255576957729, 0.43175480701968038399746111312430703L);
TEST_ff_f (jn, 3, 2.4048255576957729, 0.19899990535769083404042146764530813L);
TEST_ff_f (jn, 4, 2.4048255576957729, 0.647466661641779720084932282551219891E-1L);
TEST_ff_f (jn, 5, 2.4048255576957729, 0.163892432048058525099230549946147698E-1L);
TEST_ff_f (jn, 6, 2.4048255576957729, 0.34048184720278336646673682895929161E-2L);
TEST_ff_f (jn, 7, 2.4048255576957729, 0.60068836573295394221291569249883076E-3L);
TEST_ff_f (jn, 8, 2.4048255576957729, 0.92165786705344923232879022467054148E-4L);
TEST_ff_f (jn, 9, 2.4048255576957729, 0.12517270977961513005428966643852564E-4L)
TEST_ff_f (jn, 2, 2.4048255576957729L, 0.43175480701968038399746111312430703L);
TEST_ff_f (jn, 3, 2.4048255576957729L, 0.19899990535769083404042146764530813L);
TEST_ff_f (jn, 4, 2.4048255576957729L, 0.647466661641779720084932282551219891E-1L);
TEST_ff_f (jn, 5, 2.4048255576957729L, 0.163892432048058525099230549946147698E-1L);
TEST_ff_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L);
TEST_ff_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L);
TEST_ff_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L);
TEST_ff_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L)
END (jn);
}
@@ -4633,6 +4633,29 @@ nearbyint_test (void)
TEST_f_f (nearbyint, 524286.75, 524287.0);
TEST_f_f (nearbyint, 524288.75, 524289.0);
TEST_f_f (nearbyint, 1048576.75, 1048577.0);
TEST_f_f (nearbyint, 2097152.75, 2097153.0);
TEST_f_f (nearbyint, 2492472.75, 2492473.0);
TEST_f_f (nearbyint, 2886220.75, 2886221.0);
TEST_f_f (nearbyint, 3058792.75, 3058793.0);
TEST_f_f (nearbyint, -1048576.75, -1048577.0);
TEST_f_f (nearbyint, -2097152.75, -2097153.0);
TEST_f_f (nearbyint, -2492472.75, -2492473.0);
TEST_f_f (nearbyint, -2886220.75, -2886221.0);
TEST_f_f (nearbyint, -3058792.75, -3058793.0);
#ifndef TEST_FLOAT
TEST_f_f (nearbyint, 70368744177664.75, 70368744177665.0);
TEST_f_f (nearbyint, 140737488355328.75, 140737488355329.0);
TEST_f_f (nearbyint, 281474976710656.75, 281474976710657.0);
TEST_f_f (nearbyint, 562949953421312.75, 562949953421313.0);
TEST_f_f (nearbyint, 1125899906842624.75, 1125899906842625.0);
TEST_f_f (nearbyint, -70368744177664.75, -70368744177665.0);
TEST_f_f (nearbyint, -140737488355328.75, -140737488355329.0);
TEST_f_f (nearbyint, -281474976710656.75, -281474976710657.0);
TEST_f_f (nearbyint, -562949953421312.75, -562949953421313.0);
TEST_f_f (nearbyint, -1125899906842624.75, -1125899906842625.0);
#endif
END (nearbyint);
}
@@ -5038,6 +5061,22 @@ rint_test (void)
TEST_f_f (rint, 262142.75, 262143.0);
TEST_f_f (rint, 524286.75, 524287.0);
TEST_f_f (rint, 524288.75, 524289.0);
TEST_f_f (rint, 1048576.75, 1048577.0);
TEST_f_f (rint, 2097152.75, 2097153.0);
TEST_f_f (rint, -1048576.75, -1048577.0);
TEST_f_f (rint, -2097152.75, -2097153.0);
#ifndef TEST_FLOAT
TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
#endif
#ifdef TEST_LDOUBLE
/* The result can only be represented in long double. */
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
@@ -5138,6 +5177,22 @@ rint_test_tonearest (void)
TEST_f_f (rint, -0.1, -0.0);
TEST_f_f (rint, -0.25, -0.0);
TEST_f_f (rint, -0.625, -1.0);
TEST_f_f (rint, 1048576.75, 1048577.0);
TEST_f_f (rint, 2097152.75, 2097153.0);
TEST_f_f (rint, -1048576.75, -1048577.0);
TEST_f_f (rint, -2097152.75, -2097153.0);
#ifndef TEST_FLOAT
TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
#endif
#ifdef TEST_LDOUBLE
/* The result can only be represented in long double. */
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
@@ -5208,6 +5263,22 @@ rint_test_towardzero (void)
TEST_f_f (rint, -0.1, -0.0);
TEST_f_f (rint, -0.25, -0.0);
TEST_f_f (rint, -0.625, -0.0);
TEST_f_f (rint, 1048576.75, 1048576.0);
TEST_f_f (rint, 2097152.75, 2097152.0);
TEST_f_f (rint, -1048576.75, -1048576.0);
TEST_f_f (rint, -2097152.75, -2097152.0);
#ifndef TEST_FLOAT
TEST_f_f (rint, 70368744177664.75, 70368744177664.0);
TEST_f_f (rint, 140737488355328.75, 140737488355328.0);
TEST_f_f (rint, 281474976710656.75, 281474976710656.0);
TEST_f_f (rint, 562949953421312.75, 562949953421312.0);
TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0);
TEST_f_f (rint, -70368744177664.75, -70368744177664.0);
TEST_f_f (rint, -140737488355328.75, -140737488355328.0);
TEST_f_f (rint, -281474976710656.75, -281474976710656.0);
TEST_f_f (rint, -562949953421312.75, -562949953421312.0);
TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0);
#endif
#ifdef TEST_LDOUBLE
/* The result can only be represented in long double. */
TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L);
@@ -5278,6 +5349,22 @@ rint_test_downward (void)
TEST_f_f (rint, -0.1, -1.0);
TEST_f_f (rint, -0.25, -1.0);
TEST_f_f (rint, -0.625, -1.0);
TEST_f_f (rint, 1048576.75, 1048576.0);
TEST_f_f (rint, 2097152.75, 2097152.0);
TEST_f_f (rint, -1048576.75, -1048577.0);
TEST_f_f (rint, -2097152.75, -2097153.0);
#ifndef TEST_FLOAT
TEST_f_f (rint, 70368744177664.75, 70368744177664.0);
TEST_f_f (rint, 140737488355328.75, 140737488355328.0);
TEST_f_f (rint, 281474976710656.75, 281474976710656.0);
TEST_f_f (rint, 562949953421312.75, 562949953421312.0);
TEST_f_f (rint, 1125899906842624.75, 1125899906842624.0);
TEST_f_f (rint, -70368744177664.75, -70368744177665.0);
TEST_f_f (rint, -140737488355328.75, -140737488355329.0);
TEST_f_f (rint, -281474976710656.75, -281474976710657.0);
TEST_f_f (rint, -562949953421312.75, -562949953421313.0);
TEST_f_f (rint, -1125899906842624.75, -1125899906842625.0);
#endif
#ifdef TEST_LDOUBLE
/* The result can only be represented in long double. */
TEST_f_f (rint, 4503599627370495.5L, 4503599627370495.0L);
@@ -5348,6 +5435,22 @@ rint_test_upward (void)
TEST_f_f (rint, -0.1, -0.0);
TEST_f_f (rint, -0.25, -0.0);
TEST_f_f (rint, -0.625, -0.0);
TEST_f_f (rint, 1048576.75, 1048577.0);
TEST_f_f (rint, 2097152.75, 2097153.0);
TEST_f_f (rint, -1048576.75, -1048576.0);
TEST_f_f (rint, -2097152.75, -2097152.0);
#ifndef TEST_FLOAT
TEST_f_f (rint, 70368744177664.75, 70368744177665.0);
TEST_f_f (rint, 140737488355328.75, 140737488355329.0);
TEST_f_f (rint, 281474976710656.75, 281474976710657.0);
TEST_f_f (rint, 562949953421312.75, 562949953421313.0);
TEST_f_f (rint, 1125899906842624.75, 1125899906842625.0);
TEST_f_f (rint, -70368744177664.75, -70368744177664.0);
TEST_f_f (rint, -140737488355328.75, -140737488355328.0);
TEST_f_f (rint, -281474976710656.75, -281474976710656.0);
TEST_f_f (rint, -562949953421312.75, -562949953421312.0);
TEST_f_f (rint, -1125899906842624.75, -1125899906842624.0);
#endif
#ifdef TEST_LDOUBLE
/* The result can only be represented in long double. */
TEST_f_f (rint, 4503599627370495.5L, 4503599627370496.0L);
-8
View File
@@ -365,14 +365,6 @@ extern void __docos (double __x, double __dx, double __v[]);
know what operations are going to be performed. Therefore we
define additional interfaces. By default they refer to the normal
interfaces. */
#define libc_fegetround() fegetround ()
#define libc_fegetroundf() fegetround ()
#define libc_fegetroundl() fegetround ()
#define libc_fesetround(r) (void) fesetround (r)
#define libc_fesetroundf(r) (void) fesetround (r)
#define libc_fesetroundl(r) (void) fesetround (r)
#define libc_feholdexcept(e) (void) feholdexcept (e)
#define libc_feholdexceptf(e) (void) feholdexcept (e)
#define libc_feholdexceptl(e) (void) feholdexcept (e)
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
double
__acos (double x)
{
if (__builtin_expect (fabs (x) > 1.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabs (x), 1.0), 0)
&& _LIB_VERSION != _IEEE_)
{
/* acos(|x|>1) */
feraiseexcept (FE_INVALID);
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
float
__acosf (float x)
{
if (__builtin_expect (fabsf (x) > 1.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
&& _LIB_VERSION != _IEEE_)
{
/* acos(|x|>1) */
feraiseexcept (FE_INVALID);
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,7 @@
double
__acosh (double x)
{
if (__builtin_expect (x < 1.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isless (x, 1.0), 0) && _LIB_VERSION != _IEEE_)
/* acosh(x<1) */
return __kernel_standard (x, x, 29);
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,7 @@
float
__acoshf (float x)
{
if (__builtin_expect (x < 1.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isless (x, 1.0f), 0) && _LIB_VERSION != _IEEE_)
/* acosh(x<1) */
return __kernel_standard_f (x, x, 129);
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,7 @@
long double
__acoshl (long double x)
{
if (__builtin_expect (x < 1.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isless (x, 1.0L), 0) && _LIB_VERSION != _IEEE_)
/* acosh(x<1) */
return __kernel_standard (x, x, 229);
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
long double
__acosl (long double x)
{
if (__builtin_expect (fabsl (x) > 1.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsl (x), 1.0L), 0)
&& _LIB_VERSION != _IEEE_)
{
/* acos(|x|>1) */
feraiseexcept (FE_INVALID);
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
double
__asin (double x)
{
if (__builtin_expect (fabs (x) > 1.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabs (x), 1.0), 0)
&& _LIB_VERSION != _IEEE_)
{
/* asin(|x|>1) */
feraiseexcept (FE_INVALID);
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
float
__asinf (float x)
{
if (__builtin_expect (fabsf (x) > 1.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
&& _LIB_VERSION != _IEEE_)
{
/* asin(|x|>1) */
feraiseexcept (FE_INVALID);
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
long double
__asinl (long double x)
{
if (__builtin_expect (fabsl (x) > 1.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsl (x), 1.0L), 0)
&& _LIB_VERSION != _IEEE_)
{
/* asin(|x|>1) */
feraiseexcept (FE_INVALID);
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,8 @@
double
__atanh (double x)
{
if (__builtin_expect (fabs (x) >= 1.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreaterequal (fabs (x), 1.0), 0)
&& _LIB_VERSION != _IEEE_)
return __kernel_standard (x, x,
fabs (x) > 1.0
? 30 /* atanh(|x|>1) */
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,8 @@
float
__atanhf (float x)
{
if (__builtin_expect (fabsf (x) >= 1.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreaterequal (fabsf (x), 1.0f), 0)
&& _LIB_VERSION != _IEEE_)
return __kernel_standard_f (x, x,
fabsf (x) > 1.0f
? 130 /* atanh(|x|>1) */
+3 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,8 @@
long double
__atanhl (long double x)
{
if (__builtin_expect (fabsl (x) >= 1.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreaterequal (fabsl (x), 1.0L), 0)
&& _LIB_VERSION != _IEEE_)
return __kernel_standard (x, x,
fabsl (x) > 1.0L
? 230 /* atanh(|x|>1) */
+2 -1
View File
@@ -12,7 +12,8 @@ static const double u_threshold = (double) (DBL_MIN_EXP - DBL_MANT_DIG - 1);
double
__exp2 (double x)
{
if (__builtin_expect (x <= u_threshold || x > o_threshold, 0)
if (__builtin_expect (islessequal (x, u_threshold)
|| isgreater (x, o_threshold), 0)
&& _LIB_VERSION != _IEEE_ && __finite (x))
/* exp2 overflow: 44, exp2 underflow: 45 */
return __kernel_standard (x, x, 44 + (x <= o_threshold));
+2 -1
View File
@@ -12,7 +12,8 @@ static const float u_threshold = (float) (FLT_MIN_EXP - FLT_MANT_DIG - 1);
float
__exp2f (float x)
{
if (__builtin_expect (x <= u_threshold || x > o_threshold, 0)
if (__builtin_expect (islessequal (x, u_threshold)
|| isgreater (x, o_threshold), 0)
&& _LIB_VERSION != _IEEE_ && __finitef (x))
/* exp2 overflow: 144, exp2 underflow: 145 */
return __kernel_standard_f (x, x, 144 + (x <= o_threshold));
+2 -1
View File
@@ -13,7 +13,8 @@ static const long double u_threshold
long double
__exp2l (long double x)
{
if (__builtin_expect (x <= u_threshold || x > o_threshold, 0)
if (__builtin_expect (islessequal (x, u_threshold)
|| isgreater (x, o_threshold), 0)
&& _LIB_VERSION != _IEEE_ && __finitel (x))
/* exp2 overflow: 244, exp2 underflow: 245 */
return __kernel_standard (x, x, 244 + (x <= o_threshold));
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
double
j0 (double x)
{
if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* j0(|x|>X_TLOSS) */
return __kernel_standard (x, x, 34);
@@ -41,7 +42,8 @@ strong_alias (j0, j0l)
double
y0 (double x)
{
if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0)
{
+4 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
float
j0f (float x)
{
if (__builtin_expect (fabsf (x) > (float) X_TLOSS, 0)
if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* j0(|x|>X_TLOSS) */
return __kernel_standard_f (x, x, 134);
@@ -39,7 +39,8 @@ j0f (float x)
float
y0f (float x)
{
if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0)
if (__builtin_expect (islessequal (x, 0.0f)
|| isgreater (x, (float) X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0f)
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
long double
__j0l (long double x)
{
if (__builtin_expect (fabsl (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* j0(|x|>X_TLOSS) */
return __kernel_standard (x, x, 234);
@@ -39,7 +40,8 @@ weak_alias (__j0l, j0l)
long double
__y0l (long double x)
{
if (__builtin_expect (x <= 0.0L || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0L) || isgreater (x, X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0L)
{
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
double
j1 (double x)
{
if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* j1(|x|>X_TLOSS) */
return __kernel_standard (x, x, 36);
@@ -41,7 +42,8 @@ strong_alias (j1, j1l)
double
y1 (double x)
{
if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0)
{
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
float
j1f (float x)
{
if (__builtin_expect (fabsf (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsf (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* j1(|x|>X_TLOSS) */
return __kernel_standard_f (x, x, 136);
@@ -38,7 +39,8 @@ j1f (float x)
float
y1f (float x)
{
if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0)
if (__builtin_expect (islessequal (x, 0.0f)
|| isgreater (x, (float) X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0f)
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
long double
__j1l (long double x)
{
if (__builtin_expect (fabsl (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* j1(|x|>X_TLOSS) */
return __kernel_standard (x, x, 236);
@@ -39,7 +40,8 @@ weak_alias (__j1l, j1l)
long double
__y1l (long double x)
{
if (__builtin_expect (x <= 0.0L || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0L) || isgreater (x, X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0L)
{
+5 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,8 @@
double
jn (int n, double x)
{
if (__builtin_expect (fabs (x) > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* jn(n,|x|>X_TLOSS) */
return __kernel_standard (n, x, 38);
@@ -41,7 +42,8 @@ strong_alias (jn, jnl)
double
yn (int n, double x)
{
if (__builtin_expect (x <= 0.0 || x > X_TLOSS, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0) || isgreater (x, X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0)
{
+4 -3
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
float
jnf (int n, float x)
{
if (__builtin_expect (fabsf (x) > (float) X_TLOSS, 0)
if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
/* jn(n,|x|>X_TLOSS) */
return __kernel_standard_f (n, x, 138);
@@ -39,7 +39,8 @@ jnf (int n, float x)
float
ynf (int n, float x)
{
if (__builtin_expect (x <= 0.0f || x > (float) X_TLOSS, 0)
if (__builtin_expect (islessequal (x, 0.0f)
|| isgreater (x, (float) X_TLOSS), 0)
&& _LIB_VERSION != _IEEE_)
{
if (x < 0.0f)
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
double
__log (double x)
{
if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
double
__log10 (double x)
{
if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
float
__log10f (float x)
{
if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0f)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
long double
__log10l (long double x)
{
if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0L)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
double
__log2 (double x)
{
if (__builtin_expect (x <= 0.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
float
__log2f (float x)
{
if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
long double
__log2l (long double x)
{
if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0L)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
float
__logf (float x)
{
if (__builtin_expect (x <= 0.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0f)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -26,7 +26,7 @@
long double
__logl (long double x)
{
if (__builtin_expect (x <= 0.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (islessequal (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
{
if (x == 0.0L)
{
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,7 @@
double
__sqrt (double x)
{
if (__builtin_expect (x < 0.0, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isless (x, 0.0), 0) && _LIB_VERSION != _IEEE_)
return __kernel_standard (x, x, 26); /* sqrt(negative) */
return __ieee754_sqrt (x);
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,7 @@
float
__sqrtf (float x)
{
if (__builtin_expect (x < 0.0f, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isless (x, 0.0f), 0) && _LIB_VERSION != _IEEE_)
return __kernel_standard_f (x, x, 126); /* sqrt(negative) */
return __ieee754_sqrtf (x);
+2 -2
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 2011 Free Software Foundation, Inc.
/* Copyright (C) 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
@@ -25,7 +25,7 @@
long double
__sqrtl (long double x)
{
if (__builtin_expect (x < 0.0L, 0) && _LIB_VERSION != _IEEE_)
if (__builtin_expect (isless (x, 0.0L), 0) && _LIB_VERSION != _IEEE_)
return __kernel_standard (x, x, 226); /* sqrt(negative) */
return __ieee754_sqrtl (x);
+6 -4
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1996-1998,2001,2004,2006,2011 Free Software Foundation, Inc.
# Copyright (C) 1996-1998,2001,2004,2006,2011,2012 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
@@ -23,9 +23,11 @@ subdir := nis
aux := nis_hash
distribute := nss-nis.h nss-nisplus.h nis_intern.h Banner \
nisplus-parser.h nis_xdr.h nss \
$(wildcard rpcsvc/*.[hx])
include ../Makeconfig
ifeq ($(link-obsolete-rpc),yes)
headers := $(wildcard rpcsvc/*.[hx])
endif
# These are the databases available for the nis (and perhaps later nisplus)
# service. This must be a superset of the services in nss.
+5
View File
@@ -1,3 +1,8 @@
2012-04-22 Carlos O'Donell <carlos_odonell@mentor.com>
[BZ #411]
* sysdeps/pthread/pt-initfini.c: Redefine __i686.
2011-12-22 Ulrich Drepper <drepper@gmail.com>
* sysdeps/pthread/gai_misc.h (__gai_create_helper_thread): Use
+5
View File
@@ -45,6 +45,11 @@
/* Embed an #include to pull in the alignment and .end directives. */
asm ("\n#include \"defs.h\"");
asm ("\n#if defined __i686 && defined __ASSEMBLER__");
asm ("\n#undef __i686");
asm ("\n#define __i686 __i686");
asm ("\n#endif");
/* The initial common code ends here. */
asm ("\n/*@HEADER_ENDS*/");
+1
View File
@@ -61,6 +61,7 @@ libc.pot: header.pot libc.pot.files
set `date -R`; disp="$$6"; \
sed -e 's/VERSION/$(version)/' \
-e "s/DATE/`date +'%Y-%m-%d %H:%M'$$disp`/" \
-e "s/CHARSET/UTF-8/" \
$< > $@.new
egrep -v '\.ksh$$' $(word 2,$^) > $(objdir)/tmp-libc.pot-files
cd ..; $(XGETTEXT) --keyword=_ --keyword=N_ \
+604 -455
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -218,7 +218,7 @@ static int collated_compare (const void *, const void *) __THROW;
static const char *
next_brace_sub (const char *cp, int flags)
{
unsigned int depth = 0;
size_t depth = 0;
while (*cp != '\0')
if ((flags & GLOB_NOESCAPE) == 0 && *cp == '\\')
{
@@ -961,7 +961,7 @@ glob (pattern, flags, errfunc, pglob)
&& S_ISDIR (st.st_mode))
: (__stat64 (dirname, &st64) == 0 && S_ISDIR (st64.st_mode)))))
{
int newcount = pglob->gl_pathc + pglob->gl_offs;
size_t newcount = pglob->gl_pathc + pglob->gl_offs;
char **new_gl_pathv;
if (newcount > UINTPTR_MAX - (1 + 1)
@@ -1060,7 +1060,7 @@ glob (pattern, flags, errfunc, pglob)
appending the results to PGLOB. */
for (i = 0; i < dirs.gl_pathc; ++i)
{
int old_pathc;
size_t old_pathc;
#ifdef SHELL
{
@@ -1115,7 +1115,7 @@ glob (pattern, flags, errfunc, pglob)
/* No matches. */
if (flags & GLOB_NOCHECK)
{
int newcount = pglob->gl_pathc + pglob->gl_offs;
size_t newcount = pglob->gl_pathc + pglob->gl_offs;
char **new_gl_pathv;
if (newcount > UINTPTR_MAX - 2
@@ -1159,7 +1159,7 @@ glob (pattern, flags, errfunc, pglob)
}
else
{
int old_pathc = pglob->gl_pathc;
size_t old_pathc = pglob->gl_pathc;
int orig_flags = flags;
if (meta & 2)
+69 -52
View File
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
timestamp='2010-08-21'
timestamp='2012-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -57,8 +57,8 @@ GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
Software Foundation, Inc.
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -92,7 +92,7 @@ if test $# != 0; then
exit 1
fi
trap 'exit 1' HUP INT TERM
trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
@@ -106,7 +106,7 @@ trap 'exit 1' HUP INT TERM
set_cc_for_build='
trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" HUP INT PIPE TERM ;
trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
: ${TMPDIR=/tmp} ;
{ tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
@@ -145,7 +145,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -270,7 +270,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
exit ;;
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -609,38 +612,38 @@ EOF
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
sed 's/^ //' << EOF >$dummy.c
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
#define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
int main ()
{
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
int main ()
{
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
#if defined(_SC_KERNEL_BITS)
long bits = sysconf(_SC_KERNEL_BITS);
#endif
long cpu = sysconf (_SC_CPU_VERSION);
switch (cpu)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
case CPU_PA_RISC2_0:
#if defined(_SC_KERNEL_BITS)
switch (bits)
{
case 64: puts ("hppa2.0w"); break;
case 32: puts ("hppa2.0n"); break;
default: puts ("hppa2.0"); break;
} break;
#else /* !defined(_SC_KERNEL_BITS) */
puts ("hppa2.0"); break;
#endif
default: puts ("hppa1.0"); break;
}
exit (0);
}
exit (0);
}
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -789,13 +792,12 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
case ${UNAME_MACHINE} in
pc98)
echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
UNAME_PROCESSOR=`/usr/bin/uname -p`
case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
@@ -804,6 +806,9 @@ EOF
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
@@ -879,20 +884,29 @@ EOF
then
echo ${UNAME_MACHINE}-unknown-linux-gnu
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
else
echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-gnu
echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
echo frv-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
hexagon:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
@@ -934,7 +948,7 @@ EOF
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
@@ -969,13 +983,13 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-tilera-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -1136,8 +1150,8 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
*:UNIX_System_V:4*:FTX*)
@@ -1234,6 +1248,9 @@ EOF
*:QNX:*:4*)
echo i386-pc-qnx
exit ;;
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-?:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
@@ -1325,11 +1342,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
"4"
#else
""
""
#endif
); exit (0);
); exit (0);
#endif
#endif
+68 -34
View File
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
# 2011, 2012 Free Software Foundation, Inc.
timestamp='2010-09-11'
timestamp='2012-01-28'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -76,8 +76,8 @@ version="\
GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
Software Foundation, Inc.
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -132,6 +132,10 @@ case $maybe_os in
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
android-linux)
os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -251,13 +255,17 @@ case $basic_machine in
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| be32 | be64 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore | mep | metag \
@@ -286,22 +294,23 @@ case $basic_machine in
| nds32 | nds32le | nds32be \
| nios | nios2 \
| ns16k | ns32k \
| open8 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
| rx \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| spu \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
| v850 | v850e \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
@@ -314,8 +323,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | picochip)
# Motorola 68HC11/12.
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -325,6 +333,21 @@ case $basic_machine in
basic_machine=mt-unknown
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
@@ -344,6 +367,7 @@ case $basic_machine in
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \
@@ -352,8 +376,10 @@ case $basic_machine in
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
@@ -382,24 +408,26 @@ case $basic_machine in
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
| romp-* | rs6000-* | rx-* \
| rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
| tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile-* | tilegx-* \
| tile*-* \
| tron-* \
| ubicom32-* \
| v850-* | v850e-* | vax-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@@ -539,7 +567,7 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
cr16)
cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
@@ -697,7 +725,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -794,10 +821,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i386-pc
os=-msys
;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -950,9 +985,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
ppc | ppcbe) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -1046,6 +1082,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2)
basic_machine=m68000-sun
;;
@@ -1102,13 +1141,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
# This must be matched before tile*.
tilegx*)
basic_machine=tilegx-unknown
os=-linux-gnu
;;
tile*)
basic_machine=tile-unknown
basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@@ -1178,6 +1212,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1315,7 +1352,7 @@ case $os in
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
@@ -1527,9 +1564,6 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
m68*-cisco)
os=-aout
+6 -2
View File
@@ -54,9 +54,13 @@ $1 == "}" {
while (vers_compare($1, v) >= 0) {
delete firstversion[thislib, idx[thislib]];
idx[thislib]++;
if ((thislib, idx[thislib]) in firstversion)
if ((thislib, idx[thislib]) in firstversion) {
# If we're skipping a referenced version to jump ahead to a
# later version, synthesize the earlier referenced version now.
if (v != $1 && (thislib, v) in usedversion)
print " " v;
v = firstversion[thislib, idx[thislib]];
else
} else
break;
}
if ($1 == v || $1 == f)
+15 -2
View File
@@ -11,8 +11,21 @@ esac
if [ -r .git/HEAD ]; then
exec ${GIT:-git} ls-files
# List files for glibc core.
${GIT:-git} ls-files
# List files for glibc ports.
ports="ports"
if [ -d "$PWD/$ports" ]; then
cd "$PWD/$ports"
${GIT:-git} ls-files | sed -e "s,^,$ports/,g"
else
# We expect the glibc-ports directory to be symlinked as PORTS.
# The glibc release manager will run this script as part of libc.pot
# regeneration and should ensure the symlink to PORTS is setup.
echo >&2 "WARNING: No \"$ports\" directory found. Expected glibc-ports"\
"source directory to be symlinked as \"$ports\" directory."
fi
exit 0
fi
echo >&2 'Cannot list sources without some version control system in use.'
+1
View File
@@ -122,6 +122,7 @@ CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
# We know the test has a format string problem.
CFLAGS-tst-sprintf.c = -Wno-format
tst-sprintf-ENV = LOCPATH=$(common-objpfx)localedata
tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata
tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata
test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata
+13
View File
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
@@ -58,5 +59,17 @@ main (void)
result = 1;
}
if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
{
puts ("cannot set locale");
result = 1;
}
else if (sprintf (buf, "%.8s\n", "Foo: \277") != 7
|| strcmp (buf, "Foo: \277\n") != 0)
{
printf ("sprintf (buf, \"%%.8s\\n\", \"Foo: \\277\") produced '%s' output\n", buf);
result = 1;
}
return result;
}
+3 -35
View File
@@ -1161,41 +1161,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
else if (!is_long && spec != L_('S')) \
{ \
if (prec != -1) \
{ \
/* Search for the end of the string, but don't search past \
the length (in bytes) specified by the precision. Also \
don't use incomplete characters. */ \
if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX) == 1) \
len = __strnlen (string, prec); \
else \
{ \
/* In case we have a multibyte character set the \
situation is more complicated. We must not copy \
bytes at the end which form an incomplete character. */\
size_t ignore_size = (unsigned) prec > 1024 ? 1024 : prec;\
wchar_t ignore[ignore_size]; \
const char *str2 = string; \
const char *strend = string + prec; \
if (strend < string) \
strend = (const char *) UINTPTR_MAX; \
\
mbstate_t ps; \
memset (&ps, '\0', sizeof (ps)); \
\
while (str2 != NULL && str2 < strend) \
if (__mbsnrtowcs (ignore, &str2, strend - str2, \
ignore_size, &ps) == (size_t) -1) \
{ \
done = -1; \
goto all_done; \
} \
\
if (str2 == NULL) \
len = strlen (string); \
else \
len = str2 - string - (ps.__count & 7); \
} \
} \
/* Search for the end of the string, but don't search past \
the length (in bytes) specified by the precision. */ \
len = __strnlen (string, prec); \
else \
len = strlen (string); \
} \
+1 -1
View File
@@ -71,7 +71,7 @@ tests := tst-strtol tst-strtod testmb testrand testsort testdiv \
tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2 \
tst-makecontext2 tst-strtod6 tst-unsetenv1 \
tst-makecontext3 bug-getcontext
tst-makecontext3 bug-getcontext tst-strtod-overflow
include ../Makeconfig
+63 -56
View File
@@ -103,7 +103,6 @@ fmtmsg (long int classification, const char *label, int severity,
const char *text, const char *action, const char *tag)
{
__libc_once_define (static, once);
int result = MM_OK;
struct severity_info *severity_rec;
/* Make sure everything is initialized. */
@@ -124,17 +123,6 @@ fmtmsg (long int classification, const char *label, int severity,
return MM_NOTOK;
}
for (severity_rec = severity_list; severity_rec != NULL;
severity_rec = severity_rec->next)
if (severity == severity_rec->severity)
/* Bingo. */
break;
/* If we don't know anything about the severity level return an error. */
if (severity_rec == NULL)
return MM_NOTOK;
#ifdef __libc_ptf_call
/* We do not want this call to be cut short by a thread
cancellation. Therefore disable cancellation for now. */
@@ -143,53 +131,72 @@ fmtmsg (long int classification, const char *label, int severity,
0);
#endif
/* Now we can print. */
if (classification & MM_PRINT)
{
int do_label = (print & label_mask) && label != MM_NULLLBL;
int do_severity = (print & severity_mask) && severity != MM_NULLSEV;
int do_text = (print & text_mask) && text != MM_NULLTXT;
int do_action = (print & action_mask) && action != MM_NULLACT;
int do_tag = (print & tag_mask) && tag != MM_NULLTAG;
__libc_lock_lock (lock);
if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
do_label ? label : "",
do_label && (do_severity | do_text | do_action | do_tag)
? ": " : "",
do_severity ? severity_rec->string : "",
do_severity && (do_text | do_action | do_tag)
? ": " : "",
do_text ? text : "",
do_text && (do_action | do_tag) ? "\n" : "",
do_action ? "TO FIX: " : "",
do_action ? action : "",
do_action && do_tag ? " " : "",
do_tag ? tag : "") < 0)
/* Oh, oh. An error occurred during the output. */
result = MM_NOMSG;
for (severity_rec = severity_list; severity_rec != NULL;
severity_rec = severity_rec->next)
if (severity == severity_rec->severity)
/* Bingo. */
break;
/* If we don't know anything about the severity level return an error. */
int result = MM_NOTOK;
if (severity_rec != NULL)
{
result = MM_OK;
/* Now we can print. */
if (classification & MM_PRINT)
{
int do_label = (print & label_mask) && label != MM_NULLLBL;
int do_severity = (print & severity_mask) && severity != MM_NULLSEV;
int do_text = (print & text_mask) && text != MM_NULLTXT;
int do_action = (print & action_mask) && action != MM_NULLACT;
int do_tag = (print & tag_mask) && tag != MM_NULLTAG;
int need_colon = (do_label
&& (do_severity | do_text | do_action | do_tag));
if (__fxprintf (stderr, "%s%s%s%s%s%s%s%s%s%s\n",
do_label ? label : "",
need_colon ? ": " : "",
do_severity ? severity_rec->string : "",
do_severity && (do_text | do_action | do_tag)
? ": " : "",
do_text ? text : "",
do_text && (do_action | do_tag) ? "\n" : "",
do_action ? "TO FIX: " : "",
do_action ? action : "",
do_action && do_tag ? " " : "",
do_tag ? tag : "") < 0)
/* Oh, oh. An error occurred during the output. */
result = MM_NOMSG;
}
if (classification & MM_CONSOLE)
{
int do_label = label != MM_NULLLBL;
int do_severity = severity != MM_NULLSEV;
int do_text = text != MM_NULLTXT;
int do_action = action != MM_NULLACT;
int do_tag = tag != MM_NULLTAG;
int need_colon = (do_label
&& (do_severity | do_text | do_action | do_tag));
syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n",
do_label ? label : "",
need_colon ? ": " : "",
do_severity ? severity_rec->string : "",
do_severity && (do_text | do_action | do_tag) ? ": " : "",
do_text ? text : "",
do_text && (do_action | do_tag) ? "\n" : "",
do_action ? "TO FIX: " : "",
do_action ? action : "",
do_action && do_tag ? " " : "",
do_tag ? tag : "");
}
}
if (classification & MM_CONSOLE)
{
int do_label = label != MM_NULLLBL;
int do_severity = severity != MM_NULLSEV;
int do_text = text != MM_NULLTXT;
int do_action = action != MM_NULLACT;
int do_tag = tag != MM_NULLTAG;
syslog (LOG_ERR, "%s%s%s%s%s%s%s%s%s%s\n",
do_label ? label : "",
do_label && (do_severity | do_text | do_action | do_tag)
? ": " : "",
do_severity ? severity_rec->string : "",
do_severity && (do_text | do_action | do_tag) ? ": " : "",
do_text ? text : "",
do_text && (do_action | do_tag) ? "\n" : "",
do_action ? "TO FIX: " : "",
do_action ? action : "",
do_action && do_tag ? " " : "",
do_tag ? tag : "");
}
__libc_lock_unlock (lock);
#ifdef __libc_ptf_call
__libc_ptf_call (pthread_setcancelstate, (state, NULL), 0);
+111 -31
View File
@@ -62,6 +62,7 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
/* The gmp headers need some configuration frobs. */
#define HAVE_ALLOCA 1
@@ -74,7 +75,6 @@ extern unsigned long long int ____strtoull_l_internal (const char *, char **,
#include "longlong.h"
#include "fpioconst.h"
#define NDEBUG 1
#include <assert.h>
@@ -176,19 +176,19 @@ extern const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1];
/* Return a floating point number of the needed type according to the given
multi-precision number after possible rounding. */
static FLOAT
round_and_return (mp_limb_t *retval, int exponent, int negative,
round_and_return (mp_limb_t *retval, intmax_t exponent, int negative,
mp_limb_t round_limb, mp_size_t round_bit, int more_bits)
{
if (exponent < MIN_EXP - 1)
{
mp_size_t shift = MIN_EXP - 1 - exponent;
if (shift > MANT_DIG)
if (exponent < MIN_EXP - 1 - MANT_DIG)
{
__set_errno (ERANGE);
return 0.0;
}
mp_size_t shift = MIN_EXP - 1 - exponent;
more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0;
if (shift == MANT_DIG)
/* This is a special case to handle the very seldom case where
@@ -235,6 +235,9 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
__set_errno (ERANGE);
}
if (exponent > MAX_EXP)
goto overflow;
if ((round_limb & (((mp_limb_t) 1) << round_bit)) != 0
&& (more_bits || (retval[0] & 1) != 0
|| (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0))
@@ -260,6 +263,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
}
if (exponent > MAX_EXP)
overflow:
return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
return MPN2FLOAT (retval, exponent, negative);
@@ -273,7 +277,7 @@ round_and_return (mp_limb_t *retval, int exponent, int negative,
factor for the resulting number (see code) multiply by it. */
static const STRING_TYPE *
str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
int *exponent
intmax_t *exponent
#ifndef USE_WIDE_CHAR
, const char *decimal, size_t decimal_len, const char *thousands
#endif
@@ -303,6 +307,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
cy += __mpn_add_1 (n, n, *nsize, low);
if (cy != 0)
{
assert (*nsize < MPNSIZE);
n[*nsize] = cy;
++(*nsize);
}
@@ -337,7 +342,7 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
}
while (--digcnt > 0);
if (*exponent > 0 && cnt + *exponent <= MAX_DIG_PER_LIMB)
if (*exponent > 0 && *exponent <= MAX_DIG_PER_LIMB - cnt)
{
low *= _tens_in_limb[*exponent];
start = _tens_in_limb[cnt + *exponent];
@@ -357,7 +362,10 @@ str_to_mpn (const STRING_TYPE *str, int digcnt, mp_limb_t *n, mp_size_t *nsize,
cy = __mpn_mul_1 (n, n, *nsize, start);
cy += __mpn_add_1 (n, n, *nsize, low);
if (cy != 0)
n[(*nsize)++] = cy;
{
assert (*nsize < MPNSIZE);
n[(*nsize)++] = cy;
}
}
return str;
@@ -415,7 +423,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
{
int negative; /* The sign of the number. */
MPN_VAR (num); /* MP representation of the number. */
int exponent; /* Exponent of the number. */
intmax_t exponent; /* Exponent of the number. */
/* Numbers starting `0X' or `0x' have to be processed with base 16. */
int base = 10;
@@ -437,7 +445,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
/* Points at the character following the integer and fractional digits. */
const STRING_TYPE *expp;
/* Total number of digit and number of digits in integer part. */
int dig_no, int_no, lead_zero;
size_t dig_no, int_no, lead_zero;
/* Contains the last character read. */
CHAR_TYPE c;
@@ -769,7 +777,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
are all or any is really a fractional digit will be decided
later. */
int_no = dig_no;
lead_zero = int_no == 0 ? -1 : 0;
lead_zero = int_no == 0 ? (size_t) -1 : 0;
/* Read the fractional digits. A special case are the 'american
style' numbers like `16.' i.e. with decimal point but without
@@ -791,12 +799,13 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
(base == 16 && ({ CHAR_TYPE lo = TOLOWER (c);
lo >= L_('a') && lo <= L_('f'); })))
{
if (c != L_('0') && lead_zero == -1)
if (c != L_('0') && lead_zero == (size_t) -1)
lead_zero = dig_no - int_no;
++dig_no;
c = *++cp;
}
}
assert (dig_no <= (uintmax_t) INTMAX_MAX);
/* Remember start of exponent (if any). */
expp = cp;
@@ -819,24 +828,80 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
if (c >= L_('0') && c <= L_('9'))
{
int exp_limit;
intmax_t exp_limit;
/* Get the exponent limit. */
if (base == 16)
exp_limit = (exp_negative ?
-MIN_EXP + MANT_DIG + 4 * int_no :
MAX_EXP - 4 * int_no + 4 * lead_zero + 3);
{
if (exp_negative)
{
assert (int_no <= (uintmax_t) (INTMAX_MAX
+ MIN_EXP - MANT_DIG) / 4);
exp_limit = -MIN_EXP + MANT_DIG + 4 * (intmax_t) int_no;
}
else
{
if (int_no)
{
assert (lead_zero == 0
&& int_no <= (uintmax_t) INTMAX_MAX / 4);
exp_limit = MAX_EXP - 4 * (intmax_t) int_no + 3;
}
else if (lead_zero == (size_t) -1)
{
/* The number is zero and this limit is
arbitrary. */
exp_limit = MAX_EXP + 3;
}
else
{
assert (lead_zero
<= (uintmax_t) (INTMAX_MAX - MAX_EXP - 3) / 4);
exp_limit = (MAX_EXP
+ 4 * (intmax_t) lead_zero
+ 3);
}
}
}
else
exp_limit = (exp_negative ?
-MIN_10_EXP + MANT_DIG + int_no :
MAX_10_EXP - int_no + lead_zero + 1);
{
if (exp_negative)
{
assert (int_no
<= (uintmax_t) (INTMAX_MAX + MIN_10_EXP - MANT_DIG));
exp_limit = -MIN_10_EXP + MANT_DIG + (intmax_t) int_no;
}
else
{
if (int_no)
{
assert (lead_zero == 0
&& int_no <= (uintmax_t) INTMAX_MAX);
exp_limit = MAX_10_EXP - (intmax_t) int_no + 1;
}
else if (lead_zero == (size_t) -1)
{
/* The number is zero and this limit is
arbitrary. */
exp_limit = MAX_10_EXP + 1;
}
else
{
assert (lead_zero
<= (uintmax_t) (INTMAX_MAX - MAX_10_EXP - 1));
exp_limit = MAX_10_EXP + (intmax_t) lead_zero + 1;
}
}
}
if (exp_limit < 0)
exp_limit = 0;
do
{
exponent *= 10;
exponent += c - L_('0');
if (__builtin_expect (exponent > exp_limit, 0))
if (__builtin_expect ((exponent > exp_limit / 10
|| (exponent == exp_limit / 10
&& c - L_('0') > exp_limit % 10)), 0))
/* The exponent is too large/small to represent a valid
number. */
{
@@ -845,7 +910,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
/* We have to take care for special situation: a joker
might have written "0.0e100000" which is in fact
zero. */
if (lead_zero == -1)
if (lead_zero == (size_t) -1)
result = negative ? -0.0 : 0.0;
else
{
@@ -864,6 +929,9 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
/* NOTREACHED */
}
exponent *= 10;
exponent += c - L_('0');
c = *++cp;
}
while (c >= L_('0') && c <= L_('9'));
@@ -932,7 +1000,14 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
}
#endif
startp += lead_zero + decimal_len;
exponent -= base == 16 ? 4 * lead_zero : lead_zero;
assert (lead_zero <= (base == 16
? (uintmax_t) INTMAX_MAX / 4
: (uintmax_t) INTMAX_MAX));
assert (lead_zero <= (base == 16
? ((uintmax_t) exponent
- (uintmax_t) INTMAX_MIN) / 4
: ((uintmax_t) exponent - (uintmax_t) INTMAX_MIN)));
exponent -= base == 16 ? 4 * (intmax_t) lead_zero : (intmax_t) lead_zero;
dig_no -= lead_zero;
}
@@ -974,7 +1049,10 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
}
/* Adjust the exponent for the bits we are shifting in. */
exponent += bits - 1 + (int_no - 1) * 4;
assert (int_no <= (uintmax_t) (exponent < 0
? (INTMAX_MAX - bits + 1) / 4
: (INTMAX_MAX - exponent - bits + 1) / 4));
exponent += bits - 1 + ((intmax_t) int_no - 1) * 4;
while (--dig_no > 0 && idx >= 0)
{
@@ -1014,13 +1092,15 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
really integer digits or belong to the fractional part; i.e. we normalize
123e-2 to 1.23. */
{
register int incr = (exponent < 0 ? MAX (-int_no, exponent)
: MIN (dig_no - int_no, exponent));
register intmax_t incr = (exponent < 0
? MAX (-(intmax_t) int_no, exponent)
: MIN ((intmax_t) dig_no - (intmax_t) int_no,
exponent));
int_no += incr;
exponent -= incr;
}
if (__builtin_expect (int_no + exponent > MAX_10_EXP + 1, 0))
if (__builtin_expect (exponent > MAX_10_EXP + 1 - (intmax_t) int_no, 0))
{
__set_errno (ERANGE);
return negative ? -FLOAT_HUGE_VAL : FLOAT_HUGE_VAL;
@@ -1205,7 +1285,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
digits we should have enough bits for the result. The remaining
decimal digits give us the information that more bits are following.
This can be used while rounding. (Two added as a safety margin.) */
if (dig_no - int_no > (MANT_DIG - bits + 2) / 3 + 2)
if ((intmax_t) dig_no > (intmax_t) int_no + (MANT_DIG - bits + 2) / 3 + 2)
{
dig_no = int_no + (MANT_DIG - bits + 2) / 3 + 2;
more_bits = 1;
@@ -1213,7 +1293,7 @@ ____STRTOF_INTERNAL (nptr, endptr, group, loc)
else
more_bits = 0;
neg_exp = dig_no - int_no - exponent;
neg_exp = (intmax_t) dig_no - (intmax_t) int_no - exponent;
/* Construct the denominator. */
densize = 0;
+48
View File
@@ -0,0 +1,48 @@
/* Test for integer/buffer overflow in strtod.
Copyright (C) 2012 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#define EXPONENT "e-2147483649"
#define SIZE 214748364
static int
do_test (void)
{
char *p = malloc (1 + SIZE + sizeof (EXPONENT));
if (p == NULL)
{
puts ("malloc failed, cannot test for overflow");
return 0;
}
p[0] = '1';
memset (p + 1, '0', SIZE);
memcpy (p + 1 + SIZE, EXPONENT, sizeof (EXPONENT));
double d = strtod (p, NULL);
if (d != 0)
{
printf ("strtod returned wrong value: %a\n", d);
return 1;
}
return 0;
}
#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
+28
View File
@@ -347,6 +347,34 @@ check (void)
FOR_EACH_IMPL (impl, 0)
check_result (impl, s1 + i1, s2 + i2, exp_result);
}
/* Test cases where there are multiple zero bytes after the first. */
for (size_t i = 0; i < 16 + 1; i++)
{
s1[i] = 0x00;
s2[i] = 0x00;
}
for (size_t i = 0; i < 16; i++)
{
int exp_result;
for (int val = 0x01; val < 0x100; val++)
{
for (size_t j = 0; j < i; j++)
{
s1[j] = val;
s2[j] = val;
}
s2[i] = val;
exp_result = SIMPLE_STRCMP (s1, s2);
FOR_EACH_IMPL (impl, 0)
check_result (impl, s1, s2, exp_result);
}
}
}
+7 -1
View File
@@ -1,4 +1,4 @@
# Copyright (C) 1994-2004, 2005, 2006, 2011 Free Software Foundation, Inc.
# Copyright (C) 1994-2004, 2005, 2006, 2011, 2012 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
@@ -61,6 +61,10 @@ generated-dirs := rpcsvc
include ../Makeconfig
ifeq ($(link-obsolete-rpc),yes)
headers += $(headers-in-tirpc) $(headers-not-in-tirpc)
endif
ifeq ($(versioning),yes)
need-export-routines := auth_des auth_unix clnt_gen clnt_perr clnt_tcp \
clnt_udp get_myaddr key_call netname pm_getport \
@@ -74,9 +78,11 @@ routines := auth_none authuxprot bindrsvprt clnt_raw clnt_simp \
svc_simple xdr_float xdr_rec publickey authdes_prot \
des_crypt des_impl des_soft key_prot openchild rtime svcauth_des \
clnt_unix svc_unix create_xid $(need-export-routines)
ifneq ($(link-obsolete-rpc),yes)
# We only add the RPC for compatibility to libc.so.
shared-only-routines = $(routines)
endif
endif
# We do not build rpcinfo anymore. It is not needed for a bootstrap
# and not wanted on complete systems.
+2 -2
View File
@@ -117,7 +117,7 @@ authdes_create (const char *servername, u_int window,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (authdes_create)
#else
libc_hidden_nolink (authdes_create, GLIBC_2_1)
libc_hidden_nolink_sunrpc (authdes_create, GLIBC_2_1)
#endif
AUTH *
@@ -211,7 +211,7 @@ failed:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (authdes_pk_create)
#else
libc_hidden_nolink (authdes_pk_create, GLIBC_2_1)
libc_hidden_nolink_sunrpc (authdes_pk_create, GLIBC_2_1)
#endif
/*
+1 -1
View File
@@ -95,7 +95,7 @@ authnone_create (void)
__libc_once (authnone_private_guard, authnone_create_once);
return &authnone_private.no_client;
}
libc_hidden_nolink (authnone_create, GLIBC_2_0)
libc_hidden_nolink_sunrpc (authnone_create, GLIBC_2_0)
static bool_t
authnone_marshal (AUTH *client, XDR *xdrs)
+2 -2
View File
@@ -149,7 +149,7 @@ no_memory:
marshal_new_auth (auth);
return auth;
}
libc_hidden_nolink (authunix_create, GLIBC_2_0)
libc_hidden_nolink_sunrpc (authunix_create, GLIBC_2_0)
/*
* Returns an auth handle with parameters determined by doing lots of
@@ -216,7 +216,7 @@ authunix_create_default (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (authunix_create_default)
#else
libc_hidden_nolink (authunix_create_default, GLIBC_2_0)
libc_hidden_nolink_sunrpc (authunix_create_default, GLIBC_2_0)
#endif
/*
+2 -2
View File
@@ -63,7 +63,7 @@ xdr_authdes_cred (XDR *xdrs, struct authdes_cred *cred)
return FALSE;
}
}
libc_hidden_nolink (xdr_authdes_cred, GLIBC_2_1)
libc_hidden_nolink_sunrpc (xdr_authdes_cred, GLIBC_2_1)
bool_t
@@ -78,4 +78,4 @@ xdr_authdes_verf (register XDR *xdrs, register struct authdes_verf *verf)
sizeof (verf->adv_int_u)));
return TRUE;
}
libc_hidden_nolink (xdr_authdes_verf, GLIBC_2_1)
libc_hidden_nolink_sunrpc (xdr_authdes_verf, GLIBC_2_1)
+1 -1
View File
@@ -63,4 +63,4 @@ xdr_authunix_parms (XDR * xdrs, struct authunix_parms *p)
}
return FALSE;
}
libc_hidden_nolink (xdr_authunix_parms, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_authunix_parms, GLIBC_2_0)
+1 -1
View File
@@ -175,5 +175,5 @@ clnt_create (const char *hostname, u_long prog, u_long vers,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_create)
#else
libc_hidden_nolink (clnt_create, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnt_create, GLIBC_2_0)
#endif
+5 -5
View File
@@ -127,7 +127,7 @@ clnt_sperror (CLIENT * rpch, const char *msg)
return str;
}
libc_hidden_nolink (clnt_sperror, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnt_sperror, GLIBC_2_0)
void
clnt_perror (CLIENT * rpch, const char *msg)
@@ -137,7 +137,7 @@ clnt_perror (CLIENT * rpch, const char *msg)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_perror)
#else
libc_hidden_nolink (clnt_perror, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnt_perror, GLIBC_2_0)
#endif
@@ -270,7 +270,7 @@ clnt_perrno (enum clnt_stat num)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_perrno)
#else
libc_hidden_nolink (clnt_perrno, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnt_perrno, GLIBC_2_0)
#endif
char *
@@ -308,7 +308,7 @@ clnt_spcreateerror (const char *msg)
return str;
}
libc_hidden_nolink (clnt_spcreateerror, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnt_spcreateerror, GLIBC_2_0)
void
clnt_pcreateerror (const char *msg)
@@ -318,7 +318,7 @@ clnt_pcreateerror (const char *msg)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnt_pcreateerror)
#else
libc_hidden_nolink (clnt_pcreateerror, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnt_pcreateerror, GLIBC_2_0)
#endif
struct auth_errtab
+1 -1
View File
@@ -129,7 +129,7 @@ clntraw_create (u_long prog, u_long vers)
client->cl_auth = authnone_create ();
return client;
}
libc_hidden_nolink (clntraw_create, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clntraw_create, GLIBC_2_0)
static enum clnt_stat
clntraw_call (h, proc, xargs, argsp, xresults, resultsp, timeout)
+1 -1
View File
@@ -139,7 +139,7 @@ callrpc (const char *host, u_long prognum, u_long versnum, u_long procnum,
crp->valid = 0;
return (int) clnt_stat;
}
libc_hidden_nolink (callrpc, GLIBC_2_0)
libc_hidden_nolink_sunrpc (callrpc, GLIBC_2_0)
#ifdef _RPC_THREAD_SAFE_
void
+1 -1
View File
@@ -220,7 +220,7 @@ fooy:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clnttcp_create)
#else
libc_hidden_nolink (clnttcp_create, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clnttcp_create, GLIBC_2_0)
#endif
static enum clnt_stat
+3 -3
View File
@@ -239,7 +239,7 @@ fooy:
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (__libc_clntudp_bufcreate)
#else
libc_hidden_nolink (__libc_clntudp_bufcreate, GLIBC_PRIVATE)
libc_hidden_nolink_sunrpc (__libc_clntudp_bufcreate, GLIBC_PRIVATE)
#endif
CLIENT *
@@ -250,7 +250,7 @@ clntudp_bufcreate (struct sockaddr_in *raddr, u_long program, u_long version,
return __libc_clntudp_bufcreate (raddr, program, version, wait,
sockp, sendsz, recvsz, 0);
}
libc_hidden_nolink (clntudp_bufcreate, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clntudp_bufcreate, GLIBC_2_0)
CLIENT *
clntudp_create (raddr, program, version, wait, sockp)
@@ -266,7 +266,7 @@ clntudp_create (raddr, program, version, wait, sockp)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (clntudp_create)
#else
libc_hidden_nolink (clntudp_create, GLIBC_2_0)
libc_hidden_nolink_sunrpc (clntudp_create, GLIBC_2_0)
#endif
static int
+1 -1
View File
@@ -200,7 +200,7 @@ fooy:
mem_free ((caddr_t) h, sizeof (CLIENT));
return (CLIENT *) NULL;
}
libc_hidden_nolink (clntunix_create, GLIBC_2_1)
libc_hidden_nolink_sunrpc (clntunix_create, GLIBC_2_1)
static enum clnt_stat
clntunix_call (h, proc, xdr_args, args_ptr, xdr_results, results_ptr, timeout)
+2 -2
View File
@@ -102,7 +102,7 @@ cbc_crypt (char *key, char *buf, unsigned int len, unsigned int mode,
COPY8 (dp.des_ivec, ivec);
return err;
}
libc_hidden_nolink (cbc_crypt, GLIBC_2_1)
libc_hidden_nolink_sunrpc (cbc_crypt, GLIBC_2_1)
/*
* ECB mode encryption
@@ -115,4 +115,4 @@ ecb_crypt (char *key, char *buf, unsigned int len, unsigned int mode)
dp.des_mode = ECB;
return common_crypt (key, buf, len, mode, &dp);
}
libc_hidden_nolink (ecb_crypt, GLIBC_2_1)
libc_hidden_nolink_sunrpc (ecb_crypt, GLIBC_2_1)
+1 -1
View File
@@ -70,4 +70,4 @@ des_setparity (char *p)
p++;
}
}
libc_hidden_nolink (des_setparity, GLIBC_2_1)
libc_hidden_nolink_sunrpc (des_setparity, GLIBC_2_1)
+1 -1
View File
@@ -99,5 +99,5 @@ get_myaddress (struct sockaddr_in *addr)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (get_myaddress)
#else
libc_hidden_nolink (get_myaddress, GLIBC_2_0)
libc_hidden_nolink_sunrpc (get_myaddress, GLIBC_2_0)
#endif
+9 -9
View File
@@ -80,7 +80,7 @@ key_setsecret (char *secretkey)
}
return 0;
}
libc_hidden_nolink (key_setsecret, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_setsecret, GLIBC_2_1)
/* key_secretkey_is_set() returns 1 if the keyserver has a secret key
* stored for the caller's effective uid; it returns 0 otherwise
@@ -109,7 +109,7 @@ key_secretkey_is_set (void)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (key_secretkey_is_set)
#else
libc_hidden_nolink (key_secretkey_is_set, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_secretkey_is_set, GLIBC_2_1)
#endif
int
@@ -133,7 +133,7 @@ key_encryptsession (char *remotename, des_block *deskey)
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
libc_hidden_nolink (key_encryptsession, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_encryptsession, GLIBC_2_1)
int
key_decryptsession (char *remotename, des_block *deskey)
@@ -155,7 +155,7 @@ key_decryptsession (char *remotename, des_block *deskey)
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
libc_hidden_nolink (key_decryptsession, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_decryptsession, GLIBC_2_1)
int
key_encryptsession_pk (char *remotename, netobj *remotekey,
@@ -180,7 +180,7 @@ key_encryptsession_pk (char *remotename, netobj *remotekey,
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
libc_hidden_nolink (key_encryptsession_pk, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_encryptsession_pk, GLIBC_2_1)
int
key_decryptsession_pk (char *remotename, netobj *remotekey,
@@ -205,7 +205,7 @@ key_decryptsession_pk (char *remotename, netobj *remotekey,
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
libc_hidden_nolink (key_decryptsession_pk, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_decryptsession_pk, GLIBC_2_1)
int
key_gendes (des_block *key)
@@ -239,7 +239,7 @@ key_gendes (des_block *key)
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (key_gendes)
#else
libc_hidden_nolink (key_gendes, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_gendes, GLIBC_2_1)
#endif
int
@@ -259,7 +259,7 @@ key_setnet (struct key_netstarg *arg)
}
return 1;
}
libc_hidden_nolink (key_setnet, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_setnet, GLIBC_2_1)
int
key_get_conv (char *pkey, des_block *deskey)
@@ -278,7 +278,7 @@ key_get_conv (char *pkey, des_block *deskey)
*deskey = res.cryptkeyres_u.deskey;
return 0;
}
libc_hidden_nolink (key_get_conv, GLIBC_2_1)
libc_hidden_nolink_sunrpc (key_get_conv, GLIBC_2_1)
/*
* Hack to allow the keyserver to use AUTH_DES (for authenticated
+10 -10
View File
@@ -38,7 +38,7 @@ xdr_keystatus (XDR * xdrs, keystatus * objp)
return TRUE;
}
libc_hidden_nolink (xdr_keystatus, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_keystatus, GLIBC_2_0)
bool_t
xdr_keybuf (XDR * xdrs, keybuf objp)
@@ -48,7 +48,7 @@ xdr_keybuf (XDR * xdrs, keybuf objp)
return TRUE;
}
libc_hidden_nolink (xdr_keybuf, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_keybuf, GLIBC_2_0)
bool_t
xdr_netnamestr (XDR * xdrs, netnamestr * objp)
@@ -58,7 +58,7 @@ xdr_netnamestr (XDR * xdrs, netnamestr * objp)
return TRUE;
}
libc_hidden_nolink (xdr_netnamestr, GLIBC_2_1)
libc_hidden_nolink_sunrpc (xdr_netnamestr, GLIBC_2_1)
bool_t
xdr_cryptkeyarg (XDR * xdrs, cryptkeyarg * objp)
@@ -71,7 +71,7 @@ xdr_cryptkeyarg (XDR * xdrs, cryptkeyarg * objp)
return TRUE;
}
libc_hidden_nolink (xdr_cryptkeyarg, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_cryptkeyarg, GLIBC_2_0)
bool_t
xdr_cryptkeyarg2 (XDR * xdrs, cryptkeyarg2 * objp)
@@ -84,7 +84,7 @@ xdr_cryptkeyarg2 (XDR * xdrs, cryptkeyarg2 * objp)
return FALSE;
return TRUE;
}
libc_hidden_nolink (xdr_cryptkeyarg2, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_cryptkeyarg2, GLIBC_2_0)
bool_t
xdr_cryptkeyres (XDR * xdrs, cryptkeyres * objp)
@@ -102,7 +102,7 @@ xdr_cryptkeyres (XDR * xdrs, cryptkeyres * objp)
}
return TRUE;
}
libc_hidden_nolink (xdr_cryptkeyres, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_cryptkeyres, GLIBC_2_0)
bool_t
xdr_unixcred (XDR * xdrs, unixcred * objp)
@@ -117,7 +117,7 @@ xdr_unixcred (XDR * xdrs, unixcred * objp)
return FALSE;
return TRUE;
}
libc_hidden_nolink (xdr_unixcred, GLIBC_2_1)
libc_hidden_nolink_sunrpc (xdr_unixcred, GLIBC_2_1)
bool_t
xdr_getcredres (XDR * xdrs, getcredres * objp)
@@ -135,7 +135,7 @@ xdr_getcredres (XDR * xdrs, getcredres * objp)
}
return TRUE;
}
libc_hidden_nolink (xdr_getcredres, GLIBC_2_1)
libc_hidden_nolink_sunrpc (xdr_getcredres, GLIBC_2_1)
bool_t
xdr_key_netstarg (XDR * xdrs, key_netstarg * objp)
@@ -148,7 +148,7 @@ xdr_key_netstarg (XDR * xdrs, key_netstarg * objp)
return FALSE;
return TRUE;
}
libc_hidden_nolink (xdr_key_netstarg, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_key_netstarg, GLIBC_2_0)
bool_t
xdr_key_netstres (XDR * xdrs, key_netstres * objp)
@@ -166,4 +166,4 @@ xdr_key_netstres (XDR * xdrs, key_netstres * objp)
}
return TRUE;
}
libc_hidden_nolink (xdr_key_netstres, GLIBC_2_0)
libc_hidden_nolink_sunrpc (xdr_key_netstres, GLIBC_2_0)
+6 -6
View File
@@ -1,4 +1,4 @@
/* Copyright (C) 1997-1999, 2002, 2007, 2011 Free Software Foundation, Inc.
/* Copyright (C) 1997-1999, 2002, 2007, 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1997.
@@ -55,7 +55,7 @@ user2netname (char netname[MAXNETNAMELEN + 1], const uid_t uid,
netname[i - 1] = '\0';
return 1;
}
libc_hidden_nolink (user2netname, GLIBC_2_1)
libc_hidden_nolink_sunrpc (user2netname, GLIBC_2_1)
int
host2netname (char netname[MAXNETNAMELEN + 1], const char *host,
@@ -119,7 +119,7 @@ host2netname (char netname[MAXNETNAMELEN + 1], const char *host,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (host2netname)
#else
libc_hidden_nolink (host2netname, GLIBC_2_1)
libc_hidden_nolink_sunrpc (host2netname, GLIBC_2_1)
#endif
int
@@ -135,7 +135,7 @@ getnetname (char name[MAXNETNAMELEN + 1])
dummy = user2netname (name, uid, NULL);
return (dummy);
}
libc_hidden_nolink (getnetname, GLIBC_2_1)
libc_hidden_nolink_sunrpc (getnetname, GLIBC_2_1)
/* Type of the lookup function for netname2user. */
typedef int (*netname2user_function) (const char netname[MAXNETNAMELEN + 1],
@@ -188,7 +188,7 @@ netname2user (const char netname[MAXNETNAMELEN + 1], uid_t * uidp, gid_t * gidp,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (netname2user)
#else
libc_hidden_nolink (netname2user, GLIBC_2_1)
libc_hidden_nolink_sunrpc (netname2user, GLIBC_2_1)
#endif
int
@@ -215,4 +215,4 @@ netname2host (const char netname[MAXNETNAMELEN + 1], char *hostname,
return 1;
}
libc_hidden_nolink (netname2host, GLIBC_2_1)
libc_hidden_nolink_sunrpc (netname2host, GLIBC_2_1)
+1 -1
View File
@@ -84,4 +84,4 @@ pmap_getmaps (struct sockaddr_in *address)
address->sin_port = 0;
return head;
}
libc_hidden_nolink (pmap_getmaps, GLIBC_2_0)
libc_hidden_nolink_sunrpc (pmap_getmaps, GLIBC_2_0)
+2 -2
View File
@@ -142,7 +142,7 @@ __libc_rpc_getport (address, program, version, protocol, timeout_sec,
#ifdef EXPORT_RPC_SYMBOLS
libc_hidden_def (__libc_rpc_getport)
#else
libc_hidden_nolink (__libc_rpc_getport, GLIBC_PRIVATE)
libc_hidden_nolink_sunrpc (__libc_rpc_getport, GLIBC_PRIVATE)
#endif
@@ -160,4 +160,4 @@ pmap_getport (address, program, version, protocol)
{
return __libc_rpc_getport (address, program, version, protocol, 5, 60);
}
libc_hidden_nolink (pmap_getport, GLIBC_2_0)
libc_hidden_nolink_sunrpc (pmap_getport, GLIBC_2_0)

Some files were not shown because too many files have changed in this diff Show More