Package ghidra.program.database.symbol
Class CodeSymbol
java.lang.Object
ghidra.program.database.DatabaseObject
ghidra.program.database.symbol.SymbolDB
ghidra.program.database.symbol.MemorySymbol
ghidra.program.database.symbol.CodeSymbol
- All Implemented Interfaces:
Symbol
Symbols that represent "labels" or external data locations
-
Field Summary
Fields inherited from class ghidra.program.database.symbol.SymbolDB
address, lock, record, symbolMgrFields inherited from class ghidra.program.database.DatabaseObject
key -
Constructor Summary
ConstructorsConstructorDescriptionCodeSymbol(SymbolManager mgr, DBObjectCache<SymbolDB> cache, Address addr, long key) Constructs a new CodeSymbol for a default/dynamic label.CodeSymbol(SymbolManager mgr, DBObjectCache<SymbolDB> cache, Address addr, DBRecord record) Constructs a new CodeSymbol -
Method Summary
Modifier and TypeMethodDescriptionbooleandelete()Delete the symbol and its associated resources.booleandelete(boolean keepReferences) Delete code/label symbolprotected StringThe code for creating the name content for this symbol.Returns a program location for this symbol; may be null.Returns this symbol's typebooleanbooleanisValidParent(Namespace parent) Determines if the given parent is valid for this Symbol.protected booleanTells the object to refresh its state from the database using the specified record if not null.booleanSets this symbol to be primary.protected SourceTypevalidateNameSource(String newName, SourceType source) Allow symbol implementations to validate the source when setting the name of this symbolMethods inherited from class ghidra.program.database.symbol.MemorySymbol
getExternalOriginalImportedName, getExternalProgramAddress, getReferenceCount, getReferences, hasReferences, isExternal, isExternalEntryPoint, isPinned, moveLowLevel, setExternalOriginalImportedName, setExternalProgramAddress, setPinnedMethods inherited from class ghidra.program.database.symbol.SymbolDB
checkDeleted, doCheckIsPrimary, doGetParentNamespace, doSetNameAndNamespace, doSetPrimary, equals, getAddress, getDataTypeId, getID, getName, getName, getParentNamespace, getParentSymbol, getPath, getProgram, getSource, getSymbolsDynamicallyRenamedByMyRename, hashCode, isDeleted, isDeleting, isDescendant, isDynamic, isGlobal, refresh, setAddress, setDataTypeId, setName, setNameAndNamespace, setNamespace, setSource, setSourceFlagBits, toString, updateRecordMethods inherited from class ghidra.program.database.DatabaseObject
checkIsValid, checkIsValid, getKey, isDeleted, isInvalid, keyChanged, setDeleted, setInvalid, validateMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface ghidra.program.model.symbol.Symbol
getReferences
-
Constructor Details
-
CodeSymbol
Constructs a new CodeSymbol- Parameters:
mgr- the symbol managercache- symbol object cacheaddr- the address associated with the symbolrecord- the record for this symbol
-
CodeSymbol
Constructs a new CodeSymbol for a default/dynamic label.- Parameters:
mgr- the symbol managercache- symbol object cacheaddr- the address associated with the symbolkey- this must be the absolute encoding of addr
-
-
Method Details
-
getSymbolType
Description copied from interface:SymbolReturns this symbol's type- Returns:
- symbol type
-
refresh
Description copied from class:DatabaseObjectTells the object to refresh its state from the database using the specified record if not null. NOTE: The default implementation ignores the record and invokes refresh(). Implementations of this method must take care if multiple database tables are used since the record supplied could correspond to another object. In some cases it may be best not to override this method or ignore the record provided.- Overrides:
refreshin classSymbolDB- Parameters:
rec- valid record associated with object's key (optional, may be null to force record lookup or other refresh technique)- Returns:
- true if the object was able to refresh itself. Return false if record is null and object was deleted. Objects that extend this class must implement a refresh method. If an object can never refresh itself, then it should always return false.
-
delete
public boolean delete()Description copied from interface:SymbolDelete the symbol and its associated resources. Any references symbol associations will be discarded. -
delete
public boolean delete(boolean keepReferences) Delete code/label symbol- Parameters:
keepReferences- if false all references to this symbols address will be removed, otherwise associated references will simply be disassociated following symbol removal (seeSymbolManager.doRemoveSymbol(SymbolDB).- Returns:
- true if symbol successfully removed
-
getObject
- Returns:
- object associated with this symbol or null if symbol has been deleted
-
isPrimary
public boolean isPrimary() -
setPrimary
public boolean setPrimary()Description copied from interface:SymbolSets this symbol to be primary. All other symbols at the same address will be set to !primary. Only applies to non-function symbols.- Specified by:
setPrimaryin interfaceSymbol- Overrides:
setPrimaryin classSymbolDB- Returns:
- returns true if the symbol was not primary and now it is, otherwise false
- See Also:
-
getProgramLocation
Description copied from interface:SymbolReturns a program location for this symbol; may be null. This allows implementations to return a more specific program location than what is typically used by the system.- Returns:
- the location
-
isValidParent
Description copied from interface:SymbolDetermines if the given parent is valid for this Symbol. Specified namespace must belong to the same symbol table as this symbol.- Specified by:
isValidParentin interfaceSymbol- Overrides:
isValidParentin classSymbolDB- Parameters:
parent- prospective parent namespace for this symbol- Returns:
- true if parent is valid
-
doGetName
Description copied from class:SymbolDBThe code for creating the name content for this symbol. This code will be called with the symbol's lock. -
validateNameSource
Description copied from class:SymbolDBAllow symbol implementations to validate the source when setting the name of this symbol- Overrides:
validateNameSourcein classSymbolDB- Parameters:
newName- the new namesource- the source type- Returns:
- the validated source type
-