mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2024-10-23 05:31:02 +00:00
GP-0 - PDB rename MS PointerMode
This commit is contained in:
parent
a348f2d5df
commit
774d6058bb
|
@ -73,7 +73,7 @@ public abstract class AbstractPointerMsType extends AbstractMsType {
|
|||
|
||||
}
|
||||
|
||||
public enum PointerMode {
|
||||
public enum MsPointerMode {
|
||||
|
||||
INVALID("", -1), // Our default
|
||||
POINTER("*", 0), // Normal
|
||||
|
@ -83,9 +83,9 @@ public abstract class AbstractPointerMsType extends AbstractMsType {
|
|||
RVALUE_REFERENCE("&&", 4),
|
||||
RESERVED("", 5);
|
||||
|
||||
private static final Map<Integer, PointerMode> BY_VALUE = new HashMap<>();
|
||||
private static final Map<Integer, MsPointerMode> BY_VALUE = new HashMap<>();
|
||||
static {
|
||||
for (PointerMode val : values()) {
|
||||
for (MsPointerMode val : values()) {
|
||||
BY_VALUE.put(val.value, val);
|
||||
}
|
||||
}
|
||||
|
@ -106,11 +106,11 @@ public abstract class AbstractPointerMsType extends AbstractMsType {
|
|||
return label;
|
||||
}
|
||||
|
||||
public static PointerMode fromValue(int val) {
|
||||
public static MsPointerMode fromValue(int val) {
|
||||
return BY_VALUE.getOrDefault(val, INVALID);
|
||||
}
|
||||
|
||||
private PointerMode(String label, int value) {
|
||||
private MsPointerMode(String label, int value) {
|
||||
this.label = label;
|
||||
this.value = value;
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ public abstract class AbstractPointerMsType extends AbstractMsType {
|
|||
//==============================================================================================
|
||||
protected RecordNumber underlyingRecordNumber;
|
||||
protected PointerType pointerType;
|
||||
protected PointerMode pointerMode;
|
||||
protected MsPointerMode pointerMode;
|
||||
protected boolean isFlat; // 0:32 pointer
|
||||
protected boolean isVolatile;
|
||||
protected boolean isConst;
|
||||
|
@ -191,8 +191,8 @@ public abstract class AbstractPointerMsType extends AbstractMsType {
|
|||
public void parseExtendedPointerInfo(PdbByteReader reader, int intSize,
|
||||
StringParseType stringType) throws PdbException {
|
||||
|
||||
if (pointerMode == PointerMode.MEMBER_DATA_POINTER ||
|
||||
pointerMode == PointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
if (pointerMode == MsPointerMode.MEMBER_DATA_POINTER ||
|
||||
pointerMode == MsPointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
memberPointerContainingClassRecordNumber =
|
||||
RecordNumber.parse(pdb, reader, RecordCategory.TYPE, intSize);
|
||||
memberPointerType = MemberPointerType.fromValue(reader.parseUnsignedShortVal());
|
||||
|
@ -265,10 +265,10 @@ public abstract class AbstractPointerMsType extends AbstractMsType {
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns {@link PointerMode} attribute.
|
||||
* @return {@link PointerMode} attribute.
|
||||
* Returns {@link MsPointerMode} attribute.
|
||||
* @return {@link MsPointerMode} attribute.
|
||||
*/
|
||||
public PointerMode getPointerMode() {
|
||||
public MsPointerMode getPointerMode() {
|
||||
return pointerMode;
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ public class Pointer16MsType extends AbstractPointerMsType {
|
|||
int attributes2 = reader.parseUnsignedByteVal();
|
||||
pointerType = PointerType.fromValue(attributes1 & 0x001f);
|
||||
attributes1 >>= 5;
|
||||
pointerMode = PointerMode.fromValue(attributes1 & 0x0007);
|
||||
pointerMode = MsPointerMode.fromValue(attributes1 & 0x0007);
|
||||
|
||||
isFlat = ((attributes2 & 0x0001) == 0x0001);
|
||||
attributes2 >>= 1;
|
||||
|
|
|
@ -101,7 +101,7 @@ public class PointerMsType extends AbstractPointerMsType {
|
|||
long attributes = reader.parseUnsignedIntVal();
|
||||
pointerType = PointerType.fromValue((int) (attributes & 0x001f));
|
||||
attributes >>= 5;
|
||||
pointerMode = PointerMode.fromValue((int) (attributes & 0x0007));
|
||||
pointerMode = MsPointerMode.fromValue((int) (attributes & 0x0007));
|
||||
attributes >>= 3;
|
||||
|
||||
isFlat = ((attributes & 0x0001) == 0x0001);
|
||||
|
|
|
@ -19,7 +19,7 @@ import ghidra.app.util.SymbolPath;
|
|||
import ghidra.app.util.bin.format.pdb2.pdbreader.PdbException;
|
||||
import ghidra.app.util.bin.format.pdb2.pdbreader.RecordNumber;
|
||||
import ghidra.app.util.bin.format.pdb2.pdbreader.type.*;
|
||||
import ghidra.app.util.bin.format.pdb2.pdbreader.type.AbstractPointerMsType.PointerMode;
|
||||
import ghidra.app.util.bin.format.pdb2.pdbreader.type.AbstractPointerMsType.MsPointerMode;
|
||||
import ghidra.program.model.data.*;
|
||||
import ghidra.util.exception.CancelledException;
|
||||
|
||||
|
@ -52,8 +52,8 @@ public class PointerTypeApplier extends MsTypeApplier {
|
|||
*/
|
||||
String getPointerCommentField(AbstractPointerMsType type, FixupContext fixupContext)
|
||||
throws CancelledException, PdbException {
|
||||
AbstractPointerMsType.PointerMode pointerMode = type.getPointerMode();
|
||||
if (pointerMode == AbstractPointerMsType.PointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
AbstractPointerMsType.MsPointerMode pointerMode = type.getPointerMode();
|
||||
if (pointerMode == AbstractPointerMsType.MsPointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
// We are no longer able to get underlying type in time due to cycle breaks unless
|
||||
// we start doing fixups on pmf/pdm pointers.
|
||||
// TODO: consider fixups on these later... maybe after we understand contents of
|
||||
|
@ -63,7 +63,7 @@ public class PointerTypeApplier extends MsTypeApplier {
|
|||
//return "\"::*\" (pmf) to type: " + underlyingType;
|
||||
return "\"::*\" (pmf)";
|
||||
}
|
||||
else if (pointerMode == AbstractPointerMsType.PointerMode.MEMBER_DATA_POINTER) {
|
||||
else if (pointerMode == AbstractPointerMsType.MsPointerMode.MEMBER_DATA_POINTER) {
|
||||
// We are no longer able to get underlying type in time due to cycle breaks unless
|
||||
// we start doing fixups on pmf/pdm pointers.
|
||||
// TODO: consider fixups on these later... maybe after we understand contents of
|
||||
|
@ -109,9 +109,9 @@ public class PointerTypeApplier extends MsTypeApplier {
|
|||
private DataType applyAbstractPointerMsType(AbstractPointerMsType type,
|
||||
FixupContext fixupContext) throws CancelledException, PdbException {
|
||||
|
||||
AbstractPointerMsType.PointerMode pointerMode = type.getPointerMode();
|
||||
if (pointerMode == AbstractPointerMsType.PointerMode.MEMBER_DATA_POINTER ||
|
||||
pointerMode == AbstractPointerMsType.PointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
AbstractPointerMsType.MsPointerMode pointerMode = type.getPointerMode();
|
||||
if (pointerMode == AbstractPointerMsType.MsPointerMode.MEMBER_DATA_POINTER ||
|
||||
pointerMode == AbstractPointerMsType.MsPointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
return processMemberPointer(type, fixupContext);
|
||||
}
|
||||
return processPointer(type, fixupContext);
|
||||
|
@ -125,8 +125,8 @@ public class PointerTypeApplier extends MsTypeApplier {
|
|||
int size = type.getSize().intValueExact();
|
||||
|
||||
String name;
|
||||
AbstractPointerMsType.PointerMode pointerMode = type.getPointerMode();
|
||||
if (pointerMode == AbstractPointerMsType.PointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
AbstractPointerMsType.MsPointerMode pointerMode = type.getPointerMode();
|
||||
if (pointerMode == AbstractPointerMsType.MsPointerMode.MEMBER_FUNCTION_POINTER) {
|
||||
name = String.format("pmf_%08x", type.toString().hashCode());
|
||||
}
|
||||
else {
|
||||
|
@ -175,7 +175,7 @@ public class PointerTypeApplier extends MsTypeApplier {
|
|||
int size = type.getSize().intValueExact();
|
||||
AbstractMsType under = applicator.getPdb().getTypeRecord(type.getUnderlyingRecordNumber());
|
||||
CategoryPath categoryPath = applicator.getAnonymousTypesCategory();
|
||||
PointerMode mode = type.getPointerMode();
|
||||
MsPointerMode mode = type.getPointerMode();
|
||||
AbstractPointerMsType.PointerType pt = type.getPointerType();
|
||||
String name =
|
||||
String.format("StubPtr%d_%s%s_To_%s", 8 * size, pt.toString(), mode.toString(),
|
||||
|
|
Loading…
Reference in New Issue
Block a user