From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Cc: Tom Tromey <tom@tromey.com>
Subject: [PATCH 21/22] Move DWARF-constant stringifying code to new file
Date: Sun, 22 Mar 2020 12:45:22 -0600 [thread overview]
Message-ID: <20200322184523.28959-22-tom@tromey.com> (raw)
In-Reply-To: <20200322184523.28959-1-tom@tromey.com>
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
next prev parent reply other threads:[~2020-03-22 18:45 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-22 18:45 [PATCH 00/22] More splitting of dwarf2/read.c Tom Tromey
2020-03-22 18:45 ` [PATCH 01/22] Introduce dwarf2/dwz.h Tom Tromey
2020-03-22 18:45 ` [PATCH 02/22] Add dwz.c and dwz_file::read_string Tom Tromey
2020-03-22 18:45 ` [PATCH 03/22] Change dwarf_decode_macro_bytes calling convention Tom Tromey
2020-03-22 18:45 ` [PATCH 04/22] Split dwarf_decode_macros into two overloads Tom Tromey
2020-03-23 16:13 ` Christian Biesinger
2020-03-26 2:09 ` Tom Tromey
2020-03-24 1:58 ` Simon Marchi
2020-03-26 2:10 ` Tom Tromey
2020-03-22 18:45 ` [PATCH 05/22] Move dwarf2_section_buffer_overflow_complaint to dwarf2/section.c Tom Tromey
2020-03-22 18:45 ` [PATCH 06/22] Convert dwarf2_section_buffer_overflow_complaint to a method Tom Tromey
2020-03-22 18:45 ` [PATCH 07/22] Add dwarf2_section_info::read_string method Tom Tromey
2020-03-22 18:45 ` [PATCH 08/22] Move code to new file dwarf2/macro.c Tom Tromey
2020-03-22 18:45 ` [PATCH 09/22] Make some line_header methods const Tom Tromey
2020-03-22 18:45 ` [PATCH 10/22] Use a const line_header in macro reader Tom Tromey
2020-03-22 18:45 ` [PATCH 11/22] Use a const dwarf2_section_info " Tom Tromey
2020-03-22 18:45 ` [PATCH 12/22] Trivial fix in dwarf_decode_macro_bytes Tom Tromey
2020-03-22 18:45 ` [PATCH 13/22] Convert read_indirect_line_string to a method Tom Tromey
2020-03-24 2:49 ` Simon Marchi
2020-03-22 18:45 ` [PATCH 14/22] Move more code to line-header.c Tom Tromey
2020-03-22 18:45 ` [PATCH 15/22] Move die_info to new header Tom Tromey
2020-03-22 18:45 ` [PATCH 16/22] Remove dwarf2_cu::base_known Tom Tromey
2020-03-22 18:45 ` [PATCH 17/22] Change dwarf2_attr_no_follow to be a method Tom Tromey
2020-03-22 18:45 ` [PATCH 18/22] Remove sibling_die Tom Tromey
2020-03-22 18:45 ` [PATCH 19/22] Change two more functions to be methods on die_info Tom Tromey
2020-03-23 19:07 ` Christian Biesinger
2020-03-26 2:17 ` Tom Tromey
2020-03-22 18:45 ` [PATCH 20/22] Rewrite new die_info methods Tom Tromey
2020-03-22 18:45 ` Tom Tromey [this message]
2020-03-22 18:45 ` [PATCH 22/22] Change two functions to be methods on struct attribute Tom Tromey
2020-03-24 13:34 ` [PATCH 00/22] More splitting of dwarf2/read.c Simon Marchi
2020-03-26 15:32 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200322184523.28959-22-tom@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox