From 0d62064867c74286360e821b75ef6799bedc4b34 Mon Sep 17 00:00:00 2001 From: Gleb Fotengauer-Malinovskiy Date: Tue, 28 Sep 2021 20:11:26 +0930 Subject: PR28391, strip/objcopy --preserve-dates *.a: cannot set time After commit 985e0264516 copy_archive function began to pass invalid values to the utimensat(2) function when it tries to preserve timestamps in ar archives. This happens because the bfd_stat_arch_elt implementation for ar archives fills only the st_mtim.tv_sec part of the st_mtim timespec structure, but leaves the st_mtim.tv_nsec part and the whole st_atim timespec untouched leaving them uninitialized PR 28391 * ar.c (extract_file): Clear buf for preserve_dates. * objcopy.c (copy_archive): Likewise. --- binutils/objcopy.c | 1 + 1 file changed, 1 insertion(+) (limited to 'binutils/objcopy.c') diff --git a/binutils/objcopy.c b/binutils/objcopy.c index a6c2e0d..fd7557f 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3600,6 +3600,7 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target, if (preserve_dates) { + memset (&buf, 0, sizeof (buf)); stat_status = bfd_stat_arch_elt (this_element, &buf); if (stat_status != 0) -- cgit v1.1