]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Replace uses of asprintf with xasprintf
authorAlan Modra <amodra@gmail.com>
Mon, 21 Oct 2024 01:46:31 +0000 (12:16 +1030)
committerAlan Modra <amodra@gmail.com>
Thu, 24 Oct 2024 07:28:00 +0000 (17:58 +1030)
xasprintf has a nicer interface and behaves like xmalloc as far as
memory is concerned, ie. no need to check a return status and the
program exits with an error on OOM.

binutils/
* dwarf.c (load_debug_sup_file): Replace asprintf with xasprintf.
* nm.c (get_elf_symbol_type, get_coff_symbol_type): Likewise.
* objdump.c (dump_ctf_indent_lines): Likewise.
* readelf.c (display_lto_symtab, dump_ctf_indent_lines): Likewise.
* windres.c (main): Likewise.
* configure.ac: Remove asprintf from AC_CHECK_DECLS.
* config.in: Regenerate.
* configure: Regenerate.
gas/
* config/tc-kvx.c (kvx_emit_single_noop): Simplify.
* config/tc-riscv.c (md_assemblef): Replace asprintf with xasprintf.
* read.c (s_nop, do_s_func): Likewise.
* stabs.c (stabs_generate_asm_func): Likewise.
(stabs_generate_asm_endfunc): Likewise.
* configure.ac: Remove asprintf from AC_CHECK_DECLS.
* config.in: Regenerate.
* configure: Regenerate.
ld/
* ldlang.c (lang_leave_overlay_section): Replace xmalloc+sprintf
with xasprintf.  Localise vars.
* lexsup.c (parse_args): Replace asprintf with xasprintf.
* pe-dll.c (make_head, make_tail, make_one): Likewise.
(make_singleton_name_thunk, make_import_fixup_entry): Likewise.
(make_runtime_pseudo_reloc): Likewise.
(pe_create_runtime_relocator_reference): Likewise.
* configure.ac: Remove asprintf from AC_CHECK_DECLS.
* config.in: Regenerate.
* configure: Regenerate.

21 files changed:
binutils/config.in
binutils/configure
binutils/configure.ac
binutils/dwarf.c
binutils/nm.c
binutils/objdump.c
binutils/readelf.c
binutils/windres.c
gas/config.in
gas/config/tc-kvx.c
gas/config/tc-riscv.c
gas/configure
gas/configure.ac
gas/read.c
gas/stabs.c
ld/config.in
ld/configure
ld/configure.ac
ld/ldlang.c
ld/lexsup.c
ld/pe-dll.c

index ee148c756f45c7e95fdf031231d8a516d84cf97a..93ff04667febb486ae9e58a9d4653999ee6ee587 100644 (file)
    */
 #undef HAVE_DCGETTEXT
 
-/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_ASPRINTF
-
 /* Define to 1 if you have the declaration of `environ', and to 0 if you
    don't. */
 #undef HAVE_DECL_ENVIRON
index ac3de5e39a8fc645a09d0b7dc53ac548e3c75091..41e41c61efed8cff33402560c5891f0f18578d7c 100755 (executable)
@@ -15708,16 +15708,6 @@ $as_echo "#define HAVE_GOOD_UTIME_H 1" >>confdefs.h
 
 fi
 
-ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_asprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ASPRINTF $ac_have_decl
-_ACEOF
 ac_fn_c_check_decl "$LINENO" "environ" "ac_cv_have_decl_environ" "$ac_includes_default"
 if test "x$ac_cv_have_decl_environ" = xyes; then :
   ac_have_decl=1
index 06c88e0048cb40a97a7ce1a5f4b3953878b1945b..31fab69fd0f53060ca6d32a0515b51c41ce07a79 100644 (file)
@@ -279,7 +279,7 @@ if test $bu_cv_header_utime_h = yes; then
   AC_DEFINE(HAVE_GOOD_UTIME_H, 1, [Does <utime.h> define struct utimbuf?])
 fi
 
-AC_CHECK_DECLS([asprintf, environ, getc_unlocked, stpcpy, strnlen])
+AC_CHECK_DECLS([environ, getc_unlocked, stpcpy, strnlen])
 
 # Link in zlib/zstd if we can.  This allows us to read compressed debug
 # sections.  This is used only by readelf.c (objdump uses bfd for
index 424353ccdb226b2b8d79db7489cca77269a53804..4b46100c7535892c53f4206ded2f309c5d85b01c 100644 (file)
@@ -12318,34 +12318,14 @@ load_debug_sup_file (const char * main_filename, void * file)
     }
 
   if (filename[0] != '/' && strchr (main_filename, '/'))
-    {
-      char * new_name;
-      int new_len;
-
-      new_len = asprintf (& new_name, "%.*s/%s",
+    filename = xasprintf ("%.*s/%s",
                          (int) (strrchr (main_filename, '/') - main_filename),
                          main_filename,
                          filename);
-      if (new_len < 3)
-       {
-         warn (_("unable to construct path for supplementary debug file\n"));
-         if (new_len > -1)
-           free (new_name);
-         return;
-       }
-      filename = new_name;
-    }
   else
-    {
-      /* PR 27796: Make sure that we pass a filename that can be free'd to
-        add_separate_debug_file().  */
-      filename = strdup (filename);
-      if (filename == NULL)
-       {
-         warn (_("out of memory constructing filename for .debug_sup link\n"));
-         return;
-       }
-    }
+    /* PR 27796: Make sure that we pass a filename that can be free'd to
+       add_separate_debug_file().  */
+    filename = xstrdup (filename);
 
   void * handle = open_debug_file (filename);
   if (handle == NULL)
index 7acf9a26333599462c483016a72f912a3951c6a6..2546dc5105f1c83d569dc5cc9ab2dbc248fc6f7d 100644 (file)
@@ -433,7 +433,6 @@ static const char *
 get_elf_symbol_type (unsigned int type)
 {
   static char *bufp;
-  int n;
 
   switch (type)
     {
@@ -448,13 +447,11 @@ get_elf_symbol_type (unsigned int type)
 
   free (bufp);
   if (type >= STT_LOPROC && type <= STT_HIPROC)
-    n = asprintf (&bufp, _("<processor specific>: %d"), type);
+    bufp = xasprintf (_("<processor specific>: %d"), type);
   else if (type >= STT_LOOS && type <= STT_HIOS)
-    n = asprintf (&bufp, _("<OS specific>: %d"), type);
+    bufp = xasprintf (_("<OS specific>: %d"), type);
   else
-    n = asprintf (&bufp, _("<unknown>: %d"), type);
-  if (n < 0)
-    fatal ("%s", xstrerror (errno));
+    bufp = xasprintf (_("<unknown>: %d"), type);
   return bufp;
 }
 
@@ -462,7 +459,6 @@ static const char *
 get_coff_symbol_type (const struct internal_syment *sym)
 {
   static char *bufp;
-  int n;
 
   switch (sym->n_sclass)
     {
@@ -482,9 +478,7 @@ get_coff_symbol_type (const struct internal_syment *sym)
     }
 
   free (bufp);
-  n = asprintf (&bufp, _("<unknown>: %d/%d"), sym->n_sclass, sym->n_type);
-  if (n < 0)
-    fatal ("%s", xstrerror (errno));
+  bufp = xasprintf (_("<unknown>: %d/%d"), sym->n_sclass, sym->n_type);
   return bufp;
 }
 \f
index 324254658c609fa78ed8b1720736e1f9954f7a03..4980929d6abb71a9119e3833da77969a83e63a8f 100644 (file)
@@ -4769,11 +4769,7 @@ dump_ctf_indent_lines (ctf_sect_names_t sect ATTRIBUTE_UNUSED,
                       char *s, void *arg)
 {
   const char *blanks = arg;
-  char *new_s;
-
-  if (asprintf (&new_s, "%s%s", blanks, s) < 0)
-    return s;
-  return new_s;
+  return xasprintf ("%s%s", blanks, s);
 }
 
 /* Make a ctfsect suitable for ctf_bfdopen_ctfsect().  */
index 0f8dc1b9716ed5c0ba13ececfc012ed59f8ba270..73163e0ee21b0fb8c2cd82789ff349465c535dae 100644 (file)
@@ -14421,17 +14421,14 @@ display_lto_symtab (Filedata *           filedata,
     return false;
 
   /* Look for extended data for the symbol table.  */
-  Elf_Internal_Shdr * ext = NULL;
   void * ext_data_orig = NULL;
   char * ext_data = NULL;
   char * ext_data_end = NULL;
-  char * ext_name = NULL;
-
-  if (asprintf (& ext_name, ".gnu.lto_.ext_symtab.%s",
-               (section_name (filedata, section)
-                + sizeof (".gnu.lto_.symtab.") - 1)) > 0
-      && ext_name != NULL /* Paranoia.  */
-      && (ext = find_section (filedata, ext_name)) != NULL)
+  char *ext_name = xasprintf (".gnu.lto_.ext_symtab.%s",
+                             (section_name (filedata, section)
+                              + sizeof (".gnu.lto_.symtab.")));
+  Elf_Internal_Shdr *ext = find_section (filedata, ext_name);
+  if (ext != NULL)
     {
       if (ext->sh_size < 3)
        error (_("LTO Symbol extension table '%s' is empty!\n"),
@@ -16871,11 +16868,7 @@ dump_ctf_indent_lines (ctf_sect_names_t sect ATTRIBUTE_UNUSED,
                       char *s, void *arg)
 {
   const char *blanks = arg;
-  char *new_s;
-
-  if (asprintf (&new_s, "%s%s", blanks, s) < 0)
-    return s;
-  return new_s;
+  return xasprintf ("%s%s", blanks, s);
 }
 
 /* Dump CTF errors/warnings.  */
index 3f691d3e829e62b132fcc0339e5c268df5c0115e..f0f6433160c36a32cf3568d0c5f05d28f53a3f9f 100644 (file)
@@ -885,10 +885,7 @@ main (int argc, char **argv)
 
        case OPTION_PREPROCESSOR:
          if (strchr (optarg, ' '))
-           {
-             if (asprintf (& preprocessor, "\"%s\"", optarg) == -1)
-               preprocessor = optarg;
-           }
+           preprocessor = xasprintf ("\"%s\"", optarg);
          else
            preprocessor = optarg;          
          break;
index c32b46b93f5296992de9f63d0f93a8da6d85c0f4..bb896244640414c081f10a9cb959a68c19e3b489 100644 (file)
    */
 #undef HAVE_DCGETTEXT
 
-/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_ASPRINTF
-
 /* Is the prototype for getopt in <unistd.h> in the expected format? */
 #undef HAVE_DECL_GETOPT
 
index b864b95721fb3c82befbc926b790e153c3658dd0..e0860c0294a857aac25fb39ea2d87c3b39481a29 100644 (file)
@@ -2107,21 +2107,13 @@ kvx_check_label (symbolS *sym)
 void
 kvx_emit_single_noop (void)
 {
-  char *nop;
-  char *end_of_bundle;
-
-  if (asprintf (&nop, "nop") < 0)
-    as_fatal ("%s", xstrerror (errno));
-
-  if (asprintf (&end_of_bundle, "be") < 0)
-    as_fatal ("%s", xstrerror (errno));
+  char nop[] = "nop";
+  char end_of_bundle[] = "be";
 
   char *saved_ilp = input_line_pointer;
   md_assemble (nop);
   md_assemble (end_of_bundle);
   input_line_pointer = saved_ilp;
-  free (nop);
-  free (end_of_bundle);
 }
 
 /*  edit out some syntactic sugar that confuses GAS       */
index ef455e449b9388f2f976069a26610f6843b1e5b4..4e804ffa4c8fecc92b3918c23cd24f3f36c310d5 100644 (file)
@@ -2107,17 +2107,12 @@ macro_build (expressionS *ep, const char *name, const char *fmt, ...)
 static void
 md_assemblef (const char *format, ...)
 {
-  char *buf = NULL;
+  char *buf;
   va_list ap;
-  int r;
 
   va_start (ap, format);
 
-  r = vasprintf (&buf, format, ap);
-
-  if (r < 0)
-    as_fatal (_("internal: vasprintf failed"));
-
+  buf = xvasprintf (format, ap);
   md_assemble (buf);
   free(buf);
 
index 47c43c034c75b33678512a6fca53f59880bf681e..5d10ec546c78faaada941709ac951cea3f38cdaf 100755 (executable)
@@ -15871,16 +15871,6 @@ $as_echo "#define NEED_DECLARATION_FFS 1" >>confdefs.h
 fi
 
 
-ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_asprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ASPRINTF $ac_have_decl
-_ACEOF
 ac_fn_c_check_decl "$LINENO" "mempcpy" "ac_cv_have_decl_mempcpy" "$ac_includes_default"
 if test "x$ac_cv_have_decl_mempcpy" = xyes; then :
   ac_have_decl=1
index ab1d0e04e2febe801bd7a5aeadcf630ecd0bbe4d..997966d4f5e051ddf8c52270722eeebf169bc6b2 100644 (file)
@@ -1002,7 +1002,7 @@ fi
 GAS_CHECK_DECL_NEEDED(environ, f, char **f, $gas_test_headers)
 GAS_CHECK_DECL_NEEDED(ffs, f, int (*f)(int), $gas_test_headers)
 
-AC_CHECK_DECLS([asprintf, mempcpy, stpcpy])
+AC_CHECK_DECLS([mempcpy, stpcpy])
 
 BFD_BINARY_FOPEN
 
index 7a72adac12115906bcd7e17099c79643e3eff05d..aefbd7aefe8912e03c85a707ec296347154703e3 100644 (file)
@@ -3604,8 +3604,7 @@ s_nop (int ignore ATTRIBUTE_UNUSED)
 #endif
       /* md_assemble might modify its argument, so
         we must pass it a string that is writable.  */
-      if (asprintf (&nop, "%s", md_single_noop_insn) < 0)
-       as_fatal ("%s", xstrerror (errno));
+      nop = xasprintf ("%s", md_single_noop_insn);
 
       /* Some targets assume that they can update input_line_pointer
         inside md_assemble, and, worse, that they can leave it
@@ -6533,20 +6532,14 @@ do_s_func (int end_p, const char *default_prefix)
       if (*input_line_pointer != ',')
        {
          if (default_prefix)
-           {
-             if (asprintf (&label, "%s%s", default_prefix, name) == -1)
-               as_fatal ("%s", xstrerror (errno));
-           }
+           label = xasprintf ("%s%s", default_prefix, name);
          else
            {
              char leading_char = bfd_get_symbol_leading_char (stdoutput);
              /* Missing entry point, use function's name with the leading
                 char prepended.  */
              if (leading_char)
-               {
-                 if (asprintf (&label, "%c%s", leading_char, name) == -1)
-                   as_fatal ("%s", xstrerror (errno));
-               }
+               label = xasprintf ("%c%s", leading_char, name);
              else
                label = xstrdup (name);
            }
index 6542e710b556ecec8dfb54e05533aedc92a3806b..da7fb471a1ebfde6249ad4b0cfe8b5faeec9dada 100644 (file)
@@ -644,10 +644,8 @@ stabs_generate_asm_func (const char *funcname, const char *startlabname)
     }
 
   as_where (&lineno);
-  if (asprintf (&buf, "\"%s:F1\",%d,0,%d,%s",
-               funcname, N_FUN, lineno + 1, startlabname) == -1)
-    as_fatal ("%s", xstrerror (errno));
-
+  buf = xasprintf ("\"%s:F1\",%d,0,%d,%s",
+                  funcname, N_FUN, lineno + 1, startlabname);
   temp_ilp (buf);
   s_stab ('s');
   restore_ilp ();
@@ -670,9 +668,7 @@ stabs_generate_asm_endfunc (const char *funcname ATTRIBUTE_UNUSED,
   ++endfunc_label_count;
   colon (sym);
 
-  if (asprintf (&buf, "\"\",%d,0,0,%s-%s", N_FUN, sym, startlabname) == -1)
-    as_fatal ("%s", xstrerror (errno));
-
+  buf = xasprintf ("\"\",%d,0,0,%s-%s", N_FUN, sym, startlabname);
   temp_ilp (buf);
   s_stab ('s');
   restore_ilp ();
index f2aaf0a6879c6606a5d623898053679afcd480c2..633105a43ad7d9fe3c8f564bf7fe86132c0dd6f4 100644 (file)
    */
 #undef HAVE_DCGETTEXT
 
-/* Define to 1 if you have the declaration of `asprintf', and to 0 if you
-   don't. */
-#undef HAVE_DECL_ASPRINTF
-
 /* Define to 1 if you have the declaration of `environ', and to 0 if you
    don't. */
 #undef HAVE_DECL_ENVIRON
index d905f1c60015646e49427db1b60135d598818d1e..0b4197d1c4fa883bd4d1ee7c533c9982129b2683 100755 (executable)
@@ -18761,16 +18761,6 @@ $as_echo "#define USE_BINARY_FOPEN 1" >>confdefs.h
  ;;
 esac
 
-ac_fn_c_check_decl "$LINENO" "asprintf" "ac_cv_have_decl_asprintf" "$ac_includes_default"
-if test "x$ac_cv_have_decl_asprintf" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
-fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ASPRINTF $ac_have_decl
-_ACEOF
 ac_fn_c_check_decl "$LINENO" "environ" "ac_cv_have_decl_environ" "$ac_includes_default"
 if test "x$ac_cv_have_decl_environ" = xyes; then :
   ac_have_decl=1
index 5d10b38a528f00673b2190901f7cb36b1ebb7738..3ac2b46ee03a44a85a2af09b7f5dd163836da9bb 100644 (file)
@@ -408,7 +408,7 @@ AC_CHECK_FUNCS(close glob lseek mkstemp open realpath waitpid)
 
 BFD_BINARY_FOPEN
 
-AC_CHECK_DECLS([asprintf, environ, stpcpy])
+AC_CHECK_DECLS([environ, stpcpy])
 
 GCC_AC_FUNC_MMAP
 
index 00b214411d65319ced45fc8dd1b78d953123c673..6335e1f67ad101355fbb52fc67537a0ea0a7226e 100644 (file)
@@ -9195,12 +9195,7 @@ void
 lang_leave_overlay_section (fill_type *fill,
                            lang_output_section_phdr_list *phdrs)
 {
-  const char *name;
-  char *clean, *s2;
-  const char *s1;
-  char *buf;
-
-  name = current_section->name;
+  const char *name = current_section->name;;
 
   /* For now, assume that DEFAULT_MEMORY_REGION is the run-time memory
      region and that no load-time region has been specified.  It doesn't
@@ -9210,21 +9205,19 @@ lang_leave_overlay_section (fill_type *fill,
 
   /* Define the magic symbols.  */
 
-  clean = (char *) xmalloc (strlen (name) + 1);
-  s2 = clean;
-  for (s1 = name; *s1 != '\0'; s1++)
+  char *clean = xmalloc (strlen (name) + 1);
+  char *s2 = clean;
+  for (const char *s1 = name; *s1 != '\0'; s1++)
     if (ISALNUM (*s1) || *s1 == '_')
       *s2++ = *s1;
   *s2 = '\0';
 
-  buf = (char *) xmalloc (strlen (clean) + sizeof "__load_start_");
-  sprintf (buf, "__load_start_%s", clean);
+  char *buf = xasprintf ("__load_start_%s", clean);
   lang_add_assignment (exp_provide (buf,
                                    exp_nameop (LOADADDR, name),
                                    false));
 
-  buf = (char *) xmalloc (strlen (clean) + sizeof "__load_stop_");
-  sprintf (buf, "__load_stop_%s", clean);
+  buf = xasprintf ("__load_stop_%s", clean);
   lang_add_assignment (exp_provide (buf,
                                    exp_binop ('+',
                                               exp_nameop (LOADADDR, name),
index 8982073bc9114e324ebb2b13aef91aca66d4b5e1..92a12fe19af6ef1b8f85bdced82a15c68955d405 100644 (file)
@@ -1868,7 +1868,6 @@ parse_args (unsigned argc, char **argv)
     {
       char * new_name = NULL;
       char * percent;
-      int    res = 0;
 
       if (config.map_filename[0] == 0)
        {
@@ -1885,9 +1884,9 @@ parse_args (unsigned argc, char **argv)
             output filename.  If the % character was the last character in
             the original map filename then add a .map extension.  */
          percent[0] = 0;
-         res = asprintf (&new_name, "%s%s%s", config.map_filename,
-                         output_filename,
-                         percent[1] ? percent + 1 : ".map");
+         new_name = xasprintf ("%s%s%s", config.map_filename,
+                               output_filename,
+                               percent[1] ? percent + 1 : ".map");
 
          /* FIXME: Should we ensure that any directory components in new_name exist ?  */
        }
@@ -1905,10 +1904,9 @@ parse_args (unsigned argc, char **argv)
          else if (S_ISDIR (s.st_mode))
            {
              char lastc = config.map_filename[strlen (config.map_filename) - 1];
-             res = asprintf (&new_name, "%s%s%s.map",
-                             config.map_filename,
-                             IS_DIR_SEPARATOR (lastc) ? "" : "/",
-                             lbasename (output_filename));
+             new_name = xasprintf ("%s%s%s.map", config.map_filename,
+                                   IS_DIR_SEPARATOR (lastc) ? "" : "/",
+                                   lbasename (output_filename));
            }
          else if (! S_ISREG (s.st_mode))
            {
@@ -1918,14 +1916,7 @@ parse_args (unsigned argc, char **argv)
          /* else FIXME: Check write permission ?  */
        }
 
-      if (res < 0)
-       {
-         /* If the asprintf failed then something is probably very
-            wrong.  Better to halt now rather than continue on
-            into more problems.  */
-         einfo (_("%P%F: cannot create name for linker map file: %E\n"));
-       }
-      else if (new_name != NULL)
+      if (new_name != NULL)
        {
          /* This is a trivial memory leak.  */
          config.map_filename = new_name;
index 93229e02a6ea54c48626905bcab7bb7e9922a495..c2ccf98abe053417fdff6b63ad812b75abfa9374 100644 (file)
@@ -2125,12 +2125,7 @@ make_head (bfd *parent)
   char *oname;
   bfd *abfd;
 
-  if (asprintf (&oname, "%s_d%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_d%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);
@@ -2219,12 +2214,7 @@ make_tail (bfd *parent)
   char *oname;
   bfd *abfd;
 
-  if (asprintf (&oname, "%s_d%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_d%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);
@@ -2412,12 +2402,7 @@ make_one (def_file_export *exp, bfd *parent, bool include_jmp_stub)
        }
     }
 
-  if (asprintf (&oname, "%s_d%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_d%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);
@@ -2600,12 +2585,7 @@ make_singleton_name_thunk (const char *import, bfd *parent)
   char *oname;
   bfd *abfd;
 
-  if (asprintf (&oname, "%s_nmth%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_nmth%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);
@@ -2681,12 +2661,7 @@ make_import_fixup_entry (const char *name,
   char *oname;
   bfd *abfd;
 
-  if (asprintf (&oname, "%s_fu%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_fu%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);
@@ -2740,12 +2715,7 @@ make_runtime_pseudo_reloc (const char *name ATTRIBUTE_UNUSED,
   bfd *abfd;
   bfd_size_type size;
 
-  if (asprintf (&oname, "%s_rtr%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_rtr%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);
@@ -2833,12 +2803,7 @@ pe_create_runtime_relocator_reference (bfd *parent)
   char *oname;
   bfd *abfd;
 
-  if (asprintf (&oname, "%s_ertr%06d.o", dll_symname, tmp_seq) < 4)
-    /* In theory we should return NULL here at let our caller decide what to
-       do.  But currently the return value is not checked, just used, and
-       besides, this condition only happens when the system has run out of
-       memory.  So just give up.  */
-    exit (EXIT_FAILURE);
+  oname = xasprintf ("%s_ertr%06d.o", dll_symname, tmp_seq);
   tmp_seq++;
 
   abfd = bfd_create (oname, parent);