diff options
| author | Mark Wielaard <[email protected]> | 2011-04-02 17:33:41 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2011-04-02 17:33:41 +0200 |
| commit | 976d70bad5c12cb8fdc672d91cc0c163e723054f (patch) | |
| tree | 9ee3c94356ece85582493a25ea5e667c93b53f60 /src/dwarfstrings.c | |
| parent | e7b14bb4394d89e131843889edde21c2f73a8609 (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.c | 25 |
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; +} |
