MCPcopy Create free account
hub / github.com/REhints/HexRaysCodeXplorer / findCols

Function findCols

src/HexRaysCodeXplorer/MSVCObjectFormatParser.cpp:793–845  ·  view source on GitHub ↗

Locate COL by descriptor list

Source from the content-addressed store, hash-verified

791//
792// Locate COL by descriptor list
793void idaapi findCols()
794{
795 // Usually in ".rdata" seg, try it first
796 std::set<segment_t *> segSet;
797 if (segment_t *seg = get_segm_by_name(".rdata"))
798 {
799 segSet.insert(seg);
800 scanSeg4Cols(seg);
801 }
802
803 // And ones named ".data"
804 int segCount = get_segm_qty();
805 for (int i = 0; i < segCount; ++i)
806 {
807 segment_t *seg = getnseg(i);
808 if (!seg)
809 continue;
810
811 if (seg->type != SEG_DATA)
812 continue;
813
814 if (segSet.find(seg) == segSet.end())
815 {
816 qstring name;
817 if (get_segm_name(&name, seg) <= 0)
818 continue;
819
820 if (name == ".data" || name == "_data")
821 {
822 segSet.insert(seg);
823 scanSeg4Cols(seg);
824 }
825 }
826 }
827
828 // If still none found, try any remaining data type segments
829 if (colList.empty())
830 {
831 for (int i = 0; i < segCount; i++)
832 {
833 segment_t *seg = getnseg(i);
834 if (!seg || seg->type != SEG_DATA)
835 continue;
836 if (segSet.find(seg) == segSet.end())
837 {
838 segSet.insert(seg);
839 scanSeg4Cols(seg);
840 }
841 }
842 }
843
844 return;
845}
846
847// Locate vftables
848void idaapi scanSeg4Vftables(segment_t *seg, eaRefMap &colMap)

Callers 1

getRttiInfoMethod · 0.85

Calls 1

scanSeg4ColsFunction · 0.85

Tested by

no test coverage detected