mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Merge remote-tracking branch 'origin/GP-1545_Dan_noGuavaCache--SQUASHED'
Conflicts: Ghidra/Debug/Debugger-agent-dbgmodel/src/main/java/agent/dbgmodel/model/impl/DelegateDbgModel2TargetObject.java
This commit is contained in:
commit
2b20e32a78
142 changed files with 1135 additions and 1939 deletions
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.advanced;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -43,14 +42,11 @@ public interface DebugAdvancedInternal extends DebugAdvanced {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, advanced, DebugAdvancedImpl3::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugAdvanced>> PREFERRED_ADVANCED_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugAdvanced>> PREFERRED_ADVANCED_IIDS =
|
||||
PREFERRED_ADVANCED_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugAdvanced3.IID_IDEBUG_ADVANCED3), WrapIDebugAdvanced3.class) //
|
||||
.put(new REFIID(IDebugAdvanced2.IID_IDEBUG_ADVANCED2), WrapIDebugAdvanced2.class) //
|
||||
.put(new REFIID(IDebugAdvanced.IID_IDEBUG_ADVANCED), WrapIDebugAdvanced.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugAdvanced3.IID_IDEBUG_ADVANCED3), WrapIDebugAdvanced3.class),
|
||||
Map.entry(new REFIID(IDebugAdvanced2.IID_IDEBUG_ADVANCED2), WrapIDebugAdvanced2.class),
|
||||
Map.entry(new REFIID(IDebugAdvanced.IID_IDEBUG_ADVANCED), WrapIDebugAdvanced.class));
|
||||
|
||||
static DebugAdvancedInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugAdvancedInternal.class,
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.breakpoint;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -43,16 +42,14 @@ public interface DebugBreakpointInternal extends DebugBreakpoint {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, bp, DebugBreakpointImpl3::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugBreakpoint>> PREFERRED_BREAKPOINT_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugBreakpoint>> PREFERRED_BREAKPOINT_IIDS =
|
||||
PREFERRED_BREAKPOINT_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugBreakpoint3.IID_IDEBUG_BREAKPOINT3),
|
||||
WrapIDebugBreakpoint3.class) //
|
||||
.put(new REFIID(IDebugBreakpoint2.IID_IDEBUG_BREAKPOINT2),
|
||||
WrapIDebugBreakpoint2.class) //
|
||||
.put(new REFIID(IDebugBreakpoint.IID_IDEBUG_BREAKPOINT), WrapIDebugBreakpoint.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugBreakpoint3.IID_IDEBUG_BREAKPOINT3),
|
||||
WrapIDebugBreakpoint3.class),
|
||||
Map.entry(new REFIID(IDebugBreakpoint2.IID_IDEBUG_BREAKPOINT2),
|
||||
WrapIDebugBreakpoint2.class),
|
||||
Map.entry(new REFIID(IDebugBreakpoint.IID_IDEBUG_BREAKPOINT),
|
||||
WrapIDebugBreakpoint.class));
|
||||
|
||||
static DebugBreakpointInternal tryPreferredInterfaces(DebugControlInternal control,
|
||||
InterfaceSupplier supplier) {
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.client;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -67,18 +66,15 @@ public interface DebugClientInternal extends DebugClient {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, client, DebugClientImpl7::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugClient>> PREFERRED_CLIENT_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugClient>> PREFERRED_CLIENT_IIDS =
|
||||
PREFERRED_CLIENT_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugClient7.IID_IDEBUG_CLIENT7), WrapIDebugClient7.class) //
|
||||
.put(new REFIID(IDebugClient6.IID_IDEBUG_CLIENT6), WrapIDebugClient6.class) //
|
||||
.put(new REFIID(IDebugClient5.IID_IDEBUG_CLIENT5), WrapIDebugClient5.class) //
|
||||
.put(new REFIID(IDebugClient4.IID_IDEBUG_CLIENT4), WrapIDebugClient4.class) //
|
||||
.put(new REFIID(IDebugClient3.IID_IDEBUG_CLIENT3), WrapIDebugClient3.class) //
|
||||
.put(new REFIID(IDebugClient2.IID_IDEBUG_CLIENT2), WrapIDebugClient2.class) //
|
||||
.put(new REFIID(IDebugClient.IID_IDEBUG_CLIENT), WrapIDebugClient.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugClient7.IID_IDEBUG_CLIENT7), WrapIDebugClient7.class),
|
||||
Map.entry(new REFIID(IDebugClient6.IID_IDEBUG_CLIENT6), WrapIDebugClient6.class),
|
||||
Map.entry(new REFIID(IDebugClient5.IID_IDEBUG_CLIENT5), WrapIDebugClient5.class),
|
||||
Map.entry(new REFIID(IDebugClient4.IID_IDEBUG_CLIENT4), WrapIDebugClient4.class),
|
||||
Map.entry(new REFIID(IDebugClient3.IID_IDEBUG_CLIENT3), WrapIDebugClient3.class),
|
||||
Map.entry(new REFIID(IDebugClient2.IID_IDEBUG_CLIENT2), WrapIDebugClient2.class),
|
||||
Map.entry(new REFIID(IDebugClient.IID_IDEBUG_CLIENT), WrapIDebugClient.class));
|
||||
|
||||
static DebugClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugClientInternal.class, PREFERRED_CLIENT_IIDS,
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.control;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -59,18 +58,15 @@ public interface DebugControlInternal extends DebugControl {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, control, DebugControlImpl7::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugControl>> PREFERRED_CONTROL_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugControl>> PREFERRED_CONTROL_IIDS =
|
||||
PREFERRED_CONTROL_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugControl7.IID_IDEBUG_CONTROL7), WrapIDebugControl7.class) //
|
||||
.put(new REFIID(IDebugControl6.IID_IDEBUG_CONTROL6), WrapIDebugControl6.class) //
|
||||
.put(new REFIID(IDebugControl5.IID_IDEBUG_CONTROL5), WrapIDebugControl5.class) //
|
||||
.put(new REFIID(IDebugControl4.IID_IDEBUG_CONTROL4), WrapIDebugControl4.class) //
|
||||
.put(new REFIID(IDebugControl3.IID_IDEBUG_CONTROL3), WrapIDebugControl3.class) //
|
||||
.put(new REFIID(IDebugControl2.IID_IDEBUG_CONTROL2), WrapIDebugControl2.class) //
|
||||
.put(new REFIID(IDebugControl.IID_IDEBUG_CONTROL), WrapIDebugControl.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugControl7.IID_IDEBUG_CONTROL7), WrapIDebugControl7.class),
|
||||
Map.entry(new REFIID(IDebugControl6.IID_IDEBUG_CONTROL6), WrapIDebugControl6.class),
|
||||
Map.entry(new REFIID(IDebugControl5.IID_IDEBUG_CONTROL5), WrapIDebugControl5.class),
|
||||
Map.entry(new REFIID(IDebugControl4.IID_IDEBUG_CONTROL4), WrapIDebugControl4.class),
|
||||
Map.entry(new REFIID(IDebugControl3.IID_IDEBUG_CONTROL3), WrapIDebugControl3.class),
|
||||
Map.entry(new REFIID(IDebugControl2.IID_IDEBUG_CONTROL2), WrapIDebugControl2.class),
|
||||
Map.entry(new REFIID(IDebugControl.IID_IDEBUG_CONTROL), WrapIDebugControl.class));
|
||||
|
||||
static DebugControlInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugControlInternal.class, PREFERRED_CONTROL_IIDS,
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.dataspaces;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -46,19 +45,16 @@ public interface DebugDataSpacesInternal extends DebugDataSpaces {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, data, DebugDataSpacesImpl4::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugDataSpaces>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugDataSpaces>> PREFERRED_DATA_SPACES_IIDS =
|
||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugDataSpaces4.IID_IDEBUG_DATA_SPACES4),
|
||||
WrapIDebugDataSpaces4.class) //
|
||||
.put(new REFIID(IDebugDataSpaces3.IID_IDEBUG_DATA_SPACES3),
|
||||
WrapIDebugDataSpaces3.class) //
|
||||
.put(new REFIID(IDebugDataSpaces2.IID_IDEBUG_DATA_SPACES2),
|
||||
WrapIDebugDataSpaces2.class) //
|
||||
.put(new REFIID(IDebugDataSpaces.IID_IDEBUG_DATA_SPACES),
|
||||
WrapIDebugDataSpaces.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugDataSpaces4.IID_IDEBUG_DATA_SPACES4),
|
||||
WrapIDebugDataSpaces4.class),
|
||||
Map.entry(new REFIID(IDebugDataSpaces3.IID_IDEBUG_DATA_SPACES3),
|
||||
WrapIDebugDataSpaces3.class),
|
||||
Map.entry(new REFIID(IDebugDataSpaces2.IID_IDEBUG_DATA_SPACES2),
|
||||
WrapIDebugDataSpaces2.class),
|
||||
Map.entry(new REFIID(IDebugDataSpaces.IID_IDEBUG_DATA_SPACES),
|
||||
WrapIDebugDataSpaces.class));
|
||||
|
||||
static DebugDataSpacesInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugDataSpacesInternal.class,
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.registers;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -38,13 +37,12 @@ public interface DebugRegistersInternal extends DebugRegisters {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, registers, DebugRegistersImpl2::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugRegisters>> PREFERRED_REGISTERS_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugRegisters>> PREFERRED_REGISTERS_IIDS =
|
||||
PREFERRED_REGISTERS_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugRegisters2.IID_IDEBUG_REGISTERS2), WrapIDebugRegisters2.class) //
|
||||
.put(new REFIID(IDebugRegisters.IID_IDEBUG_REGISTERS), WrapIDebugRegisters.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugRegisters2.IID_IDEBUG_REGISTERS2),
|
||||
WrapIDebugRegisters2.class),
|
||||
Map.entry(new REFIID(IDebugRegisters.IID_IDEBUG_REGISTERS),
|
||||
WrapIDebugRegisters.class));
|
||||
|
||||
static DebugRegistersInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugRegistersInternal.class,
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.symbols;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -51,16 +50,13 @@ public interface DebugSymbolsInternal extends DebugSymbols {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, symbols, DebugSymbolsImpl5::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugSymbols>> PREFERRED_SYMBOLS_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugSymbols>> PREFFERED_SYMBOLS_IIDS =
|
||||
PREFERRED_SYMBOLS_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugSymbols5.IID_IDEBUG_SYMBOLS5), WrapIDebugSymbols5.class) //
|
||||
.put(new REFIID(IDebugSymbols4.IID_IDEBUG_SYMBOLS4), WrapIDebugSymbols4.class) //
|
||||
.put(new REFIID(IDebugSymbols3.IID_IDEBUG_SYMBOLS3), WrapIDebugSymbols3.class) //
|
||||
.put(new REFIID(IDebugSymbols2.IID_IDEBUG_SYMBOLS2), WrapIDebugSymbols2.class) //
|
||||
.put(new REFIID(IDebugSymbols.IID_IDEBUG_SYMBOLS), WrapIDebugSymbols.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugSymbols5.IID_IDEBUG_SYMBOLS5), WrapIDebugSymbols5.class),
|
||||
Map.entry(new REFIID(IDebugSymbols4.IID_IDEBUG_SYMBOLS4), WrapIDebugSymbols4.class),
|
||||
Map.entry(new REFIID(IDebugSymbols3.IID_IDEBUG_SYMBOLS3), WrapIDebugSymbols3.class),
|
||||
Map.entry(new REFIID(IDebugSymbols2.IID_IDEBUG_SYMBOLS2), WrapIDebugSymbols2.class),
|
||||
Map.entry(new REFIID(IDebugSymbols.IID_IDEBUG_SYMBOLS), WrapIDebugSymbols.class));
|
||||
|
||||
static DebugSymbolsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugSymbolsInternal.class, PREFFERED_SYMBOLS_IIDS,
|
||||
|
@ -69,6 +65,7 @@ public interface DebugSymbolsInternal extends DebugSymbols {
|
|||
|
||||
String getModuleName(DebugModuleName which, DebugModule module);
|
||||
|
||||
@Override
|
||||
DebugModuleInfo getModuleParameters(int count, int startIndex);
|
||||
|
||||
}
|
||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.sysobj;
|
|||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.sun.jna.Pointer;
|
||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||
|
||||
|
@ -46,19 +45,16 @@ public interface DebugSystemObjectsInternal extends DebugSystemObjects {
|
|||
return DbgEngUtil.lazyWeakCache(CACHE, sysobj, DebugSystemObjectsImpl4::new);
|
||||
}
|
||||
|
||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugSystemObjects>> PREFERRED_SYSTEM_OBJECTS_IIDS_BUILDER =
|
||||
ImmutableMap.builder();
|
||||
Map<REFIID, Class<? extends WrapIDebugSystemObjects>> PREFERRED_SYSTEM_OBJECTS_IIDS =
|
||||
PREFERRED_SYSTEM_OBJECTS_IIDS_BUILDER //
|
||||
.put(new REFIID(IDebugSystemObjects4.IID_IDEBUG_SYSTEM_OBJECTS4),
|
||||
WrapIDebugSystemObjects4.class) //
|
||||
.put(new REFIID(IDebugSystemObjects3.IID_IDEBUG_SYSTEM_OBJECTS3),
|
||||
WrapIDebugSystemObjects3.class) //
|
||||
.put(new REFIID(IDebugSystemObjects2.IID_IDEBUG_SYSTEM_OBJECTS2),
|
||||
WrapIDebugSystemObjects2.class) //
|
||||
.put(new REFIID(IDebugSystemObjects.IID_IDEBUG_SYSTEM_OBJECTS),
|
||||
WrapIDebugSystemObjects.class) //
|
||||
.build();
|
||||
Map.ofEntries(
|
||||
Map.entry(new REFIID(IDebugSystemObjects4.IID_IDEBUG_SYSTEM_OBJECTS4),
|
||||
WrapIDebugSystemObjects4.class),
|
||||
Map.entry(new REFIID(IDebugSystemObjects3.IID_IDEBUG_SYSTEM_OBJECTS3),
|
||||
WrapIDebugSystemObjects3.class),
|
||||
Map.entry(new REFIID(IDebugSystemObjects2.IID_IDEBUG_SYSTEM_OBJECTS2),
|
||||
WrapIDebugSystemObjects2.class),
|
||||
Map.entry(new REFIID(IDebugSystemObjects.IID_IDEBUG_SYSTEM_OBJECTS),
|
||||
WrapIDebugSystemObjects.class));
|
||||
|
||||
static DebugSystemObjectsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||
return DbgEngUtil.tryPreferredInterfaces(DebugSystemObjectsInternal.class,
|
||||
|
|
|
@ -26,6 +26,7 @@ import ghidra.dbg.target.TargetBreakpointSpec;
|
|||
import ghidra.dbg.target.schema.TargetAttributeType;
|
||||
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
||||
import ghidra.dbg.util.PathUtils;
|
||||
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||
import ghidra.util.datastruct.ListenerSet;
|
||||
|
||||
@TargetObjectSchemaInfo(
|
||||
|
@ -84,8 +85,9 @@ public class DbgModelTargetBreakpointSpecImpl extends DbgModelTargetObjectImpl
|
|||
private final ListenerSet<TargetBreakpointAction> actions =
|
||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||
// Use strong references on actions
|
||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
||||
// The values may be weak, but the keys, which are the same objects, are strong
|
||||
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||
return new LinkedHashMap<>();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue