mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-09 04:11:27 +08:00
de1c3ebb59
* misc/bits/syslog.h (syslog): When __va_arg_pack is defined, implement as __extern_always_inline function. (vsyslog): Define as __extern_always_inline function unconditionally. * libio/bits/stdio2.h (sprintf, snprintf, printf, fprintf): When __va_arg_pack is defined, implement as __extern_always_inline functions. (vsprintf, vsnprintf, vprintf, vfprintf): Define as __extern_always_inline functions unconditionally. * libio/bits/stdio.h (vprintf): Ifdef out the inline when bits/stdio2.h will be included. * wcsmbs/bits/wchar2.h (__swprintf_alias): New redirect. (swprintf, wprintf, fwprintf): When __va_arg_pack is defined, implement as __extern_always_inline functions. (vswprintf, vwprintf, vfwprintf): Define as __extern_always_inline functions unconditionally. * debug/tst-chk1.c (do_test): Enable remaining tests for C++. 2007-09-03 Jakub Jelinek <jakub@redhat.com> * misc/sys/cdefs.h (__extern_inline, __extern_always_inline): Only define in C++ for GCC 4.3+, in C++ always use __gnu_inline__ attribute. * include/features.h (__USE_EXTERN_INLINES): Define only when __extern_inline is defined. * stdlib/stdlib.h: Include bits/stdlib.h when __extern_always_inline is defined instead of when not __cplusplus. * misc/sys/syslog.h: Include bits/syslog.h when __extern_always_inline is defined instead of when not __cplusplus. * socket/sys/socket.h: Include bits/socket2.h when __extern_always_inline is defined instead of when not __cplusplus. * libio/stdio.h: Include bits/stdio2.h when __extern_always_inline is defined instead of when not __cplusplus. * posix/unistd.h: Include bits/unistd.h when __extern_always_inline is defined instead of when not __cplusplus. * string/string.h: Include bits/string3.h when __extern_always_inline is defined instead of when not __cplusplus. * wcsmbs/wchar.h: Include bits/wchar2.h when __extern_always_inline is defined instead of when not __cplusplus. (btowc, wctob): Don't guard the inlines with ifndef __cplusplus. * io/fcntl.h: Don't include bits/fcntl2.h if __extern_always_inline is not defined. * misc/bits/syslog-ldbl.h: Guard *_chk stuff with defined __extern_always_inline instead of !defined __cplusplus. * libio/bits/stdio-ldbl.h: Likewise. * wcsmbs/bits/wchar-ldbl.h: Likewise. * misc/bits/syslog.h (syslog): Don't define for C++. (vsyslog): Use __extern_always_inline function for C++ instead of a macro. * libio/bits/stdio.h (__STDIO_INLINE): Define to __extern_inline whenever that macro is defined. (vprintf): Don't provide the inline for C++. (fread_unlocked, fwrite_unlocked): Don't define the macros for C++. * libio/bits/stdio2.h (sprintf, snprintf, printf, fprintf): Don't define the macros for C++. (vsprintf, vsnprintf, vprintf, vfprintf): Define as __extern_always_inline functions for C++. * io/sys/stat.h (stat, lstat, fstat, fstatat, mknod, mknodat, stat64, lstat64, fstat64, fstatat64): Don't define if not __USE_EXTERN_INLINES. * wcsmbs/bits/wchar2.h: Fix #error message. (swprintf, wprintf, fwprintf): Don't define the macros for C++. (vswprintf, vwprintf, vfwprintf): Define using __extern_always_inline functions for C++. * string/bits/string3.h: Don't #undef macros if __cplusplus. (memcpy, memmove, mempcpy, memset, bcopy, bzero, strcpy, stpcpy, strncpy, strcat, strncat): Define as __extern_always_inline functions instead of macros for C++. * math/bits/cmathcalls.h: Guard __extern_inline routines with defined __extern_inline. * sysdeps/alpha/fpu/bits/mathinline.h (__MATH_INLINE): Define to __extern_inline whenever that macro is defined. * sysdeps/ia64/fpu/bits/mathinline.h (__MATH_INLINE): Likewise. * sysdeps/i386/fpu/bits/mathinline.h (__MATH_INLINE): Likewise. * sysdeps/i386/i486/bits/string.h (__STRING_INLINE): Likewise. * sysdeps/s390/bits/string.h (__STRING_INLINE): Likewise. * sysdeps/s390/fpu/bits/mathinline.h (__MATH_INLINE): Likewise. * sysdeps/powerpc/fpu/bits/mathinline.h (__MATH_INLINE): Likewise. * sysdeps/x86_64/fpu/bits/mathinline.h (__MATH_INLINE): Likewise. * sysdeps/sparc/fpu/bits/mathinline.h (__MATH_INLINE): Likewise. * sysdeps/unix/sysv/linux/sys/sysmacros.h (gnu_dev_major, gnu_dev_minor, gnu_dev_makedev): Remove __extern_inline from prototypes. Only provide __extern_inline routines if __USE_EXTERN_INLINES. * debug/Makefile: Add rules to build and run tst-{,lfs}chk{4,5,6} tests. * debug/tst-chk1.c (do_prepare, do_test): Allow compilation as C++. For now avoid some *printf tests in C++. Skip all testing if __USE_FORTIFY_LEVEL is defined, but __extern_always_inline macro is not. * debug/tst-chk4.cc: New file. * debug/tst-chk5.cc: New file. * debug/tst-chk6.cc: New file. * debug/tst-lfschk4.cc: New file. * debug/tst-lfschk5.cc: New file. * debug/tst-lfschk6.cc: New file. * include/wchar.h (__vfwprintf_chk, __vswprintf_chk): Avoid prototypes in C++. * include/stdio.h (__sprintf_chk, __snprintf_chk, __vsprintf_chk, __vsnprintf_chk, __printf_chk, __fprintf_chk, __vprintf_chk, __vfprintf_chk, __fgets_unlocked_chk, __fgets_chk): Likewise. |
||
---|---|---|
.. | ||
bits | ||
branred.c | ||
doasin.c | ||
dosincos.c | ||
e_acos.S | ||
e_acosf.S | ||
e_acosh.S | ||
e_acoshf.S | ||
e_acoshl.S | ||
e_acosl.S | ||
e_asin.S | ||
e_asinf.S | ||
e_asinl.S | ||
e_atan2.S | ||
e_atan2f.S | ||
e_atan2l.c | ||
e_atanh.S | ||
e_atanhf.S | ||
e_atanhl.S | ||
e_cosh.S | ||
e_coshf.S | ||
e_coshl.S | ||
e_exp2.S | ||
e_exp2f.S | ||
e_exp2l.S | ||
e_exp10.S | ||
e_exp10f.S | ||
e_exp10l.S | ||
e_exp.S | ||
e_expf.S | ||
e_expl.c | ||
e_fmod.S | ||
e_fmodf.S | ||
e_fmodl.S | ||
e_gamma_r.c | ||
e_gammaf_r.c | ||
e_gammal_r.c | ||
e_hypot.S | ||
e_hypotf.S | ||
e_hypotl.S | ||
e_lgamma_r.c | ||
e_lgammaf_r.c | ||
e_lgammal_r.c | ||
e_log2.S | ||
e_log2f.S | ||
e_log2l.S | ||
e_log10.c | ||
e_log10f.c | ||
e_log10l.c | ||
e_log.S | ||
e_logf.S | ||
e_logl.S | ||
e_pow.S | ||
e_powf.S | ||
e_powl.S | ||
e_rem_pio2.c | ||
e_rem_pio2f.c | ||
e_remainder.S | ||
e_remainderf.S | ||
e_remainderl.S | ||
e_scalb.S | ||
e_scalbf.S | ||
e_scalbl.S | ||
e_sinh.S | ||
e_sinhf.S | ||
e_sinhl.S | ||
e_sqrt.S | ||
e_sqrtf.S | ||
e_sqrtl.S | ||
fclrexcpt.c | ||
fedisblxcpt.c | ||
feenablxcpt.c | ||
fegetenv.c | ||
fegetexcept.c | ||
fegetround.c | ||
feholdexcpt.c | ||
fesetenv.c | ||
fesetround.c | ||
feupdateenv.c | ||
fgetexcptflg.c | ||
fraiseexcpt.c | ||
fsetexcptflg.c | ||
ftestexcept.c | ||
gen_import_file_list | ||
halfulp.c | ||
import_check | ||
import_diffs | ||
import_file.awk | ||
import_intel_libm | ||
k_rem_pio2.c | ||
k_rem_pio2f.c | ||
k_rem_pio2l.c | ||
libc_libm_error.c | ||
libm_cpu_defs.h | ||
libm_error_codes.h | ||
libm_error.c | ||
libm_frexp4.S | ||
libm_frexp4f.S | ||
libm_frexp4l.S | ||
libm_frexp.S | ||
libm_frexpf.S | ||
libm_frexpl.S | ||
libm_lgamma.S | ||
libm_lgammaf.S | ||
libm_lgammal.S | ||
libm_reduce.S | ||
libm_scalblnf.S | ||
libm_sincos_large.S | ||
libm_sincos.S | ||
libm_sincosf.S | ||
libm_sincosl.S | ||
libm_support.h | ||
libm_tan.S | ||
libm-symbols.h | ||
libm-test-ulps | ||
Makefile | ||
math_ldbl.h | ||
mpa.c | ||
mpatan2.c | ||
mpatan.c | ||
mpexp.c | ||
mplog.c | ||
mpsqrt.c | ||
mptan.c | ||
printf_fphex.c | ||
README | ||
s_asinh.S | ||
s_asinhf.S | ||
s_asinhl.S | ||
s_atan.S | ||
s_atanf.S | ||
s_atanl.S | ||
s_cbrt.S | ||
s_cbrtf.S | ||
s_cbrtl.S | ||
s_ceil.S | ||
s_ceilf.S | ||
s_ceill.S | ||
s_copysign.S | ||
s_copysignf.S | ||
s_copysignl.S | ||
s_cos.S | ||
s_cosf.S | ||
s_cosl.S | ||
s_erf.S | ||
s_erfc.S | ||
s_erfcf.S | ||
s_erfcl.S | ||
s_erff.S | ||
s_erfl.S | ||
s_expm1.S | ||
s_expm1f.S | ||
s_expm1l.S | ||
s_fabs.S | ||
s_fabsf.S | ||
s_fabsl.S | ||
s_fdim.S | ||
s_fdimf.S | ||
s_fdiml.S | ||
s_finite.S | ||
s_finitef.S | ||
s_finitel.S | ||
s_floor.S | ||
s_floorf.S | ||
s_floorl.S | ||
s_fma.S | ||
s_fmaf.S | ||
s_fmal.S | ||
s_fmax.S | ||
s_fmaxf.S | ||
s_fmaxl.S | ||
s_fpclassify.S | ||
s_fpclassifyf.S | ||
s_fpclassifyl.S | ||
s_frexp.c | ||
s_frexpf.c | ||
s_frexpl.c | ||
s_ilogb.S | ||
s_ilogbf.S | ||
s_ilogbl.S | ||
s_isinf.S | ||
s_isinff.S | ||
s_isinfl.S | ||
s_isnan.S | ||
s_isnanf.S | ||
s_isnanl.S | ||
s_ldexp.c | ||
s_ldexpf.c | ||
s_ldexpl.c | ||
s_libm_ldexp.S | ||
s_libm_ldexpf.S | ||
s_libm_ldexpl.S | ||
s_libm_scalbn.S | ||
s_libm_scalbnf.S | ||
s_libm_scalbnl.S | ||
s_log1p.S | ||
s_log1pf.S | ||
s_log1pl.S | ||
s_logb.S | ||
s_logbf.S | ||
s_logbl.S | ||
s_matherrf.c | ||
s_matherrl.c | ||
s_modf.S | ||
s_modff.S | ||
s_modfl.S | ||
s_nearbyint.S | ||
s_nearbyintf.S | ||
s_nearbyintl.S | ||
s_nextafter.S | ||
s_nextafterf.S | ||
s_nextafterl.S | ||
s_nexttoward.S | ||
s_nexttowardf.S | ||
s_nexttowardl.S | ||
s_rint.S | ||
s_rintf.S | ||
s_rintl.S | ||
s_round.S | ||
s_roundf.S | ||
s_roundl.S | ||
s_scalblnf.c | ||
s_scalbn.c | ||
s_scalbnf.c | ||
s_scalbnl.c | ||
s_signbit.S | ||
s_signbitf.S | ||
s_signbitl.S | ||
s_significand.S | ||
s_significandf.S | ||
s_significandl.S | ||
s_sin.c | ||
s_sincos.c | ||
s_sincosf.c | ||
s_sincosl.c | ||
s_sinf.c | ||
s_sinl.c | ||
s_tan.S | ||
s_tanf.S | ||
s_tanh.S | ||
s_tanhf.S | ||
s_tanhl.S | ||
s_tanl.S | ||
s_trunc.S | ||
s_truncf.S | ||
s_truncl.S | ||
sincos32.c | ||
slowexp.c | ||
slowpow.c | ||
t_exp.c | ||
Versions | ||
w_acos.c | ||
w_acosf.c | ||
w_acosh.c | ||
w_acoshf.c | ||
w_acoshl.c | ||
w_acosl.c | ||
w_asin.c | ||
w_asinf.c | ||
w_asinl.c | ||
w_atan2.c | ||
w_atan2f.c | ||
w_atan2l.c | ||
w_atanh.c | ||
w_atanhf.c | ||
w_atanhl.c | ||
w_cosh.c | ||
w_coshf.c | ||
w_coshl.c | ||
w_exp2.c | ||
w_exp2f.c | ||
w_exp2l.c | ||
w_exp10.c | ||
w_exp10f.c | ||
w_exp10l.c | ||
w_exp.c | ||
w_expf.c | ||
w_expl.c | ||
w_fmod.c | ||
w_fmodf.c | ||
w_fmodl.c | ||
w_hypot.c | ||
w_hypotf.c | ||
w_hypotl.c | ||
w_lgamma_r.c | ||
w_lgamma.c | ||
w_lgammaf_r.c | ||
w_lgammaf.c | ||
w_lgammal_r.c | ||
w_lgammal.c | ||
w_log2.c | ||
w_log2f.c | ||
w_log2l.c | ||
w_log10.c | ||
w_log10f.c | ||
w_log10l.c | ||
w_log.c | ||
w_logf.c | ||
w_logl.c | ||
w_pow.c | ||
w_powf.c | ||
w_powl.c | ||
w_remainder.c | ||
w_remainderf.c | ||
w_remainderl.c | ||
w_scalb.c | ||
w_scalbf.c | ||
w_scalbl.c | ||
w_sinh.c | ||
w_sinhf.c | ||
w_sinhl.c | ||
w_sqrt.c | ||
w_sqrtf.c | ||
w_sqrtl.c | ||
w_tgamma.S | ||
w_tgammaf.S | ||
w_tgammal.S |
---------------------------------------------------------- Notes on how to update libm based on Intel's libm releases ---------------------------------------------------------- This source code in this directory is currently based on Intel libm v2.1 as available from: http://www.intel.com/software/products/opensource/libraries/num.htm To ease importing, fix some bugs, and simplify integration into libc, it is also necessary to apply the patch at: ftp://ftp.hpl.hp.com/pub/linux-ia64/intel-libm-041228.diff.gz The expectation is that Intel will integrate most if not all of these changes into future releases of libm, so this patching step can hopefully be omitted in the future. Once the patched libm sources are extracted in a directory $LIBM, they can be imported into the libc source tree at $LIBC with the following step: $ cd $LIBC/src/sysdep/ia64/fpu $ ./import_intel_libm $LIBM This should produce a number of "Importing..." messages, without showing any errors. At this point, you should be able to build glibc in the usual fashion. We assume you do this in directory $OBJ. Once the build has completed, run "make check" to verify that all (math) checks succeed. If these checks succeed, you should also run the following commands to verify that the new libm doesn't pollute the name-space and has proper size-info for the data objects: $ cd $LIBC/src/sysdep/ia64/fpu $ import_check $OBJ/math/ There should be no (unexpected) errors reported by this script. As an optional step, you may also want to confirm that the new libm exports the exact same global symbols as the old one. If you want to see the changes introduced by the "import_intel_libm" script, you can run the commands: $ cd $LIBC/src/sysdep/ia64/fpu $ import_diffs That's it.