From patchwork Wed Jun 24 10:30:58 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lu, Hongjiu" X-Patchwork-Id: 7318 Received: (qmail 10181 invoked by alias); 24 Jun 2015 10:31:02 -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 10165 invoked by uid 89); 24 Jun 2015 10:31:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, NO_DNS_FOR_FROM, RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mga02.intel.com X-ExtLoop1: 1 Date: Wed, 24 Jun 2015 03:30:58 -0700 From: "H.J. Lu" To: GNU C Library Subject: [PATCH] Don't issue errors on GDB Python files Message-ID: <20150624103058.GA3719@intel.com> Reply-To: "H.J. Lu" MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) Many packages, including GCC, install Python files for GDB in library diretory. ldconfig reads them and issue errors since they aren't ELF files: ldconfig: /usr/gcc-5.1.1/lib/libstdc++.so.6.0.21-gdb.py is not an ELF file - it has the wrong magic bytes at the start. ldconfig: /usr/gcc-5.1.1/libx32/libstdc++.so.6.0.21-gdb.py is not an ELF file - it has the wrong magic bytes at the start. ldconfig: /usr/gcc-5.1.1/lib64/libstdc++.so.6.0.21-gdb.py is not an ELF file - it has the wrong magic bytes at the start. This patch silences ldconfig on GDB Python files by checking filenames with -gdb.py suffix. OK for master? H.J. --- [BZ #18585] * elf/readlib.c (is_gdb_python_file): New. (process_file): Don't issue errors on filenames with -gdb.py suffix. --- elf/readlib.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/elf/readlib.c b/elf/readlib.c index 5c14a42..ad12da6 100644 --- a/elf/readlib.c +++ b/elf/readlib.c @@ -63,6 +63,13 @@ static struct known_names known_libs[] = }; +/* Check if string corresponds to a GDB Python file. */ +static bool +is_gdb_python_file (const char *name) +{ + size_t len = strlen (name); + return len > 7 && strcmp (name + len - 7, "-gdb.py") == 0; +} /* Returns 0 if everything is ok, != 0 in case of error. */ int @@ -155,11 +162,14 @@ process_file (const char *real_file_name, const char *file_name, /* The file is neither ELF nor aout. Check if it's a linker script, like libc.so - otherwise complain. Only search the beginning of the file. */ - size_t len = MIN (statbuf.st_size, 512); - if (memmem (file_contents, len, "GROUP", 5) == NULL - && memmem (file_contents, len, "GNU ld script", 13) == NULL) - error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"), - file_name); + if (!is_gdb_python_file (file_name)) + { + size_t len = MIN (statbuf.st_size, 512); + if (memmem (file_contents, len, "GROUP", 5) == NULL + && memmem (file_contents, len, "GNU ld script", 13) == NULL) + error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"), + file_name); + } ret = 1; } /* Libraries have to be shared object files. */