| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
* sysdeps/unix/sysv/linux/powerpc/ptlongjmp.c [SHARED]: Code only
valid for SHARED case. Correct spelling of __vmx_longjmp.
|
|
|
|
|
|
|
|
|
|
| |
2004-02-20 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/pspinlock.c: Move from here.
* sysdeps/powerpc/powerpc32/pspinlock.c: To here.
* sysdeps/powerpc/powerpc64/pspinlock.c: New file.
* sysdeps/powerpc/powerpc64/pt-machine.h: Define __compare_and_swap32
and __compare_and_swap32_with_release_semantics.
|
|
|
|
|
|
|
|
| |
2004-02-19 Jakub Jelinek <jakub@redhat.com>
* sysdeps/sparc/sparc32/bits/atomic.h: Add __make_section_unallocated
for .gnu.linkonce.b.__sparc32_atomic_locks section.
(__sparc32_atomic_locks): Add __sec_comment at the end of section name.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2004-02-20 Jakub Jelinek <jakub@redhat.com>
* sysdeps/sparc/sparc32/fpu/libm-test-ulps: Add ulps for the
2003-11-27 atan2 test.
* sysdeps/powerpc/fpu/bits/mathinline.h (lrint, lrintf): Protect
with #ifndef __powerpc64__.
* sysdeps/generic/ldsodefs.h (_dl_argv, _dl_argv_internal): If
DL_ARGV_NOT_RELRO defined, don't use attribute_relro.
* sysdeps/alpha/dl-machine.h (DL_ARGV_NOT_RELRO): Remove.
* sysdeps/ia64/dl-machine.h (DL_ARGV_NOT_RELRO): Remove.
* sysdeps/sparc/sparc32/dl-machine.h (DL_ARGV_NOT_RELRO): Remove.
* sysdeps/sparc/sparc64/dl-machine.h (DL_ARGV_NOT_RELRO): Remove.
* sysdeps/alpha/dl-sysdep.h: New file.
* sysdeps/ia64/dl-sysdep.h: New file.
* sysdeps/sparc/dl-sysdep.h: New file.
|
|
|
|
|
| |
* sysdeps/sparc/sparc32/fpu/libm-test-ulps: Add ulps for the
2003-11-27 atan2 test.
|
|
|
|
|
|
| |
2004-02-20 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define.
|
|
|
|
|
| |
* attr.c: Include ldsodefs.h.
(pthread_getattr_np): Don't declare __libc_stack_end.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2004-02-13 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/powerpc64/__longjmp-common.S: New file.
* sysdeps/powerpc/powerpc64/__longjmp.S [NOT_IN_libc](__longjmp):
Non-versioned __longjmp for rtld-__longjmp.
[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
default version of __longjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmx__longjmp): Original version of __longjmp.
* sysdeps/powerpc/powerpc64/bsd-_setjmp.S [NOT_IN_libc](_setjmp):
Non-versioned _setjmp for rtld-_setjmp.
[!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
as default version of _setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmx_setjmp): Original version of _setjmp.
* sysdeps/powerpc/powerpc64/bsd-setjmp.S (__vmxsetjmp): Branch to
__vmx__sigsetjmp and define as default version of setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmxsetjmp): Original version of setjmp.
* sysdeps/powerpc/powerpc64/setjmp-common.S: New file.
* sysdeps/powerpc/powerpc64/setjmp.S [NOT_IN_libc](__setjmp):
Non-versioned __sigsetjmp for rtld-setjmp.
[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
as default version of __sigsetjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)]
(__novmx__sigsetjmp): Original version of __sigsetjmp.
* sysdeps/powerpc/powerpc32/__longjmp-common.S: New File
* sysdeps/powerpc/powerpc32/__longjmp.S [NOT_IN_libc](__longjmp):
Non-versioned __longjmp for rtld-__longjmp.
[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
default version of __longjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__longjmp): Original version of __longjmp.
* sysdeps/powerpc/powerpc32/bsd-_setjmp.S [NOT_IN_libc](_setjmp):
Non-versioned _setjmp for rtld-_setjmp.
[!NOT_IN_libc](__vmx_setjmp): Branch to __vmx__sigsetjmp and define
as default version of _setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx_setjmp): Original version of _setjmp.
* sysdeps/powerpc/powerpc32/bsd-setjmp.S (__vmxsetjmp): Branch to
__vmx__sigsetjmp and define as default version of setjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmxsetjmp): Original version of setjmp.
* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: New file.
* sysdeps/powerpc/powerpc32/fpu/__longjmp.S [NOT_IN_libc](__longjmp):
Non-versioned __longjmp for rtld-__longjmp.
[!NOT_IN_libc](__vmx__longjmp): Add VMX reg support and define as
default version of __longjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__longjmp): Original version of __longjmp.
* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: New file.
* sysdeps/powerpc/powerpc32/fpu/setjmp.S [NOT_IN_libc](__setjmp):
Non-versioned __sigsetjmp for rtld-setjmp.
[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
as default version of __sigsetjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__sigsetjmp): Original version of __sigsetjmp.
* sysdeps/powerpc/powerpc32/setjmp-common.S: New file.
* sysdeps/powerpc/powerpc32/setjmp.S [NOT_IN_libc](__setjmp):
Non-versioned __sigsetjmp for rtld-setjmp.
[!NOT_IN_libc](__vmx__sigsetjmp): Add VMX reg support and define
as default version of __sigsetjmp.
[SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)]
(__novmx__sigsetjmp): Original version of __sigsetjmp.
* sysdeps/powerpc/Dist: New File.
* sysdeps/powerpc/Makefile (sysdep_routines): Add novmx-longjmp.c
and novmx-sigjmp.c
* sysdeps/powerpc/Versions (libc): To GLIBC_2.3_4 add _longjmp,
__sigsetjmp, _setjmp, longjmp, and setjmp. To GLIBC_PRIVATE add
__novmx__libc_longjmp, __novmx__libc_siglongjmp, __vmx__libc_longjmp,
and __vmx__libc_siglongjmp.
* sysdeps/powerpc/bits/setjmp.h: Define JB_VRSAVE, JB_VRS, and adjust
JB_SIZE to add VMX regs to __jmp_buf.
* sysdeps/powerpc/longjmp.c: New file.
* sysdeps/powerpc/novmxsetjmp.h: New file.
* sysdeps/powerpc/novmx-longjmp.c: New file.
* sysdeps/powerpc/novmx-sigjmp.c: New file.
* sysdeps/powerpc/sigjmp.c: New file.
|
|
|
|
|
|
| |
avoid warnings for builtin function log2.
2004-01-22 Andreas Jaeger <aj@suse.de>
|
|
|
|
|
|
|
|
|
|
|
|
| |
sysdeps/generic/libc-start.c: Likewise. * sysdeps/unix/sysv/linux/dl-execstack.c: Likewise. * sysdeps/generic/segfault.c: Likewise. Include ldsodefs.h. * sysdeps/generic/backtrace.c: Likewise. linuxthreads/ * attr.c: Include ldsodefs.h. (pthread_getattr_np): Don't declare __libc_stack_end. nptl/ * allocatestack.c: Don't declare __libc_stack_end. * init.c (__pthread_initialize_minimal_internal): Likewise. * pthread_getattr_np.c (pthread_getattr_np): Likewise.
2004-01-16 Richard Henderson <rth@redhat.com>
* elf/dl-load.c: Don't declare __libc_stack_end.
* sysdeps/generic/libc-start.c: Likewise.
* sysdeps/unix/sysv/linux/dl-execstack.c: Likewise.
* sysdeps/generic/segfault.c: Likewise. Include ldsodefs.h.
* sysdeps/generic/backtrace.c: Likewise.
|
|
|
|
|
| |
* configure.in: Rewrite test to give gcc to clean up after itself.
Patch by Greg Schafer.
|
|
|
|
|
|
|
|
|
| |
2004-01-13 Ulrich Drepper <drepper@redhat.com>
* posix/regex.c: Support crappy compilers and platforms which have
problems with alloca.
* posix/regex_internal.h: Likewise.
Patch by Paolo Bonzini.
|
|
|
|
|
| |
* sysdeps/powerpc/tcb-offsets.sym: Put -- separator line before any
conditionals.
|
|
|
|
| |
conditionals.
|
|
|
|
|
| |
* sysdeps/powerpc/tcb-offsets.sym: Put -- separator line before any
conditionals.
|
|
|
|
|
|
|
|
| |
2004-01-11 Andreas Jaeger <aj@suse.de>
* sysdeps/x86_64/__longjmp.S: Add cfi directives.
* sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_CLONE_SYSCALL):
|
|
|
|
|
|
| |
2004-01-10 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/x86_64/vfork.S: Add cfi directives.
|
| |
|
|
|
|
|
|
| |
2004-01-01 Andreas Jaeger <aj@suse.de>
* Makefile (generated): Add missing files.
|
| |
|
|
|
|
|
| |
* locale/setlocale.c (setlocale): Avoid duplicating locale names
if we can reuse old strings.
|
|
|
|
|
|
| |
2003-12-29 Ulrich Drepper <drepper@redhat.com>
* elf/elf.h: Add a few definitions from Solaris 9.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-12-29 Jakub Jelinek <jakub@redhat.com>
* posix/regexec.c (re_copy_regs): Revert comment change.
Avoid memory leak if realloc fails.
(proceed_next_node): Return -2 if re_node_set_insert fails.
Return -2 if push_fail_stack fails.
(push_fail_stack): Change fs->alloc only after successful
realloc.
(pop_fail_stack): Formatting.
(set_regs): If proceed_next_node returns -2, free eps_via_nodes
and fs.
(check_arrival_add_next_nodes): Merge identical statements
from if branches.
* signal/Makefile (tests): Add tst-raise.
* signal/tst-raise.c: New test.
|
|
|
|
|
|
|
|
|
| |
* posix/regexec.c (re_copy_regs): Allocate start and end array in
one block.
(push_fail_stack): Add missing check for failed memory allocation.
_IO_peekc_unlocked, _IO_ptc_unlocked, _IO_getwc_unlocked, and
overflow for 0 as argument. Raise Invalid exception for negative args.
|
|
|
|
|
|
|
|
|
| |
2003-12-26 Jakub Jelinek <jakub@redhat.com>
* sysdeps/pthread/pthread.h (pthread_setcancelstate,
pthread_setcanceltype, pthread_cancel, pthread_testcancel): Remove
__THROW.
* semaphore.h (sem_wait, sem_timedwait): Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-12-17 Jakub Jelinek <jakub@redhat.com>
* malloc/mtrace.c (tr_old_memalign_hook): New variable.
(tr_memalignhook): New function.
(mtrace): Register tr_memalignhook.
(muntrace): Deregister tr_memalignhook.
* malloc/malloc.c (__posix_memalign): If __memalign_hook != NULL,
call it directly instead of memalign_internal.
2003-12-17 Ulrich Drepper <drepper@redhat.com>
* misc/mntent_r.c: Change encoding to match recently change decoder.
Patch by Alexander Achenbach <xela@slit.de>.
2003-12-16 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Correct definition of
vrregset_t.
2003-12-16 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/sys/procfs.h [!__PPC64_ELF_H]: Extent
conditional to include typedef elf_vrreg_t.
2002-12-17 Paolo Bonzini <bonzini@gnu.org>
* posix/regexec.c (re_search_internal): Limit search to the
beginning of the buffer if the initial states are empty for
contexts that do not include CONTEXT_BEGBUF or, if
!preg->newline_anchor, that do not include any one of
CONTEXT_BEGBUF and CONTEXT_NEWLINE.
|
|
|
|
|
|
|
|
|
|
|
| |
2003-12-16 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/powerpc/tcb-offsets.sym [!__powerpc64__]: Remove
conditional so MULTIPLE_THREADS_OFFSET is generated for both.
* sysdeps/powerpc/tls.h [!__powerpc64__]: Remove conditional
so TLS_MULTIPLE_THREADS_IN_TCB is generated for both.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h:
Include tls.h.
|
|
|
|
|
|
|
| |
2003-12-11 Carlos O'Donell <carlos@baldric.uwo.ca>
* sysdeps/generic/dl-fptr.c (COMPARE_AND_SWAP): Pass new and old
in the right order.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-12-01 Jes Sorensen <jes@wildopensource.com>
* rt/tst-clock.c (do_test): Print message when skipping
CLOCK_PROCESS_CPUTIME_ID test.
* sysdeps/unix/sysv/linux/ia64/clock_getcpuclockid.c: New file.
Provide CLOCK_PROCESS_CPUTIME_ID only if /proc/sal/itc_drift is 0.
peek_token. This avoids some copying and reduces code size.
(init_dfa): Initialize map_notascii.
(build_wcs_upper_buffer): If map_notascii is zero use simplified
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-12-02 David Mosberger <davidm@hpl.hp.com>
* sysdeps/ia64/elf/initfini.c: Add unwind info.
* sysdeps/ia64/dl-machine.h (elf_machine_matches_host): Mark with
attribute "unused".
(elf_machine_dynamic): Mark with attributes "unused" and "const".
(elf_machine_runtime_setup): Likewise.
* sysdeps/generic/dl-fptr.c (make_fptr_table): Mark with
attribute "always_inline".
* sysdeps/ia64/dl-machine.h (__ia64_init_bootstrap_fdesc_table):
Likewise.
* configure.in: Check whether compiler has libunwind support.
* config.make.in (have-cc-with-libunwind): New variable.
* config.h.in (HAVE_CC_WITH_LIBUNWIND): New macro.
* Makeconfig (gnulib): If have-cc-withh-libunwind is "yes", also
mention -lunwind.
003-11-12 David Mosberger <davidm@hpl.hp.com>
* sysdeps/unix/sysv/linux/ia64/sysdep.h: Define DO_CALL_VIA_BREAK.
Redefine DO_CALL to use vdso if supported, otherwise DO_CALL_VIA_BREAK.
Likewise for DO_INLINE_SYSCALL. Make INTERNAL_SYSCALL use
DO_INLINE_SYSCALL.
* sysdeps/unix/sysv/linux/ia64/vfork.S: Use DO_CALL_VIA_BREAK()
instead of DO_CALL().
* sysdeps/unix/sysv/linux/ia64/clone2.S: Use break directly instead
of DO_CALL().
* sysdeps/unix/sysv/linux/ia64/brk.S (__curbrk): Restructure it
to take advantage of DO_CALL() macro.
* sysdeps/unix/sysv/linux/ia64/setcontext.S: Likewise.
* sysdeps/unix/sysv/linux/ia64/getcontext.S: Likewise.
* elf/rtld.c (dl_main): Restrict dl_sysinfo_dso check to first
program header. On ia64, the check failed previously because
there are two program headers.
* sysdeps/generic/s_nexttowardf.c: Likewise.
* math/bug-nexttoward.c: New file.
|
|
|
|
|
|
|
|
| |
2003-12-10 Andreas Jaeger <aj@suse.de>
Ruediger Oertel <ro@suse.de>
* sysdeps/alpha/elf/pt-initfini.c (__asm__): Remove extra
.prologue.
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-11-30 Andreas Jaeger <aj@suse.de>
* config.make.in (fno-unit-at-a-time): Define.
* configure.in: Add test for -fno-unit-at-a-time.
Fix text for -fpie.
* csu/Makefile (CFLAGS-initfini.s): Add $(fno_unit_at_a_time).
* locale/Makefile (CFLAGS-loadlocale.c): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.in: Add test for -fno-unit-at-a-time.
Fix text for -fpie.
* csu/Makefile (CFLAGS-initfini.s): Add $(fno_unit_at_a_time).
* locale/Makefile (CFLAGS-loadlocale.c): Likewise.
For linuxthreads:
* Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
* sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
Likewise.
For nptl:
* Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
* sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
Likewise.
|
|
|
|
|
|
|
|
|
| |
2003-11-04 Jakub Jelinek <jakub@redhat.com>
* io/ftw.c (ftw_dir): Close dir if callback with FTW_D type returns
non-zero.
* io/Makefile (tests): Add bug-ftw4.
* io/bug-ftw4.c: New test.
|
|
|
|
|
|
|
| |
2003-10-15 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (print_statistics): Print also number of relative
relocations.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-10-12 Carlos O'Donell <carlos@baldric.uwo.ca>
* sysdeps/hppa/sysdep.h: Undef JUMPTARGET before use.
* sysdeps/unix/sysv/linux/hppa/sysdep.h: Define PSEUDO_ERRVAL,
SYSCALL_ERROR_LABEL under all conditions, INTERNAL_SYSCALL_DECL,
INTERNAL_SYSCALL_ERROR_P, INTERNAL_SYSCALL_ERRNO, INTERNAL_SYSCALL,
and undef JUMPTARGET before use.
[PIC]: Save pic register around syscall.
* sysdeps/unix/sysv/linux/hppa/sysdep.c (syscall):
Cleanup asm statment.
2003-10-13 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/sh/sysdep.h (DO_CALL): Add SYSCALL_INST_PAD
after trapa instruction.
|
| |
|
|
|
|
|
|
|
|
| |
2003-10-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Backout 2003-10-02
changes.
(SAVE_OLDTYPE_0): Fix a typo.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-09-26 Paolo Bonzini <bonzini@gnu.org>
* posix/regcomp.c (parse_sub_exp): Pass RE_CARET_ANCHORS_HERE
for the first token in a subexpression as well.
2003-10-02 Jakub Jelinek <jakub@redhat.com>
* posix/regcomp.c (peek_token): Add 2003-09-20 changes for anchor
handling again.
(parse_reg_exp): Likewise.
* posix/regex.h (RE_CARET_ANCHORS_HERE): Define.
* posix/bug-regex11.c (tests): Add new tests.
* posix/bug-regex12.c (tests): Add new test.
|
|
|
|
|
|
|
| |
2003-10-01 Thorsten Kukuk <kukuk@suse.de>
* elf/dl-reloc.c (_dl_allocate_static_tls): Move definition of
variables only used if TLS_DTV_AT_TP is defined into the #if branch.
|
|
|
|
|
|
|
| |
2003-10-02 Jeroen Dekkers <jeroen@dekkers.cx>
* sysdeps/mach/hurd/malloc-machine.h: Copy the tsd code from
the old thread-m.h header too.
|
|
|
|
|
|
|
| |
2003-10-02 Ulrich Drepper <drepper@redhat.com>
* inet/getnameinfo.c: Move domain out of nrl_domainname scope and
define it with libc_freeres_ptr.
|
| |
|
|
|
|
|
|
|
|
| |
"#if 0" surrounding most of contents.
(SYSCALL_ERROR_LABEL): Define.
(__SYSCALL_CLOBBERS): Add $10.
(internal_syscall7): Remove.
* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h: Likewise.
|
| |
|
|
|
|
|
|
| |
* sysdeps/pthread/malloc-machine.h: New file.
2003-09-27 Wolfram Gloger <wg@malloc.de>
|
|
|
|
|
|
|
|
| |
2003-09-20 Alfred M. Szmidt <ams@kemisten.nu>
* sysdeps/generic/utmp_file.c (setutent_file, LOCK_FILE,
UNLOCK_FILE, setutent_file): Use fcntl_not_cancel instead of
__fcntl_nocancel.
|
|
|
|
|
|
|
|
|
|
|
|
| |
2003-09-22 Philip Blundell <philb@gnu.org>
* forward.c: Add _pthread_cleanup_push, _pthread_cleanup_pop.
* sysdeps/pthread/pthread-functions.h (struct pthread_functions):
Likewise.
* pthread.c (__pthread_elements): Initialise these new elements.
* sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_push): Use
__libc_maybe_call.
(__libc_cleanup_pop): Likewise.
|
|
|
|
|
|
|
|
|
|
| |
2003-09-22 Jakub Jelinek <jakub@redhat.com>
* include/atomic.h (atomic_compare_and_exchange_val_rel,
atomic_compare_and_exchange_bool_rel): Swap oldval/newval arguments
to avoid confusion.
* sysdeps/unix/opendir.c: Include string.h.
|