summaryrefslogtreecommitdiffstats
path: root/src/dwarfstrings.c
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2011-04-02 17:33:41 +0200
committerMark Wielaard <[email protected]>2011-04-02 17:33:41 +0200
commit976d70bad5c12cb8fdc672d91cc0c163e723054f (patch)
tree9ee3c94356ece85582493a25ea5e667c93b53f60 /src/dwarfstrings.c
parente7b14bb4394d89e131843889edde21c2f73a8609 (diff)
dwarflint: Add DW_LNE_set_discriminator check and clean unknown upcode warn.
Print unknown (extended) opcodes has hex values. Add dwarf_line_extended_opcode_string. New simple DW_LNE_set_discriminator check (not zero).
Diffstat (limited to 'src/dwarfstrings.c')
-rw-r--r--src/dwarfstrings.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/dwarfstrings.c b/src/dwarfstrings.c
index 91933f01..9826cf30 100644
--- a/src/dwarfstrings.c
+++ b/src/dwarfstrings.c
@@ -765,7 +765,6 @@ dwarf_locexpr_opcode_string (unsigned int code)
return ret;
}
-
const char *
dwarf_line_standard_opcode_string (unsigned int code)
{
@@ -789,3 +788,27 @@ dwarf_line_standard_opcode_string (unsigned int code)
return ret;
}
+
+const char *
+dwarf_line_extended_opcode_string (unsigned int code)
+{
+ static const char *const known[] =
+ {
+#define ONE_KNOWN_DW_LNE(NAME, CODE) [CODE] = #NAME,
+ ALL_KNOWN_DW_LNE
+#undef ONE_KNOWN_DW_LNE
+ };
+
+ const char *ret = NULL;
+ if (likely (code < sizeof (known) / sizeof (known[0])))
+ ret = known[code];
+
+ if (ret == NULL)
+ {
+ static char buf[40];
+ snprintf (buf, sizeof buf, gettext ("unknown opcode %x"), code);
+ ret = buf;
+ }
+
+ return ret;
+}