Projects
Factory:RISC-V:Base
binutils
_service:tar_scm:backport-0001-PR28391-strip-ob...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:backport-0001-PR28391-strip-objcopy-preserve-dates-.a-cannot-set-t.patch of Package binutils
From 70b88840a4c65c8f5e2244129487886b5a5c7664 Mon Sep 17 00:00:00 2001 From: Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> Date: Tue, 28 Sep 2021 20:11:26 +0930 Subject: [PATCH] PR28391, strip/objcopy --preserve-dates *.a: cannot set time Reference: https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=6b02746a0e29b1007efd4feb137e2da3e681fc68 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. (cherry picked from commit 0d62064867c74286360e821b75ef6799bedc4b34) Signed-off-by: maminjie <maminjie8@163.com> --- binutils/ar.c | 3 +++ binutils/objcopy.c | 1 + 2 files changed, 4 insertions(+) diff --git a/binutils/ar.c b/binutils/ar.c index 5d6976c7..8885585e 100644 --- a/binutils/ar.c +++ b/binutils/ar.c @@ -1180,6 +1180,9 @@ extract_file (bfd *abfd) bfd_size_type size; struct stat buf; + if (preserve_dates) + memset (&buf, 0, sizeof (buf)); + if (bfd_stat_arch_elt (abfd, &buf) != 0) /* xgettext:c-format */ fatal (_("internal stat error on %s"), bfd_get_filename (abfd)); diff --git a/binutils/objcopy.c b/binutils/objcopy.c index fe3ea29c..242b1052 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) -- 2.30.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2