summaryrefslogtreecommitdiff
path: root/dwarfdump2/naming.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dwarfdump2/naming.cc')
-rw-r--r--dwarfdump2/naming.cc264
1 files changed, 264 insertions, 0 deletions
diff --git a/dwarfdump2/naming.cc b/dwarfdump2/naming.cc
new file mode 100644
index 0000000..4526538
--- /dev/null
+++ b/dwarfdump2/naming.cc
@@ -0,0 +1,264 @@
+
+/*
+ Copyright (C) 2000,2002,2004,2005 Silicon Graphics, Inc. All Rights Reserved.
+ Portions Copyright (C) 2007-2011 David Anderson. All Rights Reserved.
+
+
+ This program is free software; you can redistribute it and/or modify it
+ under the terms of version 2 of the GNU General Public License as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it would be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+ Further, this software is distributed without any warranty that it is
+ free of the rightful claim of any third person regarding infringement
+ or the like. Any license provided herein, whether implied or
+ otherwise, applies only to this software file. Patent licenses, if
+ any, provided herein do not apply to combinations of this program with
+ other software, or any other product whatsoever.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write the Free Software Foundation, Inc., 51
+ Franklin Street - Fifth Floor, Boston MA 02110-1301, USA.
+
+ Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
+ Mountain View, CA 94043, or:
+
+ http://www.sgi.com
+
+ For further information regarding this notice, see:
+
+ http://oss.sgi.com/projects/GenInfo/NoticeExplan
+
+*/
+
+/* The address of the Free Software Foundation is
+ Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ SGI has moved from the Crittenden Lane address.
+*/
+
+
+#include "globals.h"
+#include "dwarf.h"
+#include "libdwarf.h"
+
+using std::string;
+using std::cerr;
+using std::endl;
+
+static const char *
+skipunder(const char *v)
+{
+ const char *cp = v;
+ int undercount = 0;
+ for( ; *cp ; ++cp) {
+ if( *cp == '_') {
+ ++undercount;
+ if(undercount == 2) {
+ return cp+1;
+ }
+ }
+ }
+ return "";
+};
+
+static string
+ellipname(int res, unsigned int val_in, const char *v,const char *ty,bool printonerr)
+{
+#ifndef TRIVIAL_NAMING
+ if (check_dwarf_constants && checking_this_compiler()) {
+ DWARF_CHECK_COUNT(dwarf_constants_result,1);
+ }
+#endif
+ if(res != DW_DLV_OK) {
+ if(printonerr) {
+#ifndef TRIVIAL_NAMING
+ if(printonerr && check_dwarf_constants && checking_this_compiler()) {
+ if (check_verbose_mode) {
+ std::cerr << ty << " of " << val_in << " (" <<
+ IToHex(val_in) <<
+ ") is unknown to dwarfdump. " <<
+ "Continuing. " << endl;
+ }
+ DWARF_ERROR_COUNT(dwarf_constants_result,1);
+ DWARF_CHECK_ERROR_PRINT_CU();
+ }
+#else
+ /* This is for the tree-generation, not dwarfdump itself. */
+ if(printonerr) {
+ std::cerr << ty << " of " << val_in <<
+ " (" << IToHex(val_in,0) <<
+ ") is unknown to dwarfdump. Continuing. " << std::endl;
+ }
+#endif
+ }
+ return "<Unknown " + string(ty) + " value " +
+ IToHex(val_in,0) + ">";
+ }
+ if(ellipsis) {
+ return skipunder(v);
+ }
+ return v;
+};
+
+std::string get_TAG_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_TAG_name(val_in,&v);
+ return ellipname(res,val_in,v,"TAG",printonerr);
+}
+std::string get_children_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_children_name(val_in,&v);
+ return ellipname(res,val_in,v,"children",printonerr);
+}
+std::string get_FORM_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_FORM_name(val_in,&v);
+ return ellipname(res,val_in,v,"FORM",printonerr);
+}
+std::string get_AT_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_AT_name(val_in,&v);
+ return ellipname(res,val_in,v,"AT",printonerr);
+}
+std::string get_OP_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_OP_name(val_in,&v);
+ return ellipname(res,val_in,v,"OP",printonerr);
+}
+std::string get_ATE_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_ATE_name(val_in,&v);
+ return ellipname(res,val_in,v,"ATE",printonerr);
+}
+std::string get_DS_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_DS_name(val_in,&v);
+ return ellipname(res,val_in,v,"DS",printonerr);
+}
+std::string get_END_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_END_name(val_in,&v);
+ return ellipname(res,val_in,v,"END",printonerr);
+}
+std::string get_ATCF_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_ATCF_name(val_in,&v);
+ return ellipname(res,val_in,v,"ATCF",printonerr);
+}
+std::string get_ACCESS_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_ACCESS_name(val_in,&v);
+ return ellipname(res,val_in,v,"ACCESS",printonerr);
+}
+std::string get_VIS_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_VIS_name(val_in,&v);
+ return ellipname(res,val_in,v,"VIS",printonerr);
+}
+std::string get_VIRTUALITY_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_VIRTUALITY_name(val_in,&v);
+ return ellipname(res,val_in,v,"VIRTUALITY",printonerr);
+}
+std::string get_LANG_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_LANG_name(val_in,&v);
+ return ellipname(res,val_in,v,"LANG",printonerr);
+}
+std::string get_ID_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_ID_name(val_in,&v);
+ return ellipname(res,val_in,v,"ID",printonerr);
+}
+std::string get_CC_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_CC_name(val_in,&v);
+ return ellipname(res,val_in,v,"CC",printonerr);
+}
+std::string get_INL_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_INL_name(val_in,&v);
+ return ellipname(res,val_in,v,"INL",printonerr);
+}
+std::string get_ORD_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_ORD_name(val_in,&v);
+ return ellipname(res,val_in,v,"ORD",printonerr);
+}
+std::string get_DSC_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_DSC_name(val_in,&v);
+ return ellipname(res,val_in,v,"DSC",printonerr);
+}
+std::string get_LNS_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_LNS_name(val_in,&v);
+ return ellipname(res,val_in,v,"LNS",printonerr);
+}
+std::string get_LNE_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_LNE_name(val_in,&v);
+ return ellipname(res,val_in,v,"LNE",printonerr);
+}
+std::string get_MACINFO_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_MACINFO_name(val_in,&v);
+ return ellipname(res,val_in,v,"MACINFO",printonerr);
+}
+std::string get_CFA_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_CFA_name(val_in,&v);
+ return ellipname(res,val_in,v,"CFA",printonerr);
+}
+std::string get_EH_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_EH_name(val_in,&v);
+ return ellipname(res,val_in,v,"EH",printonerr);
+}
+std::string get_FRAME_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_FRAME_name(val_in,&v);
+ return ellipname(res,val_in,v,"FRAME",printonerr);
+}
+std::string get_CHILDREN_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_CHILDREN_name(val_in,&v);
+ return ellipname(res,val_in,v,"CHILDREN",printonerr);
+}
+std::string get_ADDR_name(unsigned int val_in,bool printonerr)
+{
+ const char *v = 0;
+ int res = dwarf_get_ADDR_name(val_in,&v);
+ return ellipname(res,val_in,v,"ADDR",printonerr);
+}
+
+