mirror of
git://sourceware.org/git/glibc.git
synced 2026-09-10 12:05:30 +08:00
Compare commits
56
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a95535fc09 | ||
|
|
df137ce8ce | ||
|
|
d9ba4bd3ea | ||
|
|
7def6a63a0 | ||
|
|
1ba48eb07a | ||
|
|
e8b5394afb | ||
|
|
4a659bb814 | ||
|
|
9875bb2221 | ||
|
|
53fa2b6063 | ||
|
|
c8fb02d89e | ||
|
|
1f7f8afb4c | ||
|
|
291392f02a | ||
|
|
b9584b603a | ||
|
|
fc8c942ba4 | ||
|
|
494251ab9f | ||
|
|
6d3997c51b | ||
|
|
8a780f7f68 | ||
|
|
2fbd159a77 | ||
|
|
730ca05f09 | ||
|
|
287f25ea2c | ||
|
|
6c746d4f80 | ||
|
|
3f0282ad25 | ||
|
|
725b8ee08a | ||
|
|
b640404bd8 | ||
|
|
c95a1e5f35 | ||
|
|
2676061a91 | ||
|
|
3e5bea052b | ||
|
|
e0ca0a0f76 | ||
|
|
91fdff8d85 | ||
|
|
48f6b23f2b | ||
|
|
b3073e90d7 | ||
|
|
b7bd97fde1 | ||
|
|
ddeb5e27dd | ||
|
|
e3d5df796c | ||
|
|
7cf8e20d03 | ||
|
|
60ff996420 | ||
|
|
6bee67b6cb | ||
|
|
8d93c8972c | ||
|
|
b934126eb2 | ||
|
|
c37ba8a260 | ||
|
|
3088c58cbb | ||
|
|
13ccceff48 | ||
|
|
c444059457 | ||
|
|
228abdc277 | ||
|
|
e02cc8de8c | ||
|
|
21902de70d | ||
|
|
b657f1c558 | ||
|
|
75b1233353 | ||
|
|
406a752bf9 | ||
|
|
727675e0f7 | ||
|
|
e1159da2d8 | ||
|
|
4904c344f1 | ||
|
|
08e83d36e7 | ||
|
|
fd4d8d759c | ||
|
|
13ad7387d3 | ||
|
|
3836d4d661 |
@@ -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.
|
||||
|
||||
@@ -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,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.
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
/*
|
||||
*/
|
||||
|
||||
|
||||
@@ -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@
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
@@ -0,0 +1,7 @@
|
||||
extern int foo (double);
|
||||
|
||||
int
|
||||
bar (void)
|
||||
{
|
||||
return foo (1.2);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
#include <math.h>
|
||||
|
||||
int
|
||||
foo (double d)
|
||||
{
|
||||
return floor (d) != 0.0;
|
||||
}
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef _SYS_EPOLL_H
|
||||
#include_next <sys/epoll.h>
|
||||
|
||||
libc_hidden_proto (epoll_pwait)
|
||||
|
||||
#endif
|
||||
+9
-2
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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*/");
|
||||
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+5
-5
@@ -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)
|
||||
|
||||
Vendored
+69
-52
@@ -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
|
||||
|
||||
|
||||
Vendored
+68
-34
@@ -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
|
||||
|
||||
@@ -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
@@ -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.'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
/*
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
Reference in New Issue
Block a user