re PR lto/81487 ([mingw32] ld.exe: error: asprintf failed)
authorGeorg-Johann Lay <avr@gjlay.de>
Fri, 21 Jul 2017 15:58:14 +0000 (15:58 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Fri, 21 Jul 2017 15:58:14 +0000 (15:58 +0000)
lto-plugin/
PR lto/81487
* lto-plugin.c (claim_file_handler): Use xasprintf instead of
asprintf.
[hi!=0]: Swap hi and lo arguments supplied to xasprintf.

From-SVN: r250428

lto-plugin/ChangeLog
lto-plugin/lto-plugin.c

index c1859e2bbee1023afdf551dff7f3e06fcabc82cc..d3617a12ea3587707c80e5c30489a4badaa5bf41 100644 (file)
@@ -1,3 +1,10 @@
+2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR lto/81487
+       * lto-plugin.c (claim_file_handler): Use xasprintf instead of
+       asprintf.
+       [hi!=0]: Swap hi and lo arguments supplied to xasprintf.
+
 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
 
        PR other/79046
index f713c5dab0d388e21437229baa5455ddc72dea99..27fcfbeca0918ebcd2ce8502c042aa5af0f8b520 100644 (file)
@@ -975,17 +975,16 @@ claim_file_handler (const struct ld_plugin_input_file *file, int *claimed)
 
   if (file->offset != 0)
     {
-      char *objname;
       /* We pass the offset of the actual file, not the archive header.
          Can't use PRIx64, because that's C99, so we have to print the
-        64-bit hex int as two 32-bit ones. */
-      int lo, hi, t;
+        64-bit hex int as two 32-bit ones.  Use xasprintf instead of
+        asprintf because asprintf doesn't work as expected on some older
+        mingw32 hosts.  */
+      int lo, hi;
       lo = file->offset & 0xffffffff;
       hi = ((int64_t)file->offset >> 32) & 0xffffffff;
-      t = hi ? asprintf (&objname, "%s@0x%x%08x", file->name, lo, hi)
-            : asprintf (&objname, "%s@0x%x", file->name, lo);
-      check (t >= 0, LDPL_FATAL, "asprintf failed");
-      lto_file.name = objname;
+      lto_file.name = hi ? xasprintf ("%s@0x%x%08x", file->name, hi, lo)
+                        : xasprintf ("%s@0x%x", file->name, lo);
     }
   else
     {