summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2022-08-08 22:41:19 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2022-08-12 19:22:01 +0100
commit330163295f14d1b29260059b65f7ec14e8a41e23 (patch)
treee910f6366034ebd8c2d78c42cc856b89254b6fad
parent01b3cb46405f814e27cab5290118211786cd63a0 (diff)
downloadopenembedded-core-330163295f14d1b29260059b65f7ec14e8a41e23.tar.gz
perl-cross: Correct function signatures in configure_func.sh
There are latent issues in function detection which were succeeding due to compiler being lenient, but this is fast changing e.g. clang-15 has turned the -Wimplicit-function-declaration into error which ends up failing these tests and rightly so. Therefore try to improve the tests to have proper prototypes known during compilation Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
-rw-r--r--meta/recipes-devtools/perl-cross/files/0001-configure_func.sh-Add-_GNU_SOURCE-define-and-functio.patch485
-rw-r--r--meta/recipes-devtools/perl-cross/perlcross_1.4.bb1
2 files changed, 486 insertions, 0 deletions
diff --git a/meta/recipes-devtools/perl-cross/files/0001-configure_func.sh-Add-_GNU_SOURCE-define-and-functio.patch b/meta/recipes-devtools/perl-cross/files/0001-configure_func.sh-Add-_GNU_SOURCE-define-and-functio.patch
new file mode 100644
index 0000000000..893b55e5ac
--- /dev/null
+++ b/meta/recipes-devtools/perl-cross/files/0001-configure_func.sh-Add-_GNU_SOURCE-define-and-functio.patch
@@ -0,0 +1,485 @@
+From 65db86f0161c393fd5b082c10837b278adadbff2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sun, 7 Aug 2022 23:57:20 -0700
+Subject: [PATCH] configure_func.sh: Add _GNU_SOURCE define and function
+ signatures
+
+Modern compilers are getting stricter about include paths and function
+signature being known duting compilation e.g. clang-15 now errors out if
+a function signature is not found
+
+try.c:1:18: error: call to undeclared function 'getspnam'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
+
+This causes the test of function to fail even though the function is
+available in libc. Therefore try to add proper include headers which
+define these functions and also define _GNU_SOURCE in every test
+since some of GNU/Linux funtions e.g. accept4 are guarged by this define
+
+Upstream-Status: Submitted [https://github.com/arsv/perl-cross/pull/137]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ cnf/configure_func.sh | 41 +++++++++++++++++++++--------------------
+ 1 file changed, 21 insertions(+), 20 deletions(-)
+
+--- a/cnf/configure_func.sh
++++ b/cnf/configure_func.sh
+@@ -5,6 +5,7 @@ checkfunc() {
+ mstart "Checking for $2"
+ if not hinted $1 'found' 'missing'; then
+ try_start
++ try_add '#define _GNU_SOURCE'
+ funcincludes "$3" "$4" "$includes"
+ try_add "int main(void) { $2($3); return 0; }"
+ try_link -O0 -fno-builtin
+@@ -42,115 +43,115 @@ checkfunc d_chroot 'chroot' "NULL" 'unis
+ checkfunc d_chsize 'chsize' "0,0"
+ checkfunc d_class 'class'
+ checkfunc d_clearenv 'clearenv' "" 'stdlib.h'
+-checkfunc d_closedir 'closedir' "NULL"
+-checkfunc d_crypt 'crypt'
++checkfunc d_closedir 'closedir' "NULL" 'dirent.h sys/types.h'
++checkfunc d_crypt 'crypt' "NULL,NULL" 'crypt.h'
+ checkfunc d_ctermid 'ctermid'
+ checkfunc d_ctime64 'ctime64'
+ checkfunc d_cuserid 'cuserid'
+-checkfunc d_difftime 'difftime' "0,0"
++checkfunc d_difftime 'difftime' "0,0" 'time.h'
+ checkfunc d_difftime64 'difftime64'
+-checkfunc d_dirfd 'dirfd'
++checkfunc d_dirfd 'dirfd' "NULL" 'dirent.h sys/types.h'
+ checkfunc d_dladdr 'dladdr' 'NULL, NULL' 'dlfcn.h'
+-checkfunc d_dlerror 'dlerror'
+-checkfunc d_dlopen 'dlopen'
+-checkfunc d_drand48 'drand48'
++checkfunc d_dlerror 'dlerror' "" 'dlfcn.h'
++checkfunc d_dlopen 'dlopen' "NULL,0" "dlfcn.h"
++checkfunc d_drand48 'drand48' "" 'stdlib.h'
+ checkfunc d_dup2 'dup2' "0,0" 'unistd.h'
+ checkfunc d_dup3 'dup3' "0,0,0" 'fcntl.h unistd.h'
+ checkfunc d_duplocale 'duplocale' '0' 'locale.h'
+-checkfunc d_eaccess 'eaccess'
+-checkfunc d_endgrent 'endgrent'
+-checkfunc d_endhent 'endhostent'
+-checkfunc d_endnent 'endnetent'
+-checkfunc d_endpent 'endprotoent'
+-checkfunc d_endpwent 'endpwent'
+-checkfunc d_endservent 'endservent'
++checkfunc d_eaccess 'eaccess' "NULL,0" 'unistd.h'
++checkfunc d_endgrent 'endgrent' '' 'grp.h sys/types.h'
++checkfunc d_endhent 'endhostent' "" 'netdb.h'
++checkfunc d_endnent 'endnetent' "" 'netdb.h'
++checkfunc d_endpent 'endprotoent' "" 'netdb.h'
++checkfunc d_endpwent 'endpwent' "" 'sys/types.h pwd.h'
++checkfunc d_endservent 'endservent' "" 'netdb.h'
+ checkfunc d_fchdir 'fchdir' "0" 'unistd.h'
+-checkfunc d_fchmod 'fchmod' "0,0" 'unistd.h'
+-checkfunc d_fchmodat 'fchmodat' "0,NULL,0,0" 'unistd.h'
++checkfunc d_fchmod 'fchmod' "0,0" 'unistd.h sys/stat.h'
++checkfunc d_fchmodat 'fchmodat' "0,NULL,0,0" 'unistd.h sys/stat.h'
+ checkfunc d_fchown 'fchown' "0,0,0" 'unistd.h'
+ checkfunc d_fcntl 'fcntl' "0,0" 'unistd.h fcntl.h'
+ checkfunc d_fdclose 'fdclose'
+-checkfunc d_ffs 'ffs' 'strings.h'
+-checkfunc d_ffsl 'ffsl' 'strings.h'
++checkfunc d_ffs 'ffs' "0" 'strings.h'
++checkfunc d_ffsl 'ffsl' "0" 'strings.h'
+ checkfunc d_fgetpos 'fgetpos' "NULL, 0" 'stdio.h'
+-checkfunc d_flock 'flock' "0,0" 'unistd.h'
++checkfunc d_flock 'flock' "0,0" 'sys/file.h'
+ checkfunc d_fork 'fork' "" 'unistd.h'
+ checkfunc d_fp_class 'fp_class'
+ checkfunc d_fpathconf 'fpathconf' "0,0" 'unistd.h'
+-checkfunc d_freelocale 'freelocale' '0' 'locale.h'
+-checkfunc d_fseeko 'fseeko' 'NULL,0,0'
+-checkfunc d_fsetpos 'fsetpos' 'NULL,0'
+-checkfunc d_fstatfs 'fstatfs'
+-checkfunc d_fstatvfs 'fstatvfs'
+-checkfunc d_fsync 'fsync'
+-checkfunc d_ftello 'ftello'
+-checkfunc d_futimes 'futimes'
++checkfunc d_freelocale 'freelocale' "0" 'locale.h'
++checkfunc d_fseeko 'fseeko' "NULL,0,0" 'stdio.h'
++checkfunc d_fsetpos 'fsetpos' "NULL,0" 'stdio.h'
++checkfunc d_fstatfs 'fstatfs' "0,NULL" 'sys/vfs.h'
++checkfunc d_fstatvfs 'fstatvfs' "0,NULL" 'sys/statvfs.h'
++checkfunc d_fsync 'fsync' "0" 'unistd.h'
++checkfunc d_ftello 'ftello' "NULL" 'stdio.h'
++checkfunc d_futimes 'futimes' '0,0' 'sys/time.h'
+ checkfunc d_gai_strerror 'gai_strerror' '0' 'sys/types.h sys/socket.h netdb.h'
+-checkfunc d_getaddrinfo 'getaddrinfo'
+-checkfunc d_get_current_dir_name 'get_current_dir_name'
+-checkfunc d_getcwd 'getcwd' 'NULL,0'
++checkfunc d_getaddrinfo 'getaddrinfo' "NULL,NULL,NULL,NULL" 'sys/types.h sys/socket.h netdb.h'
++checkfunc d_get_current_dir_name 'get_current_dir_name' "" 'unistd.h'
++checkfunc d_getcwd 'getcwd' 'NULL,0' 'unistd.h'
+ checkfunc d_getespwnam 'getespwnam'
+ checkfunc d_getfsstat 'getfsstat'
+-checkfunc d_getgrent 'getgrent'
+-checkfunc d_getgrps 'getgroups'
+-checkfunc d_gethbyaddr 'gethostbyaddr'
+-checkfunc d_gethbyname 'gethostbyname'
++checkfunc d_getgrent 'getgrent' "" 'sys/types.h grp.h'
++checkfunc d_getgrps 'getgroups' "0,NULL" 'unistd.h'
++checkfunc d_gethbyaddr 'gethostbyaddr' "NULL,0,0" 'netdb.h'
++checkfunc d_gethbyname 'gethostbyname' "NULL" 'netdb.h'
+ checkfunc d_getnbyaddr 'getnetbyaddr' '0,0' 'netdb.h'
+ checkfunc d_getnbyname 'getnetbyname' 'NULL' 'netdb.h'
+-checkfunc d_gethent 'gethostent'
+-checkfunc d_gethname 'gethostname'
+-checkfunc d_getitimer 'getitimer'
+-checkfunc d_getlogin 'getlogin'
++checkfunc d_gethent 'gethostent' "" 'netdb.h'
++checkfunc d_gethname 'gethostname' "NULL,0" 'unistd.h'
++checkfunc d_getitimer 'getitimer' "0,NULL" 'sys/time.h'
++checkfunc d_getlogin 'getlogin' "" 'unistd.h'
+ checkfunc d_getmnt 'getmnt'
+-checkfunc d_getmntent 'getmntent'
+-checkfunc d_getnameinfo 'getnameinfo'
+-checkfunc d_getnent 'getnetent'
+-checkfunc d_getnetbyaddr 'getnetbyaddr'
+-checkfunc d_getnetbyname 'getnetbyname'
+-checkfunc d_getpagsz 'getpagesize'
++checkfunc d_getmntent 'getmntent' "NULL" 'stdio.h mntent.h'
++checkfunc d_getnameinfo 'getnameinfo' "NULL,0,NULL,0,NULL,0,0" 'sys/socket.h netdb.h'
++checkfunc d_getnent 'getnetent' "" 'netdb.h'
++checkfunc d_getnetbyaddr 'getnetbyaddr' "0,0" 'netdb.h'
++checkfunc d_getnetbyname 'getnetbyname' "NULL" 'netdb.h'
++checkfunc d_getpagsz 'getpagesize' "" 'unistd.h'
+ checkfunc d_getpbyaddr 'getprotobyaddr'
+-checkfunc d_getpbyname 'getprotobyname'
+-checkfunc d_getpbynumber 'getprotobynumber'
+-checkfunc d_getpent 'getprotoent'
+-checkfunc d_getpgid 'getpgid'
++checkfunc d_getpbyname 'getprotobyname' "NULL" 'netdb.h'
++checkfunc d_getpbynumber 'getprotobynumber' "0" 'netdb.h'
++checkfunc d_getpent 'getprotoent' "" 'netdb.h'
++checkfunc d_getpgid 'getpgid' "0" 'unistd.h'
+ checkfunc d_getpgrp 'getpgrp' "" 'unistd.h'
+ checkfunc d_getpgrp2 'getpgrp2'
+-checkfunc d_getppid 'getppid'
++checkfunc d_getppid 'getppid' "" 'unistd.h'
+ checkfunc d_getprior 'getpriority' "0,0" 'sys/time.h sys/resource.h'
+ checkfunc d_getprpwnam 'getprpwnam'
+-checkfunc d_getpwent 'getpwent'
++checkfunc d_getpwent 'getpwent' "" 'sys/types.h pwd.h'
+ checkfunc d_getsbyaddr 'getservbyaddr'
+-checkfunc d_getsbyname 'getservbyname'
+-checkfunc d_getsbyport 'getservbyport'
+-checkfunc d_getsent 'getservent'
+-checkfunc d_setsent 'setservent'
+-checkfunc d_endsent 'endservent'
+-checkfunc d_getspnam 'getspnam'
+-checkfunc d_gettimeod 'gettimeofday' 'NULL,NULL'
++checkfunc d_getsbyname 'getservbyname' "NULL,NULL" 'netdb.h'
++checkfunc d_getsbyport 'getservbyport' "0,NULL" 'netdb.h'
++checkfunc d_getsent 'getservent' "" 'netdb.h'
++checkfunc d_setsent 'setservent' "0" 'netdb.h'
++checkfunc d_endsent 'endservent' "" 'netdb.h'
++checkfunc d_getspnam 'getspnam' "NULL" 'shadow.h'
++checkfunc d_gettimeod 'gettimeofday' 'NULL,NULL' 'sys/time.h'
+ checkfunc d_gmtime64 'gmtime64'
+-checkfunc d_hasmntopt 'hasmntopt'
++checkfunc d_hasmntopt 'hasmntopt' "NULL,NULL" 'stdio.h mntent.h'
+ checkfunc d_htonl 'htonl' "0" 'stdio.h sys/types.h netinet/in.h arpa/inet.h'
+-checkfunc d_ilogbl 'ilogbl'
++checkfunc d_ilogbl 'ilogbl' "0.0" 'math.h'
+ checkfunc d_index 'index' "NULL,0" 'string.h strings.h'
+-checkfunc d_inetaton 'inet_aton'
+-checkfunc d_inetntop 'inet_ntop'
+-checkfunc d_inetpton 'inet_pton'
++checkfunc d_inetaton 'inet_aton' "NULL,NULL" 'sys/socket.h netinet/in.h arpa/inet.h'
++checkfunc d_inetntop 'inet_ntop' "0,NULL,NULL,0" 'arpa/inet.h'
++checkfunc d_inetpton 'inet_pton' "0,NULL,NULL" 'arpa/inet.h'
+ checkfunc d_isascii 'isascii' "'A'" 'stdio.h ctype.h'
+ checkfunc d_isblank 'isblank' "' '" 'stdio.h ctype.h'
+-checkfunc d_killpg 'killpg'
++checkfunc d_killpg 'killpg' "0,0" 'signal.h'
+ checkfunc d_lchown 'lchown' "NULL, 0, 0" 'unistd.h'
+-checkfunc d_link 'link' 'NULL,NULL'
+-checkfunc d_linkat 'linkat' '0,NULL,0,NULL,0'
++checkfunc d_link 'link' 'NULL,NULL' 'unistd.h'
++checkfunc d_linkat 'linkat' '0,NULL,0,NULL,0' 'unistd.h'
+ checkfunc d_localtime64 'localtime64'
+ checkfunc d_localeconv_l 'localeconv_l' 'NULL' 'locale.h'
+-checkfunc d_locconv 'localeconv'
+-checkfunc d_lockf 'lockf'
+-checkfunc d_lstat 'lstat'
+-checkfunc d_madvise 'madvise'
++checkfunc d_locconv 'localeconv' "" 'locale.h'
++checkfunc d_lockf 'lockf' "0,0,0" 'unistd.h'
++checkfunc d_lstat 'lstat' "NULL, NULL" 'sys/stat.h'
++checkfunc d_madvise 'madvise' "NULL,0,0" 'sys/mman.h'
+ checkfunc d_malloc_good_size 'malloc_good_size'
+ checkfunc d_malloc_size 'malloc_size'
+ checkfunc d_mblen 'mblen' '"", 0' 'stdlib.h'
+-checkfunc d_mbstowcs 'mbstowcs'
++checkfunc d_mbstowcs 'mbstowcs' "NULL,NULL,0"
+ checkfunc d_mbtowc 'mbtowc' 'NULL, NULL, 0' 'stdlib.h'
+ checkfunc d_mbrlen 'mbrlen' 'NULL, 0, NULL' 'wchar.h'
+ checkfunc d_mbrtowc 'mbrtowc' 'NULL, NULL, 0, NULL' 'wchar.h'
+@@ -161,152 +162,152 @@ checkfunc d_memmem 'memmem' "NULL, 0, NU
+ checkfunc d_memmove 'memmove' "NULL, NULL, 0" 'string.h'
+ checkfunc d_memrchr 'memrchr' "NULL, 0, 0" 'string.h'
+ checkfunc d_memset 'memset' "NULL, 0, 0" 'string.h'
+-checkfunc d_mkdir 'mkdir' 'NULL, 0'
+-checkfunc d_mkdtemp 'mkdtemp'
+-checkfunc d_mkfifo 'mkfifo'
++checkfunc d_mkdir 'mkdir' 'NULL, 0' 'sys/stat.h'
++checkfunc d_mkdtemp 'mkdtemp' 'NULL'
++checkfunc d_mkfifo 'mkfifo' 'NULL,0' 'sys/types.h sys/stat.h'
+ checkfunc d_mkostemp 'mkostemp' 'NULL,0' 'stdlib.h'
+ checkfunc d_mkstemp 'mkstemp' 'NULL'
+-checkfunc d_mkstemps 'mkstemps'
+-checkfunc d_mktime 'mktime' 'NULL'
++checkfunc d_mkstemps 'mkstemps' 'NULL,0'
++checkfunc d_mktime 'mktime' 'NULL' 'time.h'
+ checkfunc d_mktime64 'mktime64'
+-checkfunc d_mmap 'mmap'
+-checkfunc d_mprotect 'mprotect'
+-checkfunc d_msgctl 'msgctl'
+-checkfunc d_msgget 'msgget'
+-checkfunc d_msgrcv 'msgrcv'
+-checkfunc d_msgsnd 'msgsnd'
+-checkfunc d_msync 'msync'
+-checkfunc d_munmap 'munmap'
++checkfunc d_mmap 'mmap' 'NULL,0,0,0,0,0' 'sys/mman.h'
++checkfunc d_mprotect 'mprotect' 'NULL,0,0' 'sys/mman.h'
++checkfunc d_msgctl 'msgctl' '0,0,NULL' 'sys/msg.h'
++checkfunc d_msgget 'msgget' '0,0' 'sys/msg.h'
++checkfunc d_msgrcv 'msgrcv' '0,NULL,0,0,0' 'sys/msg.h'
++checkfunc d_msgsnd 'msgsnd' '0,NULL,0,0' 'sys/msg.h'
++checkfunc d_msync 'msync' 'NULL,0,0' 'sys/mman.h'
++checkfunc d_munmap 'munmap' 'NULL,0' 'sys/mman.h'
+ checkfunc d_newlocale 'newlocale' '0,NULL,0' 'locale.h'
+-checkfunc d_nice 'nice' '0'
+-checkfunc d_nl_langinfo 'nl_langinfo'
+-checkfunc d_nl_langinfo_l 'nl_langinfo_l'
++checkfunc d_nice 'nice' '0' 'unistd.h'
++checkfunc d_nl_langinfo 'nl_langinfo' '0' 'langinfo.h'
++checkfunc d_nl_langinfo_l 'nl_langinfo_l' '0,0' 'langinfo.h'
+ checkfunc d_open 'open' "NULL,0,0" 'sys/types.h sys/stat.h fcntl.h'
+ checkfunc d_openat 'openat' "0,NULL,0,0" 'sys/types.h sys/stat.h fcntl.h'
+-checkfunc d_pathconf 'pathconf'
+-checkfunc d_pause 'pause'
++checkfunc d_pathconf 'pathconf' 'NULL,0' 'unistd.h'
++checkfunc d_pause 'pause' '' 'unistd.h'
+ checkfunc d_pipe 'pipe' 'NULL' 'fcntl.h unistd.h'
+ checkfunc d_pipe2 'pipe' 'NULL,0' 'fcntl.h unistd.h'
+-checkfunc d_poll 'poll'
+-checkfunc d_prctl 'prctl'
+-checkfunc d_pthread_atfork 'pthread_atfork'
+-checkfunc d_pthread_attr_setscope 'pthread_attr_setscope'
+-checkfunc d_pthread_yield 'pthread_yield'
++checkfunc d_poll 'poll' 'NULL,0,0' 'poll.h'
++checkfunc d_prctl 'prctl' '0,0,0,0,0' 'sys/prctl.h'
++checkfunc d_pthread_atfork 'pthread_atfork' 'NULL,NULL,NULL' 'pthread.h'
++checkfunc d_pthread_attr_setscope 'pthread_attr_setscope' 'NULL,0' 'pthread.h'
++checkfunc d_pthread_yield 'pthread_yield' '' 'pthread.h'
+ checkfunc d_querylocale 'querylocale'
+ checkfunc d_qgcvt 'qgcvt' '1.0,1,NULL'
+-checkfunc d_rand 'rand'
+-checkfunc d_random 'random'
+-checkfunc d_re_comp 're_comp'
+-checkfunc d_readdir 'readdir' 'NULL'
+-checkfunc d_readlink 'readlink'
+-checkfunc d_realpath 'realpath'
+-checkfunc d_readv 'readv'
+-checkfunc d_recvmsg 'recvmsg'
++checkfunc d_rand 'rand' '' 'stdlib.h'
++checkfunc d_random 'random' '' 'stdlib.h'
++checkfunc d_re_comp 're_comp' 'NULL' 'sys/types.h regex.h'
++checkfunc d_readdir 'readdir' 'NULL' 'dirent.h'
++checkfunc d_readlink 'readlink' 'NULL,NULL,0' 'unistd.h'
++checkfunc d_realpath 'realpath' 'NULL,NULL' 'limits.h stdlib.h'
++checkfunc d_readv 'readv' '0,NULL,0' 'sys/uio.h'
++checkfunc d_recvmsg 'recvmsg' '0,NULL,0' 'sys/socket.h'
+ checkfunc d_regcmp 'regcmp'
+-checkfunc d_regcomp 'regcomp'
+-checkfunc d_rename 'rename' 'NULL,NULL'
+-checkfunc d_renameat 'renameat' '0,NULL,0,NULL'
+-checkfunc d_rewinddir 'rewinddir'
+-checkfunc d_rmdir 'rmdir' 'NULL'
+-checkfunc d_sched_yield 'sched_yield'
+-checkfunc d_seekdir 'seekdir'
+-checkfunc d_select 'select' '0,NULL,NULL,NULL,NULL'
+-checkfunc d_semctl 'semctl'
+-checkfunc d_semget 'semget'
+-checkfunc d_semop 'semop'
+-checkfunc d_sendmsg 'sendmsg'
+-checkfunc d_setegid 'setegid'
+-checkfunc d_setent 'setservent'
+-checkfunc d_setenv 'setenv'
+-checkfunc d_seteuid 'seteuid'
+-checkfunc d_setgrent 'setgrent'
+-checkfunc d_setgrps 'setgroups'
+-checkfunc d_sethent 'sethostent'
+-checkfunc d_setitimer 'setitimer'
+-checkfunc d_setlinebuf 'setlinebuf'
++checkfunc d_regcomp 'regcomp' 'NULL,NULL,0' 'regex.h'
++checkfunc d_rename 'rename' 'NULL,NULL' 'stdio.h'
++checkfunc d_renameat 'renameat' '0,NULL,0,NULL' 'fcntl.h stdio.h'
++checkfunc d_rewinddir 'rewinddir' 'NULL' 'sys/types.h dirent.h'
++checkfunc d_rmdir 'rmdir' 'NULL' 'unistd.h'
++checkfunc d_sched_yield 'sched_yield' '' 'sched.h'
++checkfunc d_seekdir 'seekdir' 'NULL,0' 'dirent.h'
++checkfunc d_select 'select' '0,NULL,NULL,NULL,NULL' 'sys/select.h'
++checkfunc d_semctl 'semctl' '0,0,0, NULL' 'sys/sem.h'
++checkfunc d_semget 'semget' '0,0,0' 'sys/sem.h'
++checkfunc d_semop 'semop' '0,NULL,0' 'sys/sem.h'
++checkfunc d_sendmsg 'sendmsg' '0,NULL,0' 'sys/socket.h'
++checkfunc d_setegid 'setegid' '0' 'unistd.h'
++checkfunc d_setent 'setservent' '0' 'netdb.h'
++checkfunc d_setenv 'setenv' 'NULL,NULL,0'
++checkfunc d_seteuid 'seteuid' '0' 'unistd.h'
++checkfunc d_setgrent 'setgrent' '' 'sys/types.h grp.h'
++checkfunc d_setgrps 'setgroups' '0,NULL' 'unistd.h grp.h'
++checkfunc d_sethent 'sethostent' '0' 'netdb.h'
++checkfunc d_setitimer 'setitimer' '0,NULL,NULL' 'sys/time.h'
++checkfunc d_setlinebuf 'setlinebuf' 'NULL' 'stdio.h'
+ checkfunc d_setlocale 'setlocale' "0,NULL" 'locale.h'
+-checkfunc d_setnent 'setnetent'
+-checkfunc d_setpent 'setprotoent'
+-checkfunc d_setpgid 'setpgid'
+-checkfunc d_setpgrp 'setpgrp'
++checkfunc d_setnent 'setnetent' '0' 'netdb.h'
++checkfunc d_setpent 'setprotoent' '0' 'netdb.h'
++checkfunc d_setpgid 'setpgid' '0,0' 'unistd.h'
++checkfunc d_setpgrp 'setpgrp' '' 'unistd.h'
+ checkfunc d_setpgrp2 'setpgrp2'
+-checkfunc d_setprior 'setpriority'
+-checkfunc d_setproctitle 'setproctitle'
+-checkfunc d_setpwent 'setpwent'
+-checkfunc d_setregid 'setregid'
+-checkfunc d_setresgid 'setresgid'
+-checkfunc d_setresuid 'setresuid'
+-checkfunc d_setreuid 'setreuid'
+-checkfunc d_setrgid 'setrgid'
++checkfunc d_setprior 'setpriority' '0,0,0' 'sys/resource.h'
++checkfunc d_setproctitle 'setproctitle' 'NULL,NULL' 'sys/types.h unistd.h'
++checkfunc d_setpwent 'setpwent' '' 'sys/types.h pwd.h'
++checkfunc d_setregid 'setregid' '0,0' 'unistd.h'
++checkfunc d_setresgid 'setresgid' '0,0,0' 'unistd.h'
++checkfunc d_setresuid 'setresuid' '0,0,0' 'unistd.h'
++checkfunc d_setreuid 'setreuid' '0,0' 'unistd.h'
++checkfunc d_setrgid 'setrgid' ''
+ checkfunc d_setruid 'setruid'
+-checkfunc d_setsid 'setsid'
+-checkfunc d_setvbuf 'setvbuf' 'NULL,NULL,0,0'
++checkfunc d_setsid 'setsid' '' 'unistd.h'
++checkfunc d_setvbuf 'setvbuf' 'NULL,NULL,0,0' 'stdio.h'
+ checkfunc d_sfreserve 'sfreserve' "" 'sfio.h'
+-checkfunc d_shmat 'shmat'
+-checkfunc d_shmctl 'shmctl'
+-checkfunc d_shmdt 'shmdt'
+-checkfunc d_shmget 'shmget'
+-checkfunc d_sigaction 'sigaction'
+-checkfunc d_sigprocmask 'sigprocmask'
++checkfunc d_shmat 'shmat' '0,NULL,0' 'sys/shm.h'
++checkfunc d_shmctl 'shmctl' '0,0,NULL' 'sys/shm.h'
++checkfunc d_shmdt 'shmdt' 'NULL' 'sys/shm.h'
++checkfunc d_shmget 'shmget' '0,0,0' 'sys/shm.h'
++checkfunc d_sigaction 'sigaction' '0,NULL,NULL' 'signal.h'
++checkfunc d_sigprocmask 'sigprocmask' '0,NULL,NULL' 'signal.h'
+ checkfunc d_sigsetjmp 'sigsetjmp' "NULL,0" 'setjmp.h'
+-checkfunc d_snprintf 'snprintf'
+-checkfunc d_sockatmark 'sockatmark'
++checkfunc d_snprintf 'snprintf' 'NULL,0,NULL' 'stdio.h'
++checkfunc d_sockatmark 'sockatmark' '0' 'sys/socket.h'
+ checkfunc d_socket 'socket' "0,0,0" 'sys/types.h sys/socket.h'
+-checkfunc d_sockpair 'socketpair'
++checkfunc d_sockpair 'socketpair' '0,0,0,NULL' 'sys/socket.h'
+ checkfunc d_socks5_init 'socks5_init'
+-checkfunc d_stat 'stat'
+-checkfunc d_statvfs 'statvfs'
++checkfunc d_stat 'stat' 'NULL,NULL' 'sys/stat.h'
++checkfunc d_statvfs 'statvfs' 'NULL,NULL' 'sys/statvfs.h'
+ checkfunc d_strchr 'strchr' "NULL,0" 'string.h strings.h'
+ checkfunc d_strcoll 'strcoll' "NULL,NULL" 'string.h'
+ checkfunc d_strerror 'strerror' "0" 'string.h stdlib.h'
+-checkfunc d_strerror_l 'strerror_l'
++checkfunc d_strerror_l 'strerror_l' '0,NULL' 'string.h'
+ checkfunc d_strftime 'strftime' "NULL,0,NULL,NULL" 'time.h'
+-checkfunc d_strlcat 'strlcat'
+-checkfunc d_strlcpy 'strlcpy'
++checkfunc d_strlcat 'strlcat' 'NULL,NULL,0' 'string.h'
++checkfunc d_strlcpy 'strlcpy' 'NULL,NULL,0' 'string.h'
+ checkfunc d_strnlen 'strnlen' '"",0' 'string.h'
+ checkfunc d_strtod 'strtod' 'NULL,NULL'
+ checkfunc d_strtod_l 'strtod_l'
+ checkfunc d_strtol 'strtol' 'NULL,NULL,0'
+-checkfunc d_strtold 'strtold'
++checkfunc d_strtold 'strtold' 'NULL,NULL'
+ checkfunc d_strtold_l 'strtold_l'
+-checkfunc d_strtoll 'strtoll'
+-checkfunc d_strtoq 'strtoq'
++checkfunc d_strtoll 'strtoll' 'NULL,NULL,0'
++checkfunc d_strtoq 'strtoq' 'NULL,NULL,0'
+ checkfunc d_strtoul 'strtoul' 'NULL,NULL,0'
+ checkfunc d_strtoull 'strtoull' 'NULL,NULL,0'
+-checkfunc d_strtouq 'strtouq'
+-checkfunc d_strxfrm 'strxfrm'
+-checkfunc d_strxfrm_l 'strxfrm_l'
+-checkfunc d_symlink 'symlink'
+-checkfunc d_syscall 'syscall'
+-checkfunc d_sysconf 'sysconf' '0'
++checkfunc d_strtouq 'strtouq' 'NULL,NULL,0'
++checkfunc d_strxfrm 'strxfrm' 'NULL,NULL,0' 'string.h'
++checkfunc d_strxfrm_l 'strxfrm_l' 'NULL,NULL,0,NULL' 'string.h'
++checkfunc d_symlink 'symlink' 'NULL,NULL' 'unistd.h'
++checkfunc d_syscall 'syscall' '0,NULL' 'sys/syscall.h unistd.h'
++checkfunc d_sysconf 'sysconf' '0' 'unistd.h'
+ checkfunc d_system 'system' 'NULL'
+-checkfunc d_tcgetpgrp 'tcgetpgrp'
+-checkfunc d_tcsetpgrp 'tcsetpgrp'
+-checkfunc d_telldir 'telldir'
+-checkfunc d_time 'time' 'NULL'
+-checkfunc d_timegm 'timegm'
+-checkfunc d_times 'times' 'NULL'
++checkfunc d_tcgetpgrp 'tcgetpgrp' '0' 'unistd.h'
++checkfunc d_tcsetpgrp 'tcsetpgrp' '0,0' 'unistd.h'
++checkfunc d_telldir 'telldir' 'NULL' 'dirent.h'
++checkfunc d_time 'time' 'NULL' 'time.h'
++checkfunc d_timegm 'timegm' 'NULL' 'time.h'
++checkfunc d_times 'times' 'NULL' 'sys/times.h'
+ checkfunc d_towlower 'towlower' '0' 'wctype.h'
+ checkfunc d_towupper 'towupper' '0' 'wctype.h'
+-checkfunc d_truncate 'truncate' 'NULL,0'
+-checkfunc d_ualarm 'ualarm'
+-checkfunc d_umask 'umask' '0'
+-checkfunc d_uname 'uname'
+-checkfunc d_unlinkat 'unlinkat' '0,NULL,0'
++checkfunc d_truncate 'truncate' 'NULL,0' 'unistd.h'
++checkfunc d_ualarm 'ualarm' 'NULL,NULL' 'unistd.h'
++checkfunc d_umask 'umask' '0' 'sys/stat.h'
++checkfunc d_uname 'uname' 'NULL' 'sys/utsname.h'
++checkfunc d_unlinkat 'unlinkat' '0,NULL,0' 'unistd.h fcntl.h'
+ checkfunc d_unordered 'unordered'
+-checkfunc d_unsetenv 'unsetenv'
++checkfunc d_unsetenv 'unsetenv' 'NULL'
+ checkfunc d_uselocale 'uselocale' '0' 'locale.h'
+-checkfunc d_usleep 'usleep'
+-checkfunc d_ustat 'ustat'
++checkfunc d_usleep 'usleep' '0' 'unistd.h'
++checkfunc d_ustat 'ustat' '0,NULL' 'sys/types.h unistd.h'
+ define d_vfork 'undef' # unnecessary
+-checkfunc d_vprintf 'vprintf' 'NULL,0'
+-checkfunc d_vsnprintf 'vsnprintf'
+-checkfunc d_wait4 'wait4'
+-checkfunc d_waitpid 'waitpid' '0,NULL,0'
+-checkfunc d_wcrtomb 'wcrtomb'
+-checkfunc d_wcscmp 'wcscmp'
+-checkfunc d_wcstombs 'wcstombs' 'NULL,NULL,0'
+-checkfunc d_wcsxfrm 'wcsxfrm'
+-checkfunc d_wctomb 'wctomb'
+-checkfunc d_writev 'writev'
++checkfunc d_vprintf 'vprintf' 'NULL,0' 'stdio.h'
++checkfunc d_vsnprintf 'vsnprintf' 'NULL,0,NULL,NULL' 'stdio.h'
++checkfunc d_wait4 'wait4' '0,NULL,0,NULL' 'sys/wait.h'
++checkfunc d_waitpid 'waitpid' '0,NULL,0' 'sys/wait.h'
++checkfunc d_wcrtomb 'wcrtomb' 'NULL,0,NULL' 'wchar.h'
++checkfunc d_wcscmp 'wcscmp' 'NULL,NULL' 'wchar.h'
++checkfunc d_wcstombs 'wcstombs' 'NULL,NULL,0' 'wchar.h'
++checkfunc d_wcsxfrm 'wcsxfrm' 'NULL,NULL,0' 'wchar.h'
++checkfunc d_wctomb 'wctomb' 'NULL,NULL' 'wchar.h'
++checkfunc d_writev 'writev' '0,NULL,0' 'sys/uio.h'
+ unset includes
diff --git a/meta/recipes-devtools/perl-cross/perlcross_1.4.bb b/meta/recipes-devtools/perl-cross/perlcross_1.4.bb
index 2704976e17..9b2889647f 100644
--- a/meta/recipes-devtools/perl-cross/perlcross_1.4.bb
+++ b/meta/recipes-devtools/perl-cross/perlcross_1.4.bb
@@ -17,6 +17,7 @@ SRC_URI = "https://github.com/arsv/perl-cross/releases/download/${PV}/perl-cross
file://0001-Makefile-check-the-file-if-patched-or-not.patch \
file://0001-Makefile-correctly-list-modules-when-cleaning-them.patch \
file://0001-Makefile-do-not-clean-config.h-xconfig.h.patch \
+ file://0001-configure_func.sh-Add-_GNU_SOURCE-define-and-functio.patch \
"
UPSTREAM_CHECK_URI = "https://github.com/arsv/perl-cross/releases/"