diff options
Diffstat (limited to 'gdb/gnulib/import/m4')
-rw-r--r-- | gdb/gnulib/import/m4/gnulib-cache.m4 | 3 | ||||
-rw-r--r-- | gdb/gnulib/import/m4/gnulib-comp.m4 | 9 | ||||
-rw-r--r-- | gdb/gnulib/import/m4/strtok_r.m4 | 74 |
3 files changed, 85 insertions, 1 deletions
diff --git a/gdb/gnulib/import/m4/gnulib-cache.m4 b/gdb/gnulib/import/m4/gnulib-cache.m4 index 7cc681ac603..959cdb68933 100644 --- a/gdb/gnulib/import/m4/gnulib-cache.m4 +++ b/gdb/gnulib/import/m4/gnulib-cache.m4 @@ -27,7 +27,7 @@ # Specification in the form of a command-line invocation: -# gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca canonicalize-lgpl dirent dirfd errno fnmatch-gnu frexpl inttypes lstat memchr memmem pathmax readlink rename strstr sys_stat unistd update-copyright wchar wctype-h +# gnulib-tool --import --dir=. --lib=libgnu --source-base=import --m4-base=import/m4 --doc-base=doc --tests-base=tests --aux-dir=import/extra --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca canonicalize-lgpl dirent dirfd errno fnmatch-gnu frexpl inttypes lstat memchr memmem pathmax readlink rename strstr strtok_r sys_stat unistd update-copyright wchar wctype-h # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([]) @@ -47,6 +47,7 @@ gl_MODULES([ readlink rename strstr + strtok_r sys_stat unistd update-copyright diff --git a/gdb/gnulib/import/m4/gnulib-comp.m4 b/gdb/gnulib/import/m4/gnulib-comp.m4 index f280cf2da94..29f8f7332c2 100644 --- a/gdb/gnulib/import/m4/gnulib-comp.m4 +++ b/gdb/gnulib/import/m4/gnulib-comp.m4 @@ -101,6 +101,7 @@ AC_DEFUN([gl_EARLY], # Code from module strnlen1: # Code from module strstr: # Code from module strstr-simple: + # Code from module strtok_r: # Code from module sys_stat: # Code from module sys_types: # Code from module time: @@ -278,6 +279,12 @@ AC_DEFUN([gl_INIT], AC_LIBOBJ([strstr]) fi gl_STRING_MODULE_INDICATOR([strstr]) + gl_FUNC_STRTOK_R + if test $HAVE_STRTOK_R = 0 || test $REPLACE_STRTOK_R = 1; then + AC_LIBOBJ([strtok_r]) + gl_PREREQ_STRTOK_R + fi + gl_STRING_MODULE_INDICATOR([strtok_r]) gl_HEADER_SYS_STAT_H AC_PROG_MKDIR_P gl_SYS_TYPES_H @@ -496,6 +503,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/strnlen1.c lib/strnlen1.h lib/strstr.c + lib/strtok_r.c lib/sys_stat.in.h lib/sys_types.in.h lib/time.in.h @@ -566,6 +574,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/stdlib_h.m4 m4/string_h.m4 m4/strstr.m4 + m4/strtok_r.m4 m4/sys_stat_h.m4 m4/sys_types_h.m4 m4/time_h.m4 diff --git a/gdb/gnulib/import/m4/strtok_r.m4 b/gdb/gnulib/import/m4/strtok_r.m4 new file mode 100644 index 00000000000..60e33a695f5 --- /dev/null +++ b/gdb/gnulib/import/m4/strtok_r.m4 @@ -0,0 +1,74 @@ +# strtok_r.m4 serial 13 +dnl Copyright (C) 2002-2004, 2006-2007, 2009-2012 Free Software Foundation, +dnl Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_STRTOK_R], +[ + dnl The strtok_r() declaration in lib/string.in.h uses 'restrict'. + AC_REQUIRE([AC_C_RESTRICT]) + + AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CHECK_FUNCS([strtok_r]) + if test $ac_cv_func_strtok_r = yes; then + HAVE_STRTOK_R=1 + dnl glibc 2.7 has a bug in strtok_r that causes a segmentation fault + dnl when the second argument to strtok_r is a constant string that has + dnl exactly one byte and compiling with optimization. This bug is, for + dnl example, present in the glibc 2.7-18 package in Debian "lenny". + dnl See <http://sources.redhat.com/bugzilla/show_bug.cgi?id=5614>. + AC_CACHE_CHECK([whether strtok_r works], [gl_cv_func_strtok_r_works], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[ + #ifndef __OPTIMIZE__ + # define __OPTIMIZE__ 1 + #endif + #undef __OPTIMIZE_SIZE__ + #undef __NO_INLINE__ + #include <stdlib.h> + #include <string.h> + ]], + [[static const char dummy[] = "\177\01a"; + char delimiters[] = "xxxxxxxx"; + char *save_ptr = (char *) dummy; + strtok_r (delimiters, "x", &save_ptr); + strtok_r (NULL, "x", &save_ptr); + return 0; + ]]) + ], + [gl_cv_func_strtok_r_works=yes], + [gl_cv_func_strtok_r_works=no], + [ +changequote(,)dnl + case "$host_os" in + # Guess no on glibc systems. + *-gnu*) gl_cv_func_strtok_r_works="guessing no";; + *) gl_cv_func_strtok_r_works="guessing yes";; + esac +changequote([,])dnl + ]) + ]) + case "$gl_cv_func_strtok_r_works" in + *no) + dnl We could set REPLACE_STRTOK_R=1 here, but it's only the macro + dnl version in <bits/string2.h> which is wrong. The code compiled + dnl into libc is fine. + UNDEFINE_STRTOK_R=1 + ;; + esac + else + HAVE_STRTOK_R=0 + fi + AC_CHECK_DECLS_ONCE([strtok_r]) + if test $ac_cv_have_decl_strtok_r = no; then + HAVE_DECL_STRTOK_R=0 + fi +]) + +# Prerequisites of lib/strtok_r.c. +AC_DEFUN([gl_PREREQ_STRTOK_R], [ + : +]) |