diff --git a/gprofng/src/DwarfLib.cc b/gprofng/src/DwarfLib.cc index 18c47a4ee95..a150c76cdd5 100644 --- a/gprofng/src/DwarfLib.cc +++ b/gprofng/src/DwarfLib.cc @@ -1006,6 +1006,10 @@ Dwr_Tag::dump () case DW_FORM_string: case DW_FORM_line_strp: case DW_FORM_strp_sup: + case DW_FORM_strx1: + case DW_FORM_strx2: + case DW_FORM_strx3: + case DW_FORM_strx4: case DW_FORM_implicit_const: Dprintf (DUMP_DWARFLIB, " \"%s\"", atrp->u.str ? atrp->u.str : ""); break; @@ -1018,6 +1022,15 @@ Dwr_Tag::dump () atrp->u.str); break; case DW_FORM_addr: + case DW_FORM_addrx: + case DW_FORM_addrx1: + case DW_FORM_addrx2: + case DW_FORM_addrx3: + case DW_FORM_addrx4: + case DW_FORM_ref_sup4: + case DW_FORM_ref_sup8: + case DW_FORM_loclistx: + case DW_FORM_rnglistx: case DW_FORM_data2: case DW_FORM_data4: case DW_FORM_data8: @@ -2058,25 +2071,40 @@ DwrCU::set_die (Dwarf_Die die) (void) debug_infoSec->Get_64 (); break; case DW_FORM_addrx: - case DW_FORM_strx: case DW_FORM_loclistx: case DW_FORM_rnglistx: atf->u.offset = debug_infoSec->GetULEB128 (); break; - case DW_FORM_addrx1: + case DW_FORM_strx: + atf->u.offset = debug_infoSec->GetULEB128 (); + atf->u.str = get_string (dwarf->debug_strSec, atf->u.offset); + break; case DW_FORM_strx1: + atf->u.offset = debug_infoSec->Get_8 (); + atf->u.str = get_string (dwarf->debug_strSec, atf->u.offset); + break; + case DW_FORM_strx2: + atf->u.offset = debug_infoSec->Get_16 (); + atf->u.str = get_string (dwarf->debug_strSec, atf->u.offset); + break; + case DW_FORM_strx3: + atf->u.offset = debug_infoSec->Get_24 (); + atf->u.str = get_string (dwarf->debug_strSec, atf->u.offset); + break; + case DW_FORM_strx4: + atf->u.offset = debug_infoSec->Get_32 (); + atf->u.str = get_string (dwarf->debug_strSec, atf->u.offset); + break; + case DW_FORM_addrx1: atf->u.offset = debug_infoSec->Get_8 (); break; case DW_FORM_addrx2: - case DW_FORM_strx2: atf->u.offset = debug_infoSec->Get_16 (); break; case DW_FORM_addrx3: - case DW_FORM_strx3: atf->u.offset = debug_infoSec->Get_24 (); break; case DW_FORM_addrx4: - case DW_FORM_strx4: case DW_FORM_ref_sup4: atf->u.offset = debug_infoSec->Get_32 (); break;