From dd4fddda9689343f34b9d21677510598b23bf5c7 Mon Sep 17 00:00:00 2001 From: dragonmacher <48328597+dragonmacher@users.noreply.github.com> Date: Thu, 7 May 2026 15:57:58 -0400 Subject: [PATCH] GP-6790 - Function Signature Editor - Added support for changing the namespace --- .../help/topics/FunctionPlugin/Variables.htm | 4 + .../FunctionPlugin/images/FunctionEditor.png | Bin 38281 -> 28405 bytes .../core/function/editor/FunctionData.java | 24 +- .../function/editor/FunctionDataView.java | 15 +- .../function/editor/FunctionEditorDialog.java | 236 ++++++++++++++++-- .../function/editor/FunctionEditorModel.java | 63 ++++- .../java/ghidra/app/util/AddEditDialog.java | 34 ++- .../java/ghidra/app/util/NamespaceCache.java | 3 + .../app/util/NamespaceChooserDialog.java | 12 +- .../util/parser/FunctionSignatureParser.java | 36 ++- .../editor/FunctionEditorDialogTest.java | 198 ++++++++++++++- .../parser/FunctionSignatureParserTest.java | 1 + .../editor/FunctionEditorModelTest.java | 7 +- .../actions/SpecifyCPrototypeAction.java | 14 +- .../java/functioncalls/graph/FcgLevel.java | 4 +- .../graph/job/BowTieExpandVerticesJob.java | 2 +- .../job/FcgExpandingVertexCollection.java | 6 +- .../widgets/combobox/GhidraComboBox.java | 6 + .../model/address/GlobalNamespace.java | 9 +- .../screenshot/LabelMgrPluginScreenShots.java | 2 +- 20 files changed, 601 insertions(+), 75 deletions(-) diff --git a/Ghidra/Features/Base/src/main/help/help/topics/FunctionPlugin/Variables.htm b/Ghidra/Features/Base/src/main/help/help/topics/FunctionPlugin/Variables.htm index 5b3c50ee17..0ed73247cc 100644 --- a/Ghidra/Features/Base/src/main/help/help/topics/FunctionPlugin/Variables.htm +++ b/Ghidra/Features/Base/src/main/help/help/topics/FunctionPlugin/Variables.htm @@ -327,6 +327,10 @@
This text field can be used to change the name of the function.
+This combo box and browse button can be use to change the function namespace.
+This field is a combobox that allows you to choose a calling convention from the list of
diff --git a/Ghidra/Features/Base/src/main/help/help/topics/FunctionPlugin/images/FunctionEditor.png b/Ghidra/Features/Base/src/main/help/help/topics/FunctionPlugin/images/FunctionEditor.png
index 9913c311e2f2addbb9c0d833c6a8575b6deabb46..b2edbda95986f99e8d7feeb66aa40345d9e4bac0 100644
GIT binary patch
literal 28405
zcmeFZWl)`6(=M0<0tB*g-2^ANd(hwncMYx^C&3Al;0__U6WjyAf(3WoxVyW{2F^|L
zJm>wsGgEb{PEF1HnIBNax|j5_?yIlvMX;j0BnTOd{N%|K&^swH $
zRtxR3@N# Y^iCpy=$x+d5LP{&9O{%S#IjCDV_V;^j=Xjp5iHkc{b
zF5<}zo$P=+S+?IUNer}h0^r=qo$wrc_lTsdLG?*7dHml?kjHtw9~=`&y(73_SC+cV
z7Ll;{?uDS(AVu7-IFT^CLxHpQxFs%Go8?dR=Y+5ek37R2!=L})Sq{*ca}O6NwF+i9
zK6gBNpmQcjr0WJ)rik%v (ZL3j2rZJB8^7}Er-dkHr&6ZmY&u3UB|
zJN;|1ckx-_=eeT7YjGHnj`QX944Q2RbCn~r0&6b?YV4W)eQt`oOGs<)Lh`ls12csQ
zFT5-|)|FV5H#(*-i}e&ADQ^sv7m|$ZKR;lHHq-7phH(
zB;0D*xY^5z?!5G0wbe)#SkbaC4$@v7$&V*R>Kw?UPJTGNJfo7^&)d7QZFi6EVgUh+
z&_P**5eC#JHy8n#Y-ek`mdn6(L;!U7eh6V4Z+tDiC!bo@K)tzulS$^i#`LV#T6?42
zu`ouJT%#?Y5N|=Va<{L7Y;ve%#cDo#ac&w%WV7?_o$z6^@VY1Bc0t}iXHA;aHkxJn
zFNuQDS?Aq6O=KsJyPHj>6J}-e69+7}ndX~2_E-JFr;^MMg(Z`5XO^PECOmKUP18ch
zP4$A3&9b+w;^}t~QOU+ot#};IHQF>QoPdQ+p>IVnNRHNXQ&*y0&s%Sg^>g*Zz>8#&
z7Yv4D3f)c0@0R3q#$RuOm!znBJ(a!EM(&I*9)L0^M%Xs9ZbtE?7miTEi`taM&1CH-
zqZ*pE(aj-81b;Q1!<)~jB_u1$-?Vg>9GvN34$wTCg8mjhWe?g?(@%xiA)|jT3q|As
zx&eM1|0rpg4W+U`{!Vahtnf;C_w*CFx!NZg{o!Fd1g0S=oi_R~<@ZC0x9OVxy-TXy
zwn}I@@+Q?Whgce}$4-RDItrg<6vff6&c&5e7d>(6Or@`Q4Uv{G&%~9VRyjQog8c*H
z_3mh7gR^dgU!l9AGzKxjlfC*iF?sy<&N+3W;6x|-6|Z`Y=XL${$V51&{rM_Z)sh}iYfEMH+?@lUE&5rex_zYz#T>q%WcLaVxRY3)9()SLkUj%j(PC;gg!^tJs_qE&5
zfYw8#(v=_=
-~8o`)j*raa_bKaKZRrv6N}&JxjOPe
zi!-3s$PO59ktfE=W+n|gNz3|ZtRv^`{?ckk?=KfWQ|TdR`A-nC9_A>^#|gI3fKTH;
zsl6@t_fNC+Z`?O_RPISi0b&@Vs6>3Rsdf#+
z-?!7j4?lZX&>UDzte>6Fo_7@og*RfW`e_w$rP${fPN|-R6O)b`06ZtbB5cvZ+2k{D
zH(6^y=o(;_>+}9m-NuY$*-8LtZ6aU3L0)eh6&23Nb#oje
s{*L$-jQ%L{yC3PQA3PXvU-_ZWU)V_ql`Vfy*r=KbxA`mv?t|W~$
zyW;M1t<9)iAv@5iPqP-R6y;A8#nFuG5gF-mE>pfA0b6}bx+hE)o0e-baC!7VmQU7K
z%_v0JIag+MT8OD&x;8Ute^4jlYjL}yygQqy2n&g8X8IC$GD>FbwOJp1863_ry6o+7
zwSKkaG7`nZP+zy(<~ylQw9@J+{Zv08HS!RnDtQyKagfHJ!_VrNF+iKCP9=tKw#W0<
z-V0rc41y$*agGrZt}bPVT3;X{UK