Package ghidra.app.util.bin.format.dwarf
Class DWARFUtil
java.lang.Object
ghidra.app.util.bin.format.dwarf.DWARFUtil
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidappendComment(Program program, Address address, CommentType commentType, String prefix, String comment, String sep) static voidappendDescription(DataTypeComponent dtc, String description, String sep) Append a string to a description of a field in a structure.static voidappendDescription(DataType dt, String description, String sep) Append a string to aDataType's description.convertRegisterListToVarnodeStorage(List<Register> registers, int dataTypeSize) Try to find gnu mangled name nesting info in a DIE's children's linkage strings.static StringCreates a name for anon types based on their position in their parent's childList.static StringCreates a name for anon types based on the names of sibling entries that are using the anon type.static CodeUnitgetCodeUnitForComment(Program program, Address address) static ResourceFileReturns the base directory of a language definition.static ResourceFilegetLanguageExternalFile(Language lang, String name) Returns a file that has been referenced in the specifiedlanguage'sldefs description via astatic StringgetLanguageExternalNameValue(Language lang, String name) Returns a value specified in aLanguagedefinition via astatic FieldgetStaticFinalFieldWithValue(Class<?> clazz, long value) Searches a Class for a final static variable that has a specific numeric value.static StringCreates a fingerprint of the layout of an (anonymous) structure using its size, number of members, and the hashcode of the member field names.static StringgetTemplateBaseName(String name) Determines if a name is a C++ style templated name.static booleanisEmptyArray(DataType dt) static booleanstatic booleanisPointerTo(DIEAggregate targetDIEA, DIEAggregate testDIEA) static booleanisStackVarnode(Varnode varnode) static booleanisThisParam(DIEAggregate paramDIEA) static booleanstatic booleanstatic voidpackCompositeIfPossible(Composite original, DataTypeManager dtm) A lightweight attempt to get nesting (ie.static StringConverts a integer value to its corresponding symbolic name from the set of "public static final" member variables in a class.static StringReturns the field name of a final static variable in classclazzwhich holds a specific value.
-
Constructor Details
-
DWARFUtil
public DWARFUtil()
-
-
Method Details
-
toString
Converts a integer value to its corresponding symbolic name from the set of "public static final" member variables in a class.This is a bit of a hack and probably originated from pre-java Enum days.
- Parameters:
clazz- TheClassto search for the matching static value.value- the integer value to search for- Returns:
- the String name of the matching field.
-
toString
Returns the field name of a final static variable in classclazzwhich holds a specific value.Can be thought of as an enum numeric value to do a name lookup.
- Parameters:
clazz-value-- Returns:
-
getStaticFinalFieldWithValue
Searches a Class for a final static variable that has a specific numeric value.- Parameters:
clazz- Class to search.value- numeric value to search for- Returns:
- Java reflection
Fieldthat has the specified value or null
-
parseMangledNestings
A lightweight attempt to get nesting (ie. namespaces and such) information from gnu mangled name strings.For example, "_ZN19class1_inline_funcs3fooEv" -> [19 chars]'class1_inline_funcs', [3 chars]'foo'
- Parameters:
s-- Returns:
-
findLinkageNameInChildren
Try to find gnu mangled name nesting info in a DIE's children's linkage strings.- Parameters:
die-- Returns:
- a list of string of nesting names, ending with what should be the DIE parameter's name.
-
getTemplateBaseName
Determines if a name is a C++ style templated name. If so, returns just the base portion of the name. The name must have a start and end angle bracket: '<' and '>'.operator<() and operator<<() are handled so their angle brackets don't trigger the template start/end angle bracket incorrectly.
- Parameters:
name- symbol name with C++ template portions- Returns:
- base portion of the symbol name without template portion
-
getAnonNameForMeFromParentContext
Creates a name for anon types based on their position in their parent's childList.- Parameters:
diea- the die aggregate.- Returns:
- the anonymous name of the die aggregate.
-
getAnonNameForMeFromParentContext2
Creates a name for anon types based on the names of sibling entries that are using the anon type.Example: "anon_struct_for_field1_field2"
Falls back to
getAnonNameForMeFromParentContext(DIEAggregate)if no siblings found.- Parameters:
diea- the die aggregate.- Returns:
- the anonymous name of the die aggregate.
-
getStructLayoutFingerprint
Creates a fingerprint of the layout of an (anonymous) structure using its size, number of members, and the hashcode of the member field names.- Parameters:
diea- struct/union/class- Returns:
- formatted string, example "80_5_73dc6de9" (80 bytes, 5 fields, hex hash of field names)
-
appendDescription
Append a string to aDataType's description.- Parameters:
dt-DataTypedescription- string to append, if null or empty nothing happens.sep- characters to place after previous description to separate it from the new portion.
-
appendDescription
Append a string to a description of a field in a structure.- Parameters:
dtc- thefieldin a structdescription- string to append, if null or empty nothing happens.sep- characters to place after previous description to separate it from the new portion.
-
appendComment
-
getCodeUnitForComment
-
isThisParam
-
isPointerTo
-
isPointerDataType
-
getLanguageExternalFile
Returns a file that has been referenced in the specifiedlanguage'sldefs description via a<external_name tool="name" name="value"/>
entry.- Parameters:
lang-Languageto queryname- name of the option in the ldefs file- Returns:
- file pointed to by the specified external_name tool entry
- Throws:
IOException- if not a sleigh lang
-
getLanguageDefinitionDirectory
Returns the base directory of a language definition.- Parameters:
lang-Languageto get base definition directory- Returns:
- base directory for language definition files
- Throws:
IOException- if not a sleigh lang
-
getLanguageExternalNameValue
Returns a value specified in aLanguagedefinition via a<external_name tool="name" name="value"/>
entry.- Parameters:
lang-Languageto queryname- name of the value- Returns:
- String value
- Throws:
IOException
-
packCompositeIfPossible
-
convertRegisterListToVarnodeStorage
-
isEmptyArray
-
isZeroByteDataType
-
isVoid
-
isStackVarnode
-