mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-06 03:50:02 +02:00
GP-0: Fixed obvious issue static mapping across languages.
This commit is contained in:
parent
d9476f62e7
commit
9c5c8f4e60
3 changed files with 38 additions and 7 deletions
|
@ -312,7 +312,8 @@ public class DebuggerStaticMappingServicePlugin extends Plugin
|
|||
Address minAddr = opened.getAddressFactory().getAddress(mapping.getStaticAddress());
|
||||
Address maxAddr = addOrMax(minAddr, mapping.getLength() - 1);
|
||||
this.staticRange = new AddressRangeImpl(minAddr, maxAddr);
|
||||
this.shift = mapping.getMinTraceAddress().subtract(staticRange.getMinAddress());
|
||||
this.shift = mapping.getMinTraceAddress().getOffset() -
|
||||
staticRange.getMinAddress().getOffset();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -508,17 +508,23 @@ public abstract class AbstractGhidraHeadedDebuggerGUITest
|
|||
}
|
||||
|
||||
protected void createProgramFromTrace(Trace trace) throws IOException {
|
||||
program = new ProgramDB(getProgramName(), trace.getBaseLanguage(),
|
||||
trace.getBaseCompilerSpec(), this);
|
||||
createProgram(trace.getBaseLanguage(), trace.getBaseCompilerSpec());
|
||||
}
|
||||
|
||||
protected void createProgramFromTrace() throws IOException {
|
||||
createProgramFromTrace(tb.trace);
|
||||
}
|
||||
|
||||
protected void createProgram(Language lang, CompilerSpec cSpec) throws IOException {
|
||||
program = new ProgramDB(getProgramName(), lang, cSpec, this);
|
||||
}
|
||||
|
||||
protected void createProgram(Language lang) throws IOException {
|
||||
createProgram(lang, lang.getDefaultCompilerSpec());
|
||||
}
|
||||
|
||||
protected void createProgram() throws IOException {
|
||||
Language lang = getToyBE64Language();
|
||||
program = new ProgramDB(getProgramName(), lang, lang.getDefaultCompilerSpec(), this);
|
||||
createProgram(getToyBE64Language());
|
||||
}
|
||||
|
||||
protected void createAndOpenProgramFromTrace() throws IOException {
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.google.common.collect.Range;
|
|||
|
||||
import ghidra.app.plugin.core.debug.gui.AbstractGhidraHeadedDebuggerGUITest;
|
||||
import ghidra.app.services.DebuggerStaticMappingService;
|
||||
import ghidra.framework.model.DomainFile;
|
||||
import ghidra.program.model.address.*;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.util.ProgramLocation;
|
||||
|
@ -46,7 +47,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg
|
|||
protected TraceStaticMappingManager mappingManager;
|
||||
|
||||
protected AddressSpace dynSpace;
|
||||
protected AddressSpace stSpace;;
|
||||
protected AddressSpace stSpace;
|
||||
|
||||
@Before
|
||||
public void setUpStaticMappingService() throws Exception {
|
||||
|
@ -59,7 +60,7 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg
|
|||
mappingManager = tb.trace.getStaticMappingManager();
|
||||
waitForDomainObject(tb.trace);
|
||||
|
||||
createProgramFromTrace();
|
||||
createProgram();
|
||||
intoProject(program);
|
||||
programManager.openProgram(program);
|
||||
waitForProgram(program);
|
||||
|
@ -119,6 +120,29 @@ public class DebuggerStaticMappingServiceTest extends AbstractGhidraHeadedDebugg
|
|||
assertEquals(0x1000, m.getLength());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddMappingSecondLanguage() throws Exception {
|
||||
programManager.closeProgram(program, true);
|
||||
DomainFile df = program.getDomainFile();
|
||||
program.release(this);
|
||||
df.delete();
|
||||
|
||||
createProgram(getSLEIGH_X86_LANGUAGE());
|
||||
intoProject(program);
|
||||
programManager.openProgram(program);
|
||||
waitForProgram(program);
|
||||
|
||||
stSpace = program.getAddressFactory().getDefaultAddressSpace();
|
||||
|
||||
addMapping();
|
||||
|
||||
assertEquals(1, mappingManager.getAllEntries().size());
|
||||
TraceStaticMapping m = mappingManager.findContaining(dynSpace.getAddress(0x00100000), 0);
|
||||
assertTrue(m.getStaticProgramURL().toString().endsWith(getProgramName()));
|
||||
assertEquals("ram:00200000", m.getStaticAddress());
|
||||
assertEquals(0x1000, m.getLength());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddMappingTruncateExisting() throws Exception {
|
||||
addMapping();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue