Replace copyreloc-main.c with copyreloc-main.S
[platform/upstream/binutils.git] / binutils / prdbg.c
index 78a8fc7..fab60a6 100644 (file)
@@ -1,6 +1,5 @@
 /* prdbg.c -- Print out generic debugging information.
-   Copyright 1995, 1996, 1999, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
-   2009  Free Software Foundation, Inc.
+   Copyright (C) 1995-2014 Free Software Foundation, Inc.
    Written by Ian Lance Taylor <ian@cygnus.com>.
    Tags style generation written by Salvador E. Tropea <set@computer.org>.
 
@@ -731,10 +730,16 @@ pr_function_type (void *p, int argcount, bfd_boolean varargs)
       for (i = argcount - 1; i >= 0; i--)
        {
          if (! substitute_type (info, ""))
-           return FALSE;
+           {
+             free (arg_types);
+             return FALSE;
+           }
          arg_types[i] = pop_type (info);
          if (arg_types[i] == NULL)
-           return FALSE;
+           {
+             free (arg_types);
+             return FALSE;
+           }
          len += strlen (arg_types[i]) + 2;
        }
       if (varargs)
@@ -952,10 +957,16 @@ pr_method_type (void *p, bfd_boolean domain, int argcount, bfd_boolean varargs)
       for (i = argcount - 1; i >= 0; i--)
        {
          if (! substitute_type (info, ""))
-           return FALSE;
+           {
+             free (arg_types);
+             return FALSE;
+           }
          arg_types[i] = pop_type (info);
          if (arg_types[i] == NULL)
-           return FALSE;
+           {
+             free (arg_types);
+             return FALSE;
+           }
          len += strlen (arg_types[i]) + 2;
        }
       if (varargs)
@@ -2175,17 +2186,30 @@ tg_class_static_member (void *p, const char *name,
   sprintf (full_name, "%s::%s", info->stack->next->type, name);
 
   if (! substitute_type (info, full_name))
-    return FALSE;
+    {
+      free (full_name);
+      return FALSE;
+    }
 
   if (! prepend_type (info, "static "))
-    return FALSE;
+    {
+      free (full_name);
+      return FALSE;
+    }
 
   t = pop_type (info);
   if (t == NULL)
-    return FALSE;
+    {
+      free (full_name);
+      return FALSE;
+    }
 
   if (! tg_fix_visibility (info, visibility))
-    return FALSE;
+    {
+      free (t);
+      free (full_name);
+      return FALSE;
+    }
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:x\ttype:%s\tclass:%s\taccess:%s\n",
           name, info->filename, t, info->stack->type,
@@ -2295,12 +2319,18 @@ tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
 
   /* Stick the name of the method into its type.  */
   if (! substitute_type (info, method_name))
-    return FALSE;
+    {
+      free (method_name);
+      return FALSE;
+    }
 
   /* Get the type.  */
   method_type = pop_type (info);
   if (method_type == NULL)
-    return FALSE;
+    {
+      free (method_name);
+      return FALSE;
+    }
 
   /* Pull off the context type if there is one.  */
   if (! context)
@@ -2309,12 +2339,21 @@ tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
     {
       context_type = pop_type (info);
       if (context_type == NULL)
-       return FALSE;
+       {
+         free (method_type);
+         free (method_name);
+         return FALSE;
+       }
     }
 
   /* Now the top of the stack is the class.  */
   if (! tg_fix_visibility (info, visibility))
-    return FALSE;
+    {
+      free (method_type);
+      free (method_name);
+      free (context_type);
+      return FALSE;
+    }
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\n",
           method_name, info->filename, method_type, info->stack->type);
@@ -2360,16 +2399,26 @@ tg_class_static_method_variant (void *p,
   method_name = strdup (info->stack->next->method);
   /* Stick the name of the method into its type.  */
   if (! substitute_type (info, info->stack->next->method))
-    return FALSE;
+    {
+      free (method_name);
+      return FALSE;
+    }
 
   /* Get the type.  */
   method_type = pop_type (info);
   if (method_type == NULL)
-    return FALSE;
+    {
+      free (method_name);
+      return FALSE;
+    }
 
   /* Now the top of the stack is the class.  */
   if (! tg_fix_visibility (info, visibility))
-    return FALSE;
+    {
+      free (method_type);
+      free (method_name);
+      return FALSE;
+    }
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\taccess:%s\n",
           method_name, info->filename, method_type, info->stack->type,