From 9e638e0ec215314980e833e18b193c32d3f374c7 Mon Sep 17 00:00:00 2001 From: KeybadeBlox Date: Mon, 29 Dec 2025 09:43:59 -0500 Subject: [PATCH] Add note to avoid symbol conflicts when delinking --- contributing.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/contributing.md b/contributing.md index 1ae218f..3257217 100644 --- a/contributing.md +++ b/contributing.md @@ -201,14 +201,20 @@ regenerating the table, however, make sure that you have all of it symbols already in your project so that you don't end up deleting any. One option is to import `symboltable.tsv` into your project with the `ImportSymbolsScript.py` script as mentioned under "Creating a JSRF Ghidra Project," but be aware that -this will overwrite any names you've assigned to the same symbols. +this will overwrite any names you've assigned to the same symbols. You will +also have to ensure that no two symbols share the same name. This can be +avoided by using namespaces if need be (i.e. `X::symbol` and `Y::symbol` may +coexist), but function overloading must be avoided (you may not have one +function with the signature `void X::f(int)` and another with the signature +`void X::f(float)`), else errors can arise when delinking, as the delinker +extension does not mangle symbol names. Once you're ready to export your symbols, open the symbol table (`Window > Symbol Table`). Open the symbol filter window (cog button near the top right), and uncheck everything but "User Defined" under "Symbol Source," "Data Labels" and "Function Labels" under "Symbol Types," "Use Advanced Filters," and "Non-Externals" under "Non-Externals." This ensures that you -only export symbols that you've defined and are useful for delinking. +only export symbols that you've defined and that are useful for delinking. Now we need to configure the columns that we want to export. Right-click on one of the colum headers, click "Add/Remove Columns..." to open the "Select