From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTP id 36C963857C43 for ; Sun, 23 Aug 2020 21:37:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 36C963857C43 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=brobecker@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 036F011712A; Sun, 23 Aug 2020 17:37:28 -0400 (EDT) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 2HvqI7qjV3WQ; Sun, 23 Aug 2020 17:37:27 -0400 (EDT) Received: from joel.gnat.com (localhost.localdomain [127.0.0.1]) by rock.gnat.com (Postfix) with ESMTP id 3293D117125; Sun, 23 Aug 2020 17:37:27 -0400 (EDT) Received: by joel.gnat.com (Postfix, from userid 1000) id 750FA8341B; Sun, 23 Aug 2020 14:37:25 -0700 (PDT) Date: Sun, 23 Aug 2020 14:37:25 -0700 From: Joel Brobecker To: Pedro Alves Cc: Christian Biesinger , gdb-patches Subject: Re: [PATCH] Update gnulib to current trunk Message-ID: <20200823213725.GA12645@adacore.com> References: <20200630184349.4009048-1-cbiesinger@google.com> <83h7upwxjl.fsf@gnu.org> <2d285f8f-57be-2d4f-ce7f-57afe65c6898@palves.net> <791b00ea-60f3-3e3f-8d67-dd017b46ad57@palves.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="wRRV7LY7NUeQGEoC" Content-Disposition: inline In-Reply-To: <791b00ea-60f3-3e3f-8d67-dd017b46ad57@palves.net> User-Agent: Mutt/1.9.4 (2018-02-28) X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LINEPADDING, KAM_SHORT, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Aug 2020 21:37:32 -0000 --wRRV7LY7NUeQGEoC Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Pedro, Christian seems to be busy these days, so I thought I could try to help get this one in. I'm going to quote the whole discussion below hoping this helps make it easier for you to remember the details of this thread. which is about updating gnulib to a newer version in order to bring in a change that Eli wants for support of mingw.org's version of MinGW. If we wanted a quick summary, my understanding is that following: After a closer inspection of the delta in terms of modules this update causes, we found that: - btowc gets added, for which you say that we should keep an eye on it wrt the logic in gdb/gdb_wchar.h, but I understand we should be OK for now; - We lose gettimeofday, and decided to add it. - We lose sys_time, and you suggested that the easiest is probably to accept that for now. I have taken Christian's patch, and rebased it (there was one conflict in gnulib/configure, which I resolved by regenerating it), and then modified it to add gettimeofday. As it happens, when doing that, we get sys_time back, as well as localtime-buffer too. So, even though we said we could wait and do nothing about it, the question becomes moot. Attached is the diff between Christian's patch (once rebased). I am attaching those even though this is not the patch I am proposing because it should allow everyone to see the actual effect of adding gettimeofday back, and see that the new version does bring what we want and only what we want. It's only a few files, but still rather large because of the files being added (back). So I made two versions: One with the new files being elided, and the second containing the full diff, but gziped. Hopefully that'll fit within the mailinglist's maximum email size. I will send the actuall full patch, which consists of Christian and my changes combined, with the ChangeLog updated accordingly, in a separate email, also in an effort to stay under the maximum email size limit. Does this look OK to you now? Thanks! > On 7/6/20 7:19 PM, Christian Biesinger wrote: > > Fair enough. This is the module diff: > > > > --- /tmp/old 2020-07-06 13:04:17.837482577 -0500 > > +++ /tmp/new 2020-07-06 13:02:48.636984706 -0500 > > @@ -1,9 +1,12 @@ > > +Module list with included dependencies (indented): > > absolute-header > > alloca > > alloca-opt > > arpa_inet > > assure > > at-internal > > + attribute > > + btowc > > I wonder whether "btowc" potentially conflicts with the logic > in gdb/gdb_wchar.h . We should keep an eye out for that. > > > > builtin-expect > > c99 > > canonicalize-lgpl > > @@ -13,12 +16,12 @@ > > close > > closedir > > count-one-bits > > + ctype > > d-ino > > d-type > > dirent > > dirfd > > dirname-lgpl > > - dosname > > double-slash-root > > dup > > dup2 > > @@ -52,8 +55,8 @@ > > getdtablesize > > getlogin_r > > getprogname > > + getrandom > > gettext-h > > - gettimeofday > > glob > > glob-h > > hard-locale > > @@ -62,6 +65,7 @@ > > intprops > > inttypes > > inttypes-incomplete > > + isblank > > isnand-nolibm > > isnanl-nolibm > > largefile > > @@ -69,7 +73,6 @@ > > limits-h > > localcharset > > locale > > - localtime-buffer > > lock > > lstat > > malloc-posix > > @@ -78,11 +81,13 @@ > > mbrtowc > > mbsinit > > mbsrtowcs > > + mbtowc > > memchr > > memmem > > memmem-simple > > mempcpy > > memrchr > > + minmax > > mkdir > > mkdtemp > > mkostemp > > @@ -132,13 +137,14 @@ > > strerror-override > > strerror_r-posix > > string > > + strnlen > > strnlen1 > > strstr > > strstr-simple > > strtok_r > > + sys_random > > sys_socket > > sys_stat > > - sys_time > > sys_types > > sys_uio > > tempname > > @@ -156,5 +162,7 @@ > > windows-once > > windows-recmutex > > windows-rwlock > > + wmemchr > > + wmempcpy > > xalloc-oversized > > > > It seems what is getting removed is: > > - dosname (deprecated module and we don't use dosname.h) > > - gettimeofday (it looks like we use this in remote-fileio.c) > > - localtime-buffer (looks like basically an implementation detail) > > - sys_time (looks like GDB specifically did *not* want this per > > comments in gdbsupport/gdb_sys_time.h) > > > > So: > > - For gettimeofday, the fixes in > > https://www.gnu.org/software/gnulib/manual/html_node/gettimeofday.html#gettimeofday > > don't look that important for gdb, but we could include the module. > > Let me know if you want me to. > > I guess it doesn't hurt to explicitly include it. Might as well do it, > since we use the function and have been using the module thus far. > > > > > - For sys_time, we could perhaps replace the #undef in gdb_sys_time.h > > with an #error. Let me know. > > I suspect this gnulib commit is what caused gettimeofday and sys_time to > drop for us: > > commit 78f55d5374d6ff9b8460c48a42e924bf69775cd7 > Author: Paul Eggert > AuthorDate: Sun May 31 20:15:25 2020 -0700 > > tempname: merge from glibc and coreutils > ... > * modules/tempname (Depends-on): Remove gettimeofday, sys_time. > Add getentropy, libc-config. > > As we can see from your diff: > > > sys_stat > > - sys_time > > sys_types > > sys_uio > > tempname > > tempname is a dependency of sys_stat. > > Another option would be to just get rid of gdb_sys_time.h, > i.e., revert all or most of: > > commit 438e1e427e8393de73d22617abe4d8eba0270e72 > Author: Pedro Alves > AuthorDate: Mon Aug 24 18:50:55 2015 +0100 > > Prepare for gnulib update > > But I'd be fine with just leaving this alone for now, in case > gnulib brings back the dependency. It's also the easiest thing to > do (i.e., do nothing). > > Thanks, > Pedro Alves -- Joel --wRRV7LY7NUeQGEoC Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="cbiesinger-v2-after-pedro-comments-summarized.diff" diff --git a/gnulib/Makefile.in b/gnulib/Makefile.in index 0e0ebb2a6d1..bdd3c3f3fbc 100644 --- a/gnulib/Makefile.in +++ b/gnulib/Makefile.in @@ -164,6 +164,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/import/m4/getpagesize.m4 \ $(top_srcdir)/import/m4/getprogname.m4 \ $(top_srcdir)/import/m4/getrandom.m4 \ + $(top_srcdir)/import/m4/gettimeofday.m4 \ $(top_srcdir)/import/m4/glob.m4 \ $(top_srcdir)/import/m4/glob_h.m4 \ $(top_srcdir)/import/m4/gnulib-common.m4 \ @@ -182,6 +183,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/import/m4/locale-ja.m4 \ $(top_srcdir)/import/m4/locale-zh.m4 \ $(top_srcdir)/import/m4/locale_h.m4 \ + $(top_srcdir)/import/m4/localtime-buffer.m4 \ $(top_srcdir)/import/m4/lock.m4 \ $(top_srcdir)/import/m4/lstat.m4 \ $(top_srcdir)/import/m4/malloc.m4 \ @@ -249,6 +251,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/import/m4/sys_random_h.m4 \ $(top_srcdir)/import/m4/sys_socket_h.m4 \ $(top_srcdir)/import/m4/sys_stat_h.m4 \ + $(top_srcdir)/import/m4/sys_time_h.m4 \ $(top_srcdir)/import/m4/sys_types_h.m4 \ $(top_srcdir)/import/m4/sys_uio_h.m4 \ $(top_srcdir)/import/m4/tempname.m4 \ @@ -926,6 +929,7 @@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GLOB = @HAVE_GLOB@ HAVE_GLOB_H = @HAVE_GLOB_H@ HAVE_GLOB_PATTERN_P = @HAVE_GLOB_PATTERN_P@ @@ -1055,6 +1059,7 @@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@ HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ @@ -1064,6 +1069,7 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_SYS_UIO_H = @HAVE_SYS_UIO_H@ HAVE_TANF = @HAVE_TANF@ @@ -1191,6 +1197,7 @@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ @@ -1218,6 +1225,7 @@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_UIO_H = @NEXT_SYS_UIO_H@ NEXT_TIME_H = @NEXT_TIME_H@ @@ -1317,6 +1325,7 @@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GLOB = @REPLACE_GLOB@ REPLACE_GLOB_PATTERN_P = @REPLACE_GLOB_PATTERN_P@ REPLACE_GMTIME = @REPLACE_GMTIME@ @@ -1451,6 +1460,7 @@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ diff --git a/gnulib/aclocal.m4 b/gnulib/aclocal.m4 index dd04373848d..af6abc1542f 100644 --- a/gnulib/aclocal.m4 +++ b/gnulib/aclocal.m4 @@ -1237,6 +1237,7 @@ m4_include([import/m4/getlogin_r.m4]) m4_include([import/m4/getpagesize.m4]) m4_include([import/m4/getprogname.m4]) m4_include([import/m4/getrandom.m4]) +m4_include([import/m4/gettimeofday.m4]) m4_include([import/m4/glob.m4]) m4_include([import/m4/glob_h.m4]) m4_include([import/m4/gnulib-common.m4]) @@ -1255,6 +1256,7 @@ m4_include([import/m4/locale-fr.m4]) m4_include([import/m4/locale-ja.m4]) m4_include([import/m4/locale-zh.m4]) m4_include([import/m4/locale_h.m4]) +m4_include([import/m4/localtime-buffer.m4]) m4_include([import/m4/lock.m4]) m4_include([import/m4/lstat.m4]) m4_include([import/m4/malloc.m4]) @@ -1322,6 +1324,7 @@ m4_include([import/m4/strtok_r.m4]) m4_include([import/m4/sys_random_h.m4]) m4_include([import/m4/sys_socket_h.m4]) m4_include([import/m4/sys_stat_h.m4]) +m4_include([import/m4/sys_time_h.m4]) m4_include([import/m4/sys_types_h.m4]) m4_include([import/m4/sys_uio_h.m4]) m4_include([import/m4/tempname.m4]) diff --git a/gnulib/config.in b/gnulib/config.in index 8d32022a301..4a20b470fb2 100644 --- a/gnulib/config.in +++ b/gnulib/config.in @@ -67,6 +67,13 @@ and handles trailing slash correctly. */ #undef FUNC_REALPATH_WORKS +/* Define if gettimeofday clobbers the localtime buffer. */ +#undef GETTIMEOFDAY_CLOBBERS_LOCALTIME + +/* Define this to 'void' or 'struct timezone' to match the system's + declaration of the second argument to gettimeofday. */ +#undef GETTIMEOFDAY_TIMEZONE + /* Define to a C preprocessor expression that evaluates to 1 or 0, depending whether the gnulib module canonicalize-lgpl shall be considered present. */ #undef GNULIB_CANONICALIZE_LGPL @@ -194,6 +201,9 @@ /* Define to 1 when the gnulib module getrandom should be tested. */ #undef GNULIB_TEST_GETRANDOM +/* Define to 1 when the gnulib module gettimeofday should be tested. */ +#undef GNULIB_TEST_GETTIMEOFDAY + /* Define to 1 when the gnulib module glob should be tested. */ #undef GNULIB_TEST_GLOB @@ -510,6 +520,9 @@ /* Define to 1 if you have the `getrandom' function. */ #undef HAVE_GETRANDOM +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + /* Define to 1 if you have the `glob' function. */ #undef HAVE_GLOB diff --git a/gnulib/configure b/gnulib/configure index 917aba28d46..fa2feb5ea9a 100644 --- a/gnulib/configure +++ b/gnulib/configure @@ -704,32 +704,6 @@ SYS_TIME_H_DEFINES_STRUCT_TIMESPEC TIME_H_DEFINES_STRUCT_TIMESPEC NEXT_AS_FIRST_DIRECTIVE_TIME_H NEXT_TIME_H -REPLACE_LOCALTIME -REPLACE_GMTIME -GNULIB_GETTIMEOFDAY -REPLACE_TZSET -REPLACE_TIMEGM -REPLACE_STRFTIME -REPLACE_NANOSLEEP -REPLACE_MKTIME -REPLACE_LOCALTIME_R -REPLACE_CTIME -HAVE_TIMEZONE_T -HAVE_TZSET -HAVE_TIMEGM -HAVE_STRPTIME -HAVE_NANOSLEEP -HAVE_DECL_LOCALTIME_R -GNULIB_TZSET -GNULIB_TIME_RZ -GNULIB_TIME_R -GNULIB_TIMEGM -GNULIB_STRPTIME -GNULIB_STRFTIME -GNULIB_NANOSLEEP -GNULIB_LOCALTIME -GNULIB_MKTIME -GNULIB_CTIME HAVE_SYS_UIO_H NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H NEXT_SYS_UIO_H @@ -1082,6 +1056,39 @@ REPLACE_GLOB HAVE_GLOB_PATTERN_P HAVE_GLOB GNULIB_GLOB +REPLACE_LOCALTIME +REPLACE_GMTIME +REPLACE_TZSET +REPLACE_TIMEGM +REPLACE_STRFTIME +REPLACE_NANOSLEEP +REPLACE_MKTIME +REPLACE_LOCALTIME_R +REPLACE_CTIME +HAVE_TIMEZONE_T +HAVE_TZSET +HAVE_TIMEGM +HAVE_STRPTIME +HAVE_NANOSLEEP +HAVE_DECL_LOCALTIME_R +GNULIB_TZSET +GNULIB_TIME_RZ +GNULIB_TIME_R +GNULIB_TIMEGM +GNULIB_STRPTIME +GNULIB_STRFTIME +GNULIB_NANOSLEEP +GNULIB_LOCALTIME +GNULIB_MKTIME +GNULIB_CTIME +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H +NEXT_SYS_TIME_H +REPLACE_STRUCT_TIMEVAL +REPLACE_GETTIMEOFDAY +HAVE_SYS_TIME_H +HAVE_STRUCT_TIMEVAL +HAVE_GETTIMEOFDAY +GNULIB_GETTIMEOFDAY LTLIBINTL LIBINTL LIB_GETRANDOM @@ -3639,6 +3646,8 @@ as_fn_append ac_func_list " getlogin_r" as_fn_append ac_func_list " getprogname" as_fn_append ac_func_list " getexecname" as_fn_append ac_func_list " getrandom" +as_fn_append ac_header_list " sys/time.h" +as_fn_append ac_func_list " gettimeofday" as_fn_append ac_header_list " glob.h" as_fn_append ac_func_list " glob" as_fn_append ac_func_list " glob_pattern_p" @@ -3662,7 +3671,6 @@ as_fn_append ac_func_list " mkostemp" as_fn_append ac_func_list " openat" as_fn_append ac_func_list " link" as_fn_append ac_func_list " setenv" -as_fn_append ac_header_list " sys/time.h" as_fn_append ac_func_list " strdup" as_fn_append ac_func_list " strerror_r" as_fn_append ac_func_list " __xpg_strerror_r" @@ -6599,6 +6607,7 @@ fi # Code from module getprogname: # Code from module getrandom: # Code from module gettext-h: + # Code from module gettimeofday: # Code from module glob: # Code from module glob-h: # Code from module hard-locale: @@ -6616,6 +6625,7 @@ fi # Code from module limits-h: # Code from module localcharset: # Code from module locale: + # Code from module localtime-buffer: # Code from module lock: # Code from module lstat: # Code from module malloc-posix: @@ -6688,6 +6698,7 @@ fi # Code from module sys_random: # Code from module sys_socket: # Code from module sys_stat: + # Code from module sys_time: # Code from module sys_types: # Code from module sys_uio: # Code from module tempname: @@ -10342,6 +10353,249 @@ _ACEOF + GNULIB_GETTIMEOFDAY=0; + HAVE_GETTIMEOFDAY=1; + HAVE_STRUCT_TIMEVAL=1; + HAVE_SYS_TIME_H=1; + REPLACE_GETTIMEOFDAY=0; + REPLACE_STRUCT_TIMEVAL=0; + + + + + + + + + + + + + + + + + if test $gl_cv_have_include_next = yes; then + gl_cv_next_sys_time_h='<'sys/time.h'>' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of " >&5 +$as_echo_n "checking absolute name of ... " >&6; } +if ${gl_cv_next_sys_time_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test $ac_cv_header_sys_time_h = yes; then + + + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF + case "$host_os" in + aix*) gl_absname_cpp="$ac_cpp -C" ;; + *) gl_absname_cpp="$ac_cpp" ;; + esac + + case "$host_os" in + mingw*) + gl_dirsep_regex='[/\\]' + ;; + *) + gl_dirsep_regex='\/' + ;; + esac + gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' + gl_header_literal_regex=`echo 'sys/time.h' \ + | sed -e "$gl_make_literal_regex_sed"` + gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ + s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ + s|^/[^/]|//&| + p + q + }' + + gl_cv_absolute_sys_time_h=`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 | + sed -n "$gl_absolute_header_sed"` + + gl_header=$gl_cv_absolute_sys_time_h + gl_cv_next_sys_time_h='"'$gl_header'"' + else + gl_cv_next_sys_time_h='<'sys/time.h'>' + fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_time_h" >&5 +$as_echo "$gl_cv_next_sys_time_h" >&6; } + fi + NEXT_SYS_TIME_H=$gl_cv_next_sys_time_h + + if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' + gl_next_as_first_directive='<'sys/time.h'>' + else + # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' + gl_next_as_first_directive=$gl_cv_next_sys_time_h + fi + NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H=$gl_next_as_first_directive + + + + + + if test $ac_cv_header_sys_time_h != yes; then + HAVE_SYS_TIME_H=0 + fi + + + + + + if test $ac_cv_header_sys_socket_h != yes; then + for ac_header in winsock2.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" +if test "x$ac_cv_header_winsock2_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_WINSOCK2_H 1 +_ACEOF + +fi + +done + + fi + if test "$ac_cv_header_winsock2_h" = yes; then + HAVE_WINSOCK2_H=1 + UNISTD_H_HAVE_WINSOCK2_H=1 + SYS_IOCTL_H_HAVE_WINSOCK2_H=1 + else + HAVE_WINSOCK2_H=0 + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5 +$as_echo_n "checking for struct timeval... " >&6; } +if ${gl_cv_sys_struct_timeval+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if HAVE_SYS_TIME_H + #include + #endif + #include + #if HAVE_WINSOCK2_H + # include + #endif + +int +main () +{ +static struct timeval x; x.tv_sec = x.tv_usec; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_sys_struct_timeval=yes +else + gl_cv_sys_struct_timeval=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval" >&5 +$as_echo "$gl_cv_sys_struct_timeval" >&6; } + if test $gl_cv_sys_struct_timeval != yes; then + HAVE_STRUCT_TIMEVAL=0 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wide-enough struct timeval.tv_sec member" >&5 +$as_echo_n "checking for wide-enough struct timeval.tv_sec member... " >&6; } +if ${gl_cv_sys_struct_timeval_tv_sec+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if HAVE_SYS_TIME_H + #include + #endif + #include + #if HAVE_WINSOCK2_H + # include + #endif + +int +main () +{ +static struct timeval x; + typedef int verify_tv_sec_type[ + sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1 + ]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_sys_struct_timeval_tv_sec=yes +else + gl_cv_sys_struct_timeval_tv_sec=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_sys_struct_timeval_tv_sec" >&5 +$as_echo "$gl_cv_sys_struct_timeval_tv_sec" >&6; } + if test $gl_cv_sys_struct_timeval_tv_sec != yes; then + REPLACE_STRUCT_TIMEVAL=1 + fi + fi + + + + + + + + + + + + NEED_LOCALTIME_BUFFER=0 + + + GNULIB_CTIME=0; + GNULIB_MKTIME=0; + GNULIB_LOCALTIME=0; + GNULIB_NANOSLEEP=0; + GNULIB_STRFTIME=0; + GNULIB_STRPTIME=0; + GNULIB_TIMEGM=0; + GNULIB_TIME_R=0; + GNULIB_TIME_RZ=0; + GNULIB_TZSET=0; + HAVE_DECL_LOCALTIME_R=1; + HAVE_NANOSLEEP=1; + HAVE_STRPTIME=1; + HAVE_TIMEGM=1; + HAVE_TZSET=1; + HAVE_TIMEZONE_T=0; + REPLACE_CTIME=GNULIB_PORTCHECK; + REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; + REPLACE_MKTIME=GNULIB_PORTCHECK; + REPLACE_NANOSLEEP=GNULIB_PORTCHECK; + REPLACE_STRFTIME=GNULIB_PORTCHECK; + REPLACE_TIMEGM=GNULIB_PORTCHECK; + REPLACE_TZSET=GNULIB_PORTCHECK; + + : ${GNULIB_GETTIMEOFDAY=0}; + REPLACE_GMTIME=0; + REPLACE_LOCALTIME=0; + + GNULIB_GLOB=0; HAVE_GLOB=1; HAVE_GLOB_PATTERN_P=1; @@ -15796,8 +16050,6 @@ $as_echo "#define gid_t int" >>confdefs.h fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : @@ -16445,35 +16697,6 @@ $as_echo "$gl_cv_next_sys_types_h" >&6; } - GNULIB_CTIME=0; - GNULIB_MKTIME=0; - GNULIB_LOCALTIME=0; - GNULIB_NANOSLEEP=0; - GNULIB_STRFTIME=0; - GNULIB_STRPTIME=0; - GNULIB_TIMEGM=0; - GNULIB_TIME_R=0; - GNULIB_TIME_RZ=0; - GNULIB_TZSET=0; - HAVE_DECL_LOCALTIME_R=1; - HAVE_NANOSLEEP=1; - HAVE_STRPTIME=1; - HAVE_TIMEGM=1; - HAVE_TZSET=1; - HAVE_TIMEZONE_T=0; - REPLACE_CTIME=GNULIB_PORTCHECK; - REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; - REPLACE_MKTIME=GNULIB_PORTCHECK; - REPLACE_NANOSLEEP=GNULIB_PORTCHECK; - REPLACE_STRFTIME=GNULIB_PORTCHECK; - REPLACE_TIMEGM=GNULIB_PORTCHECK; - REPLACE_TZSET=GNULIB_PORTCHECK; - - : ${GNULIB_GETTIMEOFDAY=0}; - REPLACE_GMTIME=0; - REPLACE_LOCALTIME=0; - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for struct timespec in " >&5 $as_echo_n "checking for struct timespec in ... " >&6; } @@ -20481,6 +20704,194 @@ $as_echo "#define GNULIB_TEST_GETRANDOM 1" >>confdefs.h + + + + gl_gettimeofday_timezone=void + if test $ac_cv_func_gettimeofday != yes; then + HAVE_GETTIMEOFDAY=0 + else + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether gettimeofday clobbers localtime buffer" >&5 +$as_echo_n "checking whether gettimeofday clobbers localtime buffer... " >&6; } +if ${gl_cv_func_gettimeofday_clobber+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + # When cross-compiling: + case "$host_os" in + # Guess all is fine on glibc systems. + *-gnu* | gnu*) gl_cv_func_gettimeofday_clobber="guessing no" ;; + # Guess all is fine on musl systems. + *-musl*) gl_cv_func_gettimeofday_clobber="guessing no" ;; + # Guess no on native Windows. + mingw*) gl_cv_func_gettimeofday_clobber="guessing no" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_gettimeofday_clobber="$gl_cross_guess_inverted" ;; + esac + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main () +{ + + time_t t = 0; + struct tm *lt; + struct tm saved_lt; + struct timeval tv; + lt = localtime (&t); + saved_lt = *lt; + gettimeofday (&tv, NULL); + return memcmp (lt, &saved_lt, sizeof (struct tm)) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + gl_cv_func_gettimeofday_clobber=no +else + gl_cv_func_gettimeofday_clobber=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_clobber" >&5 +$as_echo "$gl_cv_func_gettimeofday_clobber" >&6; } + + case "$gl_cv_func_gettimeofday_clobber" in + *yes) + REPLACE_GETTIMEOFDAY=1 + +$as_echo "#define GETTIMEOFDAY_CLOBBERS_LOCALTIME 1" >>confdefs.h + + + + + NEED_LOCALTIME_BUFFER=1 + REPLACE_GMTIME=1 + REPLACE_LOCALTIME=1 + + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettimeofday with POSIX signature" >&5 +$as_echo_n "checking for gettimeofday with POSIX signature... " >&6; } +if ${gl_cv_func_gettimeofday_posix_signature+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + struct timeval c; + int gettimeofday (struct timeval *restrict, void *restrict); + +int +main () +{ +/* glibc uses struct timezone * rather than the POSIX void * + if _GNU_SOURCE is defined. However, since the only portable + use of gettimeofday uses NULL as the second parameter, and + since the glibc definition is actually more typesafe, it is + not worth wrapping this to get a compliant signature. */ + int (*f) (struct timeval *restrict, void *restrict) + = gettimeofday; + int x = f (&c, 0); + return !(x | c.tv_sec | c.tv_usec); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func_gettimeofday_posix_signature=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int gettimeofday (struct timeval *restrict, struct timezone *restrict); + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gl_cv_func_gettimeofday_posix_signature=almost +else + gl_cv_func_gettimeofday_posix_signature=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_gettimeofday_posix_signature" >&5 +$as_echo "$gl_cv_func_gettimeofday_posix_signature" >&6; } + if test $gl_cv_func_gettimeofday_posix_signature = almost; then + gl_gettimeofday_timezone='struct timezone' + elif test $gl_cv_func_gettimeofday_posix_signature != yes; then + REPLACE_GETTIMEOFDAY=1 + fi + if test $REPLACE_STRUCT_TIMEVAL = 1; then + REPLACE_GETTIMEOFDAY=1 + fi + case "$host_os" in + mingw*) REPLACE_GETTIMEOFDAY=1 ;; + esac + fi + +cat >>confdefs.h <<_ACEOF +#define GETTIMEOFDAY_TIMEZONE $gl_gettimeofday_timezone +_ACEOF + + + if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then + + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS gettimeofday.$ac_objext" + + : + fi + + + + + + GNULIB_GETTIMEOFDAY=1 + + + + + +$as_echo "#define GNULIB_TEST_GETTIMEOFDAY 1" >>confdefs.h + + + + + + + if test $ac_cv_func_glob = no; then HAVE_GLOB=0 else @@ -21773,6 +22184,17 @@ $as_echo "$gl_cv_next_locale_h" >&6; } + + + + + + + + gl_LIBOBJS="$gl_LIBOBJS localtime-buffer.$ac_objext" + + + if test "$gl_threads_api" = posix; then # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the # pthread_rwlock_* functions. @@ -28272,6 +28694,10 @@ fi + + + + diff --git a/gnulib/import/Makefile.am b/gnulib/import/Makefile.am index 8e9c05c2681..84de424a173 100644 --- a/gnulib/import/Makefile.am +++ b/gnulib/import/Makefile.am @@ -42,6 +42,7 @@ # fnmatch-gnu \ # frexpl \ # getcwd \ +# gettimeofday \ # glob \ # inet_ntop \ # inttypes \ @@ -693,6 +694,15 @@ libgnu_a_SOURCES += gettext.h ## end gnulib module gettext-h +## begin gnulib module gettimeofday + + +EXTRA_DIST += gettimeofday.c + +EXTRA_libgnu_a_SOURCES += gettimeofday.c + +## end gnulib module gettimeofday + ## begin gnulib module glob @@ -917,6 +927,15 @@ EXTRA_DIST += locale.in.h ## end gnulib module locale +## begin gnulib module localtime-buffer + + +EXTRA_DIST += localtime-buffer.c localtime-buffer.h + +EXTRA_libgnu_a_SOURCES += localtime-buffer.c + +## end gnulib module localtime-buffer + ## begin gnulib module lock libgnu_a_SOURCES += glthread/lock.h glthread/lock.c @@ -2372,6 +2391,40 @@ EXTRA_DIST += sys_stat.in.h ## end gnulib module sys_stat +## begin gnulib module sys_time + +BUILT_SOURCES += sys/time.h + +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) + $(AM_V_at)$(MKDIR_P) sys + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ + -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ + -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ + -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ + -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ + -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ + -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/sys_time.in.h; \ + } > $@-t && \ + mv $@-t $@ +MOSTLYCLEANFILES += sys/time.h sys/time.h-t + +EXTRA_DIST += sys_time.in.h + +## end gnulib module sys_time + ## begin gnulib module sys_types BUILT_SOURCES += sys/types.h diff --git a/gnulib/import/Makefile.in b/gnulib/import/Makefile.in index 8162d3a26fa..476cde8dd57 100644 --- a/gnulib/import/Makefile.in +++ b/gnulib/import/Makefile.in @@ -56,6 +56,7 @@ # fnmatch-gnu \ # frexpl \ # getcwd \ +# gettimeofday \ # glob \ # inet_ntop \ # inttypes \ @@ -220,6 +221,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/import/m4/getpagesize.m4 \ $(top_srcdir)/import/m4/getprogname.m4 \ $(top_srcdir)/import/m4/getrandom.m4 \ + $(top_srcdir)/import/m4/gettimeofday.m4 \ $(top_srcdir)/import/m4/glob.m4 \ $(top_srcdir)/import/m4/glob_h.m4 \ $(top_srcdir)/import/m4/gnulib-common.m4 \ @@ -238,6 +240,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/import/m4/locale-ja.m4 \ $(top_srcdir)/import/m4/locale-zh.m4 \ $(top_srcdir)/import/m4/locale_h.m4 \ + $(top_srcdir)/import/m4/localtime-buffer.m4 \ $(top_srcdir)/import/m4/lock.m4 \ $(top_srcdir)/import/m4/lstat.m4 \ $(top_srcdir)/import/m4/malloc.m4 \ @@ -305,6 +308,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/import/m4/sys_random_h.m4 \ $(top_srcdir)/import/m4/sys_socket_h.m4 \ $(top_srcdir)/import/m4/sys_stat_h.m4 \ + $(top_srcdir)/import/m4/sys_time_h.m4 \ $(top_srcdir)/import/m4/sys_types_h.m4 \ $(top_srcdir)/import/m4/sys_uio_h.m4 \ $(top_srcdir)/import/m4/tempname.m4 \ @@ -1019,6 +1023,7 @@ HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ HAVE_GETPASS = @HAVE_GETPASS@ HAVE_GETRANDOM = @HAVE_GETRANDOM@ HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ HAVE_GLOB = @HAVE_GLOB@ HAVE_GLOB_H = @HAVE_GLOB_H@ HAVE_GLOB_PATTERN_P = @HAVE_GLOB_PATTERN_P@ @@ -1148,6 +1153,7 @@ HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ HAVE_STRUCT_SIGACTION_SA_SIGACTION = @HAVE_STRUCT_SIGACTION_SA_SIGACTION@ HAVE_STRUCT_SOCKADDR_STORAGE = @HAVE_STRUCT_SOCKADDR_STORAGE@ HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = @HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ HAVE_SYMLINK = @HAVE_SYMLINK@ HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ @@ -1157,6 +1163,7 @@ HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ HAVE_SYS_RANDOM_H = @HAVE_SYS_RANDOM_H@ HAVE_SYS_SOCKET_H = @HAVE_SYS_SOCKET_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ HAVE_SYS_UIO_H = @HAVE_SYS_UIO_H@ HAVE_TANF = @HAVE_TANF@ @@ -1284,6 +1291,7 @@ NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_RANDOM_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_SOCKET_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_UIO_H@ NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ @@ -1311,6 +1319,7 @@ NEXT_STRING_H = @NEXT_STRING_H@ NEXT_SYS_RANDOM_H = @NEXT_SYS_RANDOM_H@ NEXT_SYS_SOCKET_H = @NEXT_SYS_SOCKET_H@ NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ NEXT_SYS_UIO_H = @NEXT_SYS_UIO_H@ NEXT_TIME_H = @NEXT_TIME_H@ @@ -1410,6 +1419,7 @@ REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ REPLACE_GETPASS = @REPLACE_GETPASS@ REPLACE_GETRANDOM = @REPLACE_GETRANDOM@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ REPLACE_GLOB = @REPLACE_GLOB@ REPLACE_GLOB_PATTERN_P = @REPLACE_GLOB_PATTERN_P@ REPLACE_GMTIME = @REPLACE_GMTIME@ @@ -1544,6 +1554,7 @@ REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ REPLACE_STRTOLD = @REPLACE_STRTOLD@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@ REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ REPLACE_SYMLINK = @REPLACE_SYMLINK@ REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@ REPLACE_TANF = @REPLACE_TANF@ @@ -1678,33 +1689,34 @@ EXTRA_DIST = m4/gnulib-cache.m4 alloca.c alloca.in.h arpa_inet.in.h \ fnmatch.c fnmatch_loop.c fnmatch.in.h fpucw.h frexp.c frexp.c \ frexpl.c fstat.c stat-w32.c stat-w32.h at-func.c fstatat.c \ getcwd.c getcwd-lgpl.c getdtablesize.c getlogin_r.c \ - getrandom.c glob.c glob_internal.h glob_pattern_p.c globfree.c \ - glob-libc.h glob.in.h hard-locale.h inet_ntop.c intprops.h \ - inttypes.in.h isblank.c float+.h isnan.c isnand-nolibm.h \ - isnand.c float+.h isnan.c isnanl-nolibm.h isnanl.c cdefs.h \ - libc-config.h limits.in.h localcharset.h locale.in.h lstat.c \ - malloc.c malloca.h math.in.h lc-charset-dispatch.c \ - lc-charset-dispatch.h mbrtowc-impl-utf8.h mbrtowc-impl.h \ - mbrtowc.c mbtowc-lock.c mbtowc-lock.h windows-initguard.h \ - mbsinit.c mbsrtowcs-impl.h mbsrtowcs-state.c mbsrtowcs.c \ - mbtowc-impl.h mbtowc.c memchr.c memchr.valgrind memmem.c \ - str-two-way.h mempcpy.c memrchr.c mkdir.c mkdtemp.c mkostemp.c \ - msvc-inval.c msvc-inval.h msvc-nothrow.c msvc-nothrow.h \ - netinet_in.in.h open.c openat.c openat.h dirent-private.h \ - opendir.c pathmax.h rawmemchr.c rawmemchr.valgrind \ - dirent-private.h readdir.c readlink.c realloc.c rename.c \ - dirent-private.h rewinddir.c rmdir.c same-inode.h save-cwd.h \ - malloc/scratch_buffer.h scratch_buffer.h setenv.c \ - setlocale-lock.c setlocale_null.h windows-initguard.h \ - signal.in.h _Noreturn.h arg-nonnull.h c++defs.h warn-on-use.h \ - stat-w32.c stat-w32.h stat.c stat-time.h stdalign.in.h \ - stdbool.in.h stddef.in.h stdint.in.h stdio.in.h stdlib.in.h \ - strchrnul.c strchrnul.valgrind strdup.c streq.h strerror.c \ - strerror-override.c strerror-override.h strerror_r.c \ - string.in.h strnlen.c str-two-way.h strstr.c strtok_r.c \ - sys_random.in.h sys_socket.in.h sys_stat.in.h sys_types.in.h \ - sys_uio.in.h tempname.h time.in.h time_r.c unistd.in.h \ - unistd--.h unistd-safer.h unsetenv.c \ + getrandom.c gettimeofday.c glob.c glob_internal.h \ + glob_pattern_p.c globfree.c glob-libc.h glob.in.h \ + hard-locale.h inet_ntop.c intprops.h inttypes.in.h isblank.c \ + float+.h isnan.c isnand-nolibm.h isnand.c float+.h isnan.c \ + isnanl-nolibm.h isnanl.c cdefs.h libc-config.h limits.in.h \ + localcharset.h locale.in.h localtime-buffer.c \ + localtime-buffer.h lstat.c malloc.c malloca.h math.in.h \ + lc-charset-dispatch.c lc-charset-dispatch.h \ + mbrtowc-impl-utf8.h mbrtowc-impl.h mbrtowc.c mbtowc-lock.c \ + mbtowc-lock.h windows-initguard.h mbsinit.c mbsrtowcs-impl.h \ + mbsrtowcs-state.c mbsrtowcs.c mbtowc-impl.h mbtowc.c memchr.c \ + memchr.valgrind memmem.c str-two-way.h mempcpy.c memrchr.c \ + mkdir.c mkdtemp.c mkostemp.c msvc-inval.c msvc-inval.h \ + msvc-nothrow.c msvc-nothrow.h netinet_in.in.h open.c openat.c \ + openat.h dirent-private.h opendir.c pathmax.h rawmemchr.c \ + rawmemchr.valgrind dirent-private.h readdir.c readlink.c \ + realloc.c rename.c dirent-private.h rewinddir.c rmdir.c \ + same-inode.h save-cwd.h malloc/scratch_buffer.h \ + scratch_buffer.h setenv.c setlocale-lock.c setlocale_null.h \ + windows-initguard.h signal.in.h _Noreturn.h arg-nonnull.h \ + c++defs.h warn-on-use.h stat-w32.c stat-w32.h stat.c \ + stat-time.h stdalign.in.h stdbool.in.h stddef.in.h stdint.in.h \ + stdio.in.h stdlib.in.h strchrnul.c strchrnul.valgrind strdup.c \ + streq.h strerror.c strerror-override.c strerror-override.h \ + strerror_r.c string.in.h strnlen.c str-two-way.h strstr.c \ + strtok_r.c sys_random.in.h sys_socket.in.h sys_stat.in.h \ + sys_time.in.h sys_types.in.h sys_uio.in.h tempname.h time.in.h \ + time_r.c unistd.in.h unistd--.h unistd-safer.h unsetenv.c \ $(top_srcdir)/import/extra/update-copyright verify.h \ wchar.in.h wctype.in.h windows-initguard.h windows-mutex.c \ windows-mutex.h windows-once.c windows-once.h \ @@ -1716,7 +1728,8 @@ BUILT_SOURCES = $(ALLOCA_H) arpa/inet.h ctype.h dirent.h $(ERRNO_H) \ $(LIMITS_H) locale.h math.h $(NETINET_IN_H) signal.h \ $(STDALIGN_H) $(STDBOOL_H) $(STDDEF_H) $(STDINT_H) stdio.h \ stdlib.h string.h sys/random.h sys/socket.h sys/stat.h \ - sys/types.h sys/uio.h time.h unistd.h wchar.h wctype.h + sys/time.h sys/types.h sys/uio.h time.h unistd.h wchar.h \ + wctype.h SUFFIXES = MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \ arpa/inet.h-t ctype.h ctype.h-t dirent.h dirent.h-t errno.h \ @@ -1727,9 +1740,9 @@ MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t arpa/inet.h \ stdbool.h stdbool.h-t stddef.h stddef.h-t stdint.h stdint.h-t \ stdio.h stdio.h-t stdlib.h stdlib.h-t string.h string.h-t \ sys/random.h sys/random.h-t sys/socket.h sys/socket.h-t \ - sys/stat.h sys/stat.h-t sys/types.h sys/types.h-t sys/uio.h \ - sys/uio.h-t time.h time.h-t unistd.h unistd.h-t wchar.h \ - wchar.h-t wctype.h wctype.h-t + sys/stat.h sys/stat.h-t sys/time.h sys/time.h-t sys/types.h \ + sys/types.h-t sys/uio.h sys/uio.h-t time.h time.h-t unistd.h \ + unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t MOSTLYCLEANDIRS = arpa netinet sys sys sys sys CLEANFILES = DISTCLEANFILES = @@ -1755,18 +1768,18 @@ EXTRA_libgnu_a_SOURCES = alloca.c btowc.c canonicalize-lgpl.c \ fchdir.c fcntl.c fdopendir.c float.c itold.c fnmatch.c \ fnmatch_loop.c frexp.c frexp.c frexpl.c fstat.c stat-w32.c \ at-func.c fstatat.c getcwd.c getcwd-lgpl.c getdtablesize.c \ - getlogin_r.c getrandom.c glob.c glob_pattern_p.c globfree.c \ - inet_ntop.c isblank.c isnan.c isnand.c isnan.c isnanl.c \ - lstat.c malloc.c lc-charset-dispatch.c mbrtowc.c mbtowc-lock.c \ - mbsinit.c mbsrtowcs-state.c mbsrtowcs.c mbtowc.c memchr.c \ - memmem.c mempcpy.c memrchr.c mkdir.c mkdtemp.c mkostemp.c \ - msvc-inval.c msvc-nothrow.c open.c openat.c opendir.c \ - rawmemchr.c readdir.c readlink.c realloc.c rename.c \ - rewinddir.c rmdir.c setenv.c setlocale-lock.c stat-w32.c \ - stat.c strchrnul.c strdup.c strerror.c strerror-override.c \ - strerror_r.c strnlen.c strstr.c strtok_r.c time_r.c unsetenv.c \ - windows-mutex.c windows-once.c windows-recmutex.c \ - windows-rwlock.c wmemchr.c wmempcpy.c + getlogin_r.c getrandom.c gettimeofday.c glob.c \ + glob_pattern_p.c globfree.c inet_ntop.c isblank.c isnan.c \ + isnand.c isnan.c isnanl.c localtime-buffer.c lstat.c malloc.c \ + lc-charset-dispatch.c mbrtowc.c mbtowc-lock.c mbsinit.c \ + mbsrtowcs-state.c mbsrtowcs.c mbtowc.c memchr.c memmem.c \ + mempcpy.c memrchr.c mkdir.c mkdtemp.c mkostemp.c msvc-inval.c \ + msvc-nothrow.c open.c openat.c opendir.c rawmemchr.c readdir.c \ + readlink.c realloc.c rename.c rewinddir.c rmdir.c setenv.c \ + setlocale-lock.c stat-w32.c stat.c strchrnul.c strdup.c \ + strerror.c strerror-override.c strerror_r.c strnlen.c strstr.c \ + strtok_r.c time_r.c unsetenv.c windows-mutex.c windows-once.c \ + windows-recmutex.c windows-rwlock.c wmemchr.c wmempcpy.c # Use this preprocessor expression to decide whether #include_next works. # Do not rely on a 'configure'-time test for this, since the expression @@ -1914,6 +1927,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getlogin_r.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getprogname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrandom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettimeofday.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glob_pattern_p.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/globfree.Po@am__quote@ @@ -1926,6 +1940,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/itold.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lc-charset-dispatch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localcharset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localtime-buffer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloca.Po@am__quote@ @@ -3395,6 +3410,31 @@ sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNU } > $@-t && \ mv $@-t $@ +# We need the following in order to create when the system +# doesn't have one that works with the given compiler. +sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H) + $(AM_V_at)$(MKDIR_P) sys + $(AM_V_GEN)rm -f $@-t $@ && \ + { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \ + sed -e 's|@''GUARD_PREFIX''@|GL|g' \ + -e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \ + -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \ + -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \ + -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \ + -e 's|@''NEXT_SYS_TIME_H''@|$(NEXT_SYS_TIME_H)|g' \ + -e 's/@''GNULIB_GETTIMEOFDAY''@/$(GNULIB_GETTIMEOFDAY)/g' \ + -e 's|@''HAVE_WINSOCK2_H''@|$(HAVE_WINSOCK2_H)|g' \ + -e 's/@''HAVE_GETTIMEOFDAY''@/$(HAVE_GETTIMEOFDAY)/g' \ + -e 's/@''HAVE_STRUCT_TIMEVAL''@/$(HAVE_STRUCT_TIMEVAL)/g' \ + -e 's/@''REPLACE_GETTIMEOFDAY''@/$(REPLACE_GETTIMEOFDAY)/g' \ + -e 's/@''REPLACE_STRUCT_TIMEVAL''@/$(REPLACE_STRUCT_TIMEVAL)/g' \ + -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \ + -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \ + -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)' \ + < $(srcdir)/sys_time.in.h; \ + } > $@-t && \ + mv $@-t $@ + # We need the following in order to create when the system # doesn't have one that works with the given compiler. sys/types.h: sys_types.in.h $(top_builddir)/config.status diff --git a/gnulib/import/gettimeofday.c b/gnulib/import/gettimeofday.c new file mode 100644 [contents snipped] diff --git a/gnulib/import/localtime-buffer.c b/gnulib/import/localtime-buffer.c new file mode 100644 [contents snipped] diff --git a/gnulib/import/localtime-buffer.h b/gnulib/import/localtime-buffer.h new file mode 100644 [contents snipped] diff --git a/gnulib/import/m4/gettimeofday.m4 b/gnulib/import/m4/gettimeofday.m4 new file mode 100644 [contents snipped] diff --git a/gnulib/import/m4/gnulib-cache.m4 b/gnulib/import/m4/gnulib-cache.m4 index ce00c9ef11c..db95504cc6a 100644 --- a/gnulib/import/m4/gnulib-cache.m4 +++ b/gnulib/import/m4/gnulib-cache.m4 @@ -47,6 +47,7 @@ # fnmatch-gnu \ # frexpl \ # getcwd \ +# gettimeofday \ # glob \ # inet_ntop \ # inttypes \ @@ -87,6 +88,7 @@ gl_MODULES([ fnmatch-gnu frexpl getcwd + gettimeofday glob inet_ntop inttypes diff --git a/gnulib/import/m4/gnulib-comp.m4 b/gnulib/import/m4/gnulib-comp.m4 index e5e197c7c55..8c2c28ec932 100644 --- a/gnulib/import/m4/gnulib-comp.m4 +++ b/gnulib/import/m4/gnulib-comp.m4 @@ -102,6 +102,7 @@ AC_DEFUN([gl_EARLY], # Code from module getprogname: # Code from module getrandom: # Code from module gettext-h: + # Code from module gettimeofday: # Code from module glob: # Code from module glob-h: # Code from module hard-locale: @@ -119,6 +120,7 @@ AC_DEFUN([gl_EARLY], # Code from module limits-h: # Code from module localcharset: # Code from module locale: + # Code from module localtime-buffer: # Code from module lock: # Code from module lstat: # Code from module malloc-posix: @@ -191,6 +193,7 @@ AC_DEFUN([gl_EARLY], # Code from module sys_random: # Code from module sys_socket: # Code from module sys_stat: + # Code from module sys_time: # Code from module sys_types: # Code from module sys_uio: # Code from module tempname: @@ -399,6 +402,12 @@ AC_DEFUN([gl_INIT], gl_SYS_RANDOM_MODULE_INDICATOR([getrandom]) AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) + gl_FUNC_GETTIMEOFDAY + if test $HAVE_GETTIMEOFDAY = 0 || test $REPLACE_GETTIMEOFDAY = 1; then + AC_LIBOBJ([gettimeofday]) + gl_PREREQ_GETTIMEOFDAY + fi + gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) gl_GLOB if test $HAVE_GLOB = 0 || test $REPLACE_GLOB = 1; then AC_LIBOBJ([glob]) @@ -445,6 +454,8 @@ AC_DEFUN([gl_INIT], LOCALCHARSET_TESTS_ENVIRONMENT= AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) gl_LOCALE_H + AC_REQUIRE([gl_LOCALTIME_BUFFER_DEFAULTS]) + AC_LIBOBJ([localtime-buffer]) gl_LOCK gl_MODULE_INDICATOR([lock]) gl_FUNC_LSTAT @@ -697,6 +708,8 @@ AC_DEFUN([gl_INIT], AC_PROG_MKDIR_P gl_HEADER_SYS_STAT_H AC_PROG_MKDIR_P + gl_HEADER_SYS_TIME_H + AC_PROG_MKDIR_P gl_SYS_TYPES_H AC_PROG_MKDIR_P gl_HEADER_SYS_UIO @@ -962,6 +975,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/getprogname.h lib/getrandom.c lib/gettext.h + lib/gettimeofday.c lib/glob-libc.h lib/glob.c lib/glob.in.h @@ -990,6 +1004,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/localcharset.c lib/localcharset.h lib/locale.in.h + lib/localtime-buffer.c + lib/localtime-buffer.h lib/lstat.c lib/malloc.c lib/malloc/scratch_buffer.h @@ -1082,6 +1098,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/sys_socket.c lib/sys_socket.in.h lib/sys_stat.in.h + lib/sys_time.in.h lib/sys_types.in.h lib/sys_uio.in.h lib/tempname.c @@ -1164,6 +1181,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/getpagesize.m4 m4/getprogname.m4 m4/getrandom.m4 + m4/gettimeofday.m4 m4/glob.m4 m4/glob_h.m4 m4/gnulib-common.m4 @@ -1181,6 +1199,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/locale-ja.m4 m4/locale-zh.m4 m4/locale_h.m4 + m4/localtime-buffer.m4 m4/lock.m4 m4/lstat.m4 m4/malloc.m4 @@ -1248,6 +1267,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/sys_random_h.m4 m4/sys_socket_h.m4 m4/sys_stat_h.m4 + m4/sys_time_h.m4 m4/sys_types_h.m4 m4/sys_uio_h.m4 m4/tempname.m4 diff --git a/gnulib/import/m4/localtime-buffer.m4 b/gnulib/import/m4/localtime-buffer.m4 new file mode 100644 [contents snipped] diff --git a/gnulib/import/m4/sys_time_h.m4 b/gnulib/import/m4/sys_time_h.m4 new file mode 100644 [contents snipped] diff --git a/gnulib/import/sys_time.in.h b/gnulib/import/sys_time.in.h new file mode 100644 [contents snipped] diff --git a/gnulib/update-gnulib.sh b/gnulib/update-gnulib.sh index 2ca8c035263..b9cc7d8f353 100755 --- a/gnulib/update-gnulib.sh +++ b/gnulib/update-gnulib.sh @@ -39,6 +39,7 @@ IMPORTED_GNULIB_MODULES="\ fnmatch-gnu \ frexpl \ getcwd \ + gettimeofday \ glob \ inet_ntop inttypes \ --wRRV7LY7NUeQGEoC Content-Type: application/gzip Content-Disposition: attachment; filename="cbiesinger-v2-after-pedro-comments.diff.gz" Content-Transfer-Encoding: base64 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 --wRRV7LY7NUeQGEoC--