private object ReadDltEntries(DlHeader dlhdr, uint uData, List <string> names) { var rdr = MakeReader(uData + dlhdr.dlt_loc); var dlts = new List <(string, uint)>(); for (int i = 0; i < dlhdr.dlt_count; ++i) { var addr = Address.Ptr32((uint)rdr.Offset); uint n = rdr.ReadUInt32(); dlts.Add((names[i], n)); } return(dlts); }
private List <ImageSymbol> ReadPltEntries(DlHeader dlhdr, SOM_Exec_aux_hdr exeAuxHdr, List <string> names, IProcessorArchitecture arch) { var rdr = MakeReader(exeAuxHdr.exec_dfile + dlhdr.plt_loc); var dlts = new List <ImageSymbol>(); for (int i = 0; i < dlhdr.plt_count; ++i) { var addr = Address.Ptr32(exeAuxHdr.exec_dmem + ((uint)rdr.Offset - exeAuxHdr.exec_dfile)); uint n = rdr.ReadUInt32(); uint m = rdr.ReadUInt32(); var name = names[i + dlhdr.dlt_count]; var pltEntry = ImageSymbol.ExternalProcedure(arch, Address.Ptr32(n), name); var pltGotEntry = ImageSymbol.DataObject(arch, addr, name + "@@GOT", PrimitiveType.Ptr32); dlts.Add(pltEntry); dlts.Add(pltGotEntry); } return(dlts); }