From: Tom Tromey Date: Thu, 26 Mar 2020 15:28:08 +0000 (-0600) Subject: Move DWARF-constant stringifying code to new file X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2b2558bfacba3813863da6728c021eb89fa34677;p=binutils-gdb.git Move DWARF-constant stringifying code to new file This moves the DWARF debugging functions that stringify various constants to a new file, dwarf2/stringify.c. gdb/ChangeLog 2020-03-26 Tom Tromey * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 670f7f6c25b..c8f40a7dfb6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2020-03-26 Tom Tromey + + * 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. + 2020-03-26 Tom Tromey * dwarf2/die.h (struct die_info) : 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 64e92ff92fe..b363088a6aa 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 *); @@ -21334,89 +21325,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_", 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 . */ + +#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_", 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 . */ + +#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 */