From patchwork Wed Jun 24 14:34:46 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 7324 Received: (qmail 18324 invoked by alias); 24 Jun 2015 14:34:50 -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 18269 invoked by uid 89); 24 Jun 2015 14:34:49 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ob0-f177.google.com MIME-Version: 1.0 X-Received: by 10.182.68.45 with SMTP id s13mr34143591obt.11.1435156486207; Wed, 24 Jun 2015 07:34:46 -0700 (PDT) In-Reply-To: <20150624104455.GA14644@domone> References: <20150624103058.GA3719@intel.com> <20150624104455.GA14644@domone> Date: Wed, 24 Jun 2015 07:34:46 -0700 Message-ID: Subject: Re: [PATCH] Don't issue errors on GDB Python files From: "H.J. Lu" To: =?UTF-8?B?T25kxZllaiBCw61sa2E=?= Cc: GNU C Library On Wed, Jun 24, 2015 at 3:44 AM, Ondřej Bílka wrote: > On Wed, Jun 24, 2015 at 03:30:58AM -0700, H.J. Lu wrote: >> 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. */ > > mostly ok, but just write that condition as > > if (memmem (file_contents, len, "GROUP", 5) == NULL > && memmem (file_contents, len, "GNU ld script", 13) == NULL > && !is_gdb_python_file (file_name)) > Updated. I will check in this patch shortly. Thanks. From 7d0098927a0dc37a7636e773666789e56f35ca3b Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 24 Jun 2015 03:21:29 -0700 Subject: [PATCH] Don't issue errors on GDB Python files 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. [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 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/elf/readlib.c b/elf/readlib.c index 5c14a42..7fd5b8a 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 @@ -157,7 +164,8 @@ process_file (const char *real_file_name, const char *file_name, 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) + && memmem (file_contents, len, "GNU ld script", 13) == NULL + && !is_gdb_python_file (file_name)) error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"), file_name); ret = 1; -- 1.9.3