@ -1,4 +1,5 @@
/* Copyright (C) 2004-2022 Free Software Foundation, Inc.
Copyright The GNU Toolchain Authors .
This file is part of the GNU C Library .
The GNU C Library is free software ; you can redistribute it and / or
@ -36,6 +37,17 @@
# include <sys/socket.h>
# include <sys/un.h>
# ifndef _GNU_SOURCE
# define MEMPCPY memcpy
# define WMEMPCPY wmemcpy
# define MEMPCPY_RET(x) 0
# define WMEMPCPY_RET(x) 0
# else
# define MEMPCPY mempcpy
# define WMEMPCPY wmempcpy
# define MEMPCPY_RET(x) __builtin_strlen (x)
# define WMEMPCPY_RET(x) wcslen (x)
# endif
# define obstack_chunk_alloc malloc
# define obstack_chunk_free free
@ -162,7 +174,7 @@ do_test (void)
if ( memcmp ( buf , " aabcdefghi " , 10 ) )
FAIL ( ) ;
if ( mempcpy ( buf + 5 , " abcde " , 5 ) ! = buf + 10
if ( MEMPCPY ( buf + 5 , " abcde " , 5 ) ! = buf + 5 + MEMPCPY_RET ( " abcde " )
| | memcmp ( buf , " aabcdabcde " , 10 ) )
FAIL ( ) ;
@ -207,7 +219,7 @@ do_test (void)
if ( memcmp ( buf , " aabcdefghi " , 10 ) )
FAIL ( ) ;
if ( mempcpy ( buf + 5 , " abcde " , l0 + 5 ) ! = buf + 10
if ( MEMPCPY ( buf + 5 , " abcde " , l0 + 5 ) ! = buf + 5 + MEMPCPY_RET ( " abcde " )
| | memcmp ( buf , " aabcdabcde " , 10 ) )
FAIL ( ) ;
@ -266,7 +278,8 @@ do_test (void)
if ( memcmp ( a . buf1 , " aabcdefghi " , 10 ) )
FAIL ( ) ;
if ( mempcpy ( a . buf1 + 5 , " abcde " , l0 + 5 ) ! = a . buf1 + 10
if ( MEMPCPY ( a . buf1 + 5 , " abcde " , l0 + 5 )
! = a . buf1 + 5 + MEMPCPY_RET ( " abcde " )
| | memcmp ( a . buf1 , " aabcdabcde " , 10 ) )
FAIL ( ) ;
@ -347,6 +360,7 @@ do_test (void)
bcopy ( buf + 1 , buf + 2 , l0 + 9 ) ;
CHK_FAIL_END
# ifdef _GNU_SOURCE
CHK_FAIL_START
p = ( char * ) mempcpy ( buf + 6 , " abcde " , 5 ) ;
CHK_FAIL_END
@ -354,6 +368,7 @@ do_test (void)
CHK_FAIL_START
p = ( char * ) mempcpy ( buf + 6 , " abcde " , l0 + 5 ) ;
CHK_FAIL_END
# endif
CHK_FAIL_START
memset ( buf + 9 , ' j ' , 2 ) ;
@ -464,6 +479,7 @@ do_test (void)
bcopy ( a . buf1 + 1 , a . buf1 + 2 , l0 + 9 ) ;
CHK_FAIL_END
# ifdef _GNU_SOURCE
CHK_FAIL_START
p = ( char * ) mempcpy ( a . buf1 + 6 , " abcde " , 5 ) ;
CHK_FAIL_END
@ -471,6 +487,7 @@ do_test (void)
CHK_FAIL_START
p = ( char * ) mempcpy ( a . buf1 + 6 , " abcde " , l0 + 5 ) ;
CHK_FAIL_END
# endif
CHK_FAIL_START
memset ( a . buf1 + 9 , ' j ' , 2 ) ;
@ -550,7 +567,7 @@ do_test (void)
if ( wmemcmp ( wbuf , L " aabcdefghi " , 10 ) )
FAIL ( ) ;
if ( wmempcpy ( wbuf + 5 , L " abcde " , 5 ) ! = wbuf + 10
if ( WMEMPCPY ( wbuf + 5 , L " abcde " , 5 ) ! = wbuf + 5 + WMEMPCPY_RET ( L " abcde " )
| | wmemcmp ( wbuf , L " aabcdabcde " , 10 ) )
FAIL ( ) ;
@ -583,7 +600,8 @@ do_test (void)
if ( wmemcmp ( wbuf , L " aabcdefghi " , 10 ) )
FAIL ( ) ;
if ( wmempcpy ( wbuf + 5 , L " abcde " , l0 + 5 ) ! = wbuf + 10
if ( WMEMPCPY ( wbuf + 5 , L " abcde " , l0 + 5 )
! = wbuf + 5 + WMEMPCPY_RET ( L " abcde " )
| | wmemcmp ( wbuf , L " aabcdabcde " , 10 ) )
FAIL ( ) ;
@ -625,7 +643,8 @@ do_test (void)
if ( wmemcmp ( wa . buf1 , L " aabcdefghi " , 10 ) )
FAIL ( ) ;
if ( wmempcpy ( wa . buf1 + 5 , L " abcde " , l0 + 5 ) ! = wa . buf1 + 10
if ( WMEMPCPY ( wa . buf1 + 5 , L " abcde " , l0 + 5 )
! = wa . buf1 + 5 + WMEMPCPY_RET ( L " abcde " )
| | wmemcmp ( wa . buf1 , L " aabcdabcde " , 10 ) )
FAIL ( ) ;
@ -694,6 +713,7 @@ do_test (void)
wmemmove ( wbuf + 2 , wbuf + 1 , l0 + 9 ) ;
CHK_FAIL_END
# ifdef _GNU_SOURCE
CHK_FAIL_START
wp = wmempcpy ( wbuf + 6 , L " abcde " , 5 ) ;
CHK_FAIL_END
@ -701,6 +721,7 @@ do_test (void)
CHK_FAIL_START
wp = wmempcpy ( wbuf + 6 , L " abcde " , l0 + 5 ) ;
CHK_FAIL_END
# endif
CHK_FAIL_START
wmemset ( wbuf + 9 , L ' j ' , 2 ) ;
@ -768,6 +789,7 @@ do_test (void)
wmemmove ( wa . buf1 + 2 , wa . buf1 + 1 , l0 + 9 ) ;
CHK_FAIL_END
# ifdef _GNU_SOURCE
CHK_FAIL_START
wp = wmempcpy ( wa . buf1 + 6 , L " abcde " , 5 ) ;
CHK_FAIL_END
@ -775,6 +797,7 @@ do_test (void)
CHK_FAIL_START
wp = wmempcpy ( wa . buf1 + 6 , L " abcde " , l0 + 5 ) ;
CHK_FAIL_END
# endif
CHK_FAIL_START
wmemset ( wa . buf1 + 9 , L ' j ' , 2 ) ;
@ -906,6 +929,7 @@ do_test (void)
if ( fprintf ( fp , buf2 + 4 , str5 ) ! = 7 )
FAIL ( ) ;
# ifdef _GNU_SOURCE
char * my_ptr = NULL ;
strcpy ( buf2 + 2 , " %n%s%n " ) ;
/* When the format string is writable and contains %n,
@ -935,6 +959,7 @@ do_test (void)
if ( obstack_printf ( & obs , " %s%n%s%n " , str4 , & n1 , str5 , & n1 ) ! = 14 )
FAIL ( ) ;
obstack_free ( & obs , NULL ) ;
# endif
if ( freopen ( temp_filename , " r " , stdin ) = = NULL )
{
@ -982,6 +1007,7 @@ do_test (void)
rewind ( stdin ) ;
# ifdef _GNU_SOURCE
if ( fgets_unlocked ( buf , buf_size , stdin ) ! = buf
| | memcmp ( buf , " abcdefgh \n " , 10 ) )
FAIL ( ) ;
@ -1008,6 +1034,7 @@ do_test (void)
# endif
rewind ( stdin ) ;
# endif
if ( fread ( buf , 1 , buf_size , stdin ) ! = buf_size
| | memcmp ( buf , " abcdefgh \n A " , 10 ) )
@ -1578,7 +1605,10 @@ do_test (void)
ret = 1 ;
}
int fd = posix_openpt ( O_RDWR ) ;
int fd ;
# ifdef _GNU_SOURCE
fd = posix_openpt ( O_RDWR ) ;
if ( fd ! = - 1 )
{
char enough [ 1000 ] ;
@ -1594,6 +1624,7 @@ do_test (void)
# endif
close ( fd ) ;
}
# endif
# if PATH_MAX > 0
confstr ( _CS_GNU_LIBC_VERSION , largebuf , sizeof ( largebuf ) ) ;
@ -1711,8 +1742,9 @@ do_test (void)
poll ( fds , l0 + 2 , 0 ) ;
CHK_FAIL_END
# endif
# ifdef _GNU_SOURCE
ppoll ( fds , 1 , NULL , NULL ) ;
# if __USE_FORTIFY_LEVEL >= 1
# if __USE_FORTIFY_LEVEL >= 1
CHK_FAIL_START
ppoll ( fds , 2 , NULL , NULL ) ;
CHK_FAIL_END
@ -1720,6 +1752,7 @@ do_test (void)
CHK_FAIL_START
ppoll ( fds , l0 + 2 , NULL , NULL ) ;
CHK_FAIL_END
# endif
# endif
return ret ;