Don't issue errors on GDB Python files
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 24 Jun 2015 10:21:29 +0000 (03:21 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 24 Jun 2015 17:27:39 +0000 (10:27 -0700)
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.

ChangeLog
NEWS
elf/readlib.c

index aca044b..8cde91e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+       [BZ #18585]
+       * elf/readlib.c (is_gdb_python_file): New.
+       (process_file): Don't issue errors on filenames with -gdb.py
+       suffix.
+
 2015-06-24  Joseph Myers  <joseph@codesourcery.com>
 
        * math/auto-libm-test-in: Add more tests of csin and csinh.
diff --git a/NEWS b/NEWS
index 4646dcd..9fb0060 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -24,7 +24,7 @@ Version 2.22
   18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498,
   18507, 18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530,
   18532, 18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546,
-  18547, 18553, 18558, 18569, 18583, 18586, 18593.
+  18547, 18553, 18558, 18569, 18583, 18585, 18586, 18593.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
index 5c14a42..7fd5b8a 100644 (file)
@@ -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;