| 282 | |
| 283 | |
| 284 | void find_vtables_rtti() |
| 285 | { |
| 286 | logmsg(DEBUG, "\nprocess_rtti()\n"); |
| 287 | |
| 288 | if (!objectFormatParser && !initObjectFormatParser()) |
| 289 | return; |
| 290 | |
| 291 | // get rtti_vftables map using rtti data |
| 292 | objectFormatParser->getRttiInfo(); |
| 293 | |
| 294 | // store this inormation in the lists |
| 295 | for (std::map<ea_t, VTBL_info_t>::iterator it = rtti_vftables.begin(); it != rtti_vftables.end(); it++) { |
| 296 | VTBL_info_t vftable_info_t; |
| 297 | vftable_info_t.ea_begin = it->second.ea_begin; |
| 298 | vftable_info_t.ea_end = it->second.ea_end; |
| 299 | vftable_info_t.methods = it->second.methods; |
| 300 | vftable_info_t.vtbl_name = it->second.vtbl_name; |
| 301 | |
| 302 | qstring vtbl_info_str; |
| 303 | vtbl_info_str.cat_sprnt(" 0x%x - 0x%x: %s methods count: %d", vftable_info_t.ea_begin, vftable_info_t.ea_end, vftable_info_t.vtbl_name.c_str(), vftable_info_t.methods); |
| 304 | |
| 305 | vtbl_list.push_back(vtbl_info_str); |
| 306 | vtbl_t_list.push_back(vftable_info_t); |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | |
| 311 | //--------------------------------------------------------------------------- |
no test coverage detected