This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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.

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.  */
-- 
1.9.3


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]