From 0ee44c9f6abab141d8095dd5417deb4da075d770 Mon Sep 17 00:00:00 2001 From: cyrozap Date: Wed, 25 May 2022 19:20:55 -0500 Subject: [PATCH] Make it possible to import symbols into arbitrary memory regions Before this change, ImportSymbolsScript.py was limited to importing symbols into the default memory region. With this change, arbitrary memory regions can be specified along with the address, making it possible for symbols to be imported into non-default memory regions. This functionality is backwards-compatible with existing symbol list files. --- .../Python/ghidra_scripts/ImportSymbolsScript.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Ghidra/Features/Python/ghidra_scripts/ImportSymbolsScript.py b/Ghidra/Features/Python/ghidra_scripts/ImportSymbolsScript.py index b0a05f4e62..20802dcbeb 100644 --- a/Ghidra/Features/Python/ghidra_scripts/ImportSymbolsScript.py +++ b/Ghidra/Features/Python/ghidra_scripts/ImportSymbolsScript.py @@ -13,7 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. ## -# Imports a file with lines in the form "symbolName 0xADDRESS function_or_label" where "f" indicates a function and "l" a label +# Imports a text file containing symbol definitions, with a maximum of one symbol defined per line. Each symbol definition is in the form of "symbol_name address function_or_label", where "symbol_name" is the name of the symbol, "address" is the address of the symbol in one of the forms listed below, and "function_or_label" is either "f" or "l", with "f" indicating that a function is to be created and "l" indicating that a label is to be created. +# Address formats are the same as those that can be used with the "Go to address" function. For example: +# - 1234abcd +# - 0x1234abcd +# - ADDRESS_SPACE:1234abcd +# - ADDRESS_SPACE:0x1234abcd +# - MEMORY_REGION:1234abcd +# - MEMORY_REGION:0x1234abcd +# Omitting the address space or memory region specifier from the address will result in the function or label being created in the default address space. # @author unkown; edited by matedealer # @category Data # @@ -29,7 +37,7 @@ for line in file(f.absolutePath): # note, cannot use open(), since that is in G pieces = line.split() name = pieces[0] - address = toAddr(long(pieces[1], 16)) + address = toAddr(pieces[1]) try: function_or_label = pieces[2]