diff mbox series

ldconfig: Ignore all GDB extension files

Message ID 20240505001755.893-1-ats@offog.org
State New
Headers show
Series ldconfig: Ignore all GDB extension files | expand

Commit Message

Adam Sampson May 5, 2024, 12:10 a.m. UTC
ldconfig already ignores files with the -gdb.py suffix, but GDB also
looks for -gdb.gdb and -gdb.scm files. These aren't as widely used, but
libguile at least comes with a -gdb.scm file.

This patch makes ldconfig ignore all three types of file.

Signed-off-by: Adam Sampson <ats@offog.org>
---
Note: I'm using DCO, and I'm happy for this trivial change to be covered
by the existing FSF copyright notice in the file, or by Copyright The
GNU Toolchain Authors if you prefer.

 elf/readlib.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

Florian Weimer May 6, 2024, 6:11 a.m. UTC | #1
* Adam Sampson:

> -/* Check if string corresponds to a GDB Python file.  */
> +/* Check if string corresponds to a GDB extension file.  */
>  static bool
> -is_gdb_python_file (const char *name)
> +is_gdb_extension_file (const char *name)
>  {
>    size_t len = strlen (name);
> -  return len > 7 && strcmp (name + len - 7, "-gdb.py") == 0;
> +  if (len > 8 && strcmp (name + len - 8, "-gdb.gdb") == 0)
> +    return true;
> +  if (len > 7 && strcmp (name + len - 7, "-gdb.py") == 0)
> +    return true;
> +  if (len > 8 && strcmp (name + len - 8, "-gdb.scm") == 0)
> +    return true;
> +  return false;
>  }

We already have endswithn in elf/ldconfig.c.  Maybe it's time to move
this function to its own header file and use it here as well?

Thanks,
Florian
diff mbox series

Patch

diff --git a/elf/readlib.c b/elf/readlib.c
index 4d67c74136..a86d4a2a49 100644
--- a/elf/readlib.c
+++ b/elf/readlib.c
@@ -43,12 +43,18 @@  struct known_names
   int flag;
 };
 
-/* Check if string corresponds to a GDB Python file.  */
+/* Check if string corresponds to a GDB extension file.  */
 static bool
-is_gdb_python_file (const char *name)
+is_gdb_extension_file (const char *name)
 {
   size_t len = strlen (name);
-  return len > 7 && strcmp (name + len - 7, "-gdb.py") == 0;
+  if (len > 8 && strcmp (name + len - 8, "-gdb.gdb") == 0)
+    return true;
+  if (len > 7 && strcmp (name + len - 7, "-gdb.py") == 0)
+    return true;
+  if (len > 8 && strcmp (name + len - 8, "-gdb.scm") == 0)
+    return true;
+  return false;
 }
 
 /* Returns 0 if everything is ok, != 0 in case of error.  */
@@ -145,7 +151,7 @@  process_file (const char *real_file_name, const char *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
-	  && !is_gdb_python_file (file_name))
+	  && !is_gdb_extension_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;