From patchwork Wed Sep 19 01:48:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Josh Triplett X-Patchwork-Id: 29455 Received: (qmail 130829 invoked by alias); 19 Sep 2018 01:48:57 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 130702 invoked by uid 89); 19 Sep 2018 01:48:46 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=H*MI:localhost, FORMAT, auxiliary X-HELO: relay8-d.mail.gandi.net Date: Tue, 18 Sep 2018 18:48:36 -0700 From: Josh Triplett To: libc-alpha@sourceware.org Subject: [PATCH BZ #23668] Default to the new format for ld.so.cache Message-ID: <20180919014833.GA18964@localhost> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) glibc has supported this format for 18+ years. Reorder conditionals to look for the new format first. [BZ #23668] * elf/ldconfig.c: Default to the new format for ld.so.cache. glibc has supported this format for 18+ years. * elf/dl-cache.c (_dl_load_cache_lookup): Reorder conditionals to look for the new format first. --- NEWS | 3 +++ elf/dl-cache.c | 16 ++++++++-------- elf/ldconfig.c | 4 ++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index f76ada94d3..95ca9f5888 100644 --- a/NEWS +++ b/NEWS @@ -37,6 +37,9 @@ Deprecated and removed features, and other changes affecting compatibility: used by the Linux kernel. This affects the size and layout of those structures. +* ldconfig now defaults to the new format for ld.so.cache. glibc has supported + this format for 18+ years. + Changes to build and runtime requirements: [Add changes to build and runtime requirements here] diff --git a/elf/dl-cache.c b/elf/dl-cache.c index 6ee5153ff9..75bd9d9536 100644 --- a/elf/dl-cache.c +++ b/elf/dl-cache.c @@ -203,7 +203,14 @@ _dl_load_cache_lookup (const char *name) - the old format with the new format in it - only the new format The following checks if the cache contains any of these formats. */ - if (file != MAP_FAILED && cachesize > sizeof *cache + if (file != MAP_FAILED && cachesize > sizeof *cache_new + && memcmp (file, CACHEMAGIC_VERSION_NEW, + sizeof CACHEMAGIC_VERSION_NEW - 1) == 0) + { + cache_new = file; + cache = file; + } + else if (file != MAP_FAILED && cachesize > sizeof *cache && memcmp (file, CACHEMAGIC, sizeof CACHEMAGIC - 1) == 0) { size_t offset; @@ -220,13 +227,6 @@ _dl_load_cache_lookup (const char *name) sizeof CACHEMAGIC_VERSION_NEW - 1) != 0) cache_new = (void *) -1; } - else if (file != MAP_FAILED && cachesize > sizeof *cache_new - && memcmp (file, CACHEMAGIC_VERSION_NEW, - sizeof CACHEMAGIC_VERSION_NEW - 1) == 0) - { - cache_new = file; - cache = file; - } else { if (file != MAP_FAILED) diff --git a/elf/ldconfig.c b/elf/ldconfig.c index fbdd814edf..1ce4a29566 100644 --- a/elf/ldconfig.c +++ b/elf/ldconfig.c @@ -95,7 +95,7 @@ int opt_verbose; /* Format to support. */ /* 0: only libc5/glibc2; 1: both; 2: only glibc 2.2. */ -int opt_format = 1; +int opt_format = 2; /* Build cache. */ static int opt_build_cache = 1; @@ -148,7 +148,7 @@ static const struct argp_option options[] = { NULL, 'f', N_("CONF"), 0, N_("Use CONF as configuration file"), 0}, { NULL, 'n', NULL, 0, N_("Only process directories specified on the command line. Don't build cache."), 0}, { NULL, 'l', NULL, 0, N_("Manually link individual libraries."), 0}, - { "format", 'c', N_("FORMAT"), 0, N_("Format to use: new, old or compat (default)"), 0}, + { "format", 'c', N_("FORMAT"), 0, N_("Format to use: new (default), old, or compat"), 0}, { "ignore-aux-cache", 'i', NULL, 0, N_("Ignore auxiliary cache file"), 0}, { NULL, 0, NULL, 0, NULL, 0 } };