public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: libc-alpha@sourceware.org, tuliom@linux.ibm.com,
	lucmaga@gmail.com, fweimer@redhat.com
Subject: Re: [PATCH] Remove special flags of libc.5.so and libc.4.so
Date: Fri, 18 Mar 2022 14:12:41 -0300	[thread overview]
Message-ID: <dd093667-2ae5-92b1-90e5-76ea98564040@linaro.org> (raw)
In-Reply-To: <20220314205808.p2md7izvi6omblup@workbox>



On 14/03/2022 17:58, Lucas A. M. Magalhaes via Libc-alpha wrote:
> Updated Lucas's RFC to include the missing SYSDEP_KNOWN_LIBRARY_NAMES
> and SYSDEP_KNOWN_INTERPRETER_NAMES cleanup for aarch64, i386, and
> mips64 following discussions and feed back from Adhemerval[1][2].
> 
> Testwise I build a x86 32bits build-and-check on a x86_64 machine and
> did a full build-many-glibcs.py on top of master (2da6e439164c)
> without regression.
> 
> [1] https://sourceware.org/pipermail/libc-alpha/2022-March/136809.html
> [2] https://sourceware.org/pipermail/libc-alpha/2022-March/136808.html
> 
> -- 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.

Some comments below.

> ---
>  elf/cache.c                                   |  6 +--
>  elf/ldconfig.c                                | 33 +------------
>  elf/readelflib.c                              | 46 +++----------------
>  elf/readlib.c                                 | 25 +---------
>  sysdeps/unix/sysv/linux/aarch64/ldconfig.h    | 11 -----
>  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/i386/ldconfig.h       |  6 ---
>  sysdeps/unix/sysv/linux/ia64/ldconfig.h       |  6 ---
>  .../unix/sysv/linux/mips/mips64/ldconfig.h    |  7 ---
>  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 ----
>  15 files changed, 11 insertions(+), 190 deletions(-)
> 
> diff --git a/elf/cache.c b/elf/cache.c
> index dbf4c83a7a61..111888cafb3c 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);

I think we should keep the lowercase on the 'unknown', since it used in the
middle of a setence.

>        break;
>      }
>    switch (flag & FLAG_REQUIRED_MASK)
> diff --git a/elf/ldconfig.c b/elf/ldconfig.c
> index 57bb95ebc334..5fe133937574 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
>  {

Ok.

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

Ok.

There are still FLAG_LIBC4 and FLAG_LIBC5 usage on ldconfig.c where I think
it would be better to refactor as well:

1037       /* Some sanity checks to print warnings.  */
1038       if (opt_verbose)
1039         {
1040           if (flag == FLAG_ELF_LIBC5 && entry->flag != FLAG_ELF_LIBC5
1041               && entry->flag != FLAG_ANY)
1042             error (0, 0, _("libc5 library %s in wrong directory"), file_name);
1043           if (flag == FLAG_ELF_LIBC6 && entry->flag != FLAG_ELF_LIBC6
1044               && entry->flag != FLAG_ANY)
1045             error (0, 0, _("libc6 library %s in wrong directory"), file_name);
1046           if (flag == FLAG_LIBC4 && entry->flag != FLAG_LIBC4
1047               && entry->flag != FLAG_ANY)
1048             error (0, 0, _("libc4 library %s in wrong directory"), file_name);
1049         }

and

1066                   if (dlib_ptr->flag != flag)
1067                     {
1068                       if (dlib_ptr->flag == FLAG_ELF
1069                           && (flag == FLAG_ELF_LIBC5 || flag == FLAG_ELF_LIBC6))
1070                         dlib_ptr->flag = flag;
1071                       else if ((dlib_ptr->flag == FLAG_ELF_LIBC5
1072                                 || dlib_ptr->flag == FLAG_ELF_LIBC6)
1073                                && flag == FLAG_ELF)
1074                         dlib_ptr->flag = flag;
1075                       else
1076                         error (0, 0, _("libraries %s and %s in directory %s have same soname but different type."),
1077                                dlib_ptr->name, direntry->d_name,
1078                                entry->path);
1079                     }  

I think it would be better to just remove both and print and error.

> diff --git a/elf/readelflib.c b/elf/readelflib.c
> index e147416363c2..51e90fb56ad9 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)
>  	    {

Ok.

> @@ -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;
>  	}
>      }
>  

Ok.

> diff --git a/elf/readlib.c b/elf/readlib.c
> index 3651dcdd8e3d..1807aa16f20f 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.");

Ok.

> diff --git a/sysdeps/unix/sysv/linux/aarch64/ldconfig.h b/sysdeps/unix/sysv/linux/aarch64/ldconfig.h
> index 5cbfb327141d..69871151ed8c 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/aarch64/ldconfig.h
> @@ -17,14 +17,3 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> -  { "/lib/ld-linux-aarch64.so.1", FLAG_ELF_LIBC6 }, \
> -  { "/lib/ld-linux-aarch64_be.so.1", FLAG_ELF_LIBC6 }, \
> -  { "/lib/ld-linux-aarch64_ilp32.so.1", FLAG_ELF_LIBC6 }, \
> -  { "/lib/ld-linux-aarch64_be_ilp32.so.1", FLAG_ELF_LIBC6 }, \
> -  { "/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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arc/ldconfig.h b/sysdeps/unix/sysv/linux/arc/ldconfig.h
> index f673170e59a2..ed019a8cdb61 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/arm/ldconfig.h b/sysdeps/unix/sysv/linux/arm/ldconfig.h
> index d1253993eaa1..9afda09cca63 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/csky/ldconfig.h b/sysdeps/unix/sysv/linux/csky/ldconfig.h
> index fbe17e3dc81f..d4bea7b9e465 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/i386/ldconfig.h b/sysdeps/unix/sysv/linux/i386/ldconfig.h
> index bafbec1231c7..9afda09cca63 100644
> --- a/sysdeps/unix/sysv/linux/i386/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/i386/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.1", FLAG_ELF_LIBC5 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> -  { "libc.so.5", FLAG_ELF_LIBC5 },	\
> -  { "libm.so.5", FLAG_ELF_LIBC5 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/ia64/ldconfig.h b/sysdeps/unix/sysv/linux/ia64/ldconfig.h
> index 4731419bf87b..9afda09cca63 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h b/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h
> index ac82941affb2..3f2c7cadbbb2 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/ldconfig.h
> @@ -16,10 +16,3 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <sysdeps/generic/ldconfig.h>
> -
> -#define SYSDEP_KNOWN_INTERPRETER_NAMES \
> -  { "/lib32/ld.so.1", FLAG_ELF_LIBC6 }, \
> -  { "/lib64/ld.so.1", FLAG_ELF_LIBC6 },
> -#define SYSDEP_KNOWN_LIBRARY_NAMES \
> -  { "libc.so.6", FLAG_ELF_LIBC6 },	\
> -  { "libm.so.6", FLAG_ELF_LIBC6 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/powerpc/ldconfig.h b/sysdeps/unix/sysv/linux/powerpc/ldconfig.h
> index 1d70657838c2..0791e3020a57 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/riscv/ldconfig.h b/sysdeps/unix/sysv/linux/riscv/ldconfig.h
> index e3847f116e00..5308926d8837 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/s390/ldconfig.h b/sysdeps/unix/sysv/linux/s390/ldconfig.h
> index f564a6eaf673..9afda09cca63 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 },

Ok.

> diff --git a/sysdeps/unix/sysv/linux/x86_64/ldconfig.h b/sysdeps/unix/sysv/linux/x86_64/ldconfig.h
> index b67203e0175c..9afda09cca63 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 },

Ok.

      parent reply	other threads:[~2022-03-18 17:12 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-14 20:58 Lucas A. M. Magalhaes via Libc-alpha
2022-03-14 21:01 ` Raoni Fassina Firmino
2022-03-14 21:06   ` Raoni Fassina Firmino
2022-03-16 16:26 ` Andreas Schwab
2022-03-18 17:12 ` Adhemerval Zanella [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dd093667-2ae5-92b1-90e5-76ea98564040@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    --cc=lucmaga@gmail.com \
    --cc=tuliom@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).