* [PATCH v2 0/2] ldconfig: Ignore all GDB extension files
@ 2024-05-06 17:16 Adam Sampson
2024-05-06 17:16 ` [PATCH v2 1/2] ldconfig: Move endswithn into a new header file Adam Sampson
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Adam Sampson @ 2024-05-06 17:16 UTC (permalink / raw)
To: libc-alpha; +Cc: Adam Sampson
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.
These patches make ldconfig ignore all three types of file.
Changes from v1:
* Reuse ldconfig's endswithn function (suggested by Florian Weimer).
I didn't spot any other places that could use this directly, although
there are several tests that have implementations of startswith.
Adam Sampson (2):
ldconfig: Move endswithn into a new header file
ldconfig: Ignore all GDB extension files
elf/endswith.h | 33 +++++++++++++++++++++++++++++++++
elf/ldconfig.c | 12 +-----------
elf/readlib.c | 11 +++++++----
3 files changed, 41 insertions(+), 15 deletions(-)
create mode 100644 elf/endswith.h
--
2.45.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] ldconfig: Move endswithn into a new header file
2024-05-06 17:16 [PATCH v2 0/2] ldconfig: Ignore all GDB extension files Adam Sampson
@ 2024-05-06 17:16 ` Adam Sampson
2024-05-06 17:16 ` [PATCH v2 2/2] ldconfig: Ignore all GDB extension files Adam Sampson
2024-06-05 9:49 ` [PATCH v2 0/2] " Adam Sampson
2 siblings, 0 replies; 4+ messages in thread
From: Adam Sampson @ 2024-05-06 17:16 UTC (permalink / raw)
To: libc-alpha; +Cc: Adam Sampson
is_gdb_python_file is doing a similar test, so it can use this helper
function as well.
Signed-off-by: Adam Sampson <ats@offog.org>
---
elf/endswith.h | 33 +++++++++++++++++++++++++++++++++
elf/ldconfig.c | 12 +-----------
elf/readlib.c | 3 ++-
3 files changed, 36 insertions(+), 12 deletions(-)
create mode 100644 elf/endswith.h
diff --git a/elf/endswith.h b/elf/endswith.h
new file mode 100644
index 0000000000..c6430c48be
--- /dev/null
+++ b/elf/endswith.h
@@ -0,0 +1,33 @@
+/* Copyright (C) 2023-2024 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _ENDSWITH_H
+#define _ENDSWITH_H
+
+#include <string.h>
+
+/* Return true if the N bytes at NAME end with with the characters in
+ the string SUFFIX. (NAME[N + 1] does not have to be a null byte.)
+ Expected to be called with a string literal for SUFFIX. */
+static inline bool
+endswithn (const char *name, size_t n, const char *suffix)
+{
+ return (n >= strlen (suffix)
+ && memcmp (name + n - strlen (suffix), suffix,
+ strlen (suffix)) == 0);
+}
+
+#endif /* _ENDSWITH_H */
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index b64c54b53e..0f3ef707dd 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -40,6 +40,7 @@
#include <libgen.h>
#include <ldconfig.h>
+#include <endswith.h>
#include <dl-cache.h>
#include <dl-hwcaps.h>
#include <dl-is_dso.h>
@@ -661,17 +662,6 @@ struct dlib_entry
struct dlib_entry *next;
};
-/* Return true if the N bytes at NAME end with with the characters in
- the string SUFFIX. (NAME[N + 1] does not have to be a null byte.)
- Expected to be called with a string literal for SUFFIX. */
-static inline bool
-endswithn (const char *name, size_t n, const char *suffix)
-{
- return (n >= strlen (suffix)
- && memcmp (name + n - strlen (suffix), suffix,
- strlen (suffix)) == 0);
-}
-
/* Skip some temporary DSO files. These files may be partially written
and lead to ldconfig crashes when examined. */
static bool
diff --git a/elf/readlib.c b/elf/readlib.c
index 4d67c74136..32e8b8eb22 100644
--- a/elf/readlib.c
+++ b/elf/readlib.c
@@ -33,6 +33,7 @@
#include <gnu/lib-names.h>
#include <ldconfig.h>
+#include <endswith.h>
#define Elf32_CLASS ELFCLASS32
#define Elf64_CLASS ELFCLASS64
@@ -48,7 +49,7 @@ static bool
is_gdb_python_file (const char *name)
{
size_t len = strlen (name);
- return len > 7 && strcmp (name + len - 7, "-gdb.py") == 0;
+ return endswithn (name, len, "-gdb.py");
}
/* Returns 0 if everything is ok, != 0 in case of error. */
--
2.45.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] ldconfig: Ignore all GDB extension files
2024-05-06 17:16 [PATCH v2 0/2] ldconfig: Ignore all GDB extension files Adam Sampson
2024-05-06 17:16 ` [PATCH v2 1/2] ldconfig: Move endswithn into a new header file Adam Sampson
@ 2024-05-06 17:16 ` Adam Sampson
2024-06-05 9:49 ` [PATCH v2 0/2] " Adam Sampson
2 siblings, 0 replies; 4+ messages in thread
From: Adam Sampson @ 2024-05-06 17:16 UTC (permalink / raw)
To: libc-alpha; +Cc: Adam Sampson
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.
Rename is_gdb_python_file to is_gdb_extension_file, and make it
recognise all three types of GDB extension.
Signed-off-by: Adam Sampson <ats@offog.org>
---
elf/readlib.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/elf/readlib.c b/elf/readlib.c
index 32e8b8eb22..f3129c4557 100644
--- a/elf/readlib.c
+++ b/elf/readlib.c
@@ -44,12 +44,14 @@ 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 endswithn (name, len, "-gdb.py");
+ return (endswithn (name, len, "-gdb.gdb")
+ || endswithn (name, len, "-gdb.py")
+ || endswithn (name, len, "-gdb.scm"));
}
/* Returns 0 if everything is ok, != 0 in case of error. */
@@ -146,7 +148,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;
--
2.45.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2 0/2] ldconfig: Ignore all GDB extension files
2024-05-06 17:16 [PATCH v2 0/2] ldconfig: Ignore all GDB extension files Adam Sampson
2024-05-06 17:16 ` [PATCH v2 1/2] ldconfig: Move endswithn into a new header file Adam Sampson
2024-05-06 17:16 ` [PATCH v2 2/2] ldconfig: Ignore all GDB extension files Adam Sampson
@ 2024-06-05 9:49 ` Adam Sampson
2 siblings, 0 replies; 4+ messages in thread
From: Adam Sampson @ 2024-06-05 9:49 UTC (permalink / raw)
To: libc-alpha
Ping - any further changes needed for these?
On Mon, May 06, 2024 at 06:16:31PM +0100, Adam Sampson wrote:
> 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.
>
> These patches make ldconfig ignore all three types of file.
>
> Changes from v1:
> * Reuse ldconfig's endswithn function (suggested by Florian Weimer).
> I didn't spot any other places that could use this directly, although
> there are several tests that have implementations of startswith.
>
> Adam Sampson (2):
> ldconfig: Move endswithn into a new header file
> ldconfig: Ignore all GDB extension files
On Patchwork:
https://patchwork.sourceware.org/project/glibc/patch/20240506171633.30008-2-ats@offog.org/
https://patchwork.sourceware.org/project/glibc/patch/20240506171633.30008-3-ats@offog.org/
Thanks,
--
Adam Sampson <ats@offog.org> <http://offog.org/>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-06-05 9:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-06 17:16 [PATCH v2 0/2] ldconfig: Ignore all GDB extension files Adam Sampson
2024-05-06 17:16 ` [PATCH v2 1/2] ldconfig: Move endswithn into a new header file Adam Sampson
2024-05-06 17:16 ` [PATCH v2 2/2] ldconfig: Ignore all GDB extension files Adam Sampson
2024-06-05 9:49 ` [PATCH v2 0/2] " Adam Sampson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).