[PATCH] Don't issue errors on GDB Python files
H.J. Lu
hjl.tools@gmail.com
Wed Jun 24 20:00:00 GMT 2015
On Wed, Jun 24, 2015 at 3:44 AM, Ondřej Bílka <neleai@seznam.cz> 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.
--
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Don-t-issue-errors-on-GDB-Python-files.patch
Type: text/x-patch
Size: 2012 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20150624/20eb50bd/attachment.bin>
More information about the Libc-alpha
mailing list