public bool ApplyPlaceholderProperties(SbModule destModule, PlaceholderModuleProperties properties, RemoteTarget lldbTarget) { long slide = properties.Slide; SbAddress headerAddress = destModule.GetObjectFileHeaderAddress(); if (headerAddress != null) { // For libraries this will generally equal 0, for executables it will equal // |placeholderBaseLoadAddress|. ulong fileBaseAddress = headerAddress.GetFileAddress(); slide -= (long)fileBaseAddress; } SbError error = lldbTarget.SetModuleLoadAddress(destModule, slide); if (error.Fail()) { Trace.WriteLine( $"Failed to set load address on destination module: {error.GetCString()}."); return(false); } if (!destModule.SetPlatformFileSpec(properties.PlatformFileSpec)) { Trace.WriteLine("Failed to set file spec on the destination module."); return(false); } return(true); }
public override Task <SetModuleLoadAddressResponse> SetModuleLoadAddress( SetModuleLoadAddressRequest request, ServerCallContext context) { RemoteTarget target = GrpcLookupUtils.GetTarget(request.Target, _targetStore); SbModule module = _moduleStore.GetObject(request.Module.Id); SbError error = target.SetModuleLoadAddress(module, request.SectionsOffset); var grpcError = new GrpcSbError { Success = error.Success(), Error = error.GetCString() }; return(Task.FromResult(new SetModuleLoadAddressResponse { Error = grpcError })); }
public void SetUp() { logSpy = new LogSpy(); logSpy.Attach(); var noError = new SbErrorStub(true, null); mockTarget = Substitute.For <RemoteTarget>(); mockTarget.SetModuleLoadAddress(Arg.Any <SbModule>(), Arg.Any <long>()).Returns(noError); mockModule = Substitute.For <SbModule>(); mockModule.HasCompileUnits().Returns(false); mockModule.FindSection(Arg.Any <string>()).Returns((SbSection)null); mockPlatformFileSpec = Substitute.For <SbFileSpec>(); moduleUtil = new LldbModuleUtil(); }
public void ApplyPlaceholderProperties_SetModuleLoadAddressFails() { var error = new SbErrorStub(false, "failorama"); mockTarget.SetModuleLoadAddress(Arg.Any <SbModule>(), Arg.Any <long>()).Returns(error); var placeholderProperties = new PlaceholderModuleProperties(MODULE_SLIDE, Substitute.For <SbFileSpec>()); Assert.IsFalse(moduleUtil.ApplyPlaceholderProperties( Substitute.For <SbModule>(), placeholderProperties, mockTarget)); var output = logSpy.GetOutput(); Assert.That(output, Does.Contain("Failed to set load address")); Assert.That(output, Does.Contain(error.GetCString())); }