Fix compile time warning messages about variables being used before they are initialised.
[deliverable/binutils-gdb.git] / binutils / ieee.c
index 7755478d31f199100b4bf5eddbbb1bd394d6e05a..a0d69d19ab9edf2afdcbdee52e8bfaa35037db0e 100644 (file)
@@ -1,6 +1,5 @@
 /* ieee.c -- Read and write IEEE-695 debugging information.
-   Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007,
-   2008, 2009  Free Software Foundation, Inc.
+   Copyright (C) 1996-2015 Free Software Foundation, Inc.
    Written by Ian Lance Taylor <ian@cygnus.com>.
 
    This file is part of GNU Binutils.
@@ -59,6 +58,16 @@ struct ieee_blockstack
 
 /* This structure holds information for a variable.  */
 
+enum ieee_var_kind
+  {
+    IEEE_UNKNOWN,
+    IEEE_EXTERNAL,
+    IEEE_GLOBAL,
+    IEEE_STATIC,
+    IEEE_LOCAL,
+    IEEE_FUNCTION
+  };
+
 struct ieee_var
 {
   /* Start of name.  */
@@ -70,15 +79,7 @@ struct ieee_var
   /* Slot if we make an indirect type.  */
   debug_type *pslot;
   /* Kind of variable or function.  */
-  enum
-    {
-      IEEE_UNKNOWN,
-      IEEE_EXTERNAL,
-      IEEE_GLOBAL,
-      IEEE_STATIC,
-      IEEE_LOCAL,
-      IEEE_FUNCTION
-    } kind;
+  enum ieee_var_kind kind;
 };
 
 /* This structure holds all the variables.  */
@@ -2614,7 +2615,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
        case 'b':
          {
            bfd_vma flags, cinline;
-           const char *basename, *fieldname;
+           const char *base, *fieldname;
            unsigned long baselen, fieldlen;
            char *basecopy;
            debug_type basetype;
@@ -2626,7 +2627,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
            /* This represents a base or friend class.  */
 
            if (! ieee_require_asn (info, pp, &flags)
-               || ! ieee_require_atn65 (info, pp, &basename, &baselen)
+               || ! ieee_require_atn65 (info, pp, &base, &baselen)
                || ! ieee_require_asn (info, pp, &cinline)
                || ! ieee_require_atn65 (info, pp, &fieldname, &fieldlen))
              return FALSE;
@@ -2648,7 +2649,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
                return FALSE;
              }
 
-           basecopy = savestring (basename, baselen);
+           basecopy = savestring (base, baselen);
            basetype = debug_find_tagged_type (dhandle, basecopy,
                                               DEBUG_KIND_ILLEGAL);
            free (basecopy);
@@ -2953,7 +2954,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
              {
                debug_type return_type;
                const debug_type *arg_types;
-               bfd_boolean varargs;
+               bfd_boolean varargs = FALSE;
 
                if (debug_get_type_kind (dhandle, pv->type)
                    != DEBUG_KIND_FUNCTION)
@@ -3111,7 +3112,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
 
        case 'z':
          {
-           const char *vname, *basename;
+           const char *vname, *base;
            unsigned long vnamelen, baselen;
            bfd_vma vsize, control;
 
@@ -3119,7 +3120,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
 
            if (! ieee_require_atn65 (info, pp, &vname, &vnamelen)
                || ! ieee_require_asn (info, pp, &vsize)
-               || ! ieee_require_atn65 (info, pp, &basename, &baselen)
+               || ! ieee_require_atn65 (info, pp, &base, &baselen)
                || ! ieee_require_asn (info, pp, &control))
              return FALSE;
            count -= 4;
@@ -3136,7 +3137,7 @@ ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
              {
                char *basecopy;
 
-               basecopy = savestring (basename, baselen);
+               basecopy = savestring (base, baselen);
                vptrbase = debug_find_tagged_type (dhandle, basecopy,
                                                   DEBUG_KIND_ILLEGAL);
                free (basecopy);
@@ -4822,7 +4823,6 @@ ieee_start_compilation_unit (void *p, const char *filename)
   const char *backslash;
 #endif
   char *c, *s;
-  unsigned int nindx;
 
   if (info->filename != NULL)
     {
@@ -4870,7 +4870,6 @@ ieee_start_compilation_unit (void *p, const char *filename)
       || ! ieee_write_id (info, info->modname))
     return FALSE;
 
-  nindx = info->name_indx;
   ++info->name_indx;
   if (! ieee_change_buffer (info, &info->vars)
       || ! ieee_write_byte (info, (int) ieee_bb_record_enum)
@@ -4938,7 +4937,7 @@ ieee_finish_compilation_unit (struct ieee_handle *info)
       if (! ieee_change_buffer (info, &info->linenos)
          || ! ieee_write_byte (info, (int) ieee_be_record_enum))
        return FALSE;
-      if (strcmp (info->filename, info->lineno_filename) != 0)
+      if (filename_cmp (info->filename, info->lineno_filename) != 0)
        {
          /* We were not in the main file.  We just closed the
              included line number block, and now we must close the
@@ -5125,7 +5124,10 @@ ieee_add_bb11 (struct ieee_handle *info, asection *sec, bfd_vma low,
          || ! ieee_write_id (info, "")
          || ! ieee_write_number (info, 0)
          || ! ieee_write_id (info, "GNU objcopy"))
-       return FALSE;
+       {
+         free (c);
+         return FALSE;
+       }
 
       free (c);
     }
@@ -5451,7 +5453,7 @@ ieee_pointer_type (void *p)
 
   if (! localp)
     {
-      m = ieee_get_modified_info (p, indx);
+      m = ieee_get_modified_info ((struct ieee_handle *) p, indx);
       if (m == NULL)
        return FALSE;
 
@@ -5509,7 +5511,7 @@ ieee_function_type (void *p, int argcount, bfd_boolean varargs)
   m = NULL;
   if (argcount < 0 && ! localp)
     {
-      m = ieee_get_modified_info (p, retindx);
+      m = ieee_get_modified_info ((struct ieee_handle *) p, retindx);
       if (m == NULL)
        return FALSE;
 
@@ -5529,7 +5531,10 @@ ieee_function_type (void *p, int argcount, bfd_boolean varargs)
       || ! ieee_write_number (info, 0)
       || ! ieee_write_number (info, retindx)
       || ! ieee_write_number (info, (bfd_vma) argcount + (varargs ? 1 : 0)))
-    return FALSE;
+    {
+      free (args);
+      return FALSE;
+    }
   if (argcount > 0)
     {
       for (i = 0; i < argcount; i++)
@@ -5686,12 +5691,6 @@ ieee_set_type (void *p, bfd_boolean bitstringp ATTRIBUTE_UNUSED)
 static bfd_boolean
 ieee_offset_type (void *p)
 {
-  struct ieee_handle *info = (struct ieee_handle *) p;
-  unsigned int targetindx, baseindx;
-
-  targetindx = ieee_pop_type (info);
-  baseindx = ieee_pop_type (info);
-
   /* FIXME: The MRI C++ compiler does not appear to generate any
      useful type information about an offset type.  It just records a
      pointer to member as an integer.  The MRI/HP IEEE spec does
@@ -5978,8 +5977,6 @@ ieee_struct_field (void *p, const char *name, bfd_vma bitpos, bfd_vma bitsize,
 
       if (referencep)
        {
-         unsigned int nindx;
-
          /* We need to output a record recording that this field is
              really of reference type.  We put this on the refs field
              of classdef, so that it can be appended to the C++
@@ -6199,7 +6196,7 @@ ieee_class_static_member (void *p, const char *name, const char *physname,
 /* Add a base class to a class.  */
 
 static bfd_boolean
-ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean virtual,
+ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
                      enum debug_visibility visibility)
 {
   struct ieee_handle *info = (struct ieee_handle *) p;
@@ -6225,7 +6222,7 @@ ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean virtual,
      class.  The stabs debugging reader will create a field named
      _vb$CLASS for a virtual base class, so we just use that.  FIXME:
      we should not depend upon a detail of stabs debugging.  */
-  if (virtual)
+  if (is_virtual)
     {
       fname = (char *) xmalloc (strlen (bname) + sizeof "_vb$");
       sprintf (fname, "_vb$%s", bname);
@@ -6243,7 +6240,10 @@ ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean virtual,
          || ! ieee_write_id (info, fname)
          || ! ieee_write_number (info, bindx)
          || ! ieee_write_number (info, bitpos / 8))
-       return FALSE;
+       {
+         free (fname);
+         return FALSE;
+       }
       flags = 0;
     }
 
@@ -6258,7 +6258,10 @@ ieee_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean virtual,
       || ! ieee_write_atn65 (info, nindx, bname)
       || ! ieee_write_asn (info, nindx, 0)
       || ! ieee_write_atn65 (info, nindx, fname))
-    return FALSE;
+    {
+      free (fname);
+      return FALSE;
+    }
   info->type_stack->type.classdef->pmisccount += 5;
 
   free (fname);
@@ -6293,7 +6296,7 @@ ieee_class_method_var (struct ieee_handle *info, const char *physname,
 {
   unsigned int flags;
   unsigned int nindx;
-  bfd_boolean virtual;
+  bfd_boolean is_virtual;
 
   /* We don't need the type of the method.  An IEEE consumer which
      wants the type must track down the function by the physical name
@@ -6323,18 +6326,18 @@ ieee_class_method_var (struct ieee_handle *info, const char *physname,
 
   nindx = info->type_stack->type.classdef->indx;
 
-  virtual = context || voffset > 0;
+  is_virtual = context || voffset > 0;
 
   if (! ieee_change_buffer (info,
                            &info->type_stack->type.classdef->pmiscbuf)
-      || ! ieee_write_asn (info, nindx, virtual ? 'v' : 'm')
+      || ! ieee_write_asn (info, nindx, is_virtual ? 'v' : 'm')
       || ! ieee_write_asn (info, nindx, flags)
       || ! ieee_write_atn65 (info, nindx,
                             info->type_stack->type.classdef->method)
       || ! ieee_write_atn65 (info, nindx, physname))
     return FALSE;
 
-  if (virtual)
+  if (is_virtual)
     {
       if (voffset > info->type_stack->type.classdef->voffset)
        info->type_stack->type.classdef->voffset = voffset;
@@ -7347,15 +7350,17 @@ ieee_lineno (void *p, const char *filename, unsigned long lineno, bfd_vma addr)
          info->lineno_filename = info->filename;
        }
 
-      if (strcmp (info->pending_lineno_filename, info->lineno_filename) != 0)
+      if (filename_cmp (info->pending_lineno_filename,
+                       info->lineno_filename) != 0)
        {
-         if (strcmp (info->filename, info->lineno_filename) != 0)
+         if (filename_cmp (info->filename, info->lineno_filename) != 0)
            {
              /* We were not in the main file.  Close the block for the
                 included file.  */
              if (! ieee_write_byte (info, (int) ieee_be_record_enum))
                return FALSE;
-             if (strcmp (info->filename, info->pending_lineno_filename) == 0)
+             if (filename_cmp (info->filename,
+                               info->pending_lineno_filename) == 0)
                {
                  /* We need a new NN record, and we aren't about to
                     output one.  */
@@ -7367,7 +7372,8 @@ ieee_lineno (void *p, const char *filename, unsigned long lineno, bfd_vma addr)
                    return FALSE;
                }
            }
-         if (strcmp (info->filename, info->pending_lineno_filename) != 0)
+         if (filename_cmp (info->filename,
+                           info->pending_lineno_filename) != 0)
            {
              /* We are not changing to the main file.  Open a block for
                 the new included file.  */
This page took 0.027828 seconds and 4 git commands to generate.