gdbsupport: re-indent ptrace.m4
[deliverable/binutils-gdb.git] / binutils / prdbg.c
index 33ba213495ef97fe0be01ea4cbe4e4b1757b6de6..1b376f485fecf04303d39b6240c1475e65e8dfa9 100644 (file)
@@ -1,5 +1,5 @@
 /* prdbg.c -- Print out generic debugging information.
 /* prdbg.c -- Print out generic debugging information.
-   Copyright 1995, 1996, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 Free Software Foundation, Inc.
    Written by Ian Lance Taylor <ian@cygnus.com>.
    Tags style generation written by Salvador E. Tropea <set@computer.org>.
 
    Written by Ian Lance Taylor <ian@cygnus.com>.
    Tags style generation written by Salvador E. Tropea <set@computer.org>.
 
@@ -7,7 +7,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 /* This file prints out the generic debugging information, by
    supplying a set of routines to debug_write.  */
 
 
 /* This file prints out the generic debugging information, by
    supplying a set of routines to debug_write.  */
 
-#include <stdio.h>
+#include "sysdep.h"
 #include <assert.h>
 #include <assert.h>
-
 #include "bfd.h"
 #include "bfd.h"
-#include "bucomm.h"
 #include "libiberty.h"
 #include "libiberty.h"
+#include "demangle.h"
 #include "debug.h"
 #include "budbg.h"
 
 #include "debug.h"
 #include "budbg.h"
 
@@ -52,7 +51,7 @@ struct pr_handle
   /* The symbols table for this BFD.  */
   asymbol **syms;
   /* Pointer to a function to demangle symbols.  */
   /* The symbols table for this BFD.  */
   asymbol **syms;
   /* Pointer to a function to demangle symbols.  */
-  char *(*demangler) (bfd *, const char *);
+  char *(*demangler) (bfd *, const char *, int);
 };
 
 /* The type stack.  */
 };
 
 /* The type stack.  */
@@ -76,145 +75,118 @@ struct pr_stack
   int num_parents;
 };
 
   int num_parents;
 };
 
-static void indent
-  PARAMS ((struct pr_handle *));
-static bfd_boolean push_type
-  PARAMS ((struct pr_handle *, const char *));
-static bfd_boolean prepend_type
-  PARAMS ((struct pr_handle *, const char *));
-static bfd_boolean append_type
-  PARAMS ((struct pr_handle *, const char *));
-static bfd_boolean substitute_type
-  PARAMS ((struct pr_handle *, const char *));
-static bfd_boolean indent_type
-  PARAMS ((struct pr_handle *));
-static char *pop_type
-  PARAMS ((struct pr_handle *));
-static void print_vma
-  PARAMS ((bfd_vma, char *, bfd_boolean, bfd_boolean));
+static void indent (struct pr_handle *);
+static bfd_boolean push_type (struct pr_handle *, const char *);
+static bfd_boolean prepend_type (struct pr_handle *, const char *);
+static bfd_boolean append_type (struct pr_handle *, const char *);
+static bfd_boolean substitute_type (struct pr_handle *, const char *);
+static bfd_boolean indent_type (struct pr_handle *);
+static char *pop_type (struct pr_handle *);
+static void print_vma (bfd_vma, char *, bfd_boolean, bfd_boolean);
 static bfd_boolean pr_fix_visibility
 static bfd_boolean pr_fix_visibility
-  PARAMS ((struct pr_handle *, enum debug_visibility));
-static bfd_boolean pr_start_compilation_unit
-  PARAMS ((PTR, const char *));
-static bfd_boolean pr_start_source
-  PARAMS ((PTR, const char *));
-static bfd_boolean pr_empty_type
-  PARAMS ((PTR));
-static bfd_boolean pr_void_type
-  PARAMS ((PTR));
-static bfd_boolean pr_int_type
-  PARAMS ((PTR, unsigned int, bfd_boolean));
-static bfd_boolean pr_float_type
-  PARAMS ((PTR, unsigned int));
-static bfd_boolean pr_complex_type
-  PARAMS ((PTR, unsigned int));
-static bfd_boolean pr_bool_type
-  PARAMS ((PTR, unsigned int));
+  (struct pr_handle *, enum debug_visibility);
+static bfd_boolean pr_start_compilation_unit (void *, const char *);
+static bfd_boolean pr_start_source (void *, const char *);
+static bfd_boolean pr_empty_type (void *);
+static bfd_boolean pr_void_type (void *);
+static bfd_boolean pr_int_type (void *, unsigned int, bfd_boolean);
+static bfd_boolean pr_float_type (void *, unsigned int);
+static bfd_boolean pr_complex_type (void *, unsigned int);
+static bfd_boolean pr_bool_type (void *, unsigned int);
 static bfd_boolean pr_enum_type
 static bfd_boolean pr_enum_type
-  PARAMS ((PTR, const char *, const char **, bfd_signed_vma *));
-static bfd_boolean pr_pointer_type
-  PARAMS ((PTR));
-static bfd_boolean pr_function_type
-  PARAMS ((PTR, int, bfd_boolean));
-static bfd_boolean pr_reference_type
-  PARAMS ((PTR));
-static bfd_boolean pr_range_type
-  PARAMS ((PTR, bfd_signed_vma, bfd_signed_vma));
+  (void *, const char *, const char **, bfd_signed_vma *);
+static bfd_boolean pr_pointer_type (void *);
+static bfd_boolean pr_function_type (void *, int, bfd_boolean);
+static bfd_boolean pr_reference_type (void *);
+static bfd_boolean pr_range_type (void *, bfd_signed_vma, bfd_signed_vma);
 static bfd_boolean pr_array_type
 static bfd_boolean pr_array_type
-  PARAMS ((PTR, bfd_signed_vma, bfd_signed_vma, bfd_boolean));
-static bfd_boolean pr_set_type
-  PARAMS ((PTR, bfd_boolean));
-static bfd_boolean pr_offset_type
-  PARAMS ((PTR));
-static bfd_boolean pr_method_type
-  PARAMS ((PTR, bfd_boolean, int, bfd_boolean));
-static bfd_boolean pr_const_type
-  PARAMS ((PTR));
-static bfd_boolean pr_volatile_type
-  PARAMS ((PTR));
+  (void *, bfd_signed_vma, bfd_signed_vma, bfd_boolean);
+static bfd_boolean pr_set_type (void *, bfd_boolean);
+static bfd_boolean pr_offset_type (void *);
+static bfd_boolean pr_method_type (void *, bfd_boolean, int, bfd_boolean);
+static bfd_boolean pr_const_type (void *);
+static bfd_boolean pr_volatile_type (void *);
 static bfd_boolean pr_start_struct_type
 static bfd_boolean pr_start_struct_type
-  PARAMS ((PTR, const char *, unsigned int, bfd_boolean, unsigned int));
+  (void *, const char *, unsigned int, bfd_boolean, unsigned int);
 static bfd_boolean pr_struct_field
 static bfd_boolean pr_struct_field
-  PARAMS ((PTR, const char *, bfd_vma, bfd_vma, enum debug_visibility));
-static bfd_boolean pr_end_struct_type
-  PARAMS ((PTR));
+  (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean pr_end_struct_type (void *);
 static bfd_boolean pr_start_class_type
 static bfd_boolean pr_start_class_type
-  PARAMS ((PTR, const char *, unsigned int, bfd_boolean, unsigned int,
-          bfd_boolean, bfd_boolean));
+  (void *, const char *, unsigned int, bfd_boolean, unsigned int,
+   bfd_boolean, bfd_boolean);
 static bfd_boolean pr_class_static_member
 static bfd_boolean pr_class_static_member
-  PARAMS ((PTR, const char *, const char *, enum debug_visibility));
+  (void *, const char *, const char *, enum debug_visibility);
 static bfd_boolean pr_class_baseclass
 static bfd_boolean pr_class_baseclass
-  PARAMS ((PTR, bfd_vma, bfd_boolean, enum debug_visibility));
-static bfd_boolean pr_class_start_method
-  PARAMS ((PTR, const char *));
+  (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+static bfd_boolean pr_class_start_method (void *, const char *);
 static bfd_boolean pr_class_method_variant
 static bfd_boolean pr_class_method_variant
-  PARAMS ((PTR, const char *, enum debug_visibility, bfd_boolean, bfd_boolean,
-          bfd_vma, bfd_boolean));
+  (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean,
+   bfd_vma, bfd_boolean);
 static bfd_boolean pr_class_static_method_variant
 static bfd_boolean pr_class_static_method_variant
-  PARAMS ((PTR, const char *, enum debug_visibility, bfd_boolean,
-          bfd_boolean));
-static bfd_boolean pr_class_end_method
-  PARAMS ((PTR));
-static bfd_boolean pr_end_class_type
-  PARAMS ((PTR));
-static bfd_boolean pr_typedef_type
-  PARAMS ((PTR, const char *));
+  (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
+static bfd_boolean pr_class_end_method (void *);
+static bfd_boolean pr_end_class_type (void *);
+static bfd_boolean pr_typedef_type (void *, const char *);
 static bfd_boolean pr_tag_type
 static bfd_boolean pr_tag_type
-  PARAMS ((PTR, const char *, unsigned int, enum debug_type_kind));
-static bfd_boolean pr_typdef
-  PARAMS ((PTR, const char *));
-static bfd_boolean pr_tag
-  PARAMS ((PTR, const char *));
-static bfd_boolean pr_int_constant
-  PARAMS ((PTR, const char *, bfd_vma));
-static bfd_boolean pr_float_constant
-  PARAMS ((PTR, const char *, double));
-static bfd_boolean pr_typed_constant
-  PARAMS ((PTR, const char *, bfd_vma));
+  (void *, const char *, unsigned int, enum debug_type_kind);
+static bfd_boolean pr_typdef (void *, const char *);
+static bfd_boolean pr_tag (void *, const char *);
+static bfd_boolean pr_int_constant (void *, const char *, bfd_vma);
+static bfd_boolean pr_float_constant (void *, const char *, double);
+static bfd_boolean pr_typed_constant (void *, const char *, bfd_vma);
 static bfd_boolean pr_variable
 static bfd_boolean pr_variable
-  PARAMS ((PTR, const char *, enum debug_var_kind, bfd_vma));
-static bfd_boolean pr_start_function
-  PARAMS ((PTR, const char *, bfd_boolean));
+  (void *, const char *, enum debug_var_kind, bfd_vma);
+static bfd_boolean pr_start_function (void *, const char *, bfd_boolean);
 static bfd_boolean pr_function_parameter
 static bfd_boolean pr_function_parameter
-  PARAMS ((PTR, const char *, enum debug_parm_kind, bfd_vma));
-static bfd_boolean pr_start_block
-  PARAMS ((PTR, bfd_vma));
-static bfd_boolean pr_end_block
-  PARAMS ((PTR, bfd_vma));
-static bfd_boolean pr_end_function
-  PARAMS ((PTR));
-static bfd_boolean pr_lineno
-  PARAMS ((PTR, const char *, unsigned long, bfd_vma));
+  (void *, const char *, enum debug_parm_kind, bfd_vma);
+static bfd_boolean pr_start_block (void *, bfd_vma);
+static bfd_boolean pr_end_block (void *, bfd_vma);
+static bfd_boolean pr_end_function (void *);
+static bfd_boolean pr_lineno (void *, const char *, unsigned long, bfd_vma);
 static bfd_boolean append_parent (struct pr_handle *, const char *);
 /* Only used by tg_ code.  */
 static bfd_boolean append_parent (struct pr_handle *, const char *);
 /* Only used by tg_ code.  */
-static bfd_boolean tg_fix_visibility (struct pr_handle *, enum debug_visibility);
+static bfd_boolean tg_fix_visibility
+  (struct pr_handle *, enum debug_visibility);
 static void find_address_in_section (bfd *, asection *, void *);
 static void translate_addresses (bfd *, char *, FILE *, asymbol **);
 static const char *visibility_name (enum debug_visibility);
 /* Tags style replacements.  */
 static bfd_boolean tg_start_compilation_unit (void *, const char *);
 static bfd_boolean tg_start_source (void *, const char *);
 static void find_address_in_section (bfd *, asection *, void *);
 static void translate_addresses (bfd *, char *, FILE *, asymbol **);
 static const char *visibility_name (enum debug_visibility);
 /* Tags style replacements.  */
 static bfd_boolean tg_start_compilation_unit (void *, const char *);
 static bfd_boolean tg_start_source (void *, const char *);
-static bfd_boolean tg_enum_type (void *, const char *, const char **, bfd_signed_vma *);
-static bfd_boolean tg_start_struct_type (void *, const char *, unsigned int, bfd_boolean, unsigned int);
-static bfd_boolean pr_struct_field (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
-static bfd_boolean tg_struct_field (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
-static bfd_boolean tg_struct_field  (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean tg_enum_type
+  (void *, const char *, const char **, bfd_signed_vma *);
+static bfd_boolean tg_start_struct_type
+  (void *, const char *, unsigned int, bfd_boolean, unsigned int);
+static bfd_boolean pr_struct_field
+  (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean tg_struct_field
+  (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
+static bfd_boolean tg_struct_field
+  (void *, const char *, bfd_vma, bfd_vma, enum debug_visibility);
 static bfd_boolean tg_end_struct_type (void *);
 static bfd_boolean tg_end_struct_type (void *);
-static bfd_boolean tg_start_class_type (void *, const char *, unsigned int, bfd_boolean, unsigned int, bfd_boolean, bfd_boolean);
-static bfd_boolean tg_class_static_member (void *, const char *, const char *, enum debug_visibility);
-static bfd_boolean tg_class_baseclass (void *, bfd_vma, bfd_boolean, enum debug_visibility);
-static bfd_boolean tg_class_method_variant (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean, bfd_vma, bfd_boolean);
-static bfd_boolean tg_class_static_method_variant (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
+static bfd_boolean tg_start_class_type
+  (void *, const char *, unsigned int, bfd_boolean, unsigned int, bfd_boolean, bfd_boolean);
+static bfd_boolean tg_class_static_member
+  (void *, const char *, const char *, enum debug_visibility);
+static bfd_boolean tg_class_baseclass
+  (void *, bfd_vma, bfd_boolean, enum debug_visibility);
+static bfd_boolean tg_class_method_variant
+  (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean, bfd_vma, bfd_boolean);
+static bfd_boolean tg_class_static_method_variant
+  (void *, const char *, enum debug_visibility, bfd_boolean, bfd_boolean);
 static bfd_boolean tg_end_class_type (void *);
 static bfd_boolean tg_end_class_type (void *);
-static bfd_boolean tg_tag_type (void *, const char *, unsigned int, enum debug_type_kind);
+static bfd_boolean tg_tag_type
+  (void *, const char *, unsigned int, enum debug_type_kind);
 static bfd_boolean tg_typdef (void *, const char *);
 static bfd_boolean tg_tag (void *, const char *);
 static bfd_boolean tg_int_constant (void *, const char *, bfd_vma);
 static bfd_boolean tg_float_constant (void *, const char *, double);
 static bfd_boolean tg_typed_constant (void *, const char *, bfd_vma);
 static bfd_boolean tg_typdef (void *, const char *);
 static bfd_boolean tg_tag (void *, const char *);
 static bfd_boolean tg_int_constant (void *, const char *, bfd_vma);
 static bfd_boolean tg_float_constant (void *, const char *, double);
 static bfd_boolean tg_typed_constant (void *, const char *, bfd_vma);
-static bfd_boolean tg_variable (void *, const char *, enum debug_var_kind, bfd_vma);
+static bfd_boolean tg_variable
+  (void *, const char *, enum debug_var_kind, bfd_vma);
 static bfd_boolean tg_start_function (void *, const char *, bfd_boolean);
 static bfd_boolean tg_start_function (void *, const char *, bfd_boolean);
-static bfd_boolean tg_function_parameter (void *, const char *, enum debug_parm_kind, bfd_vma);
+static bfd_boolean tg_function_parameter
+  (void *, const char *, enum debug_parm_kind, bfd_vma);
 static bfd_boolean tg_start_block (void *, bfd_vma);
 static bfd_boolean tg_end_block (void *, bfd_vma);
 static bfd_boolean tg_lineno (void *, const char *, unsigned long, bfd_vma);
 static bfd_boolean tg_start_block (void *, bfd_vma);
 static bfd_boolean tg_end_block (void *, bfd_vma);
 static bfd_boolean tg_lineno (void *, const char *, unsigned long, bfd_vma);
@@ -294,7 +266,7 @@ static const struct debug_write_fns tg_fns =
   tg_start_class_type,
   tg_class_static_member,
   tg_class_baseclass,
   tg_start_class_type,
   tg_class_static_member,
   tg_class_baseclass,
-  pr_class_start_method,       /* Same, remmembers that's a method.  */
+  pr_class_start_method,       /* Same, remembers that's a method.  */
   tg_class_method_variant,
   tg_class_static_method_variant,
   pr_class_end_method,         /* Same, forgets that's a method.  */
   tg_class_method_variant,
   tg_class_static_method_variant,
   pr_class_end_method,         /* Same, forgets that's a method.  */
@@ -314,17 +286,15 @@ static const struct debug_write_fns tg_fns =
   pr_end_function,             /* Same, does nothing.  */
   tg_lineno
 };
   pr_end_function,             /* Same, does nothing.  */
   tg_lineno
 };
+
+static int demangle_flags = DMGL_ANSI | DMGL_PARAMS;
 \f
 /* Print out the generic debugging information recorded in dhandle.  */
 
 bfd_boolean
 \f
 /* Print out the generic debugging information recorded in dhandle.  */
 
 bfd_boolean
-print_debugging_info (f, dhandle, abfd, syms, demangler, as_tags)
-     FILE *f;
-     PTR dhandle;
-     bfd *abfd;
-     asymbol **syms;
-     PTR demangler;
-     bfd_boolean as_tags;
+print_debugging_info (FILE *f, void *dhandle, bfd *abfd, asymbol **syms,
+                     char * (*demangler) (struct bfd *, const char *, int),
+                     bfd_boolean as_tags)
 {
   struct pr_handle info;
 
 {
   struct pr_handle info;
 
@@ -352,8 +322,7 @@ print_debugging_info (f, dhandle, abfd, syms, demangler, as_tags)
 /* Indent to the current indentation level.  */
 
 static void
 /* Indent to the current indentation level.  */
 
 static void
-indent (info)
-     struct pr_handle *info;
+indent (struct pr_handle *info)
 {
   unsigned int i;
 
 {
   unsigned int i;
 
@@ -364,9 +333,7 @@ indent (info)
 /* Push a type on the type stack.  */
 
 static bfd_boolean
 /* Push a type on the type stack.  */
 
 static bfd_boolean
-push_type (info, type)
-     struct pr_handle *info;
-     const char *type;
+push_type (struct pr_handle *info, const char *type)
 {
   struct pr_stack *n;
 
 {
   struct pr_stack *n;
 
@@ -388,9 +355,7 @@ push_type (info, type)
 /* Prepend a string onto the type on the top of the type stack.  */
 
 static bfd_boolean
 /* Prepend a string onto the type on the top of the type stack.  */
 
 static bfd_boolean
-prepend_type (info, s)
-     struct pr_handle *info;
-     const char *s;
+prepend_type (struct pr_handle *info, const char *s)
 {
   char *n;
 
 {
   char *n;
 
@@ -407,9 +372,7 @@ prepend_type (info, s)
 /* Append a string to the type on the top of the type stack.  */
 
 static bfd_boolean
 /* Append a string to the type on the top of the type stack.  */
 
 static bfd_boolean
-append_type (info, s)
-     struct pr_handle *info;
-     const char *s;
+append_type (struct pr_handle *info, const char *s)
 {
   unsigned int len;
 
 {
   unsigned int len;
 
@@ -451,9 +414,7 @@ append_parent (struct pr_handle *info, const char *s)
    there is no underscore, the name follows the type.  */
 
 static bfd_boolean
    there is no underscore, the name follows the type.  */
 
 static bfd_boolean
-substitute_type (info, s)
-     struct pr_handle *info;
-     const char *s;
+substitute_type (struct pr_handle *info, const char *s)
 {
   char *u;
 
 {
   char *u;
 
@@ -495,8 +456,7 @@ substitute_type (info, s)
 /* Indent the type at the top of the stack by appending spaces.  */
 
 static bfd_boolean
 /* Indent the type at the top of the stack by appending spaces.  */
 
 static bfd_boolean
-indent_type (info)
-     struct pr_handle *info;
+indent_type (struct pr_handle *info)
 {
   unsigned int i;
 
 {
   unsigned int i;
 
@@ -512,8 +472,7 @@ indent_type (info)
 /* Pop a type from the type stack.  */
 
 static char *
 /* Pop a type from the type stack.  */
 
 static char *
-pop_type (info)
-     struct pr_handle *info;
+pop_type (struct pr_handle *info)
 {
   struct pr_stack *o;
   char *ret;
 {
   struct pr_stack *o;
   char *ret;
@@ -531,11 +490,7 @@ pop_type (info)
 /* Print a VMA value into a string.  */
 
 static void
 /* Print a VMA value into a string.  */
 
 static void
-print_vma (vma, buf, unsignedp, hexp)
-     bfd_vma vma;
-     char *buf;
-     bfd_boolean unsignedp;
-     bfd_boolean hexp;
+print_vma (bfd_vma vma, char *buf, bfd_boolean unsignedp, bfd_boolean hexp)
 {
   if (sizeof (vma) <= sizeof (unsigned long))
     {
 {
   if (sizeof (vma) <= sizeof (unsigned long))
     {
@@ -546,6 +501,26 @@ print_vma (vma, buf, unsignedp, hexp)
       else
        sprintf (buf, "%ld", (long) vma);
     }
       else
        sprintf (buf, "%ld", (long) vma);
     }
+#if BFD_HOST_64BIT_LONG_LONG
+  else if (sizeof (vma) <= sizeof (unsigned long long))
+    {
+#ifndef __MSVCRT__
+      if (hexp)
+       sprintf (buf, "0x%llx", (unsigned long long) vma);
+      else if (unsignedp)
+       sprintf (buf, "%llu", (unsigned long long) vma);
+      else
+       sprintf (buf, "%lld", (long long) vma);
+#else
+      if (hexp)
+       sprintf (buf, "0x%I64x", (unsigned long long) vma);
+      else if (unsignedp)
+       sprintf (buf, "%I64u", (unsigned long long) vma);
+      else
+       sprintf (buf, "%I64d", (long long) vma);
+#endif
+    }
+#endif
   else
     {
       buf[0] = '0';
   else
     {
       buf[0] = '0';
@@ -557,9 +532,7 @@ print_vma (vma, buf, unsignedp, hexp)
 /* Start a new compilation unit.  */
 
 static bfd_boolean
 /* Start a new compilation unit.  */
 
 static bfd_boolean
-pr_start_compilation_unit (p, filename)
-     PTR p;
-     const char *filename;
+pr_start_compilation_unit (void *p, const char *filename)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -573,9 +546,7 @@ pr_start_compilation_unit (p, filename)
 /* Start a source file within a compilation unit.  */
 
 static bfd_boolean
 /* Start a source file within a compilation unit.  */
 
 static bfd_boolean
-pr_start_source (p, filename)
-     PTR p;
-     const char *filename;
+pr_start_source (void *p, const char *filename)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -589,8 +560,7 @@ pr_start_source (p, filename)
 /* Push an empty type onto the type stack.  */
 
 static bfd_boolean
 /* Push an empty type onto the type stack.  */
 
 static bfd_boolean
-pr_empty_type (p)
-     PTR p;
+pr_empty_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -600,8 +570,7 @@ pr_empty_type (p)
 /* Push a void type onto the type stack.  */
 
 static bfd_boolean
 /* Push a void type onto the type stack.  */
 
 static bfd_boolean
-pr_void_type (p)
-     PTR p;
+pr_void_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -611,13 +580,10 @@ pr_void_type (p)
 /* Push an integer type onto the type stack.  */
 
 static bfd_boolean
 /* Push an integer type onto the type stack.  */
 
 static bfd_boolean
-pr_int_type (p, size, unsignedp)
-     PTR p;
-     unsigned int size;
-     bfd_boolean unsignedp;
+pr_int_type (void *p, unsigned int size, bfd_boolean unsignedp)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[10];
+  char ab[40];
 
   sprintf (ab, "%sint%d", unsignedp ? "u" : "", size * 8);
   return push_type (info, ab);
 
   sprintf (ab, "%sint%d", unsignedp ? "u" : "", size * 8);
   return push_type (info, ab);
@@ -626,12 +592,10 @@ pr_int_type (p, size, unsignedp)
 /* Push a floating type onto the type stack.  */
 
 static bfd_boolean
 /* Push a floating type onto the type stack.  */
 
 static bfd_boolean
-pr_float_type (p, size)
-     PTR p;
-     unsigned int size;
+pr_float_type (void *p, unsigned int size)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[10];
+  char ab[40];
 
   if (size == 4)
     return push_type (info, "float");
 
   if (size == 4)
     return push_type (info, "float");
@@ -645,9 +609,7 @@ pr_float_type (p, size)
 /* Push a complex type onto the type stack.  */
 
 static bfd_boolean
 /* Push a complex type onto the type stack.  */
 
 static bfd_boolean
-pr_complex_type (p, size)
-     PTR p;
-     unsigned int size;
+pr_complex_type (void *p, unsigned int size)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -660,12 +622,10 @@ pr_complex_type (p, size)
 /* Push a bfd_boolean type onto the type stack.  */
 
 static bfd_boolean
 /* Push a bfd_boolean type onto the type stack.  */
 
 static bfd_boolean
-pr_bool_type (p, size)
-     PTR p;
-     unsigned int size;
+pr_bool_type (void *p, unsigned int size)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[10];
+  char ab[40];
 
   sprintf (ab, "bool%d", size * 8);
 
 
   sprintf (ab, "bool%d", size * 8);
 
@@ -675,11 +635,8 @@ pr_bool_type (p, size)
 /* Push an enum type onto the type stack.  */
 
 static bfd_boolean
 /* Push an enum type onto the type stack.  */
 
 static bfd_boolean
-pr_enum_type (p, tag, names, values)
-     PTR p;
-     const char *tag;
-     const char **names;
-     bfd_signed_vma *values;
+pr_enum_type (void *p, const char *tag, const char **names,
+             bfd_signed_vma *values)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   unsigned int i;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   unsigned int i;
@@ -717,7 +674,7 @@ pr_enum_type (p, tag, names, values)
 
          if (values[i] != val)
            {
 
          if (values[i] != val)
            {
-             char ab[20];
+             char ab[22];
 
              print_vma (values[i], ab, FALSE, FALSE);
              if (! append_type (info, " = ")
 
              print_vma (values[i], ab, FALSE, FALSE);
              if (! append_type (info, " = ")
@@ -736,8 +693,7 @@ pr_enum_type (p, tag, names, values)
 /* Turn the top type on the stack into a pointer.  */
 
 static bfd_boolean
 /* Turn the top type on the stack into a pointer.  */
 
 static bfd_boolean
-pr_pointer_type (p)
-     PTR p;
+pr_pointer_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *s;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *s;
@@ -753,10 +709,7 @@ pr_pointer_type (p)
 /* Turn the top type on the stack into a function returning that type.  */
 
 static bfd_boolean
 /* Turn the top type on the stack into a function returning that type.  */
 
 static bfd_boolean
-pr_function_type (p, argcount, varargs)
-     PTR p;
-     int argcount;
-     bfd_boolean varargs;
+pr_function_type (void *p, int argcount, bfd_boolean varargs)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char **arg_types;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char **arg_types;
@@ -780,10 +733,16 @@ pr_function_type (p, argcount, varargs)
       for (i = argcount - 1; i >= 0; i--)
        {
          if (! substitute_type (info, ""))
       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)
          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)
          len += strlen (arg_types[i]) + 2;
        }
       if (varargs)
@@ -793,7 +752,7 @@ pr_function_type (p, argcount, varargs)
   /* Now the return type is on the top of the stack.  */
 
   s = (char *) xmalloc (len);
   /* Now the return type is on the top of the stack.  */
 
   s = (char *) xmalloc (len);
-  strcpy (s, "(|) (");
+  LITSTRCPY (s, "(|) (");
 
   if (argcount < 0)
     strcat (s, "/* unknown */");
 
   if (argcount < 0)
     strcat (s, "/* unknown */");
@@ -830,8 +789,7 @@ pr_function_type (p, argcount, varargs)
 /* Turn the top type on the stack into a reference to that type.  */
 
 static bfd_boolean
 /* Turn the top type on the stack into a reference to that type.  */
 
 static bfd_boolean
-pr_reference_type (p)
-     PTR p;
+pr_reference_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -843,13 +801,10 @@ pr_reference_type (p)
 /* Make a range type.  */
 
 static bfd_boolean
 /* Make a range type.  */
 
 static bfd_boolean
-pr_range_type (p, lower, upper)
-     PTR p;
-     bfd_signed_vma lower;
-     bfd_signed_vma upper;
+pr_range_type (void *p, bfd_signed_vma lower, bfd_signed_vma upper)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char abl[20], abu[20];
+  char abl[22], abu[22];
 
   assert (info->stack != NULL);
 
 
   assert (info->stack != NULL);
 
@@ -869,15 +824,12 @@ pr_range_type (p, lower, upper)
 /* Make an array type.  */
 
 static bfd_boolean
 /* Make an array type.  */
 
 static bfd_boolean
-pr_array_type (p, lower, upper, stringp)
-     PTR p;
-     bfd_signed_vma lower;
-     bfd_signed_vma upper;
-     bfd_boolean stringp;
+pr_array_type (void *p, bfd_signed_vma lower, bfd_signed_vma upper,
+              bfd_boolean stringp)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *range_type;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *range_type;
-  char abl[20], abu[20], ab[50];
+  char abl[22], abu[22], ab[50];
 
   range_type = pop_type (info);
   if (range_type == NULL)
 
   range_type = pop_type (info);
   if (range_type == NULL)
@@ -922,9 +874,7 @@ pr_array_type (p, lower, upper, stringp)
 /* Make a set type.  */
 
 static bfd_boolean
 /* Make a set type.  */
 
 static bfd_boolean
-pr_set_type (p, bitstringp)
-     PTR p;
-     bfd_boolean bitstringp;
+pr_set_type (void *p, bfd_boolean bitstringp)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -947,8 +897,7 @@ pr_set_type (p, bitstringp)
 /* Make an offset type.  */
 
 static bfd_boolean
 /* Make an offset type.  */
 
 static bfd_boolean
-pr_offset_type (p)
-     PTR p;
+pr_offset_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
@@ -969,11 +918,7 @@ pr_offset_type (p)
 /* Make a method type.  */
 
 static bfd_boolean
 /* Make a method type.  */
 
 static bfd_boolean
-pr_method_type (p, domain, argcount, varargs)
-     PTR p;
-     bfd_boolean domain;
-     int argcount;
-     bfd_boolean varargs;
+pr_method_type (void *p, bfd_boolean domain, int argcount, bfd_boolean varargs)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   unsigned int len;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   unsigned int len;
@@ -992,11 +937,10 @@ pr_method_type (p, domain, argcount, varargs)
       domain_type = pop_type (info);
       if (domain_type == NULL)
        return FALSE;
       domain_type = pop_type (info);
       if (domain_type == NULL)
        return FALSE;
-      if (strncmp (domain_type, "class ", sizeof "class " - 1) == 0
+      if (CONST_STRNEQ (domain_type, "class ")
          && strchr (domain_type + sizeof "class " - 1, ' ') == NULL)
        domain_type += sizeof "class " - 1;
          && strchr (domain_type + sizeof "class " - 1, ' ') == NULL)
        domain_type += sizeof "class " - 1;
-      else if (strncmp (domain_type, "union class ",
-                       sizeof "union class ") == 0
+      else if (CONST_STRNEQ (domain_type, "union class ")
               && (strchr (domain_type + sizeof "union class " - 1, ' ')
                   == NULL))
        domain_type += sizeof "union class " - 1;
               && (strchr (domain_type + sizeof "union class " - 1, ' ')
                   == NULL))
        domain_type += sizeof "union class " - 1;
@@ -1016,10 +960,16 @@ pr_method_type (p, domain, argcount, varargs)
       for (i = argcount - 1; i >= 0; i--)
        {
          if (! substitute_type (info, ""))
       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)
          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)
          len += strlen (arg_types[i]) + 2;
        }
       if (varargs)
@@ -1070,8 +1020,7 @@ pr_method_type (p, domain, argcount, varargs)
 /* Make a const qualified type.  */
 
 static bfd_boolean
 /* Make a const qualified type.  */
 
 static bfd_boolean
-pr_const_type (p)
-     PTR p;
+pr_const_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1081,8 +1030,7 @@ pr_const_type (p)
 /* Make a volatile qualified type.  */
 
 static bfd_boolean
 /* Make a volatile qualified type.  */
 
 static bfd_boolean
-pr_volatile_type (p)
-     PTR p;
+pr_volatile_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1092,12 +1040,8 @@ pr_volatile_type (p)
 /* Start accumulating a struct type.  */
 
 static bfd_boolean
 /* Start accumulating a struct type.  */
 
 static bfd_boolean
-pr_start_struct_type (p, tag, id, structp, size)
-     PTR p;
-     const char *tag;
-     unsigned int id;
-     bfd_boolean structp;
-     unsigned int size;
+pr_start_struct_type (void *p, const char *tag, unsigned int id,
+                     bfd_boolean structp, unsigned int size)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1154,9 +1098,7 @@ pr_start_struct_type (p, tag, id, structp, size)
 /* Output the visibility of a field in a struct.  */
 
 static bfd_boolean
 /* Output the visibility of a field in a struct.  */
 
 static bfd_boolean
-pr_fix_visibility (info, visibility)
-     struct pr_handle *info;
-     enum debug_visibility visibility;
+pr_fix_visibility (struct pr_handle *info, enum debug_visibility visibility)
 {
   const char *s = NULL;
   char *t;
 {
   const char *s = NULL;
   char *t;
@@ -1207,15 +1149,11 @@ pr_fix_visibility (info, visibility)
 /* Add a field to a struct type.  */
 
 static bfd_boolean
 /* Add a field to a struct type.  */
 
 static bfd_boolean
-pr_struct_field (p, name, bitpos, bitsize, visibility)
-     PTR p;
-     const char *name;
-     bfd_vma bitpos;
-     bfd_vma bitsize;
-     enum debug_visibility visibility;
+pr_struct_field (void *p, const char *name, bfd_vma bitpos, bfd_vma bitsize,
+                enum debug_visibility visibility)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20];
+  char ab[22];
   char *t;
 
   if (! substitute_type (info, name))
   char *t;
 
   if (! substitute_type (info, name))
@@ -1253,8 +1191,7 @@ pr_struct_field (p, name, bitpos, bitsize, visibility)
 /* Finish a struct type.  */
 
 static bfd_boolean
 /* Finish a struct type.  */
 
 static bfd_boolean
-pr_end_struct_type (p)
-     PTR p;
+pr_end_struct_type (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *s;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *s;
@@ -1277,14 +1214,9 @@ pr_end_struct_type (p)
 /* Start a class type.  */
 
 static bfd_boolean
 /* Start a class type.  */
 
 static bfd_boolean
-pr_start_class_type (p, tag, id, structp, size, vptr, ownvptr)
-     PTR p;
-     const char *tag;
-     unsigned int id;
-     bfd_boolean structp;
-     unsigned int size;
-     bfd_boolean vptr;
-     bfd_boolean ownvptr;
+pr_start_class_type (void *p, const char *tag, unsigned int id,
+                    bfd_boolean structp, unsigned int size,
+                    bfd_boolean vptr, bfd_boolean ownvptr)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *tv = NULL;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *tv = NULL;
@@ -1370,11 +1302,8 @@ pr_start_class_type (p, tag, id, structp, size, vptr, ownvptr)
 /* Add a static member to a class.  */
 
 static bfd_boolean
 /* Add a static member to a class.  */
 
 static bfd_boolean
-pr_class_static_member (p, name, physname, visibility)
-     PTR p;
-     const char *name;
-     const char *physname;
-     enum debug_visibility visibility;
+pr_class_static_member (void *p, const char *name, const char *physname,
+                       enum debug_visibility visibility)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
@@ -1402,16 +1331,13 @@ pr_class_static_member (p, name, physname, visibility)
 /* Add a base class to a class.  */
 
 static bfd_boolean
 /* Add a base class to a class.  */
 
 static bfd_boolean
-pr_class_baseclass (p, bitpos, virtual, visibility)
-     PTR p;
-     bfd_vma bitpos;
-     bfd_boolean virtual;
-     enum debug_visibility visibility;
+pr_class_baseclass (void *p, bfd_vma bitpos, bfd_boolean is_virtual,
+                   enum debug_visibility visibility)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
   const char *prefix;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
   const char *prefix;
-  char ab[20];
+  char ab[22];
   char *s, *l, *n;
 
   assert (info->stack != NULL && info->stack->next != NULL);
   char *s, *l, *n;
 
   assert (info->stack != NULL && info->stack->next != NULL);
@@ -1423,7 +1349,7 @@ pr_class_baseclass (p, bitpos, virtual, visibility)
   if (t == NULL)
     return FALSE;
 
   if (t == NULL)
     return FALSE;
 
-  if (strncmp (t, "class ", sizeof "class " - 1) == 0)
+  if (CONST_STRNEQ (t, "class "))
     t += sizeof "class " - 1;
 
   /* Push it back on to take advantage of the prepend_type and
     t += sizeof "class " - 1;
 
   /* Push it back on to take advantage of the prepend_type and
@@ -1431,7 +1357,7 @@ pr_class_baseclass (p, bitpos, virtual, visibility)
   if (! push_type (info, t))
     return FALSE;
 
   if (! push_type (info, t))
     return FALSE;
 
-  if (virtual)
+  if (is_virtual)
     {
       if (! prepend_type (info, "virtual "))
        return FALSE;
     {
       if (! prepend_type (info, "virtual "))
        return FALSE;
@@ -1501,9 +1427,7 @@ pr_class_baseclass (p, bitpos, virtual, visibility)
 /* Start adding a method to a class.  */
 
 static bfd_boolean
 /* Start adding a method to a class.  */
 
 static bfd_boolean
-pr_class_start_method (p, name)
-     PTR p;
-     const char *name;
+pr_class_start_method (void *p, const char *name)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1515,15 +1439,10 @@ pr_class_start_method (p, name)
 /* Add a variant to a method.  */
 
 static bfd_boolean
 /* Add a variant to a method.  */
 
 static bfd_boolean
-pr_class_method_variant (p, physname, visibility, constp, volatilep, voffset,
-                        context)
-     PTR p;
-     const char *physname;
-     enum debug_visibility visibility;
-     bfd_boolean constp;
-     bfd_boolean volatilep;
-     bfd_vma voffset;
-     bfd_boolean context;
+pr_class_method_variant (void *p, const char *physname,
+                        enum debug_visibility visibility,
+                        bfd_boolean constp, bfd_boolean volatilep,
+                        bfd_vma voffset, bfd_boolean context)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *method_type;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *method_type;
@@ -1578,7 +1497,7 @@ pr_class_method_variant (p, physname, visibility, constp, volatilep, voffset,
     return FALSE;
   if (context || voffset != 0)
     {
     return FALSE;
   if (context || voffset != 0)
     {
-      char ab[20];
+      char ab[22];
 
       if (context)
        {
 
       if (context)
        {
@@ -1600,12 +1519,9 @@ pr_class_method_variant (p, physname, visibility, constp, volatilep, voffset,
 /* Add a static variant to a method.  */
 
 static bfd_boolean
 /* Add a static variant to a method.  */
 
 static bfd_boolean
-pr_class_static_method_variant (p, physname, visibility, constp, volatilep)
-     PTR p;
-     const char *physname;
-     enum debug_visibility visibility;
-     bfd_boolean constp;
-     bfd_boolean volatilep;
+pr_class_static_method_variant (void *p, const char *physname,
+                               enum debug_visibility visibility,
+                               bfd_boolean constp, bfd_boolean volatilep)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *method_type;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *method_type;
@@ -1654,8 +1570,7 @@ pr_class_static_method_variant (p, physname, visibility, constp, volatilep)
 /* Finish up a method.  */
 
 static bfd_boolean
 /* Finish up a method.  */
 
 static bfd_boolean
-pr_class_end_method (p)
-     PTR p;
+pr_class_end_method (void *p)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1666,8 +1581,7 @@ pr_class_end_method (p)
 /* Finish up a class.  */
 
 static bfd_boolean
 /* Finish up a class.  */
 
 static bfd_boolean
-pr_end_class_type (p)
-     PTR p;
+pr_end_class_type (void *p)
 {
   return pr_end_struct_type (p);
 }
 {
   return pr_end_struct_type (p);
 }
@@ -1675,9 +1589,7 @@ pr_end_class_type (p)
 /* Push a type on the stack using a typedef name.  */
 
 static bfd_boolean
 /* Push a type on the stack using a typedef name.  */
 
 static bfd_boolean
-pr_typedef_type (p, name)
-     PTR p;
-     const char *name;
+pr_typedef_type (void *p, const char *name)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1687,15 +1599,12 @@ pr_typedef_type (p, name)
 /* Push a type on the stack using a tag name.  */
 
 static bfd_boolean
 /* Push a type on the stack using a tag name.  */
 
 static bfd_boolean
-pr_tag_type (p, name, id, kind)
-     PTR p;
-     const char *name;
-     unsigned int id;
-     enum debug_type_kind kind;
+pr_tag_type (void *p, const char *name, unsigned int id,
+            enum debug_type_kind kind)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   const char *t, *tag;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   const char *t, *tag;
-  char idbuf[20];
+  char idbuf[22];
 
   switch (kind)
     {
 
   switch (kind)
     {
@@ -1715,7 +1624,7 @@ pr_tag_type (p, name, id, kind)
       t = "union class ";
       break;
     default:
       t = "union class ";
       break;
     default:
-      abort ();
+      /* PR 25625: Corrupt input can trigger this case.  */
       return FALSE;
     }
 
       return FALSE;
     }
 
@@ -1744,9 +1653,7 @@ pr_tag_type (p, name, id, kind)
 /* Output a typedef.  */
 
 static bfd_boolean
 /* Output a typedef.  */
 
 static bfd_boolean
-pr_typdef (p, name)
-     PTR p;
-     const char *name;
+pr_typdef (void *p, const char *name)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *s;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *s;
@@ -1770,9 +1677,7 @@ pr_typdef (p, name)
    stack, so all we have to do here is print it out.  */
 
 static bfd_boolean
    stack, so all we have to do here is print it out.  */
 
 static bfd_boolean
-pr_tag (p, name)
-     PTR p;
-     const char *name ATTRIBUTE_UNUSED;
+pr_tag (void *p, const char *name ATTRIBUTE_UNUSED)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
@@ -1792,13 +1697,10 @@ pr_tag (p, name)
 /* Output an integer constant.  */
 
 static bfd_boolean
 /* Output an integer constant.  */
 
 static bfd_boolean
-pr_int_constant (p, name, val)
-     PTR p;
-     const char *name;
-     bfd_vma val;
+pr_int_constant (void *p, const char *name, bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20];
+  char ab[22];
 
   indent (info);
   print_vma (val, ab, FALSE, FALSE);
 
   indent (info);
   print_vma (val, ab, FALSE, FALSE);
@@ -1809,10 +1711,7 @@ pr_int_constant (p, name, val)
 /* Output a floating point constant.  */
 
 static bfd_boolean
 /* Output a floating point constant.  */
 
 static bfd_boolean
-pr_float_constant (p, name, val)
-     PTR p;
-     const char *name;
-     double val;
+pr_float_constant (void *p, const char *name, double val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
@@ -1824,14 +1723,11 @@ pr_float_constant (p, name, val)
 /* Output a typed constant.  */
 
 static bfd_boolean
 /* Output a typed constant.  */
 
 static bfd_boolean
-pr_typed_constant (p, name, val)
-     PTR p;
-     const char *name;
-     bfd_vma val;
+pr_typed_constant (void *p, const char *name, bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
-  char ab[20];
+  char ab[22];
 
   t = pop_type (info);
   if (t == NULL)
 
   t = pop_type (info);
   if (t == NULL)
@@ -1849,15 +1745,12 @@ pr_typed_constant (p, name, val)
 /* Output a variable.  */
 
 static bfd_boolean
 /* Output a variable.  */
 
 static bfd_boolean
-pr_variable (p, name, kind, val)
-     PTR p;
-     const char *name;
-     enum debug_var_kind kind;
-     bfd_vma val;
+pr_variable (void *p, const char *name, enum debug_var_kind kind,
+            bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
-  char ab[20];
+  char ab[22];
 
   if (! substitute_type (info, name))
     return FALSE;
 
   if (! substitute_type (info, name))
     return FALSE;
@@ -1890,10 +1783,7 @@ pr_variable (p, name, kind, val)
 /* Start outputting a function.  */
 
 static bfd_boolean
 /* Start outputting a function.  */
 
 static bfd_boolean
-pr_start_function (p, name, global)
-     PTR p;
-     const char *name;
-     bfd_boolean global;
+pr_start_function (void *p, const char *name, bfd_boolean global)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
@@ -1918,15 +1808,12 @@ pr_start_function (p, name, global)
 /* Output a function parameter.  */
 
 static bfd_boolean
 /* Output a function parameter.  */
 
 static bfd_boolean
-pr_function_parameter (p, name, kind, val)
-     PTR p;
-     const char *name;
-     enum debug_parm_kind kind;
-     bfd_vma val;
+pr_function_parameter (void *p, const char *name,
+                      enum debug_parm_kind kind, bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
-  char ab[20];
+  char ab[22];
 
   if (kind == DEBUG_PARM_REFERENCE
       || kind == DEBUG_PARM_REF_REG)
 
   if (kind == DEBUG_PARM_REFERENCE
       || kind == DEBUG_PARM_REF_REG)
@@ -1961,12 +1848,10 @@ pr_function_parameter (p, name, kind, val)
 /* Start writing out a block.  */
 
 static bfd_boolean
 /* Start writing out a block.  */
 
 static bfd_boolean
-pr_start_block (p, addr)
-     PTR p;
-     bfd_vma addr;
+pr_start_block (void *p, bfd_vma addr)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20];
+  char ab[22];
 
   if (info->parameter > 0)
     {
 
   if (info->parameter > 0)
     {
@@ -1986,14 +1871,10 @@ pr_start_block (p, addr)
 /* Write out line number information.  */
 
 static bfd_boolean
 /* Write out line number information.  */
 
 static bfd_boolean
-pr_lineno (p, filename, lineno, addr)
-     PTR p;
-     const char *filename;
-     unsigned long lineno;
-     bfd_vma addr;
+pr_lineno (void *p, const char *filename, unsigned long lineno, bfd_vma addr)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20];
+  char ab[22];
 
   indent (info);
   print_vma (addr, ab, TRUE, TRUE);
 
   indent (info);
   print_vma (addr, ab, TRUE, TRUE);
@@ -2005,12 +1886,10 @@ pr_lineno (p, filename, lineno, addr)
 /* Finish writing out a block.  */
 
 static bfd_boolean
 /* Finish writing out a block.  */
 
 static bfd_boolean
-pr_end_block (p, addr)
-     PTR p;
-     bfd_vma addr;
+pr_end_block (void *p, bfd_vma addr)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20];
+  char ab[22];
 
   info->indent -= 2;
 
 
   info->indent -= 2;
 
@@ -2024,8 +1903,7 @@ pr_end_block (p, addr)
 /* Finish writing out a function.  */
 
 static bfd_boolean
 /* Finish writing out a function.  */
 
 static bfd_boolean
-pr_end_function (p)
-     PTR p ATTRIBUTE_UNUSED;
+pr_end_function (void *p ATTRIBUTE_UNUSED)
 {
   return TRUE;
 }
 {
   return TRUE;
 }
@@ -2052,14 +1930,14 @@ find_address_in_section (bfd *abfd, asection *section, void *data)
   if (found)
     return;
 
   if (found)
     return;
 
-  if ((bfd_get_section_flags (abfd, section) & SEC_ALLOC) == 0)
+  if ((bfd_section_flags (section) & SEC_ALLOC) == 0)
     return;
 
     return;
 
-  vma = bfd_get_section_vma (abfd, section);
+  vma = bfd_section_vma (section);
   if (pc < vma)
     return;
 
   if (pc < vma)
     return;
 
-  size = bfd_get_section_size_before_reloc (section);
+  size = bfd_section_size (section);
   if (pc >= vma + size)
     return;
 
   if (pc >= vma + size)
     return;
 
@@ -2083,15 +1961,13 @@ translate_addresses (bfd *abfd, char *addr_hex, FILE *f, asymbol **syms)
 /* Start a new compilation unit.  */
 
 static bfd_boolean
 /* Start a new compilation unit.  */
 
 static bfd_boolean
-tg_start_compilation_unit (void * p, const char *filename ATTRIBUTE_UNUSED)
+tg_start_compilation_unit (void * p, const char *fname ATTRIBUTE_UNUSED)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
-  fprintf (stderr, "New compilation unit: %s\n", filename);
-
   free (info->filename);
   /* Should it be relative? best way to do it here?.  */
   free (info->filename);
   /* Should it be relative? best way to do it here?.  */
-  info->filename = strdup (filename);
+  info->filename = strdup (fname);
 
   return TRUE;
 }
 
   return TRUE;
 }
@@ -2099,13 +1975,13 @@ tg_start_compilation_unit (void * p, const char *filename ATTRIBUTE_UNUSED)
 /* Start a source file within a compilation unit.  */
 
 static bfd_boolean
 /* Start a source file within a compilation unit.  */
 
 static bfd_boolean
-tg_start_source (void *p, const char *filename)
+tg_start_source (void *p, const char *fname)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
   free (info->filename);
   /* Should it be relative? best way to do it here?.  */
 {
   struct pr_handle *info = (struct pr_handle *) p;
 
   free (info->filename);
   /* Should it be relative? best way to do it here?.  */
-  info->filename = strdup (filename);
+  info->filename = strdup (fname);
 
   return TRUE;
 }
 
   return TRUE;
 }
@@ -2119,7 +1995,7 @@ tg_enum_type (void *p, const char *tag, const char **names,
   struct pr_handle *info = (struct pr_handle *) p;
   unsigned int i;
   const char *name;
   struct pr_handle *info = (struct pr_handle *) p;
   unsigned int i;
   const char *name;
-  char ab[20];
+  char ab[22];
 
   if (! pr_enum_type (p, tag, names, values))
     return FALSE;
 
   if (! pr_enum_type (p, tag, names, values))
     return FALSE;
@@ -2148,7 +2024,8 @@ tg_enum_type (void *p, const char *tag, const char **names,
 
 static bfd_boolean
 tg_start_struct_type (void *p, const char *tag, unsigned int id,
 
 static bfd_boolean
 tg_start_struct_type (void *p, const char *tag, unsigned int id,
-                     bfd_boolean structp, unsigned int size ATTRIBUTE_UNUSED)
+                     bfd_boolean structp,
+                     unsigned int size ATTRIBUTE_UNUSED)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   const char *name;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   const char *name;
@@ -2209,7 +2086,7 @@ tg_struct_field (void *p, const char *name, bfd_vma bitpos ATTRIBUTE_UNUSED,
   if (! tg_fix_visibility (info, visibility))
     return FALSE;
 
   if (! tg_fix_visibility (info, visibility))
     return FALSE;
 
-  /* It happends, a bug? */
+  /* It happens, a bug? */
   if (! name[0])
     return TRUE;
 
   if (! name[0])
     return TRUE;
 
@@ -2225,8 +2102,7 @@ tg_struct_field (void *p, const char *name, bfd_vma bitpos ATTRIBUTE_UNUSED,
 static bfd_boolean
 tg_end_struct_type (void *p ATTRIBUTE_UNUSED)
 {
 static bfd_boolean
 tg_end_struct_type (void *p ATTRIBUTE_UNUSED)
 {
-  struct pr_handle *info = (struct pr_handle *) p;
-  assert (info->stack != NULL);
+  assert (((struct pr_handle *) p)->stack != NULL);
 
   return TRUE;
 }
 
   return TRUE;
 }
@@ -2241,6 +2117,7 @@ tg_start_class_type (void *p, const char *tag, unsigned int id,
   struct pr_handle *info = (struct pr_handle *) p;
   char *tv = NULL;
   const char *name;
   struct pr_handle *info = (struct pr_handle *) p;
   char *tv = NULL;
   const char *name;
+  char idbuf[20];
 
   info->indent += 2;
 
 
   info->indent += 2;
 
@@ -2255,8 +2132,6 @@ tg_start_class_type (void *p, const char *tag, unsigned int id,
     name = tag;
   else
     {
     name = tag;
   else
     {
-      char idbuf[20];
-
       sprintf (idbuf, "%%anon%u", id);
       name = idbuf;
     }
       sprintf (idbuf, "%%anon%u", id);
       name = idbuf;
     }
@@ -2310,22 +2185,33 @@ tg_class_static_member (void *p, const char *name,
   full_name = (char *) xmalloc (len_var + len_class + 3);
   if (! full_name)
     return FALSE;
   full_name = (char *) xmalloc (len_var + len_class + 3);
   if (! full_name)
     return FALSE;
-  memcpy (full_name, info->stack->next->type, len_class);
-  memcpy (full_name + len_class, "::", 2);
-  memcpy (full_name + len_class + 2, name, len_var + 1);
+  sprintf (full_name, "%s::%s", info->stack->next->type, name);
 
   if (! substitute_type (info, full_name))
 
   if (! substitute_type (info, full_name))
-    return FALSE;
+    {
+      free (full_name);
+      return FALSE;
+    }
 
   if (! prepend_type (info, "static "))
 
   if (! prepend_type (info, "static "))
-    return FALSE;
+    {
+      free (full_name);
+      return FALSE;
+    }
 
   t = pop_type (info);
   if (t == NULL)
 
   t = pop_type (info);
   if (t == NULL)
-    return FALSE;
+    {
+      free (full_name);
+      return FALSE;
+    }
 
   if (! tg_fix_visibility (info, visibility))
 
   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,
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:x\ttype:%s\tclass:%s\taccess:%s\n",
           name, info->filename, t, info->stack->type,
@@ -2340,7 +2226,7 @@ tg_class_static_member (void *p, const char *name,
 
 static bfd_boolean
 tg_class_baseclass (void *p, bfd_vma bitpos ATTRIBUTE_UNUSED,
 
 static bfd_boolean
 tg_class_baseclass (void *p, bfd_vma bitpos ATTRIBUTE_UNUSED,
-                   bfd_boolean virtual, enum debug_visibility visibility)
+                   bfd_boolean is_virtual, enum debug_visibility visibility)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
@@ -2352,7 +2238,7 @@ tg_class_baseclass (void *p, bfd_vma bitpos ATTRIBUTE_UNUSED,
   if (t == NULL)
     return FALSE;
 
   if (t == NULL)
     return FALSE;
 
-  if (strncmp (t, "class ", sizeof "class " - 1) == 0)
+  if (CONST_STRNEQ (t, "class "))
     t += sizeof "class " - 1;
 
   /* Push it back on to take advantage of the prepend_type and
     t += sizeof "class " - 1;
 
   /* Push it back on to take advantage of the prepend_type and
@@ -2360,7 +2246,7 @@ tg_class_baseclass (void *p, bfd_vma bitpos ATTRIBUTE_UNUSED,
   if (! push_type (info, t))
     return FALSE;
 
   if (! push_type (info, t))
     return FALSE;
 
-  if (virtual)
+  if (is_virtual)
     {
       if (! prepend_type (info, "virtual "))
        return FALSE;
     {
       if (! prepend_type (info, "virtual "))
        return FALSE;
@@ -2432,15 +2318,21 @@ tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
 
   method_name = strdup (context ? info->stack->next->next->method
                        : info->stack->next->method);
 
   method_name = strdup (context ? info->stack->next->next->method
                        : info->stack->next->method);
-  
+
   /* Stick the name of the method into its type.  */
   if (! substitute_type (info, method_name))
   /* 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)
 
   /* 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)
 
   /* Pull off the context type if there is one.  */
   if (! context)
@@ -2449,19 +2341,28 @@ tg_class_method_variant (void *p, const char *physname ATTRIBUTE_UNUSED,
     {
       context_type = pop_type (info);
       if (context_type == NULL)
     {
       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))
     }
 
   /* 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);
   free (method_type);
   free (method_name);
   free (context_type);
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:p\ttype:%s\tclass:%s\n",
           method_name, info->filename, method_type, info->stack->type);
   free (method_type);
   free (method_name);
   free (context_type);
-  
+
   return TRUE;
 }
 
   return TRUE;
 }
 
@@ -2471,8 +2372,7 @@ static bfd_boolean
 tg_class_static_method_variant (void *p,
                                const char *physname ATTRIBUTE_UNUSED,
                                enum debug_visibility visibility,
 tg_class_static_method_variant (void *p,
                                const char *physname ATTRIBUTE_UNUSED,
                                enum debug_visibility visibility,
-                               bfd_boolean constp,
-                               bfd_boolean volatilep)
+                               bfd_boolean constp, bfd_boolean volatilep)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *method_type;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *method_type;
@@ -2501,16 +2401,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))
   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)
 
   /* 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))
 
   /* 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,
 
   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,
@@ -2631,7 +2541,7 @@ static bfd_boolean
 tg_int_constant (void *p, const char *name, bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 tg_int_constant (void *p, const char *name, bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20];
+  char ab[22];
 
   indent (info);
   print_vma (val, ab, FALSE, FALSE);
 
   indent (info);
   print_vma (val, ab, FALSE, FALSE);
@@ -2660,7 +2570,7 @@ tg_typed_constant (void *p, const char *name, bfd_vma val)
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
 {
   struct pr_handle *info = (struct pr_handle *) p;
   char *t;
-  char ab[20];
+  char ab[22];
 
   t = pop_type (info);
   if (t == NULL)
 
   t = pop_type (info);
   if (t == NULL)
@@ -2683,25 +2593,18 @@ tg_variable (void *p, const char *name, enum debug_var_kind kind,
             bfd_vma val ATTRIBUTE_UNUSED)
 {
   struct pr_handle *info = (struct pr_handle *) p;
             bfd_vma val ATTRIBUTE_UNUSED)
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char *t;
-  const char *dname, *from_class;
+  char *t, *dname, *from_class;
 
   t = pop_type (info);
   if (t == NULL)
     return FALSE;
 
 
   t = pop_type (info);
   if (t == NULL)
     return FALSE;
 
-  dname = name;
+  dname = NULL;
   if (info->demangler)
   if (info->demangler)
-    {
-      dname = info->demangler (info->abfd, name);
-      if (strcmp (name, dname) == 0)
-       {
-         free ((char *) dname);
-         dname = name;
-       }
-    }
+    dname = info->demangler (info->abfd, name, demangle_flags);
 
 
-  if (dname != name)
+  from_class = NULL;
+  if (dname != NULL)
     {
       char *sep;
       sep = strstr (dname, "::");
     {
       char *sep;
       sep = strstr (dname, "::");
@@ -2712,14 +2615,9 @@ tg_variable (void *p, const char *name, enum debug_var_kind kind,
          from_class = dname;
        }
       else
          from_class = dname;
        }
       else
-       {
-         /* Obscure types as vts and type_info nodes.  */
-         name = dname;
-         from_class = NULL;
-       }
+       /* Obscure types as vts and type_info nodes.  */
+       name = dname;
     }
     }
-  else
-    from_class = NULL;
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:v\ttype:%s", name, info->filename, t);
 
 
   fprintf (info->f, "%s\t%s\t0;\"\tkind:v\ttype:%s", name, info->filename, t);
 
@@ -2737,10 +2635,10 @@ tg_variable (void *p, const char *name, enum debug_var_kind kind,
     }
 
   if (from_class)
     }
 
   if (from_class)
-    {
-      fprintf (info->f, "\tclass:%s",from_class);
-      free ((char *) dname);
-    }
+    fprintf (info->f, "\tclass:%s", from_class);
+
+  if (dname)
+    free (dname);
 
   fprintf (info->f, "\n");
 
 
   fprintf (info->f, "\n");
 
@@ -2755,28 +2653,22 @@ static bfd_boolean
 tg_start_function (void *p, const char *name, bfd_boolean global)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 tg_start_function (void *p, const char *name, bfd_boolean global)
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  const char *dname;
+  char *dname;
 
   if (! global)
     info->stack->flavor = "static";
   else
     info->stack->flavor = NULL;
 
 
   if (! global)
     info->stack->flavor = "static";
   else
     info->stack->flavor = NULL;
 
-  dname = name;
+  dname = NULL;
   if (info->demangler)
   if (info->demangler)
-    {
-      dname = info->demangler (info->abfd, name);
-      if (strcmp (name, dname) == 0)
-       {
-         free ((char *) dname);
-         dname = name;
-       }
-    }
+    dname = info->demangler (info->abfd, name, demangle_flags);
 
 
-  if (! substitute_type (info, dname))
+  if (! substitute_type (info, dname ? dname : name))
     return FALSE;
     return FALSE;
-    
-  if (dname != name)
+
+  info->stack->method = NULL;
+  if (dname != NULL)
     {
       char *sep;
       sep = strstr (dname, "::");
     {
       char *sep;
       sep = strstr (dname, "::");
@@ -2796,8 +2688,6 @@ tg_start_function (void *p, const char *name, bfd_boolean global)
        *sep = 0;
       /* Obscure functions as type_info function.  */
     }
        *sep = 0;
       /* Obscure functions as type_info function.  */
     }
-  else
-    info->stack->method = NULL;
 
   info->stack->parents = strdup (name);
 
 
   info->stack->parents = strdup (name);
 
@@ -2836,11 +2726,11 @@ tg_function_parameter (void *p, const char *name, enum debug_parm_kind kind,
     {
       if (info->parameter != 1 && ! append_type (info, ", "))
        return FALSE;
     {
       if (info->parameter != 1 && ! append_type (info, ", "))
        return FALSE;
-    
+
       if (kind == DEBUG_PARM_REG || kind == DEBUG_PARM_REF_REG)
        if (! append_type (info, "register "))
          return FALSE;
       if (kind == DEBUG_PARM_REG || kind == DEBUG_PARM_REF_REG)
        if (! append_type (info, "register "))
          return FALSE;
-          
+
       if (! append_type (info, t))
        return FALSE;
     }
       if (! append_type (info, t))
        return FALSE;
     }
@@ -2858,7 +2748,7 @@ static bfd_boolean
 tg_start_block (void *p, bfd_vma addr)
 {
   struct pr_handle *info = (struct pr_handle *) p;
 tg_start_block (void *p, bfd_vma addr)
 {
   struct pr_handle *info = (struct pr_handle *) p;
-  char ab[20], kind, *partof;
+  char ab[22], kind, *partof;
   char *t;
   bfd_boolean local;
 
   char *t;
   bfd_boolean local;
 
@@ -2905,8 +2795,7 @@ tg_start_block (void *p, bfd_vma addr)
 /* Write out line number information.  */
 
 static bfd_boolean
 /* Write out line number information.  */
 
 static bfd_boolean
-tg_lineno (void *p ATTRIBUTE_UNUSED,
-          const char *filename ATTRIBUTE_UNUSED,
+tg_lineno (void *p ATTRIBUTE_UNUSED, const char *fname ATTRIBUTE_UNUSED,
           unsigned long lineno ATTRIBUTE_UNUSED,
           bfd_vma addr ATTRIBUTE_UNUSED)
 {
           unsigned long lineno ATTRIBUTE_UNUSED,
           bfd_vma addr ATTRIBUTE_UNUSED)
 {
This page took 0.042235 seconds and 4 git commands to generate.