mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 02:44:18 +08:00
fixincludes: Declare memmem if it's not declared in system headers [PR109293]
memmem is not POSIX so the system may lack it. Then libiberty will provide an implementation, but it's a "supplemental function" and not declared in libiberty.h. We need to declare the prototype to use it then. See libiberty doc at https://gcc.gnu.org/onlinedocs/libiberty/Supplemental-Functions.html. Tested by bootstrapping GCC in the following container environments on x86_64-linux-gnu: 1. "Vanilla" system with memmem in Glibc. 2. memmem removed from string.h. 3. memmem removed from both string.h and libc.so. For 3, also verified that memmem from libiberty is linked into fixincl executable. Ok for trunk? fixincludes/ChangeLog: PR other/109293 * configure.ac (AC_CHECK_DECLS): Add memmem. * configure: Regenerate. * config.h.in: Regenerate. * system.h (memmem): Declare if HAVE_DECL_MEMMEM is zero.
This commit is contained in:
parent
33312336d5
commit
21c74b6ea4
@ -78,6 +78,10 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_GETC_UNLOCKED
|
||||
|
||||
/* Define to 1 if you have the declaration of `memmem', and to 0 if you don't.
|
||||
*/
|
||||
#undef HAVE_DECL_MEMMEM
|
||||
|
||||
/* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
|
||||
you don't. */
|
||||
#undef HAVE_DECL_PUTCHAR_UNLOCKED
|
||||
|
10
fixincludes/configure
vendored
10
fixincludes/configure
vendored
@ -5043,6 +5043,16 @@ fi
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_DECL_VASPRINTF $ac_have_decl
|
||||
_ACEOF
|
||||
ac_fn_c_check_decl "$LINENO" "memmem" "ac_cv_have_decl_memmem" "$ac_includes_default"
|
||||
if test "x$ac_cv_have_decl_memmem" = xyes; then :
|
||||
ac_have_decl=1
|
||||
else
|
||||
ac_have_decl=0
|
||||
fi
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_DECL_MEMMEM $ac_have_decl
|
||||
_ACEOF
|
||||
|
||||
ac_fn_c_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default"
|
||||
if test "x$ac_cv_have_decl_clearerr_unlocked" = xyes; then :
|
||||
|
@ -88,7 +88,7 @@ define(fixincludes_UNLOCKED_FUNCS, clearerr_unlocked feof_unlocked dnl
|
||||
fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
|
||||
putchar_unlocked putc_unlocked)
|
||||
AC_CHECK_FUNCS(fixincludes_UNLOCKED_FUNCS)
|
||||
AC_CHECK_DECLS([abort, asprintf, basename(char *), errno, vasprintf])
|
||||
AC_CHECK_DECLS([abort, asprintf, basename(char *), errno, vasprintf, memmem])
|
||||
AC_CHECK_DECLS(m4_split(m4_normalize(fixincludes_UNLOCKED_FUNCS)))
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
|
@ -209,6 +209,10 @@ extern int errno;
|
||||
extern void abort (void);
|
||||
#endif
|
||||
|
||||
#if defined (HAVE_DECL_MEMMEM) && !HAVE_DECL_MEMMEM
|
||||
extern void *memmem (const void *, size_t, const void *, size_t);
|
||||
#endif
|
||||
|
||||
#if HAVE_SYS_STAT_H
|
||||
# include <sys/stat.h>
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user