[PATCH 21/22] Move DWARF-constant stringifying code to new file

Tom Tromey
2020-03-22T18:45:30Z

This moves the DWARF debugging functions that stringify various
constants to a new file, dwarf2/stringify.c.

gdb/ChangeLog
2020-03-22 Tom Tromey <tom@tromey.com>

* dwarf2/read.c (dwarf_unit_type_name, dwarf_tag_name)
(dwarf_attr_name, dwarf_form_name, dwarf_bool_name)
(dwarf_type_encoding_name): Move to stringify.c.
* Makefile.in (COMMON_SFILES): Add dwarf2/stringify.c.
* dwarf2/stringify.c: New file.
* dwarf2/stringify.h: New file.
---
gdb/ChangeLog | 9 ++++
gdb/Makefile.in | 1 +
gdb/dwarf2/read.c | 94 +--------------------------------
gdb/dwarf2/stringify.c | 114 +++++++++++++++++++++++++++++++++++++++++
gdb/dwarf2/stringify.h | 38 ++++++++++++++
5 files changed, 163 insertions(+), 93 deletions(-)
create mode 100644 gdb/dwarf2/stringify.c
create mode 100644 gdb/dwarf2/stringify.h

diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index f66affd3e5f..bc3ef695bbd 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -1016,6 +1016,7 @@ COMMON_SFILES = \
dwarf2/macro.c \
dwarf2/read.c \
dwarf2/section.c \
+ dwarf2/stringify.c \
eval.c \
event-loop.c \
event-top.c \
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 9e7152d03e6..87305ec3688 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -40,6 +40,7 @@
#include "dwarf2/dwz.h"
#include "dwarf2/macro.h"
#include "dwarf2/die.h"
+#include "dwarf2/stringify.h"
#include "bfd.h"
#include "elf-bfd.h"
#include "symtab.h"
@@ -1406,16 +1407,6 @@ static const char *dwarf2_physname (const char *name, struct die_info *die,
static struct die_info *dwarf2_extension (struct die_info *die,
struct dwarf2_cu **);

-static const char *dwarf_tag_name (unsigned int);
-
-static const char *dwarf_attr_name (unsigned int);
-
-static const char *dwarf_form_name (unsigned int);
-
-static const char *dwarf_bool_name (unsigned int);
-
-static const char *dwarf_type_encoding_name (unsigned int);
-
static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);

static void dump_die_for_error (struct die_info *);
@@ -21336,89 +21327,6 @@ dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
return follow_die_ref (die, attr, ext_cu);
}

-/* A convenience function that returns an "unknown" DWARF name,
- including the value of V. STR is the name of the entity being
- printed, e.g., "TAG". */
-
-static const char *
-dwarf_unknown (const char *str, unsigned v)
-{
- char *cell = get_print_cell ();
- xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
- return cell;
-}
-
-/* Convert a DIE tag into its string name. */
-
-static const char *
-dwarf_tag_name (unsigned tag)
-{
- const char *name = get_DW_TAG_name (tag);
-
- if (name == NULL)
- return dwarf_unknown ("TAG", tag);
-
- return name;
-}
-
-/* Convert a DWARF attribute code into its string name. */
-
-static const char *
-dwarf_attr_name (unsigned attr)
-{
- const char *name;
-
-#ifdef MIPS /* collides with DW_AT_HP_block_index */
- if (attr == DW_AT_MIPS_fde)
- return "DW_AT_MIPS_fde";
-#else
- if (attr == DW_AT_HP_block_index)
- return "DW_AT_HP_block_index";
-#endif
-
- name = get_DW_AT_name (attr);
-
- if (name == NULL)
- return dwarf_unknown ("AT", attr);
-
- return name;
-}
-
-/* Convert a DWARF value form code into its string name. */
-
-static const char *
-dwarf_form_name (unsigned form)
-{
- const char *name = get_DW_FORM_name (form);
-
- if (name == NULL)
- return dwarf_unknown ("FORM", form);
-
- return name;
-}
-
-static const char *
-dwarf_bool_name (unsigned mybool)
-{
- if (mybool)
- return "TRUE";
- else
- return "FALSE";
-}
-
-/* Convert a DWARF type code into its string name. */
-
-static const char *
-dwarf_type_encoding_name (unsigned enc)
-{
- const char *name = get_DW_ATE_name (enc);
-
- if (name == NULL)
- return dwarf_unknown ("ATE", enc);
-
- return name;
-}
-
static void
dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
{
diff --git a/gdb/dwarf2/stringify.c b/gdb/dwarf2/stringify.c
new file mode 100644
index 00000000000..0cdefe81081
--- /dev/null
+++ b/gdb/dwarf2/stringify.c
@@ -0,0 +1,114 @@
+/* DWARF stringify code
+
+ Copyright (C) 1994-2020 Free Software Foundation, Inc.
+
+ Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
+ Inc. with support from Florida State University (under contract
+ with the Ada Joint Program Office), and Silicon Graphics, Inc.
+ Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
+ based on Fred Fish's (Cygnus Support) implementation of DWARF 1
+ support.
+
+ This file is part of GDB.
+
+ 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 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include "defs.h"
+#include "dwarf2.h"
+#include "dwarf2/stringify.h"
+
+/* A convenience function that returns an "unknown" DWARF name,
+ including the value of V. STR is the name of the entity being
+ printed, e.g., "TAG". */
+
+static const char *
+dwarf_unknown (const char *str, unsigned v)
+{
+ char *cell = get_print_cell ();
+ xsnprintf (cell, PRINT_CELL_SIZE, "DW_%s_<unknown: %u>", str, v);
+ return cell;
+}
+
+/* See stringify.h. */
+
+const char *
+dwarf_tag_name (unsigned tag)
+{
+ const char *name = get_DW_TAG_name (tag);
+
+ if (name == NULL)
+ return dwarf_unknown ("TAG", tag);
+
+ return name;
+}
+
+/* See stringify.h. */
+
+const char *
+dwarf_attr_name (unsigned attr)
+{
+ const char *name;
+
+#ifdef MIPS /* collides with DW_AT_HP_block_index */
+ if (attr == DW_AT_MIPS_fde)
+ return "DW_AT_MIPS_fde";
+#else
+ if (attr == DW_AT_HP_block_index)
+ return "DW_AT_HP_block_index";
+#endif
+
+ name = get_DW_AT_name (attr);
+
+ if (name == NULL)
+ return dwarf_unknown ("AT", attr);
+
+ return name;
+}
+
+/* See stringify.h. */
+
+const char *
+dwarf_form_name (unsigned form)
+{
+ const char *name = get_DW_FORM_name (form);
+
+ if (name == NULL)
+ return dwarf_unknown ("FORM", form);
+
+ return name;
+}
+
+/* See stringify.h. */
+
+const char *
+dwarf_bool_name (unsigned mybool)
+{
+ if (mybool)
+ return "TRUE";
+ else
+ return "FALSE";
+}
+
+/* See stringify.h. */
+
+const char *
+dwarf_type_encoding_name (unsigned enc)
+{
+ const char *name = get_DW_ATE_name (enc);
+
+ if (name == NULL)
+ return dwarf_unknown ("ATE", enc);
+
+ return name;
+}
diff --git a/gdb/dwarf2/stringify.h b/gdb/dwarf2/stringify.h
new file mode 100644
index 00000000000..d3b3d2c191a
--- /dev/null
+++ b/gdb/dwarf2/stringify.h
@@ -0,0 +1,38 @@
+/* DWARF stringify code
+
+ Copyright (C) 2003-2020 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ 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 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef GDB_DWARF2_STRINGIFY_H
+#define GDB_DWARF2_STRINGIFY_H
+
+/* Convert a DIE tag into its string name. */
+extern const char *dwarf_tag_name (unsigned tag);
+
+/* Convert a DWARF attribute code into its string name. */
+extern const char *dwarf_attr_name (unsigned attr);
+
+/* Convert a DWARF value form code into its string name. */
+extern const char *dwarf_form_name (unsigned form);
+
+/* Convert a boolean to a string form. */
+extern const char *dwarf_bool_name (unsigned mybool);
+
+/* Convert a DWARF type code into its string name. */
+extern const char *dwarf_type_encoding_name (unsigned enc);
+
+#endif /* GDB_DWARF2_STRINGIFY_H */
--
2.17.2