* Re: [RFC] Remove special flags of libc.5.so and libc.4.so
2021-12-22 15:31 ` [RFC] Remove special flags of libc.5.so and libc.4.so Lucas A. M. Magalhaes
@ 2022-01-10 19:21 ` Lucas A. M. Magalhaes
2022-01-11 19:22 ` Adhemerval Zanella
2022-02-23 22:17 ` Raoni Fassina Firmino
2 siblings, 0 replies; 15+ messages in thread
From: Lucas A. M. Magalhaes @ 2022-01-10 19:21 UTC (permalink / raw)
To: Lucas A. M. Magalhaes via Libc-alpha; +Cc: fweimer, tuliom
Ping.
Quoting Lucas A. M. Magalhaes via Libc-alpha (2021-12-22 12:31:51)
> I've tested it in a AT build and was able to build and link programs as
> expected. For other archs I try with build-many-glibcs.py, all
> succeeded.
>
> Any other suggestions on how to test this?
>
> Florian am I missing something? Should we add a restriction to cache
> just new libc6.so compatible libraries?
>
> -- 8< --
>
> The older libcs version are obsolete for over twenty years now. This
> commit removes special flags of libc.5.so and libc.4.so.. It assume that
> all libraries cached are libc.6.so compatible and wrote FLAG_ELF_LIBC6.
>
> Tested on x86_64, powerpc, powerpc64 and powerpc64le.
> Tested with build-many-glibcs.py for the other affected architectures.
> ---
> elf/cache.c | 6 +--
> elf/ldconfig.c | 33 +---------------
> elf/readelflib.c | 46 +++-------------------
> elf/readlib.c | 25 +-----------
> sysdeps/unix/sysv/linux/arc/ldconfig.h | 8 ----
> sysdeps/unix/sysv/linux/arm/ldconfig.h | 7 ----
> sysdeps/unix/sysv/linux/csky/ldconfig.h | 6 ---
> sysdeps/unix/sysv/linux/ia64/ldconfig.h | 6 ---
> sysdeps/unix/sysv/linux/powerpc/ldconfig.h | 8 ----
> sysdeps/unix/sysv/linux/riscv/ldconfig.h | 17 --------
> sysdeps/unix/sysv/linux/s390/ldconfig.h | 7 ----
> sysdeps/unix/sysv/linux/x86_64/ldconfig.h | 8 ----
> 12 files changed, 11 insertions(+), 166 deletions(-)
>
> diff --git a/elf/cache.c b/elf/cache.c
> index 1c0dc5ee87..387dd11a05 100644
> --- a/elf/cache.c
> +++ b/elf/cache.c
> @@ -158,6 +158,7 @@ struct cache_entry
> /* List of all cache entries. */
> static struct cache_entry *entries;
>
> +/* libc4, ELF and libc5 are unsupported */
> static const char *flag_descr[] =
> { "libc4", "ELF", "libc5", "libc6"};
>
> @@ -169,14 +170,11 @@ print_entry (const char *lib, int flag, unsigned int osversion,
> printf ("\t%s (", lib);
> switch (flag & FLAG_TYPE_MASK)
> {
> - case FLAG_LIBC4:
> - case FLAG_ELF:
> - case FLAG_ELF_LIBC5:
> case FLAG_ELF_LIBC6:
> fputs (flag_descr[flag & FLAG_TYPE_MASK], stdout);
> break;
> default:
> - fputs (_("unknown"), stdout);
> + fputs (_("Unknown or unsupported flag"), stdout);
> break;
> }
> switch (flag & FLAG_REQUIRED_MASK)
> diff --git a/elf/ldconfig.c b/elf/ldconfig.c
> index 101d56ac8e..d64b134781 100644
> --- a/elf/ldconfig.c
> +++ b/elf/ldconfig.c
> @@ -65,19 +65,6 @@
>
> #define PACKAGE _libc_intl_domainname
>
> -static const struct
> -{
> - const char *name;
> - int flag;
> -} lib_types[] =
> -{
> - {"libc4", FLAG_LIBC4},
> - {"libc5", FLAG_ELF_LIBC5},
> - {"libc6", FLAG_ELF_LIBC6},
> - {"glibc2", FLAG_ELF_LIBC6}
> -};
> -
> -
> /* List of directories to handle. */
> struct dir_entry
> {
> @@ -471,25 +458,7 @@ add_dir_1 (const char *line, const char *from_file, int from_line)
>
> /* Search for an '=' sign. */
> entry->path = xstrdup (line);
> - char *equal_sign = strchr (entry->path, '=');
> - if (equal_sign)
> - {
> - *equal_sign = '\0';
> - ++equal_sign;
> - entry->flag = FLAG_ANY;
> - for (i = 0; i < sizeof (lib_types) / sizeof (lib_types[0]); ++i)
> - if (strcmp (equal_sign, lib_types[i].name) == 0)
> - {
> - entry->flag = lib_types[i].flag;
> - break;
> - }
> - if (entry->flag == FLAG_ANY)
> - error (0, 0, _("%s is not a known library type"), equal_sign);
> - }
> - else
> - {
> - entry->flag = FLAG_ANY;
> - }
> + entry->flag = FLAG_ELF_LIBC6;
>
> /* Canonify path: for now only remove leading and trailing
> whitespace and the trailing slashes. */
> diff --git a/elf/readelflib.c b/elf/readelflib.c
> index 10b10b6080..801c5587ab 100644
> --- a/elf/readelflib.c
> +++ b/elf/readelflib.c
> @@ -44,7 +44,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> char **soname, void *file_contents, size_t file_length)
> {
> int i;
> - unsigned int j;
> unsigned int dynamic_addr;
> size_t dynamic_size;
> char *program_interpreter;
> @@ -82,9 +81,8 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> elf_pheader = (ElfW(Phdr) *) (elf_header->e_phoff + file_contents);
> check_ptr (elf_pheader);
>
> - /* The library is an elf library, now search for soname and
> - libc5/libc6. */
> - *flag = FLAG_ELF;
> + /* The library is an elf library */
> + *flag = FLAG_ELF_LIBC6;
>
> /* The default ISA level is 0. */
> *isa_level = 0;
> @@ -111,16 +109,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> program_interpreter = (char *) (file_contents + segment->p_offset);
> check_ptr (program_interpreter);
>
> - /* Check if this is enough to classify the binary. */
> - for (j = 0; j < sizeof (interpreters) / sizeof (interpreters [0]);
> - ++j)
> - if (strcmp (program_interpreter, interpreters[j].soname) == 0)
> - {
> - *flag = interpreters[j].flag;
> - break;
> - }
> - break;
> -
> case PT_NOTE:
> if (!*osversion && segment->p_filesz >= 32 && segment->p_align >= 4)
> {
> @@ -291,38 +279,16 @@ done:
> if (dynamic_strings == NULL)
> return 1;
>
> - /* Now read the DT_NEEDED and DT_SONAME entries. */
> + /* Now read the DT_SONAME entries. */
> for (dyn_entry = dynamic_segment; dyn_entry->d_tag != DT_NULL;
> ++dyn_entry)
> {
> - if (dyn_entry->d_tag == DT_NEEDED || dyn_entry->d_tag == DT_SONAME)
> + if (dyn_entry->d_tag == DT_SONAME)
> {
> char *name = dynamic_strings + dyn_entry->d_un.d_val;
> check_ptr (name);
> -
> - if (dyn_entry->d_tag == DT_NEEDED)
> - {
> -
> - if (*flag == FLAG_ELF)
> - {
> - /* Check if this is enough to classify the binary. */
> - for (j = 0;
> - j < sizeof (known_libs) / sizeof (known_libs [0]);
> - ++j)
> - if (strcmp (name, known_libs [j].soname) == 0)
> - {
> - *flag = known_libs [j].flag;
> - break;
> - }
> - }
> - }
> -
> - else if (dyn_entry->d_tag == DT_SONAME)
> - *soname = xstrdup (name);
> -
> - /* Do we have everything we need? */
> - if (*soname && *flag != FLAG_ELF)
> - return 0;
> + *soname = xstrdup (name);
> + return 0;
> }
> }
>
> diff --git a/elf/readlib.c b/elf/readlib.c
> index 64b20d7804..9164c1cda7 100644
> --- a/elf/readlib.c
> +++ b/elf/readlib.c
> @@ -43,24 +43,6 @@ struct known_names
> int flag;
> };
>
> -static struct known_names interpreters[] =
> -{
> - { "/lib/" LD_SO, FLAG_ELF_LIBC6 },
> -#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
> - SYSDEP_KNOWN_INTERPRETER_NAMES
> -#endif
> -};
> -
> -static struct known_names known_libs[] =
> -{
> - { LIBC_SO, FLAG_ELF_LIBC6 },
> - { LIBM_SO, FLAG_ELF_LIBC6 },
> -#ifdef SYSDEP_KNOWN_LIBRARY_NAMES
> - SYSDEP_KNOWN_LIBRARY_NAMES
> -#endif
> -};
> -
> -
> /* Check if string corresponds to a GDB Python file. */
> static bool
> is_gdb_python_file (const char *name)
> @@ -84,7 +66,8 @@ process_file (const char *real_file_name, const char *file_name,
> struct exec *aout_header;
>
> ret = 0;
> - *flag = FLAG_ANY;
> + /* Just set FLAG_ELF_LIBC6 as old formats are not supported anymore. */
> + *flag = FLAG_ELF_LIBC6;
> *soname = NULL;
>
> file = fopen (real_file_name, "rb");
> @@ -151,7 +134,6 @@ process_file (const char *real_file_name, const char *file_name,
> *dot = '\0';
> }
> *soname = copy;
> - *flag = FLAG_LIBC4;
> goto done;
> }
>
> @@ -192,9 +174,6 @@ implicit_soname (const char *lib, int flag)
> {
> char *soname = xstrdup (lib);
>
> - if ((flag & FLAG_TYPE_MASK) != FLAG_LIBC4)
> - return soname;
> -
> /* Aout files don't have a soname, just return the name
> including the major number. */
> char *major = strstr (soname, ".so.");
> diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> index 8c776fca9e..02ed826283 100644
> --- a/sysdeps/unix/sysv/linux/arc/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> @@ -17,11 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux-arc.so.2", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld-linux-arceb.so.2", FLAG_ELF_LIBC6 },
> -
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/arm/ldconfig.h b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> index d839470cfe..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/arm/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> @@ -16,10 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/csky/ldconfig.h b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> index eeda37e4a8..6861f71327 100644
> --- a/sysdeps/unix/sysv/linux/csky/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> @@ -26,9 +26,3 @@
> #else
> # define LD_SO_ABI "cskyv2"
> #endif
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/ia64/ldconfig.h b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> index 53685659ed..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> @@ -16,9 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> index 09d75b3dec..d0935d541b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> @@ -17,11 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld64.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld64.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> index e6e7d271ad..24aae5155a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> @@ -17,20 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define LD_SO_PREFIX "/lib/ld-linux-"
> -#define LD_SO_SUFFIX ".so.1"
> -
> -#if __riscv_xlen == 64
> -# define LD_SO_ABI "riscv64-lp64"
> -#else
> -# define LD_SO_ABI "riscv32-ilp32"
> -#endif
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { LD_SO_PREFIX LD_SO_ABI "d" LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, \
> - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> -
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> index 83086ce843..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/s390/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> @@ -16,10 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld64.so.1", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> index 1089668f09..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> @@ -16,11 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 }, \
> - { "/libx32/ld-linux-x32.so.2", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld-linux-x86-64.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Remove special flags of libc.5.so and libc.4.so
2021-12-22 15:31 ` [RFC] Remove special flags of libc.5.so and libc.4.so Lucas A. M. Magalhaes
2022-01-10 19:21 ` Lucas A. M. Magalhaes
@ 2022-01-11 19:22 ` Adhemerval Zanella
2022-03-02 19:37 ` Raoni Fassina Firmino
2022-02-23 22:17 ` Raoni Fassina Firmino
2 siblings, 1 reply; 15+ messages in thread
From: Adhemerval Zanella @ 2022-01-11 19:22 UTC (permalink / raw)
To: Lucas A. M. Magalhaes, libc-alpha; +Cc: fweimer, tuliom
On 22/12/2021 12:31, Lucas A. M. Magalhaes via Libc-alpha wrote:
> I've tested it in a AT build and was able to build and link programs as
> expected. For other archs I try with build-many-glibcs.py, all
> succeeded.
>
> Any other suggestions on how to test this?
>
> Florian am I missing something? Should we add a restriction to cache
> just new libc6.so compatible libraries?
>
> -- 8< --
>
> The older libcs version are obsolete for over twenty years now. This
> commit removes special flags of libc.5.so and libc.4.so.. It assume that
> all libraries cached are libc.6.so compatible and wrote FLAG_ELF_LIBC6.
>
> Tested on x86_64, powerpc, powerpc64 and powerpc64le.
> Tested with build-many-glibcs.py for the other affected architectures.
I think it makes sense to stop support libc.4 and libc.5 and assume
FLAG_ELF_LIBC6 by ldconfig.
I also think it should be safe to just get rid of the arch-specific
SYSDEP_KNOWN_INTERPRETER_NAMES, at least in theory it should not be
used by the cache (so there is not need to actually classify it).
> ---
> elf/cache.c | 6 +--
> elf/ldconfig.c | 33 +---------------
> elf/readelflib.c | 46 +++-------------------
> elf/readlib.c | 25 +-----------
> sysdeps/unix/sysv/linux/arc/ldconfig.h | 8 ----
> sysdeps/unix/sysv/linux/arm/ldconfig.h | 7 ----
> sysdeps/unix/sysv/linux/csky/ldconfig.h | 6 ---
> sysdeps/unix/sysv/linux/ia64/ldconfig.h | 6 ---
> sysdeps/unix/sysv/linux/powerpc/ldconfig.h | 8 ----
> sysdeps/unix/sysv/linux/riscv/ldconfig.h | 17 --------
> sysdeps/unix/sysv/linux/s390/ldconfig.h | 7 ----
> sysdeps/unix/sysv/linux/x86_64/ldconfig.h | 8 ----
> 12 files changed, 11 insertions(+), 166 deletions(-)
>
> diff --git a/elf/cache.c b/elf/cache.c
> index 1c0dc5ee87..387dd11a05 100644
> --- a/elf/cache.c
> +++ b/elf/cache.c
> @@ -158,6 +158,7 @@ struct cache_entry
> /* List of all cache entries. */
> static struct cache_entry *entries;
>
> +/* libc4, ELF and libc5 are unsupported */
> static const char *flag_descr[] =
> { "libc4", "ELF", "libc5", "libc6"};
>
> @@ -169,14 +170,11 @@ print_entry (const char *lib, int flag, unsigned int osversion,
> printf ("\t%s (", lib);
> switch (flag & FLAG_TYPE_MASK)
> {
> - case FLAG_LIBC4:
> - case FLAG_ELF:
> - case FLAG_ELF_LIBC5:
> case FLAG_ELF_LIBC6:
> fputs (flag_descr[flag & FLAG_TYPE_MASK], stdout);
> break;
> default:
> - fputs (_("unknown"), stdout);
> + fputs (_("Unknown or unsupported flag"), stdout);
> break;
> }
> switch (flag & FLAG_REQUIRED_MASK)
> diff --git a/elf/ldconfig.c b/elf/ldconfig.c
> index 101d56ac8e..d64b134781 100644
> --- a/elf/ldconfig.c
> +++ b/elf/ldconfig.c
> @@ -65,19 +65,6 @@
>
> #define PACKAGE _libc_intl_domainname
>
> -static const struct
> -{
> - const char *name;
> - int flag;
> -} lib_types[] =
> -{
> - {"libc4", FLAG_LIBC4},
> - {"libc5", FLAG_ELF_LIBC5},
> - {"libc6", FLAG_ELF_LIBC6},
> - {"glibc2", FLAG_ELF_LIBC6}
> -};
> -
> -
> /* List of directories to handle. */
> struct dir_entry
> {
> @@ -471,25 +458,7 @@ add_dir_1 (const char *line, const char *from_file, int from_line)
>
> /* Search for an '=' sign. */
> entry->path = xstrdup (line);
> - char *equal_sign = strchr (entry->path, '=');
> - if (equal_sign)
> - {
> - *equal_sign = '\0';
> - ++equal_sign;
> - entry->flag = FLAG_ANY;
> - for (i = 0; i < sizeof (lib_types) / sizeof (lib_types[0]); ++i)
> - if (strcmp (equal_sign, lib_types[i].name) == 0)
> - {
> - entry->flag = lib_types[i].flag;
> - break;
> - }
> - if (entry->flag == FLAG_ANY)
> - error (0, 0, _("%s is not a known library type"), equal_sign);
> - }
> - else
> - {
> - entry->flag = FLAG_ANY;
> - }
> + entry->flag = FLAG_ELF_LIBC6;
>
> /* Canonify path: for now only remove leading and trailing
> whitespace and the trailing slashes. */
> diff --git a/elf/readelflib.c b/elf/readelflib.c
> index 10b10b6080..801c5587ab 100644
> --- a/elf/readelflib.c
> +++ b/elf/readelflib.c
> @@ -44,7 +44,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> char **soname, void *file_contents, size_t file_length)
> {
> int i;
> - unsigned int j;
> unsigned int dynamic_addr;
> size_t dynamic_size;
> char *program_interpreter;
> @@ -82,9 +81,8 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> elf_pheader = (ElfW(Phdr) *) (elf_header->e_phoff + file_contents);
> check_ptr (elf_pheader);
>
> - /* The library is an elf library, now search for soname and
> - libc5/libc6. */
> - *flag = FLAG_ELF;
> + /* The library is an elf library */
> + *flag = FLAG_ELF_LIBC6;
>
> /* The default ISA level is 0. */
> *isa_level = 0;
> @@ -111,16 +109,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> program_interpreter = (char *) (file_contents + segment->p_offset);
> check_ptr (program_interpreter);
>
> - /* Check if this is enough to classify the binary. */
> - for (j = 0; j < sizeof (interpreters) / sizeof (interpreters [0]);
> - ++j)
> - if (strcmp (program_interpreter, interpreters[j].soname) == 0)
> - {
> - *flag = interpreters[j].flag;
> - break;
> - }
> - break;
> -
> case PT_NOTE:
> if (!*osversion && segment->p_filesz >= 32 && segment->p_align >= 4)
> {
> @@ -291,38 +279,16 @@ done:
> if (dynamic_strings == NULL)
> return 1;
>
> - /* Now read the DT_NEEDED and DT_SONAME entries. */
> + /* Now read the DT_SONAME entries. */
> for (dyn_entry = dynamic_segment; dyn_entry->d_tag != DT_NULL;
> ++dyn_entry)
> {
> - if (dyn_entry->d_tag == DT_NEEDED || dyn_entry->d_tag == DT_SONAME)
> + if (dyn_entry->d_tag == DT_SONAME)
> {
> char *name = dynamic_strings + dyn_entry->d_un.d_val;
> check_ptr (name);
> -
> - if (dyn_entry->d_tag == DT_NEEDED)
> - {
> -
> - if (*flag == FLAG_ELF)
> - {
> - /* Check if this is enough to classify the binary. */
> - for (j = 0;
> - j < sizeof (known_libs) / sizeof (known_libs [0]);
> - ++j)
> - if (strcmp (name, known_libs [j].soname) == 0)
> - {
> - *flag = known_libs [j].flag;
> - break;
> - }
> - }
> - }
> -
> - else if (dyn_entry->d_tag == DT_SONAME)
> - *soname = xstrdup (name);
> -
> - /* Do we have everything we need? */
> - if (*soname && *flag != FLAG_ELF)
> - return 0;
> + *soname = xstrdup (name);
> + return 0;
> }
> }
>
> diff --git a/elf/readlib.c b/elf/readlib.c
> index 64b20d7804..9164c1cda7 100644
> --- a/elf/readlib.c
> +++ b/elf/readlib.c
> @@ -43,24 +43,6 @@ struct known_names
> int flag;
> };
>
> -static struct known_names interpreters[] =
> -{
> - { "/lib/" LD_SO, FLAG_ELF_LIBC6 },
> -#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
> - SYSDEP_KNOWN_INTERPRETER_NAMES
> -#endif
> -};
> -
> -static struct known_names known_libs[] =
> -{
> - { LIBC_SO, FLAG_ELF_LIBC6 },
> - { LIBM_SO, FLAG_ELF_LIBC6 },
> -#ifdef SYSDEP_KNOWN_LIBRARY_NAMES
> - SYSDEP_KNOWN_LIBRARY_NAMES
> -#endif
> -};
> -
> -
> /* Check if string corresponds to a GDB Python file. */
> static bool
> is_gdb_python_file (const char *name)
> @@ -84,7 +66,8 @@ process_file (const char *real_file_name, const char *file_name,
> struct exec *aout_header;
>
> ret = 0;
> - *flag = FLAG_ANY;
> + /* Just set FLAG_ELF_LIBC6 as old formats are not supported anymore. */
> + *flag = FLAG_ELF_LIBC6;
> *soname = NULL;
>
> file = fopen (real_file_name, "rb");
> @@ -151,7 +134,6 @@ process_file (const char *real_file_name, const char *file_name,
> *dot = '\0';
> }
> *soname = copy;
> - *flag = FLAG_LIBC4;
> goto done;
> }
>
> @@ -192,9 +174,6 @@ implicit_soname (const char *lib, int flag)
> {
> char *soname = xstrdup (lib);
>
> - if ((flag & FLAG_TYPE_MASK) != FLAG_LIBC4)
> - return soname;
> -
> /* Aout files don't have a soname, just return the name
> including the major number. */
> char *major = strstr (soname, ".so.");
> diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> index 8c776fca9e..02ed826283 100644
> --- a/sysdeps/unix/sysv/linux/arc/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> @@ -17,11 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux-arc.so.2", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld-linux-arceb.so.2", FLAG_ELF_LIBC6 },
> -
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/arm/ldconfig.h b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> index d839470cfe..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/arm/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> @@ -16,10 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/csky/ldconfig.h b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> index eeda37e4a8..6861f71327 100644
> --- a/sysdeps/unix/sysv/linux/csky/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> @@ -26,9 +26,3 @@
> #else
> # define LD_SO_ABI "cskyv2"
> #endif
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/ia64/ldconfig.h b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> index 53685659ed..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> @@ -16,9 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> index 09d75b3dec..d0935d541b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> @@ -17,11 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld64.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld64.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> index e6e7d271ad..24aae5155a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> @@ -17,20 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define LD_SO_PREFIX "/lib/ld-linux-"
> -#define LD_SO_SUFFIX ".so.1"
> -
> -#if __riscv_xlen == 64
> -# define LD_SO_ABI "riscv64-lp64"
> -#else
> -# define LD_SO_ABI "riscv32-ilp32"
> -#endif
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { LD_SO_PREFIX LD_SO_ABI "d" LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, \
> - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> -
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> index 83086ce843..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/s390/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> @@ -16,10 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld64.so.1", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> index 1089668f09..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> @@ -16,11 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 }, \
> - { "/libx32/ld-linux-x32.so.2", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld-linux-x86-64.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Remove special flags of libc.5.so and libc.4.so
2022-01-11 19:22 ` Adhemerval Zanella
@ 2022-03-02 19:37 ` Raoni Fassina Firmino
2022-03-04 18:38 ` Adhemerval Zanella
0 siblings, 1 reply; 15+ messages in thread
From: Raoni Fassina Firmino @ 2022-03-02 19:37 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: Lucas A. M. Magalhaes, libc-alpha, fweimer, tuliom
On Tue, Jan 11, 2022 at 04:22:43PM -0300, AL glibc-alpha wrote:
>
>
> On 22/12/2021 12:31, Lucas A. M. Magalhaes via Libc-alpha wrote:
> > I've tested it in a AT build and was able to build and link programs as
> > expected. For other archs I try with build-many-glibcs.py, all
> > succeeded.
> >
> > Any other suggestions on how to test this?
> >
> > Florian am I missing something? Should we add a restriction to cache
> > just new libc6.so compatible libraries?
> >
> > -- 8< --
> >
> > The older libcs version are obsolete for over twenty years now. This
> > commit removes special flags of libc.5.so and libc.4.so.. It assume that
> > all libraries cached are libc.6.so compatible and wrote FLAG_ELF_LIBC6.
> >
> > Tested on x86_64, powerpc, powerpc64 and powerpc64le.
> > Tested with build-many-glibcs.py for the other affected architectures.
>
> I think it makes sense to stop support libc.4 and libc.5 and assume
> FLAG_ELF_LIBC6 by ldconfig.
>
> I also think it should be safe to just get rid of the arch-specific
> SYSDEP_KNOWN_INTERPRETER_NAMES, at least in theory it should not be
> used by the cache (so there is not need to actually classify it).
Lucas's RFC already removed it for a bunch of architectures, only
leaving i386, aarch64 and mips64, and If my grep did not failed me It
seems like the only uses of YSDEP_KNOWN_LIBRARY_NAMES and
SYSDEP_KNOWN_INTERPRETER_NAMES were in known_libs and interpreters
respectively, both removed in the RFC, so it seems that definitions can
be safely removed (in the context of the RFC).
Not sure if there is a need for more opinions or consensus about this
RFC's idea and approach to move forward with a proper patch for review.
o/
Raoni
>
> > ---
> > elf/cache.c | 6 +--
> > elf/ldconfig.c | 33 +---------------
> > elf/readelflib.c | 46 +++-------------------
> > elf/readlib.c | 25 +-----------
> > sysdeps/unix/sysv/linux/arc/ldconfig.h | 8 ----
> > sysdeps/unix/sysv/linux/arm/ldconfig.h | 7 ----
> > sysdeps/unix/sysv/linux/csky/ldconfig.h | 6 ---
> > sysdeps/unix/sysv/linux/ia64/ldconfig.h | 6 ---
> > sysdeps/unix/sysv/linux/powerpc/ldconfig.h | 8 ----
> > sysdeps/unix/sysv/linux/riscv/ldconfig.h | 17 --------
> > sysdeps/unix/sysv/linux/s390/ldconfig.h | 7 ----
> > sysdeps/unix/sysv/linux/x86_64/ldconfig.h | 8 ----
> > 12 files changed, 11 insertions(+), 166 deletions(-)
> >
> > diff --git a/elf/cache.c b/elf/cache.c
> > index 1c0dc5ee87..387dd11a05 100644
> > --- a/elf/cache.c
> > +++ b/elf/cache.c
> > @@ -158,6 +158,7 @@ struct cache_entry
> > /* List of all cache entries. */
> > static struct cache_entry *entries;
> >
> > +/* libc4, ELF and libc5 are unsupported */
> > static const char *flag_descr[] =
> > { "libc4", "ELF", "libc5", "libc6"};
> >
> > @@ -169,14 +170,11 @@ print_entry (const char *lib, int flag, unsigned int osversion,
> > printf ("\t%s (", lib);
> > switch (flag & FLAG_TYPE_MASK)
> > {
> > - case FLAG_LIBC4:
> > - case FLAG_ELF:
> > - case FLAG_ELF_LIBC5:
> > case FLAG_ELF_LIBC6:
> > fputs (flag_descr[flag & FLAG_TYPE_MASK], stdout);
> > break;
> > default:
> > - fputs (_("unknown"), stdout);
> > + fputs (_("Unknown or unsupported flag"), stdout);
> > break;
> > }
> > switch (flag & FLAG_REQUIRED_MASK)
> > diff --git a/elf/ldconfig.c b/elf/ldconfig.c
> > index 101d56ac8e..d64b134781 100644
> > --- a/elf/ldconfig.c
> > +++ b/elf/ldconfig.c
> > @@ -65,19 +65,6 @@
> >
> > #define PACKAGE _libc_intl_domainname
> >
> > -static const struct
> > -{
> > - const char *name;
> > - int flag;
> > -} lib_types[] =
> > -{
> > - {"libc4", FLAG_LIBC4},
> > - {"libc5", FLAG_ELF_LIBC5},
> > - {"libc6", FLAG_ELF_LIBC6},
> > - {"glibc2", FLAG_ELF_LIBC6}
> > -};
> > -
> > -
> > /* List of directories to handle. */
> > struct dir_entry
> > {
> > @@ -471,25 +458,7 @@ add_dir_1 (const char *line, const char *from_file, int from_line)
> >
> > /* Search for an '=' sign. */
> > entry->path = xstrdup (line);
> > - char *equal_sign = strchr (entry->path, '=');
> > - if (equal_sign)
> > - {
> > - *equal_sign = '\0';
> > - ++equal_sign;
> > - entry->flag = FLAG_ANY;
> > - for (i = 0; i < sizeof (lib_types) / sizeof (lib_types[0]); ++i)
> > - if (strcmp (equal_sign, lib_types[i].name) == 0)
> > - {
> > - entry->flag = lib_types[i].flag;
> > - break;
> > - }
> > - if (entry->flag == FLAG_ANY)
> > - error (0, 0, _("%s is not a known library type"), equal_sign);
> > - }
> > - else
> > - {
> > - entry->flag = FLAG_ANY;
> > - }
> > + entry->flag = FLAG_ELF_LIBC6;
> >
> > /* Canonify path: for now only remove leading and trailing
> > whitespace and the trailing slashes. */
> > diff --git a/elf/readelflib.c b/elf/readelflib.c
> > index 10b10b6080..801c5587ab 100644
> > --- a/elf/readelflib.c
> > +++ b/elf/readelflib.c
> > @@ -44,7 +44,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> > char **soname, void *file_contents, size_t file_length)
> > {
> > int i;
> > - unsigned int j;
> > unsigned int dynamic_addr;
> > size_t dynamic_size;
> > char *program_interpreter;
> > @@ -82,9 +81,8 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> > elf_pheader = (ElfW(Phdr) *) (elf_header->e_phoff + file_contents);
> > check_ptr (elf_pheader);
> >
> > - /* The library is an elf library, now search for soname and
> > - libc5/libc6. */
> > - *flag = FLAG_ELF;
> > + /* The library is an elf library */
> > + *flag = FLAG_ELF_LIBC6;
> >
> > /* The default ISA level is 0. */
> > *isa_level = 0;
> > @@ -111,16 +109,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> > program_interpreter = (char *) (file_contents + segment->p_offset);
> > check_ptr (program_interpreter);
> >
> > - /* Check if this is enough to classify the binary. */
> > - for (j = 0; j < sizeof (interpreters) / sizeof (interpreters [0]);
> > - ++j)
> > - if (strcmp (program_interpreter, interpreters[j].soname) == 0)
> > - {
> > - *flag = interpreters[j].flag;
> > - break;
> > - }
> > - break;
> > -
> > case PT_NOTE:
> > if (!*osversion && segment->p_filesz >= 32 && segment->p_align >= 4)
> > {
> > @@ -291,38 +279,16 @@ done:
> > if (dynamic_strings == NULL)
> > return 1;
> >
> > - /* Now read the DT_NEEDED and DT_SONAME entries. */
> > + /* Now read the DT_SONAME entries. */
> > for (dyn_entry = dynamic_segment; dyn_entry->d_tag != DT_NULL;
> > ++dyn_entry)
> > {
> > - if (dyn_entry->d_tag == DT_NEEDED || dyn_entry->d_tag == DT_SONAME)
> > + if (dyn_entry->d_tag == DT_SONAME)
> > {
> > char *name = dynamic_strings + dyn_entry->d_un.d_val;
> > check_ptr (name);
> > -
> > - if (dyn_entry->d_tag == DT_NEEDED)
> > - {
> > -
> > - if (*flag == FLAG_ELF)
> > - {
> > - /* Check if this is enough to classify the binary. */
> > - for (j = 0;
> > - j < sizeof (known_libs) / sizeof (known_libs [0]);
> > - ++j)
> > - if (strcmp (name, known_libs [j].soname) == 0)
> > - {
> > - *flag = known_libs [j].flag;
> > - break;
> > - }
> > - }
> > - }
> > -
> > - else if (dyn_entry->d_tag == DT_SONAME)
> > - *soname = xstrdup (name);
> > -
> > - /* Do we have everything we need? */
> > - if (*soname && *flag != FLAG_ELF)
> > - return 0;
> > + *soname = xstrdup (name);
> > + return 0;
> > }
> > }
> >
> > diff --git a/elf/readlib.c b/elf/readlib.c
> > index 64b20d7804..9164c1cda7 100644
> > --- a/elf/readlib.c
> > +++ b/elf/readlib.c
> > @@ -43,24 +43,6 @@ struct known_names
> > int flag;
> > };
> >
> > -static struct known_names interpreters[] =
> > -{
> > - { "/lib/" LD_SO, FLAG_ELF_LIBC6 },
> > -#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
> > - SYSDEP_KNOWN_INTERPRETER_NAMES
> > -#endif
> > -};
> > -
> > -static struct known_names known_libs[] =
> > -{
> > - { LIBC_SO, FLAG_ELF_LIBC6 },
> > - { LIBM_SO, FLAG_ELF_LIBC6 },
> > -#ifdef SYSDEP_KNOWN_LIBRARY_NAMES
> > - SYSDEP_KNOWN_LIBRARY_NAMES
> > -#endif
> > -};
> > -
> > -
> > /* Check if string corresponds to a GDB Python file. */
> > static bool
> > is_gdb_python_file (const char *name)
> > @@ -84,7 +66,8 @@ process_file (const char *real_file_name, const char *file_name,
> > struct exec *aout_header;
> >
> > ret = 0;
> > - *flag = FLAG_ANY;
> > + /* Just set FLAG_ELF_LIBC6 as old formats are not supported anymore. */
> > + *flag = FLAG_ELF_LIBC6;
> > *soname = NULL;
> >
> > file = fopen (real_file_name, "rb");
> > @@ -151,7 +134,6 @@ process_file (const char *real_file_name, const char *file_name,
> > *dot = '\0';
> > }
> > *soname = copy;
> > - *flag = FLAG_LIBC4;
> > goto done;
> > }
> >
> > @@ -192,9 +174,6 @@ implicit_soname (const char *lib, int flag)
> > {
> > char *soname = xstrdup (lib);
> >
> > - if ((flag & FLAG_TYPE_MASK) != FLAG_LIBC4)
> > - return soname;
> > -
> > /* Aout files don't have a soname, just return the name
> > including the major number. */
> > char *major = strstr (soname, ".so.");
> > diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> > index 8c776fca9e..02ed826283 100644
> > --- a/sysdeps/unix/sysv/linux/arc/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> > @@ -17,11 +17,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { "/lib/ld-linux-arc.so.2", FLAG_ELF_LIBC6 }, \
> > - { "/lib/ld-linux-arceb.so.2", FLAG_ELF_LIBC6 },
> > -
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/arm/ldconfig.h b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> > index d839470cfe..b3fa8ceebe 100644
> > --- a/sysdeps/unix/sysv/linux/arm/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> > @@ -16,10 +16,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \
> > - { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 },
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/csky/ldconfig.h b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> > index eeda37e4a8..6861f71327 100644
> > --- a/sysdeps/unix/sysv/linux/csky/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> > @@ -26,9 +26,3 @@
> > #else
> > # define LD_SO_ABI "cskyv2"
> > #endif
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/ia64/ldconfig.h b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> > index 53685659ed..b3fa8ceebe 100644
> > --- a/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> > @@ -16,9 +16,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 },
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> > index 09d75b3dec..d0935d541b 100644
> > --- a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> > @@ -17,11 +17,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> > - { "/lib64/ld64.so.1", FLAG_ELF_LIBC6 }, \
> > - { "/lib64/ld64.so.2", FLAG_ELF_LIBC6 },
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> > index e6e7d271ad..24aae5155a 100644
> > --- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> > @@ -17,20 +17,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define LD_SO_PREFIX "/lib/ld-linux-"
> > -#define LD_SO_SUFFIX ".so.1"
> > -
> > -#if __riscv_xlen == 64
> > -# define LD_SO_ABI "riscv64-lp64"
> > -#else
> > -# define LD_SO_ABI "riscv32-ilp32"
> > -#endif
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { LD_SO_PREFIX LD_SO_ABI "d" LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, \
> > - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> > -
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> > index 83086ce843..b3fa8ceebe 100644
> > --- a/sysdeps/unix/sysv/linux/s390/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> > @@ -16,10 +16,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> > - { "/lib/ld64.so.1", FLAG_ELF_LIBC6 },
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
> > diff --git a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> > index 1089668f09..b3fa8ceebe 100644
> > --- a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> > +++ b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> > @@ -16,11 +16,3 @@
> > <https://www.gnu.org/licenses/>. */
> >
> > #include <sysdeps/generic/ldconfig.h>
> > -
> > -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> > - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 }, \
> > - { "/libx32/ld-linux-x32.so.2", FLAG_ELF_LIBC6 }, \
> > - { "/lib64/ld-linux-x86-64.so.2", FLAG_ELF_LIBC6 },
> > -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> > - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> > - { "libm.so.6", FLAG_ELF_LIBC6 },
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Remove special flags of libc.5.so and libc.4.so
2022-03-02 19:37 ` Raoni Fassina Firmino
@ 2022-03-04 18:38 ` Adhemerval Zanella
0 siblings, 0 replies; 15+ messages in thread
From: Adhemerval Zanella @ 2022-03-04 18:38 UTC (permalink / raw)
To: Lucas A. M. Magalhaes, libc-alpha, fweimer, tuliom
On 02/03/2022 16:37, Raoni Fassina Firmino wrote:
> On Tue, Jan 11, 2022 at 04:22:43PM -0300, AL glibc-alpha wrote:
>>
>>
>> On 22/12/2021 12:31, Lucas A. M. Magalhaes via Libc-alpha wrote:
>>> I've tested it in a AT build and was able to build and link programs as
>>> expected. For other archs I try with build-many-glibcs.py, all
>>> succeeded.
>>>
>>> Any other suggestions on how to test this?
>>>
>>> Florian am I missing something? Should we add a restriction to cache
>>> just new libc6.so compatible libraries?
>>>
>>> -- 8< --
>>>
>>> The older libcs version are obsolete for over twenty years now. This
>>> commit removes special flags of libc.5.so and libc.4.so.. It assume that
>>> all libraries cached are libc.6.so compatible and wrote FLAG_ELF_LIBC6.
>>>
>>> Tested on x86_64, powerpc, powerpc64 and powerpc64le.
>>> Tested with build-many-glibcs.py for the other affected architectures.
>>
>> I think it makes sense to stop support libc.4 and libc.5 and assume
>> FLAG_ELF_LIBC6 by ldconfig.
>>
>> I also think it should be safe to just get rid of the arch-specific
>> SYSDEP_KNOWN_INTERPRETER_NAMES, at least in theory it should not be
>> used by the cache (so there is not need to actually classify it).
>
> Lucas's RFC already removed it for a bunch of architectures, only
> leaving i386, aarch64 and mips64, and If my grep did not failed me It
> seems like the only uses of YSDEP_KNOWN_LIBRARY_NAMES and
> SYSDEP_KNOWN_INTERPRETER_NAMES were in known_libs and interpreters
> respectively, both removed in the RFC, so it seems that definitions can
> be safely removed (in the context of the RFC).
>
> Not sure if there is a need for more opinions or consensus about this
> RFC's idea and approach to move forward with a proper patch for review.
>
>
I think the rationale of the patch is ok, it just need the the
SYSDEP_KNOWN_LIBRARY_NAMES and SYSDEP_KNOWN_INTERPRETER_NAMES
cleanup for aarch64, i386, and mips64.
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RFC] Remove special flags of libc.5.so and libc.4.so
2021-12-22 15:31 ` [RFC] Remove special flags of libc.5.so and libc.4.so Lucas A. M. Magalhaes
2022-01-10 19:21 ` Lucas A. M. Magalhaes
2022-01-11 19:22 ` Adhemerval Zanella
@ 2022-02-23 22:17 ` Raoni Fassina Firmino
2 siblings, 0 replies; 15+ messages in thread
From: Raoni Fassina Firmino @ 2022-02-23 22:17 UTC (permalink / raw)
To: Lucas A. M. Magalhaes; +Cc: libc-alpha, fweimer, tuliom
While testing Lucas previous patch I decided to test this one too, so I
tested this on top of master without regression in the following
configurations:
powerpc-linux-gnu
powerpc64-linux-gnu (with -m64 and with -m32)
powerpc64le-linux-gnu
ppc64le-redhat-linux
x86_64-linux-gnu (with -m64 and with -m32 with all the other flags to build 32bits)
o/
Raoni
On Wed, Dec 22, 2021 at 12:31:51PM -0300, AL glibc-alpha wrote:
> I've tested it in a AT build and was able to build and link programs as
> expected. For other archs I try with build-many-glibcs.py, all
> succeeded.
>
> Any other suggestions on how to test this?
>
> Florian am I missing something? Should we add a restriction to cache
> just new libc6.so compatible libraries?
>
> -- 8< --
>
> The older libcs version are obsolete for over twenty years now. This
> commit removes special flags of libc.5.so and libc.4.so.. It assume that
> all libraries cached are libc.6.so compatible and wrote FLAG_ELF_LIBC6.
>
> Tested on x86_64, powerpc, powerpc64 and powerpc64le.
> Tested with build-many-glibcs.py for the other affected architectures.
> ---
> elf/cache.c | 6 +--
> elf/ldconfig.c | 33 +---------------
> elf/readelflib.c | 46 +++-------------------
> elf/readlib.c | 25 +-----------
> sysdeps/unix/sysv/linux/arc/ldconfig.h | 8 ----
> sysdeps/unix/sysv/linux/arm/ldconfig.h | 7 ----
> sysdeps/unix/sysv/linux/csky/ldconfig.h | 6 ---
> sysdeps/unix/sysv/linux/ia64/ldconfig.h | 6 ---
> sysdeps/unix/sysv/linux/powerpc/ldconfig.h | 8 ----
> sysdeps/unix/sysv/linux/riscv/ldconfig.h | 17 --------
> sysdeps/unix/sysv/linux/s390/ldconfig.h | 7 ----
> sysdeps/unix/sysv/linux/x86_64/ldconfig.h | 8 ----
> 12 files changed, 11 insertions(+), 166 deletions(-)
>
> diff --git a/elf/cache.c b/elf/cache.c
> index 1c0dc5ee87..387dd11a05 100644
> --- a/elf/cache.c
> +++ b/elf/cache.c
> @@ -158,6 +158,7 @@ struct cache_entry
> /* List of all cache entries. */
> static struct cache_entry *entries;
>
> +/* libc4, ELF and libc5 are unsupported */
> static const char *flag_descr[] =
> { "libc4", "ELF", "libc5", "libc6"};
>
> @@ -169,14 +170,11 @@ print_entry (const char *lib, int flag, unsigned int osversion,
> printf ("\t%s (", lib);
> switch (flag & FLAG_TYPE_MASK)
> {
> - case FLAG_LIBC4:
> - case FLAG_ELF:
> - case FLAG_ELF_LIBC5:
> case FLAG_ELF_LIBC6:
> fputs (flag_descr[flag & FLAG_TYPE_MASK], stdout);
> break;
> default:
> - fputs (_("unknown"), stdout);
> + fputs (_("Unknown or unsupported flag"), stdout);
> break;
> }
> switch (flag & FLAG_REQUIRED_MASK)
> diff --git a/elf/ldconfig.c b/elf/ldconfig.c
> index 101d56ac8e..d64b134781 100644
> --- a/elf/ldconfig.c
> +++ b/elf/ldconfig.c
> @@ -65,19 +65,6 @@
>
> #define PACKAGE _libc_intl_domainname
>
> -static const struct
> -{
> - const char *name;
> - int flag;
> -} lib_types[] =
> -{
> - {"libc4", FLAG_LIBC4},
> - {"libc5", FLAG_ELF_LIBC5},
> - {"libc6", FLAG_ELF_LIBC6},
> - {"glibc2", FLAG_ELF_LIBC6}
> -};
> -
> -
> /* List of directories to handle. */
> struct dir_entry
> {
> @@ -471,25 +458,7 @@ add_dir_1 (const char *line, const char *from_file, int from_line)
>
> /* Search for an '=' sign. */
> entry->path = xstrdup (line);
> - char *equal_sign = strchr (entry->path, '=');
> - if (equal_sign)
> - {
> - *equal_sign = '\0';
> - ++equal_sign;
> - entry->flag = FLAG_ANY;
> - for (i = 0; i < sizeof (lib_types) / sizeof (lib_types[0]); ++i)
> - if (strcmp (equal_sign, lib_types[i].name) == 0)
> - {
> - entry->flag = lib_types[i].flag;
> - break;
> - }
> - if (entry->flag == FLAG_ANY)
> - error (0, 0, _("%s is not a known library type"), equal_sign);
> - }
> - else
> - {
> - entry->flag = FLAG_ANY;
> - }
> + entry->flag = FLAG_ELF_LIBC6;
>
> /* Canonify path: for now only remove leading and trailing
> whitespace and the trailing slashes. */
> diff --git a/elf/readelflib.c b/elf/readelflib.c
> index 10b10b6080..801c5587ab 100644
> --- a/elf/readelflib.c
> +++ b/elf/readelflib.c
> @@ -44,7 +44,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> char **soname, void *file_contents, size_t file_length)
> {
> int i;
> - unsigned int j;
> unsigned int dynamic_addr;
> size_t dynamic_size;
> char *program_interpreter;
> @@ -82,9 +81,8 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> elf_pheader = (ElfW(Phdr) *) (elf_header->e_phoff + file_contents);
> check_ptr (elf_pheader);
>
> - /* The library is an elf library, now search for soname and
> - libc5/libc6. */
> - *flag = FLAG_ELF;
> + /* The library is an elf library */
> + *flag = FLAG_ELF_LIBC6;
>
> /* The default ISA level is 0. */
> *isa_level = 0;
> @@ -111,16 +109,6 @@ process_elf_file (const char *file_name, const char *lib, int *flag,
> program_interpreter = (char *) (file_contents + segment->p_offset);
> check_ptr (program_interpreter);
>
> - /* Check if this is enough to classify the binary. */
> - for (j = 0; j < sizeof (interpreters) / sizeof (interpreters [0]);
> - ++j)
> - if (strcmp (program_interpreter, interpreters[j].soname) == 0)
> - {
> - *flag = interpreters[j].flag;
> - break;
> - }
> - break;
> -
> case PT_NOTE:
> if (!*osversion && segment->p_filesz >= 32 && segment->p_align >= 4)
> {
> @@ -291,38 +279,16 @@ done:
> if (dynamic_strings == NULL)
> return 1;
>
> - /* Now read the DT_NEEDED and DT_SONAME entries. */
> + /* Now read the DT_SONAME entries. */
> for (dyn_entry = dynamic_segment; dyn_entry->d_tag != DT_NULL;
> ++dyn_entry)
> {
> - if (dyn_entry->d_tag == DT_NEEDED || dyn_entry->d_tag == DT_SONAME)
> + if (dyn_entry->d_tag == DT_SONAME)
> {
> char *name = dynamic_strings + dyn_entry->d_un.d_val;
> check_ptr (name);
> -
> - if (dyn_entry->d_tag == DT_NEEDED)
> - {
> -
> - if (*flag == FLAG_ELF)
> - {
> - /* Check if this is enough to classify the binary. */
> - for (j = 0;
> - j < sizeof (known_libs) / sizeof (known_libs [0]);
> - ++j)
> - if (strcmp (name, known_libs [j].soname) == 0)
> - {
> - *flag = known_libs [j].flag;
> - break;
> - }
> - }
> - }
> -
> - else if (dyn_entry->d_tag == DT_SONAME)
> - *soname = xstrdup (name);
> -
> - /* Do we have everything we need? */
> - if (*soname && *flag != FLAG_ELF)
> - return 0;
> + *soname = xstrdup (name);
> + return 0;
> }
> }
>
> diff --git a/elf/readlib.c b/elf/readlib.c
> index 64b20d7804..9164c1cda7 100644
> --- a/elf/readlib.c
> +++ b/elf/readlib.c
> @@ -43,24 +43,6 @@ struct known_names
> int flag;
> };
>
> -static struct known_names interpreters[] =
> -{
> - { "/lib/" LD_SO, FLAG_ELF_LIBC6 },
> -#ifdef SYSDEP_KNOWN_INTERPRETER_NAMES
> - SYSDEP_KNOWN_INTERPRETER_NAMES
> -#endif
> -};
> -
> -static struct known_names known_libs[] =
> -{
> - { LIBC_SO, FLAG_ELF_LIBC6 },
> - { LIBM_SO, FLAG_ELF_LIBC6 },
> -#ifdef SYSDEP_KNOWN_LIBRARY_NAMES
> - SYSDEP_KNOWN_LIBRARY_NAMES
> -#endif
> -};
> -
> -
> /* Check if string corresponds to a GDB Python file. */
> static bool
> is_gdb_python_file (const char *name)
> @@ -84,7 +66,8 @@ process_file (const char *real_file_name, const char *file_name,
> struct exec *aout_header;
>
> ret = 0;
> - *flag = FLAG_ANY;
> + /* Just set FLAG_ELF_LIBC6 as old formats are not supported anymore. */
> + *flag = FLAG_ELF_LIBC6;
> *soname = NULL;
>
> file = fopen (real_file_name, "rb");
> @@ -151,7 +134,6 @@ process_file (const char *real_file_name, const char *file_name,
> *dot = '\0';
> }
> *soname = copy;
> - *flag = FLAG_LIBC4;
> goto done;
> }
>
> @@ -192,9 +174,6 @@ implicit_soname (const char *lib, int flag)
> {
> char *soname = xstrdup (lib);
>
> - if ((flag & FLAG_TYPE_MASK) != FLAG_LIBC4)
> - return soname;
> -
> /* Aout files don't have a soname, just return the name
> including the major number. */
> char *major = strstr (soname, ".so.");
> diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> index 8c776fca9e..02ed826283 100644
> --- a/sysdeps/unix/sysv/linux/arc/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> @@ -17,11 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux-arc.so.2", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld-linux-arceb.so.2", FLAG_ELF_LIBC6 },
> -
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/arm/ldconfig.h b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> index d839470cfe..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/arm/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> @@ -16,10 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.3", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld-linux-armhf.so.3", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/csky/ldconfig.h b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> index eeda37e4a8..6861f71327 100644
> --- a/sysdeps/unix/sysv/linux/csky/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> @@ -26,9 +26,3 @@
> #else
> # define LD_SO_ABI "cskyv2"
> #endif
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/ia64/ldconfig.h b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> index 53685659ed..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> @@ -16,9 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> index 09d75b3dec..d0935d541b 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> @@ -17,11 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld64.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld64.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> index e6e7d271ad..24aae5155a 100644
> --- a/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> @@ -17,20 +17,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define LD_SO_PREFIX "/lib/ld-linux-"
> -#define LD_SO_SUFFIX ".so.1"
> -
> -#if __riscv_xlen == 64
> -# define LD_SO_ABI "riscv64-lp64"
> -#else
> -# define LD_SO_ABI "riscv32-ilp32"
> -#endif
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { LD_SO_PREFIX LD_SO_ABI "d" LD_SO_SUFFIX, FLAG_ELF_LIBC6 }, \
> - { LD_SO_PREFIX LD_SO_ABI LD_SO_SUFFIX, FLAG_ELF_LIBC6 },
> -
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> index 83086ce843..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/s390/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> @@ -16,10 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld.so.1", FLAG_ELF_LIBC6 }, \
> - { "/lib/ld64.so.1", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> diff --git a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> index 1089668f09..b3fa8ceebe 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> @@ -16,11 +16,3 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> - { "/lib/ld-linux.so.2", FLAG_ELF_LIBC6 }, \
> - { "/libx32/ld-linux-x32.so.2", FLAG_ELF_LIBC6 }, \
> - { "/lib64/ld-linux-x86-64.so.2", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> - { "libc.so.6", FLAG_ELF_LIBC6 }, \
> - { "libm.so.6", FLAG_ELF_LIBC6 },
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 15+ messages in thread