From: Trevor Saunders <tbsaunde+...@tbsaunde.org> Hi,
given the glibc man page claims this is in POSIX.1-2001 and SUv1, and none of the people testing on normally odd systems other than mingw have complained it doesn't seem terribly likely there's many other hosts where this is an issue, so I just did the minimal thing of not supporting clearing gcda files if the host doesn't provide ftw.h. Besides people can remove the gcda files themselves easily enough. bootstrapped on x86_64-unknown-linux-gnu, and checked compile / .ii files for both HAVE_FTW_H defined to 0 and 1, ok? Trev gcc/ PR gcov-profile/61889 * config.in: regenerate. * auto-host.h: Likewise. * configure.ac: Check for ftw.h. * gcov-tool.c: Check for ftw.h before using nftw. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f35e3c7..bb1ef0b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2015-01-29 Trevor Saunders <tsaund...@mozilla.com> + + PR gcov-profile/61889 + * config.in: regenerate. + * auto-host.h: Likewise. + * configure.ac: Check for ftw.h. + * gcov-tool.c: Check for ftw.h before using nftw. + 2015-01-25 Allan Sandfeld Jensen <sandf...@kde.org> Uros Bizjak <ubiz...@gmail.com> diff --git a/gcc/config.in b/gcc/config.in index f34adb5..7bde5b1 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -1098,6 +1098,12 @@ #endif +/* Define to 1 if you have the <ftw.h> header file. */ +#ifndef USED_FOR_TARGET +#undef HAVE_FTW_H +#endif + + /* Define to 1 if you have the `fwrite_unlocked' function. */ #ifndef USED_FOR_TARGET #undef HAVE_FWRITE_UNLOCKED diff --git a/gcc/configure b/gcc/configure index 1bf4358..1a35d5a 100755 --- a/gcc/configure +++ b/gcc/configure @@ -8448,7 +8448,7 @@ $as_echo "#define GWINSZ_IN_SYS_IOCTL 1" >>confdefs.h fi for ac_header in limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \ - fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \ + fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h do : diff --git a/gcc/configure.ac b/gcc/configure.ac index 102dab9..a553a65 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1028,7 +1028,7 @@ ACX_HEADER_STRING AC_HEADER_SYS_WAIT AC_HEADER_TIOCGWINSZ AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \ - fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \ + fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \ sys/resource.h sys/param.h sys/times.h sys/stat.h \ direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h) diff --git a/gcc/gcov-tool.c b/gcc/gcov-tool.c index 7de175f..36234d8 100644 --- a/gcc/gcov-tool.c +++ b/gcc/gcov-tool.c @@ -35,7 +35,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #include <stdio.h> #include <sys/stat.h> #include <unistd.h> +#if HAVE_FTW_H #include <ftw.h> +#endif #include <getopt.h> extern int gcov_profile_merge (struct gcov_info*, struct gcov_info*, int, int); @@ -49,6 +51,8 @@ extern void gcov_set_verbose (void); /* Set to verbose output mode. */ static bool verbose; +#if HAVE_FTW_H + /* Remove file NAME if it has a gcda suffix. */ static int @@ -69,13 +73,18 @@ unlink_gcda_file (const char *name, return ret; } +#endif /* Remove the gcda files in PATH recursively. */ static int -unlink_profile_dir (const char *path) +unlink_profile_dir (const char *path ATTRIBUTE_UNUSED) { +#if HAVE_FTW_H return nftw(path, unlink_gcda_file, 64, FTW_DEPTH | FTW_PHYS); +#else + return -1; +#endif } /* Output GCOV_INFO lists PROFILE to directory OUT. Note that -- 2.1.4