]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
backends: Make aarch64_regs.c checkable by -Wprintf
authorPetr Machata <pmachata@redhat.com>
Thu, 30 Jan 2014 14:34:33 +0000 (15:34 +0100)
committerPetr Machata <pmachata@redhat.com>
Thu, 30 Jan 2014 15:12:12 +0000 (16:12 +0100)
backends/ChangeLog
backends/aarch64_regs.c

index 212b9f6ddfe031c9c94e0a79fa580e01967f9ba5..2863c00a2b796731ebcf17a42722ed536e6eb409 100644 (file)
@@ -1,3 +1,11 @@
+2014-01-30  Petr Machata  <pmachata@redhat.com>
+
+       * aarch64_regs.c (aarch64_register_info.regtype): Make this
+       variadic printf-like function.  Call one vsnprintf instead of two
+       snprintf's.
+       (regtyper, regtypen): Drop.
+       (aarch64_register_info): Adjust callers.
+
 2014-01-26  Mark Wielaard  <mjw@redhat.com>
 
        * Makefile.am (arm_SRCS): Add arm_initreg.c.
index bd10c464e8755482807185deb844a3135b4c36b5..7a8a6780dcd75f5860a8c73da63733027bd5587b 100644 (file)
@@ -33,6 +33,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <dwarf.h>
+#include <stdarg.h>
 
 #define BACKEND aarch64_
 #include "libebl_CPU.h"
@@ -46,49 +47,39 @@ aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
   if (name == NULL)
     return 128;
 
+  __attribute__ ((format (printf, 3, 4)))
   ssize_t
-  regtype (const char *setname, int type, const char *rname, bool nr, int arg)
+  regtype (const char *setname, int type, const char *fmt, ...)
   {
     *setnamep = setname;
     *typep = type;
-    int s;
-    if (nr)
-      s = snprintf (name, namelen, "%s%d", rname, arg);
-    else
-      s = snprintf (name, namelen, "%s", rname);
+
+    va_list ap;
+    va_start (ap, fmt);
+    int s = vsnprintf (name, namelen, fmt, ap);
+    va_end(ap);
+
     if (s < 0 || (unsigned) s >= namelen)
       return -1;
     return s + 1;
   }
 
-  ssize_t
-  regtyper (const char *setname, int type, const char *rname)
-  {
-    return regtype (setname, type, rname, false, 0);
-  }
-
-  ssize_t
-  regtypen (const char *setname, int type, const char *rname, int arg)
-  {
-    return regtype (setname, type, rname, true, arg);
-  }
-
   *prefix = "";
   *bits = 64;
 
   switch (regno)
     {
     case 0 ... 30:
-      return regtypen ("integer", DW_ATE_signed, "x", regno);
+      return regtype ("integer", DW_ATE_signed, "x%d", regno);
 
     case 31:
-      return regtyper ("integer", DW_ATE_address, "sp");
+      return regtype ("integer", DW_ATE_address, "sp");
 
     case 32:
       return 0;
 
     case 33:
-      return regtyper ("integer", DW_ATE_address, "elr");
+      return regtype ("integer", DW_ATE_address, "elr");
 
     case 34 ... 63:
       return 0;
@@ -100,7 +91,7 @@ aarch64_register_info (Ebl *ebl __attribute__ ((unused)),
         integers.  128-bit quad-word is the only singular value that
         covers the whole register, so mark the register thus.  */
       *bits = 128;
-      return regtypen ("FP/SIMD", DW_ATE_unsigned, "v", regno - 64);
+      return regtype ("FP/SIMD", DW_ATE_unsigned, "v%d", regno - 64);
 
     case 96 ... 127:
       return 0;