From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 46A163858403 for ; Fri, 14 Jan 2022 21:57:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 46A163858403 Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-81-TJ1LNXyKMAGn39KRz4OD2Q-1; Fri, 14 Jan 2022 16:57:23 -0500 X-MC-Unique: TJ1LNXyKMAGn39KRz4OD2Q-1 Received: by mail-qt1-f198.google.com with SMTP id y4-20020ac87c84000000b002c7552869f4so9023088qtv.17 for ; Fri, 14 Jan 2022 13:57:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:organization:in-reply-to :content-transfer-encoding; bh=H4JLPVkhYvH+kK1coP6PaoFep47TAieVfcMEcalMz9E=; b=loX7Dhrw8bAqbzbV+HjuItl56PToCng2unPS7k0YkVsLj6ZwNGjwE5QRmWlpkjeK/6 qgSHQmbH6gA7aqL6Z75rPDTvjDA/7Y33lZCD6FkwnRKuZ0hOth6rz9Tn/XBNeMjrhYjI 2Bj6LK6kdzayXbiOiJ91VsMwk47IRmEjXlvUIcvP9QAum0bjqYCGJD7/eRu7UaBkuc2k 9ZjTLNIu45brJCdvAxmUiohjmbZsf3NXpNz7uCs+IWbF7RMbl7P5F6x9Ik7PnwbnHy7o Ovl80WQ8lUqNZLzji72rR7B0eJzu8GO/76CCl7JIVFfv2Sj9JvMA6A7SMRkBs+ij7oaE C3Mg== X-Gm-Message-State: AOAM530n6LC8qdSQGnyB1j3FGdRHaN1aNxoaky4ixUp2Nv9gtr0ej5yq FFtB8ahWkqEBgB10tqqepXuwhX0+kWEqxGZgHNu3RFrywUaNY5S1toLooxfpKDiJDo2nzBBI3yR o4ZagyCMGqtgE9FrJL/To X-Received: by 2002:ad4:5aa5:: with SMTP id u5mr10210855qvg.88.1642197442741; Fri, 14 Jan 2022 13:57:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJzA2TBhnhwj+oQnWyWZAe3LZD0+NhNrNU9/QfzQ3taXmBKy7amAbQNVkecdIY6JA+SLA5WEQQ== X-Received: by 2002:ad4:5aa5:: with SMTP id u5mr10210846qvg.88.1642197442415; Fri, 14 Jan 2022 13:57:22 -0800 (PST) Received: from [192.168.0.241] (135-23-175-80.cpe.pppoe.ca. [135.23.175.80]) by smtp.gmail.com with ESMTPSA id t15sm4751439qta.45.2022.01.14.13.57.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Jan 2022 13:57:21 -0800 (PST) Message-ID: Date: Fri, 14 Jan 2022 16:57:20 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 Subject: Re: [glibc] elf: Fix 64 time_t support for installed statically binaries To: Adhemerval Zanella , libc-alpha References: <20220112133028.A84B6393D035@sourceware.org> From: Carlos O'Donell Organization: Red Hat In-Reply-To: <20220112133028.A84B6393D035@sourceware.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-14.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=unavailable autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Jan 2022 21:57:30 -0000 On 1/12/22 08:30, Adhemerval Zanella via Glibc-cvs wrote: > https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0b8e83eb1455f3c0332eeb1f96fbc262fbd054e0 > > commit 0b8e83eb1455f3c0332eeb1f96fbc262fbd054e0 > Author: Adhemerval Zanella > Date: Wed Dec 29 10:20:46 2021 -0300 > > elf: Fix 64 time_t support for installed statically binaries > > The usage of internal static symbol for statically linked binaries > does not work correctly for objects built with -D_TIME_BITS=64, > since the internal definition does not provide the expected aliases. > > This patch makes it to use the default stat functions instead (which > uses the default 64 time_t alias and types). > > Checked on i686-linux-gnu. Per the Monday patch queue review notes: https://sourceware.org/pipermail/libc-alpha/2022-January/135137.html I was just going to review this when I noticed that it looks like you pushed what appears to be 3 patches by accident, and then reverted 2 patches. You noted the accidental push here: https://sourceware.org/pipermail/libc-alpha/2022-January/135208.html Thank you! This patch was still pushed though. May I suggest you revert this for completeness and reapply with RB/TBs? > Diff: > --- > elf/cache.c | 16 ++++++++-------- > elf/chroot_canon.c | 4 ++-- > elf/ldconfig.c | 42 +++++++++++++++++++++--------------------- > elf/readlib.c | 6 +++--- > elf/sln.c | 4 ++-- > sysdeps/generic/ldconfig.h | 6 +++--- > 6 files changed, 39 insertions(+), 39 deletions(-) > > diff --git a/elf/cache.c b/elf/cache.c > index 15a5b74a5f..dbf4c83a7a 100644 > --- a/elf/cache.c > +++ b/elf/cache.c > @@ -318,8 +318,8 @@ print_cache (const char *cache_name) > if (fd < 0) > error (EXIT_FAILURE, errno, _("Can't open cache file %s\n"), cache_name); > > - struct stat64 st; > - if (__fstat64 (fd, &st) < 0 > + struct stat st; > + if (fstat (fd, &st) < 0 > /* No need to map the file if it is empty. */ > || st.st_size == 0) > { > @@ -932,7 +932,7 @@ init_aux_cache (void) > } > > int > -search_aux_cache (struct stat64 *stat_buf, int *flags, > +search_aux_cache (struct stat *stat_buf, int *flags, > unsigned int *osversion, unsigned int *isa_level, > char **soname) > { > @@ -994,7 +994,7 @@ insert_to_aux_cache (struct aux_cache_entry_id *id, int flags, > } > > void > -add_to_aux_cache (struct stat64 *stat_buf, int flags, > +add_to_aux_cache (struct stat *stat_buf, int flags, > unsigned int osversion, unsigned int isa_level, > const char *soname) > { > @@ -1017,8 +1017,8 @@ load_aux_cache (const char *aux_cache_name) > return; > } > > - struct stat64 st; > - if (__fstat64 (fd, &st) < 0 || st.st_size < sizeof (struct aux_cache_file)) > + struct stat st; > + if (fstat (fd, &st) < 0 || st.st_size < sizeof (struct aux_cache_file)) > { > close (fd); > init_aux_cache (); > @@ -1134,8 +1134,8 @@ save_aux_cache (const char *aux_cache_name) > char *dir = strdupa (aux_cache_name); > dir = dirname (dir); > > - struct stat64 st; > - if (stat64 (dir, &st) < 0) > + struct stat st; > + if (stat (dir, &st) < 0) > { > if (mkdir (dir, 0700) < 0) > goto out_fail; > diff --git a/elf/chroot_canon.c b/elf/chroot_canon.c > index c7f12ca112..e5d7518266 100644 > --- a/elf/chroot_canon.c > +++ b/elf/chroot_canon.c > @@ -67,7 +67,7 @@ chroot_canon (const char *chroot, const char *name) > > for (start = end = name; *start; start = end) > { > - struct stat64 st; > + struct stat st; > > /* Skip sequence of multiple path-separators. */ > while (*start == '/') > @@ -114,7 +114,7 @@ chroot_canon (const char *chroot, const char *name) > dest = mempcpy (dest, start, end - start); > *dest = '\0'; > > - if (lstat64 (rpath, &st) < 0) > + if (lstat (rpath, &st) < 0) > { > if (*end == '\0') > goto done; > diff --git a/elf/ldconfig.c b/elf/ldconfig.c > index 057c3dd666..d14633f5ec 100644 > --- a/elf/ldconfig.c > +++ b/elf/ldconfig.c > @@ -337,7 +337,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ > inode data from *ST. */ > static struct dir_entry * > new_sub_entry (const struct dir_entry *entry, const char *path, > - const struct stat64 *st) > + const struct stat *st) > { > struct dir_entry *new_entry = xmalloc (sizeof (struct dir_entry)); > new_entry->from_file = entry->from_file; > @@ -427,8 +427,8 @@ add_glibc_hwcaps_subdirectories (struct dir_entry *entry, const char *path) > continue; > > /* See if this entry eventually resolves to a directory. */ > - struct stat64 st; > - if (fstatat64 (dirfd (dir), e->d_name, &st, 0) < 0) > + struct stat st; > + if (fstatat (dirfd (dir), e->d_name, &st, 0) < 0) > /* Ignore unreadable entries. */ > continue; > > @@ -512,8 +512,8 @@ add_dir_1 (const char *line, const char *from_file, int from_line) > if (opt_chroot != NULL) > path = chroot_canon (opt_chroot, path); > > - struct stat64 stat_buf; > - if (path == NULL || stat64 (path, &stat_buf)) > + struct stat stat_buf; > + if (path == NULL || stat (path, &stat_buf)) > { > if (opt_verbose) > error (0, errno, _("Can't stat %s"), entry->path); > @@ -541,15 +541,15 @@ add_dir (const char *line) > } > > static int > -chroot_stat (const char *real_path, const char *path, struct stat64 *st) > +chroot_stat (const char *real_path, const char *path, struct stat *st) > { > int ret; > char *canon_path; > > if (!opt_chroot) > - return stat64 (real_path, st); > + return stat (real_path, st); > > - ret = lstat64 (real_path, st); > + ret = lstat (real_path, st); > if (ret || !S_ISLNK (st->st_mode)) > return ret; > > @@ -557,7 +557,7 @@ chroot_stat (const char *real_path, const char *path, struct stat64 *st) > if (canon_path == NULL) > return -1; > > - ret = stat64 (canon_path, st); > + ret = stat (canon_path, st); > free (canon_path); > return ret; > } > @@ -569,7 +569,7 @@ create_links (const char *real_path, const char *path, const char *libname, > { > char *full_libname, *full_soname; > char *real_full_libname, *real_full_soname; > - struct stat64 stat_lib, stat_so, lstat_so; > + struct stat stat_lib, stat_so, lstat_so; > int do_link = 1; > int do_remove = 1; > /* XXX: The logics in this function should be simplified. */ > @@ -604,7 +604,7 @@ create_links (const char *real_path, const char *path, const char *libname, > && stat_lib.st_ino == stat_so.st_ino) > /* Link is already correct. */ > do_link = 0; > - else if (lstat64 (full_soname, &lstat_so) == 0 > + else if (lstat (full_soname, &lstat_so) == 0 > && !S_ISLNK (lstat_so.st_mode)) > { > error (0, 0, _("%s is not a symbolic link\n"), full_soname); > @@ -612,7 +612,7 @@ create_links (const char *real_path, const char *path, const char *libname, > do_remove = 0; > } > } > - else if (lstat64 (real_full_soname, &lstat_so) != 0 > + else if (lstat (real_full_soname, &lstat_so) != 0 > || !S_ISLNK (lstat_so.st_mode)) > /* Unless it is a stale symlink, there is no need to remove. */ > do_remove = 0; > @@ -656,7 +656,7 @@ manual_link (char *library) > char *real_library; > char *libname; > char *soname; > - struct stat64 stat_buf; > + struct stat stat_buf; > int flag; > unsigned int osversion; > unsigned int isa_level; > @@ -710,7 +710,7 @@ manual_link (char *library) > } > > /* Do some sanity checks first. */ > - if (lstat64 (real_library, &stat_buf)) > + if (lstat (real_library, &stat_buf)) > { > error (0, errno, _("Cannot lstat %s"), library); > goto out; > @@ -885,18 +885,18 @@ search_dir (const struct dir_entry *entry) > sprintf (real_file_name, "%s/%s", dir_name, direntry->d_name); > } > > - struct stat64 lstat_buf; > + struct stat lstat_buf; > /* We optimize and try to do the lstat call only if needed. */ > if (direntry->d_type != DT_UNKNOWN) > lstat_buf.st_mode = DTTOIF (direntry->d_type); > else > - if (__glibc_unlikely (lstat64 (real_file_name, &lstat_buf))) > + if (__glibc_unlikely (lstat (real_file_name, &lstat_buf))) > { > error (0, errno, _("Cannot lstat %s"), file_name); > continue; > } > > - struct stat64 stat_buf; > + struct stat stat_buf; > bool is_dir; > int is_link = S_ISLNK (lstat_buf.st_mode); > if (is_link) > @@ -914,7 +914,7 @@ search_dir (const struct dir_entry *entry) > continue; > } > } > - if (__glibc_unlikely (stat64 (target_name, &stat_buf))) > + if (__glibc_unlikely (stat (target_name, &stat_buf))) > { > if (opt_verbose) > error (0, errno, _("Cannot stat %s"), file_name); > @@ -950,7 +950,7 @@ search_dir (const struct dir_entry *entry) > { > if (!is_link > && direntry->d_type != DT_UNKNOWN > - && __builtin_expect (lstat64 (real_file_name, &lstat_buf), 0)) > + && __builtin_expect (lstat (real_file_name, &lstat_buf), 0)) > { > error (0, errno, _("Cannot lstat %s"), file_name); > continue; > @@ -979,10 +979,10 @@ search_dir (const struct dir_entry *entry) > else > real_name = real_file_name; > > - /* Call lstat64 if not done yet. */ > + /* Call lstat if not done yet. */ > if (!is_link > && direntry->d_type != DT_UNKNOWN > - && __builtin_expect (lstat64 (real_file_name, &lstat_buf), 0)) > + && __builtin_expect (lstat (real_file_name, &lstat_buf), 0)) > { > error (0, errno, _("Cannot lstat %s"), file_name); > continue; > diff --git a/elf/readlib.c b/elf/readlib.c > index 05c157762a..3651dcdd8e 100644 > --- a/elf/readlib.c > +++ b/elf/readlib.c > @@ -74,10 +74,10 @@ int > process_file (const char *real_file_name, const char *file_name, > const char *lib, int *flag, unsigned int *osversion, > unsigned int *isa_level, char **soname, int is_link, > - struct stat64 *stat_buf) > + struct stat *stat_buf) > { > FILE *file; > - struct stat64 statbuf; > + struct stat statbuf; > void *file_contents; > int ret; > ElfW(Ehdr) *elf_header; > @@ -97,7 +97,7 @@ process_file (const char *real_file_name, const char *file_name, > return 1; > } > > - if (fstat64 (fileno (file), &statbuf) < 0) > + if (fstat (fileno (file), &statbuf) < 0) > { > error (0, 0, _("Cannot fstat file %s.\n"), file_name); > fclose (file); > diff --git a/elf/sln.c b/elf/sln.c > index 00f8f7c8e8..5347338e91 100644 > --- a/elf/sln.c > +++ b/elf/sln.c > @@ -153,11 +153,11 @@ makesymlinks (const char *file) > static int > makesymlink (const char *src, const char *dest) > { > - struct stat64 stats; > + struct stat stats; > const char *error; > > /* Destination must not be a directory. */ > - if (lstat64 (dest, &stats) == 0) > + if (lstat (dest, &stats) == 0) > { > if (S_ISDIR (stats.st_mode)) > { > diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h > index ea11827d25..94f008bd90 100644 > --- a/sysdeps/generic/ldconfig.h > +++ b/sysdeps/generic/ldconfig.h > @@ -78,11 +78,11 @@ extern void init_aux_cache (void); > > extern void load_aux_cache (const char *aux_cache_name); > > -extern int search_aux_cache (struct stat64 *stat_buf, int *flags, > +extern int search_aux_cache (struct stat *stat_buf, int *flags, > unsigned int *osversion, > unsigned int *isa_level, char **soname); > > -extern void add_to_aux_cache (struct stat64 *stat_buf, int flags, > +extern void add_to_aux_cache (struct stat *stat_buf, int flags, > unsigned int osversion, > unsigned int isa_level, const char *soname); > > @@ -93,7 +93,7 @@ extern int process_file (const char *real_file_name, const char *file_name, > const char *lib, int *flag, > unsigned int *osversion, unsigned int *isa_level, > char **soname, int is_link, > - struct stat64 *stat_buf); > + struct stat *stat_buf); > > extern char *implicit_soname (const char *lib, int flag); > -- Cheers, Carlos.