projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gas: run the hwcaps-bump tests with 64-bit sparc objects only.
[deliverable/binutils-gdb.git]
/
binutils
/
ieee.c
diff --git
a/binutils/ieee.c
b/binutils/ieee.c
index 3763a8eed17208f88f5f2fc5ca88b5883ab9bcdf..4cf2b1d7121a3f47265157cfb14626d40bbbe97b 100644
(file)
--- a/
binutils/ieee.c
+++ b/
binutils/ieee.c
@@
-1,6
+1,5
@@
/* ieee.c -- Read and write IEEE-695 debugging information.
/* ieee.c -- Read and write IEEE-695 debugging information.
- Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2006, 2007,
- 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1996-2016 Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@cygnus.com>.
This file is part of GNU Binutils.
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. */
/* 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. */
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. */
/* 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. */
};
/* This structure holds all the variables. */
@@
-2500,7
+2501,7
@@
ieee_read_cxx_misc (struct ieee_info *info, const bfd_byte **pp,
case 'z':
{
case 'z':
{
- const char *name, *mangled, *class;
+ const char *name, *mangled, *c
xx_c
lass;
unsigned long namlen, mangledlen, classlen;
bfd_vma control;
unsigned long namlen, mangledlen, classlen;
bfd_vma control;
@@
-2508,7
+2509,7
@@
ieee_read_cxx_misc (struct ieee_info *info, const bfd_byte **pp,
if (! ieee_require_atn65 (info, pp, &name, &namlen)
|| ! ieee_require_atn65 (info, pp, &mangled, &mangledlen)
if (! ieee_require_atn65 (info, pp, &name, &namlen)
|| ! ieee_require_atn65 (info, pp, &mangled, &mangledlen)
- || ! ieee_require_atn65 (info, pp, &class, &classlen)
+ || ! ieee_require_atn65 (info, pp, &c
xx_c
lass, &classlen)
|| ! ieee_require_asn (info, pp, &control))
return FALSE;
|| ! ieee_require_asn (info, pp, &control))
return FALSE;
@@
-2533,7
+2534,7
@@
ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
unsigned long count)
{
const bfd_byte *start;
unsigned long count)
{
const bfd_byte *start;
- bfd_vma class;
+ bfd_vma c
xx_c
lass;
const char *tag;
unsigned long taglen;
struct ieee_tag *it;
const char *tag;
unsigned long taglen;
struct ieee_tag *it;
@@
-2558,7
+2559,7
@@
ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
start = *pp;
start = *pp;
- if (! ieee_require_asn (info, pp, &class))
+ if (! ieee_require_asn (info, pp, &c
xx_c
lass))
return FALSE;
--count;
return FALSE;
--count;
@@
-2614,7
+2615,7
@@
ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
case 'b':
{
bfd_vma flags, cinline;
case 'b':
{
bfd_vma flags, cinline;
- const char *base
name
, *fieldname;
+ const char *base, *fieldname;
unsigned long baselen, fieldlen;
char *basecopy;
debug_type basetype;
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)
/* This represents a base or friend class. */
if (! ieee_require_asn (info, pp, &flags)
- || ! ieee_require_atn65 (info, pp, &base
name
, &baselen)
+ || ! ieee_require_atn65 (info, pp, &base, &baselen)
|| ! ieee_require_asn (info, pp, &cinline)
|| ! ieee_require_atn65 (info, pp, &fieldname, &fieldlen))
return FALSE;
|| ! 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;
}
return FALSE;
}
- basecopy = savestring (base
name
, baselen);
+ basecopy = savestring (base, baselen);
basetype = debug_find_tagged_type (dhandle, basecopy,
DEBUG_KIND_ILLEGAL);
free (basecopy);
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;
{
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)
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':
{
case 'z':
{
- const char *vname, *base
name
;
+ const char *vname, *base;
unsigned long vnamelen, baselen;
bfd_vma vsize, control;
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)
if (! ieee_require_atn65 (info, pp, &vname, &vnamelen)
|| ! ieee_require_asn (info, pp, &vsize)
- || ! ieee_require_atn65 (info, pp, &base
name
, &baselen)
+ || ! ieee_require_atn65 (info, pp, &base, &baselen)
|| ! ieee_require_asn (info, pp, &control))
return FALSE;
count -= 4;
|| ! 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;
{
char *basecopy;
- basecopy = savestring (base
name
, baselen);
+ basecopy = savestring (base, baselen);
vptrbase = debug_find_tagged_type (dhandle, basecopy,
DEBUG_KIND_ILLEGAL);
free (basecopy);
vptrbase = debug_find_tagged_type (dhandle, basecopy,
DEBUG_KIND_ILLEGAL);
free (basecopy);
@@
-3180,7
+3181,7
@@
ieee_read_cxx_class (struct ieee_info *info, const bfd_byte **pp,
it->slot. We update it->slot to automatically update all
references to this struct. */
it->slot = debug_make_object_type (dhandle,
it->slot. We update it->slot to automatically update all
references to this struct. */
it->slot = debug_make_object_type (dhandle,
- class != 'u',
+ c
xx_c
lass != 'u',
debug_get_type_size (dhandle,
it->slot),
fields, baseclasses, dmethods,
debug_get_type_size (dhandle,
it->slot),
fields, baseclasses, dmethods,
@@
-3303,7
+3304,7
@@
ieee_read_reference (struct ieee_info *info, const bfd_byte **pp)
{
const bfd_byte *start;
bfd_vma flags;
{
const bfd_byte *start;
bfd_vma flags;
- const char *class, *name;
+ const char *c
xx_c
lass, *name;
unsigned long classlen, namlen;
debug_type *pslot;
debug_type target;
unsigned long classlen, namlen;
debug_type *pslot;
debug_type target;
@@
-3317,7
+3318,7
@@
ieee_read_reference (struct ieee_info *info, const bfd_byte **pp)
the spec. */
if (flags == 3)
{
the spec. */
if (flags == 3)
{
- if (! ieee_require_atn65 (info, pp, &class, &classlen))
+ if (! ieee_require_atn65 (info, pp, &c
xx_c
lass, &classlen))
return FALSE;
}
return FALSE;
}
@@
-3407,8
+3408,8
@@
ieee_read_reference (struct ieee_info *info, const bfd_byte **pp)
for (it = info->tags; it != NULL; it = it->next)
{
for (it = info->tags; it != NULL; it = it->next)
{
- if (it->name[0] == class[0]
- && strncmp (it->name, class, classlen) == 0
+ if (it->name[0] == c
xx_c
lass[0]
+ && strncmp (it->name, c
xx_c
lass, classlen) == 0
&& strlen (it->name) == classlen)
{
if (it->fslots != NULL)
&& strlen (it->name) == classlen)
{
if (it->fslots != NULL)
@@
-4822,7
+4823,6
@@
ieee_start_compilation_unit (void *p, const char *filename)
const char *backslash;
#endif
char *c, *s;
const char *backslash;
#endif
char *c, *s;
- unsigned int nindx;
if (info->filename != NULL)
{
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;
|| ! 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)
++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 (! ieee_change_buffer (info, &info->linenos)
|| ! ieee_write_byte (info, (int) ieee_be_record_enum))
return FALSE;
- if (
str
cmp (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
{
/* 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"))
|| ! ieee_write_id (info, "")
|| ! ieee_write_number (info, 0)
|| ! ieee_write_id (info, "GNU objcopy"))
- return FALSE;
+ {
+ free (c);
+ return FALSE;
+ }
free (c);
}
free (c);
}
@@
-5451,7
+5453,7
@@
ieee_pointer_type (void *p)
if (! localp)
{
if (! localp)
{
- m = ieee_get_modified_info (p, indx);
+ m = ieee_get_modified_info (
(struct ieee_handle *)
p, indx);
if (m == NULL)
return FALSE;
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 = 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;
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)))
|| ! 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++)
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)
{
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
/* 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)
{
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++
/* 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
/* 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;
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. */
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);
{
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))
|| ! ieee_write_id (info, fname)
|| ! ieee_write_number (info, bindx)
|| ! ieee_write_number (info, bitpos / 8))
- return FALSE;
+ {
+ free (fname);
+ return FALSE;
+ }
flags = 0;
}
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))
|| ! 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);
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;
{
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
/* 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;
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)
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;
|| ! 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;
{
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;
}
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 (
str
cmp (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;
{
/* 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. */
{
/* 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;
}
}
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. */
{
/* We are not changing to the main file. Open a block for
the new included file. */
This page took
0.031111 seconds
and
4
git commands to generate.