private void OnNameChanged() { userProc = program.EnsureUserProcedure(Address, procedure.Name); userProc.Name = procedure.Name; this.name = procedure.Name; SetTreeNodeText(); }
public ProcedureDesigner( Program program, Procedure procedure, Procedure_v1 userProc, Address address, bool isEntryPoint) { base.Component = procedure; this.program = program; this.procedure = procedure; this.userProc = userProc; this.Address = address; this.isEntryPoint = isEntryPoint; if (userProc != null && !string.IsNullOrEmpty(userProc.Name)) { this.name = userProc.Name; } else if (procedure != null) { this.name = procedure.Name; } if (procedure != null) { procedure.NameChanged += procedure_NameChanged; } }
void procedure_NameChanged(object sender, EventArgs e) { userProc = program.EnsureUserProcedure(Address, procedure.Name); userProc.Name = procedure.Name; this.name = procedure.Name; SetTreeNodeText(); }
private void Given_UserProcedure(uint uAddr, string procName, string placement) { var addr = Address.Ptr32(uAddr); var uProc = new Reko.Core.Serialization.Procedure_v1 { Address = addr.ToString(), Name = procName, OutputFile = placement }; program.User.Procedures.Add(addr, uProc); }
private void SetAssumedRegisterValues(Address Address, Dictionary <RegisterStorage, string> dictionary) { userProc = program.EnsureUserProcedure( this.Address, procedure != null ? procedure.Name : userProc.Name); userProc.Assume = dictionary .Select(de => new Core.Serialization.RegisterValue_v2 { Register = de.Key.Name, Value = de.Value }) .ToArray(); }
public ProcedureDesigner(Program program, Procedure procedure, Procedure_v1 userProc, Address address) { this.program = program; this.procedure = procedure; this.userProc = userProc; this.Address = address; if (userProc != null && !string.IsNullOrEmpty(userProc.Name)) { this.name = userProc.Name; } else { this.name = procedure.Name; } }
public void Mfi_Save() { Given_Loader(); Given_MainFormInteractor(); Given_LoadPreferences(); Given_DecompilerInstance(); Given_XmlWriter(); fsSvc.Setup(f => f.MakeRelativePath("foo.dcproject", "foo.exe")).Returns("foo.exe"); fsSvc.Setup(f => f.MakeRelativePath("foo.dcproject", null)).Returns((string)null); uiSvc.Setup(u => u.ShowSaveFileDialog("foo.dcproject")).Returns("foo.dcproject").Verifiable(); When_CreateMainFormInteractor(); Assert.IsNotNull(loader); dcSvc.Object.Decompiler.Load("foo.exe"); var p = new Reko.Core.Serialization.Procedure_v1 { Address = "12345", Name = "MyProc", }; var program = dcSvc.Object.Decompiler.Project.Programs[0]; program.User.Procedures.Add(Address.Ptr32(0x12345), p); program.User.Heuristics.Add("shingle"); program.User.ExtractResources = true; interactor.Save(); string s = @"<?xml version=""1.0"" encoding=""utf-8""?> <project xmlns=""http://schemata.jklnet.org/Reko/v5""> <arch>x86-protected-32</arch> <platform>TestPlatform</platform> <input> <filename>foo.exe</filename> <user> <processor /> <procedure name=""MyProc""> <address>00012345</address> </procedure> <heuristic name=""shingle"" /> <registerValues /> </user> </input> </project>"; var res = Encoding.UTF8.GetString(xmlStm.ToArray()); Assert.AreEqual(s, res); uiSvc.Verify(); }
private void MarkAndScanProcedure(Address address) { var decompiler = services.GetService <IDecompilerService>().Decompiler; var proc = decompiler.ScanProcedure(program, address); var userp = new Reko.Core.Serialization.Procedure_v1 { Address = address.ToString(), Name = proc.Name, }; var ups = program.UserProcedures; if (!ups.ContainsKey(address)) { ups.Add(address, userp); } }
private void MarkAndScanProcedure(Address address) { var decompiler = services.GetService<IDecompilerService>().Decompiler; var proc = decompiler.ScanProcedure(program, address); var userp = new Reko.Core.Serialization.Procedure_v1 { Address = address.ToString(), Name = proc.Name, }; var ups = program.UserProcedures; if (!ups.ContainsKey(address)) { ups.Add(address, userp); } }