diff options
Diffstat (limited to 'libdw/dwarf_macro_param2.c')
-rw-r--r-- | libdw/dwarf_macro_param2.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libdw/dwarf_macro_param2.c b/libdw/dwarf_macro_param2.c index cc902c99..f12e6f9a 100644 --- a/libdw/dwarf_macro_param2.c +++ b/libdw/dwarf_macro_param2.c @@ -44,12 +44,21 @@ dwarf_macro_param2 (Dwarf_Macro *macro, Dwarf_Word *paramp, const char **strp) if (dwarf_macro_param (macro, 1, ¶m) != 0) return -1; - if (param.form == DW_FORM_string - || param.form == DW_FORM_strp) + switch (param.form) { - *strp = dwarf_formstring (¶m); - return 0; + /* String forms allowed by libdw_valid_user_form. */ + case DW_FORM_line_strp: + case DW_FORM_string: + case DW_FORM_strp: + case DW_FORM_strp_sup: + case DW_FORM_strx: + case DW_FORM_strx1: + case DW_FORM_strx2: + case DW_FORM_strx3: + case DW_FORM_strx4: + *strp = dwarf_formstring (¶m); + return 0; + default: + return dwarf_formudata (¶m, paramp); } - else - return dwarf_formudata (¶m, paramp); } |