From 563873482803b63b3f415aa4f77c001b5650e0ea Mon Sep 17 00:00:00 2001 From: Guus Waals <_@guusw.nl> Date: Mon, 9 Jun 2025 00:20:43 +0800 Subject: [PATCH] WIP Ghidra plugin --- .../SymbolRenameLoggerPlugin.class | Bin 7730 -> 13530 bytes .../SymbolRenameLoggerPlugin.java | 121 +++++++++++++----- 2 files changed, 90 insertions(+), 31 deletions(-) diff --git a/GhidraPlugin/bin/main/ghidraplugin/SymbolRenameLoggerPlugin.class b/GhidraPlugin/bin/main/ghidraplugin/SymbolRenameLoggerPlugin.class index 03c5934a883bca8c00e7debe3b76d2de0b6fa563..c08cd72af921ffebc8d71a93485399f3c31e0b1a 100644 GIT binary patch literal 13530 zcmbVT31C#!)jlVgnfEezY>7c4+fzUwi&3PY37|s=5Xgc_zyfZQ%#e&sX5!2w1&eFZ zYHh811+^}1Nf)(f+eq*)Y8TpS7hAQZw$*BDH``iUTk8+P|DAi^o0%jNz#s9w``)|f zo^#Ln&T{V^o;|#G9}xxeEQ9ixW_5N&LWy8cw6`-7t7_fa-5!s&gk!<(a6`PaGn`nX zJ{aU-ny$N61$%m`oc?PP@yfmVv*Dmkj-frL8y78;_+yeX3&Oa&D?cNo?49Qr+g~3$RLwxTtg%l zZtCrB4=37!?a?q(QA4~V7+n`kMC93d=}C1(l1#H5Ud|*&n{*8r33sOB77i3LA*TE} zbJvN0B^DJ?u}LQ~%^Z!7EhLd(G;(=3T&#@|0EmJtz zqG>d}kY>;(=qWFx&Zo7kdrDZpe#QsG1}6^F-8 zbd|4gS?|2BDWqDeGiVtcPvLUNSBsX@3P3j&-U8PcYCZ?M2GxHM=~}`a@kGd=)$oL2 za8#VvXw2)W=+1s9xY42}YKCs1&QLTwq!&{~TDPvLM;l8)vzE@YsD)Yqmabs3NzDyz zzkw+)+{bi=i<_fiJzLj+kT0R;^?``>>_F@nsr3_F+~t1EsX!a>tmYmua3mgsv!pN; z(bfePT}T%(O~Cis-b4amax{jB2p9}gyhhUS7$T6r#G)XzGnHlrYD)xTN%4z#tUe|I ztt>O(aD@%)3#^4`lR=0Cr;Y;WVH6g1N(31T_RGS_jzpwK_?i>}CfCM7aX)RQZi5i$ z$7h17jt&;Z2-5ixKoY5>L=&cxTtQ@mNtXc$8`m~1YrfDn3BktG5)Q>p>Xp|mb^7&3 zn2@oyLg^V!bz3^ZN+LKl1 zacOhI#VvJBfyO$7u~UY_d&IysqN2Mj`b<_t$xiVh8GnaGJ7xUw%hxv5w$(Q`U0k~| z(6pj%nGoM=(S1T(qQlYh-k5R-CnyN{{T4kSmE?eS9E&6Jf#LI%IpcpJm z;>Rp{Te7<$wdlzlyjxTnRkDB6qJ1Oil|4n< zPh0d%PI@VJQFt+Z+oJDCk7+~g(HiND1yj8VcbZHEVaco-s*`l*EMG(&kU*U!QRVv< z{Xk`iNV2ZGC$-h2=ivHnErF)ifP#bF+7@VO)28{6MOV^QNUw?iS%c1Ye4^T(Ju5leu3Vz;!IX{SE&->uXC;N%s}}v1UW1cC2&ICfWC@3|3Z|D4 z;7Xh6cNYDg-ar!E6i;*qQ%q;)2sRtDqK#8JTCCK>ay}oY;lvL z4yQ@A_;J=isxwl}oAft>{yMVE7>&fDztdYt7@`C<9uh(0h{8fs57)xnjl+XZ4la=C zZJKM)KM|vb#l9T9MX~Q#^l$nP6dS&*HyDLHLlT&)#SP*C|F!5n`d_9=Y4HW*SxHl+ zfMc_*$zc?e4k29IwpNRs!obylPK7O1eX=Lmp&n&+hb=n7kfsPytO-ipk?takmr*JY z$9(CoHHDl9MR9(5kz1A1-f04`X0OFQHc-qDQNWP$B8fhNAko#2Jy0bRvnXyK)96>8Hv{(W?KIEIo<0n|%|ri4$-IxgRX6KM*R zD97WgQaP$9AjrTxHaRIC@gz6-aQi?;24P87*h`m-H3rXtg=ntHXJYl@!smG6wHWq8 z7B7%^El{tEr4n1$#3Qkk$!EdG(qpyOuV@Oit!=5Zow~&y68Ec3t_JdK8`(twWAY;P zh$JMB2r0b8;&b?1rpc%~U6iFW>auVu7?F^4-Y6k*gg%Z_ZFAR|yp(B1dLoU@%j%cc z*DVvVhR(rclzZb4m$H$sfhO{5py`$c$fdiXDgzeNk0!6e7MWB%wp2~I^<{DcGLlkP zIsls7q~1YiS?|^$*W0$h#!iM)b}Fv?k!Em<#jV_?{i;E4*c>I%y83f^A||fm4;y^` zv9@uX{uZxiENCUPNVOI~R$e`drA8#PqgzUbt1<)T6f7%gEG#4%B#pAOJFCSL(-A-RK>d{C_H4ivK3wGw%y zY}EPWDvPh?Yk+Qyg5-`+jycyA2Y!uCnM$sa>BmZ8#L?GE{zHC#vy7xMFU{BeV? z$6%R-Zawxduy1Yg4SXYfw@+%}=1r2S>a#PI)2+tOH}R(o#!7N*W{k#Qs>|Y=`O^@o zJGcdjYEFIq+eqy@ja_tgZW?#Se)?NL zj7G6Fiyb9dEn&w+vbD*dN4S!aoX;?>`+cNnMdTA-8iTm2wBg`{>+uf3H~U=y45gmo z7#z_xgL)pdoEo8LBwMLO6qU(e1q_`Pka9?8{WE7)a_&$!lOpUfiyxO{D%Fm&s4@BL zut9narPi^dj$!fun7jE=O2|DH4@z0+Z3rx_YcTmqX-bHbkKeR-pZZwa5NK^R`DuKt zjRuoR`S>l1zbzjNWa-Q{BPbo!pf-&dX11X|Fot**u7XVFPbUR+W- z{m|kcsZI^ewSk6<*9Fk&C-4+?wqm=7E7J3)7XM6o`d2hGFLk@Vh)}#D8gCCqhxGlq z#lMigMnnD5mO#sTld%{z8Y1n9U}CGE3+QGE{;a4pFHI7pFw}>>l ziW_-OWjp;tkfb%QAs6&FnN@z3o$#iLJX~Feb z91wydjc{i?fel1oZM?fX9z*_2cEuCf8=Fiv`X_B&dD__Owl_I-r;Wvwpn&PJfURd? zr@BzmVWbH5_fZ<5H!3wWqS2#_V5=RFB`6F7NVsdoIZDkqAOF+j_pr(DY!ulNh{7>Z8n!+h6S)eG#B65~ zSZ%Y(2NhYorzZ?E9Y5LoIFw+JV_9vgT~QefZ)kd*tiWtUEjjsf4Ia{Ex$1=F^C?3+ zNnxXtPj){qlA!Jf_~0xVlW{?pbSrB+Lx2ogAHx~2idx~Mk%v>;SwE#~`u&;DmX{6EDS1>@K1g$z_EH65n^cXTuLPc`CRdJY1twMr@lL~N zr)LRor-iri{tR%M2M$onbO?ph#^J18uJg0FE>v7asIz2h*{tVdln+rM&NWY>voPA( z$HV$0Fs-HL_W5{Hd%rr^m8D^xls9HsG?R$QwA9^d|DAz)JAK;Tx__G&IkMH7~#XT z9{of)Cs5uIK*eJa8yLpGFgSqElLHY)dW7d=n(8dO+Y#t1RMN4DFewtk|NLYw8 zRqm%Ll|@|xbm*m=sbtDuwBuxSHq z+6a-FXficJ&^4er4-_q+X$94Xq4teg)2wl(>BUsEy~hK0m(xeVZ!)H_jjn(JWtvkc z|1gysG{Ybqr*1w1D`LK=pbUtF-q?_Krh7gp1jiFF-K!hRD$4iLwP_$~&(T0{htM4m zIHUx!HBnmc6X-fH7k{+qdb9-WIFr>(_#!+BlbwLU$DgK~8q3i5)LyzpajJNnZrueR z!@E2CX$v0jb{_BPrwATD>pVW#PaE*~dFQdepH}1X%g*B?{j>;=yPe0c^;0Dt2b{;j zewv2I|8X9l>Id``BUAW(D}%T`nhHrf0g?!nP!y`{M#PBGOzMGYE`#C|@U0X;-U~eT z(Nbu%p0;APm&175V6-c6zIr8HLRVvyYcRsK6sPUzc^wROJ-*z47EZ_T->2x4bO)|G z=&mfS?o4ZSCosGoIyC7v`Yw9rDdUc(fgpg1jnIFSh8#T#u_K^H>pAu0l{!0N}xV*HaF zj32;&4}$SSVEp<2Cu5w?X>{e?1c4C4c?=Bs(?(ogY=W=)G4)^cleg&QY7hL?UzvXN zmKFWl_f0ymKEKr4y53XjX1LB!cYDkAc`b!>F zo2BOZYHQzu!u$pPe!9BUD)G;&E+{P+q<^5|L>&9q4(co`Ef}D8tH+cT9rS8eV}unt zA!iRVQnbSjuh_%%IGekuNgl=`Jo1FY63Y?0kJ_hA1$FBb&z*EPb1fWa=jnEg7ufB|M`W3{RN02uj zMNoYNy&p$J`Wis|b%euj0K88C&Uu@eeyB{lU9LRF#S~f&rck)pd@?ZP$7cR1XyrqucX$RI$OFmV z;F)N7A=4u&+W8>W{XC0LMbz%3+jut5f#J8|NPaGtA)4M!7jQW!#z3;^T)~y#c$miW zXO(g7>M!pab|D0DKP-ek`|HT1Vi%V^mI9r9b1H`a8p*Hw``=8=i8dgR~X- zqkw!P`>NPF4zt18uLI2Skk7>2Ps{@5Gdy7jJyof0dn&}zo=UlTOFe^p1_0z$H=t-I zRl)r8T%@Yk3a(B|QOwT($?E_F*!8$gqtsVwsIl(ESPLB}fm4PK@6UGL`&!`MFsG+&@e^dd^9 zmk@IgAO-#sG4^G;2=@@Zf>`=0BJFPxQC|ZjU&q1q?-T%^#kt^%^k?+^3l1FLr2pW4 z2uFMqadId1-UTolOp%7+iD?)XrC~V6f#EcInCk!_4^qFC}z3FZ*c<2quA` zdBisrDG@*SQ$%>|r*;AHc~~(>u;jG}mflkDep(Icjhb5EePJ52c;B9Rk454j?8OMh@v-Y=m@)(WFZq zQ@Y8JZYrdk2I;0lI=uipnsky4bg`pq4M#fs&cl)JRR`}YmF{pkX38(-J~xu)$oUz4 zo}wc5Oh`Nnd1*FIHRoV?Rz~xXTLQSR;0mSNCCcAcrgghAt=rl(SeB%-T2(r$*-lmy z&6f&9a^@q-lhZXl+59fBlGyc+@X`>m@$T!0F}4>2-Q%3o1Q!=y7mUx$9w! zvvcG)_>9U;hLDyPx}UDnGM?qRWU^Ore}h-i zd%POuR|8MQeFn}fE4i5$@)`~xkY9rPCT_vLdn*p6+He}QmhZ*=A)Nd^j1$Ctyb;^Y z7w`exU%|=V>!5gx+m(Y{j`|*$bsdENq4FqpQ_zy!ng^-x;a%L1Ah;SwFJDB<1Btu% zOK5rVW6Cr6%V_yf*xkZk;fE2O@1yJa5wuLqxk|MRPNJp0^6NB46?=LKJdgZ~-lsE| z-^XiQx(vP(f8V2X57N@JP{q|yzEp8KK_e|}83UQ{>pRl>NPEFqwl0>a5QE){w|5|S zK22|nkx<%uV9!T2G_Y@h(%%g$m4m!HZPej`C5*tbi7f7<3EV}KZ~%DhF!PHoxmP|%5e`7bA zPwXNz_ev8>d^Deu<}<4K9ck`Y%^yhfIo15JG@n<^7o_=;Y982KF~BeH1|Pj>T7?xV z@m4bUqsZ>t;CWXdC0vPLxm<;RG;uXj!!^L)wMc3oLmjXkKgPd~>iBy6?ET}Y5^tb3 zz7Zbz32Y#JQfWmey-?b^A!SL~zr2utg<3=>y>Vp90-Fo``Van@4$ep%MI_Kk_Lrte z`6U}ve%VQsJ-sLRHvr|ULv|6>1{&W6bKOn_d{l|Z_>oZ<-NMIoNq zNmPIuk6k42e+?Y-;NZW*9b0Amd#L1%F#m!7$bU-mpZPCIev|*2$b?+9-}L sm$yMsfzI!O=)davzv_BOT@TAOkJL3!T|IeH$l@m^c}8AAULlqKAHxKc1poj5 delta 3369 zcmb7G3wTt;75*ptxOX=ul!V*G)VUtLB7}EtTn-EaCNoWF;fRb*KH3XLgvf-uB zEsBarp*R$bMINyw-~)LX2rW+)Td8fe)wWhzZKbWXrLFcsYY_jry8&tazP9-`bI;72 zGjksQIcMHzJ}}<-(nm*+1MrJU`<-^X(}}5=W8gO2E;s2V);fVK`HFQ=a`}=_OS=Pe z5j0Sb2HDTy^M?%FfhvLYdBK*(aHwYag8J5Qb*Lq{Ak?T>=NV{5gFwpU8I@(zZ>_4V zE4#&CIi-A(69RV{2+IwQ%;;RS7-&^|Mon!+X;q-kKWS2oXOV$6bwTPUFYq@u#*S|{ zuvm$?;$qe16;(51f=dl7`xMO#K0DhI?q#{NR${$Z)WwX=GLX{7?h6S&e)Fy}h-jy{);WNyq&H z)|SQLu#Pn{&lqK2Yv3WQlXXUkXFa~EVZ$}2#H0*t#KUsCQO-yRY%=gQY?ej#GW#P2 zI`F8xVE7$du}#Bc0@usbj0{~aL_!wklD?2wH~b&gJq(D1lGc6>jHXRXIK4eUaf zyqJ`0-(%njJSm5{W{Ice3RkY)iDwM#!+yEPRqDh+C4WdDH!iQqw_FZqB0AA+;4qHJ zoaCFGIErs;_?E!%I9IC8z%d+`Tarr#cH*RgQ_6V`IyL4W4bQ0~7iA2V=hAeGju&KV zN~Qy+@uGq6;JdOorD)t)ysY7Sgw$2jaW`UU^G<+wy6x z%`NQ$T1#l@RFsYj((CpP=)|85{6)zq9f-p=s-fcp8FuGK@i)d^aVu3F z^v*vFT*Pq!Tfkph9?=L< zx|x15xtKD6)`nm>Yi6*mSwTl}rWhhsaXP02s!ID<(*=^Jgj?(XjW@#(*C}2taBFF` zzq(cz1B%qFxxOvfwp>BuUP8Z}3C7jN=E%a<2s6qe1{-1!(seOJVCcrd0}h@W=oQI{ zjiE?GTeBHrf$37uoGzDVj+6JerwrFBW(tFCe#ia%IZkcI#+ed`7MrTr9@P z6C5Wu^@T4S&iL%2p!X`=uJmmJs^PcO3A$vXfw!yG*tzbyNkqs+`!HFEXYRDH- z^SC|&4tSA*d<;RMe0RwF)KTOajYN#WK-|dHVy@=MHCZz;C90UQ4%X6Bgr$Yw()@1BK8d*%1qblOT}bqD-q?jgPMhM>`CagEx*$GX*o9#LExta>rz>gWG zSXN9OxG1XrN--0)R92_@%h5n}M{_k1)?W12FxTZuXzN`!TGlwYY6HwN|&arq)KW2WyVtD@QQE+YRZn zyX|Li%x&+%76G5;))YezzMcS|?$&F4#_{4rOR=*HQMZxd9PM+s9X;47;I?+-8y&dA z>vnWww=c zjj8IgSbA{A(kIr1tkq7D;mkgA&-r46zVXM-^uiK0FC%OLYPelH(?%IPcys1d`R4htq5Z;zlYcl zPhlZm#v;7RQ-6*K&hz^omf!+qF5)hhkGn-8R+{l$%`wXO^aYqyEWkF_h#%p{jHZ(% zSewqqYu&sq^w7IQ4 zI8PAS%ny8$iJcX#`&-n2i)JW*(- zT3_mN_NOZ@xLT63>3QH`9w}L(qMMM)$I1X~#!zfwz1qwY)L~jRHg@Y3t0r8rsw8ez zDr>Jon1%8=Cc;$x1uqc27*A7Z2Oo5wV#msgxE;}J4SE0nHe@Tce2j){qaE9+#}3-D zlXmQ&9gqK4J6?;LY4*Pu!lzfWXwKGAfc3oop_rDYBnQ_TN{~E!_KfORSMhWdnmc2fG=NJv8@q}X|}YzD8Mr;2m5dn_Osa?V81xX+I0vOc$T%Rn{YeK%GP5#CDvPl7~R)gf@UPy z_%WNwd7LJyNG3z?MXH9Q4u@0y!72vHx5s2mkb!*ml6-Fu#wNgfSY&$Bg@;YzD$WL) zNpXVVImxPUijDd?w!i18@e6Xy*uwfO9-knFifn%KSwx0G6FDJ~D~5~fBO*_XhzPI9 ukB9 '%s' at address %s", + logWithContext(String.format("SYMBOL RENAMED: '%s' -> '%s' at address %s", oldName, newName, record.getStart())); // Try to get additional information about the symbol @@ -124,14 +183,14 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj for (Symbol symbol : symbols) { if (symbol.getName().equals(newName)) { String symbolType = getSymbolTypeDescription(symbol); - Msg.info(this, String.format(" Symbol type: %s, Namespace: %s", + logWithContext(String.format(" Symbol type: %s, Namespace: %s", symbolType, symbol.getParentNamespace().getName())); // If it's a function, log additional function details if (symbol.getSymbolType() == SymbolType.FUNCTION) { Function function = (Function) symbol.getObject(); if (function != null) { - Msg.info(this, String.format(" Function signature: %s", + logWithContext(String.format(" Function signature: %s", function.getPrototypeString(false, false))); } } @@ -155,7 +214,7 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj // Check for name changes if (!newFunc.getName().equals(oldFunc.getName())) { - Msg.info(this, String.format("FUNCTION RENAMED: '%s' -> '%s' at address %s", + logWithContext(String.format("FUNCTION RENAMED: '%s' -> '%s' at address %s", oldFunc.getName(), newFunc.getName(), newFunc.getEntryPoint())); } @@ -163,18 +222,18 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj String oldSignature = oldFunc.getPrototypeString(false, false); String newSignature = newFunc.getPrototypeString(false, false); if (!oldSignature.equals(newSignature)) { - Msg.info(this, String.format("FUNCTION SIGNATURE CHANGED at address %s:", newFunc.getEntryPoint())); - Msg.info(this, String.format(" Old: %s", oldSignature)); - Msg.info(this, String.format(" New: %s", newSignature)); + logWithContext(String.format("FUNCTION SIGNATURE CHANGED at address %s:", newFunc.getEntryPoint())); + logWithContext(String.format(" Old: %s", oldSignature)); + logWithContext(String.format(" New: %s", newSignature)); // Log specific changes logFunctionSignatureDetails(oldFunc, newFunc); } } else if (newValue instanceof Function) { Function function = (Function) newValue; - Msg.info(this, String.format("FUNCTION MODIFIED: %s at address %s", + logWithContext(String.format("FUNCTION MODIFIED: %s at address %s", function.getName(), function.getEntryPoint())); - Msg.info(this, String.format(" Signature: %s", function.getPrototypeString(false, false))); + logWithContext(String.format(" Signature: %s", function.getPrototypeString(false, false))); } } @@ -187,23 +246,23 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj Object newValue = record.getNewValue(); Object oldValue = record.getOldValue(); - Msg.info(this, String.format("DATA TYPE CHANGED at address %s", record.getStart())); + logWithContext(String.format("DATA TYPE CHANGED at address %s", record.getStart())); if (oldValue != null && newValue != null) { - Msg.info(this, String.format(" Old type: %s", oldValue.toString())); - Msg.info(this, String.format(" New type: %s", newValue.toString())); + logWithContext(String.format(" Old type: %s", oldValue.toString())); + logWithContext(String.format(" New type: %s", newValue.toString())); } else if (newValue != null) { - Msg.info(this, String.format(" Type set to: %s", newValue.toString())); + logWithContext(String.format(" Type set to: %s", newValue.toString())); } // Try to get more context about the data type change try { Program program = getCurrentProgram(); if (program != null && record.getStart() != null) { - ghidra.program.model.data.Data data = program.getListing().getDataAt(record.getStart()); + Data data = program.getListing().getDataAt(record.getStart()); if (data != null) { - Msg.info(this, String.format(" Data label: %s", data.getLabel())); - Msg.info(this, String.format(" Data type: %s", data.getDataType().getName())); + logWithContext(String.format(" Data label: %s", data.getLabel())); + logWithContext(String.format(" Data type: %s", data.getDataType().getName())); } } } catch (Exception e) { @@ -214,18 +273,18 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj private void handleDataTypeAdded(ProgramChangeRecord record) { Object newValue = record.getNewValue(); - Msg.info(this, String.format("DATA TYPE ADDED at address %s", record.getStart())); + logWithContext(String.format("DATA TYPE ADDED at address %s", record.getStart())); if (newValue != null) { - Msg.info(this, String.format(" Type: %s", newValue.toString())); + logWithContext(String.format(" Type: %s", newValue.toString())); } } private void handleDataTypeRemoved(ProgramChangeRecord record) { Object oldValue = record.getOldValue(); - Msg.info(this, String.format("DATA TYPE REMOVED at address %s", record.getStart())); + logWithContext(String.format("DATA TYPE REMOVED at address %s", record.getStart())); if (oldValue != null) { - Msg.info(this, String.format(" Removed type: %s", oldValue.toString())); + logWithContext(String.format(" Removed type: %s", oldValue.toString())); } } @@ -236,7 +295,7 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj String newName = (newValue != null) ? newValue.toString() : "null"; String oldName = (oldValue != null) ? oldValue.toString() : "null"; - Msg.info(this, String.format("DATA TYPE RENAMED: '%s' -> '%s' at address %s", + logWithContext(String.format("DATA TYPE RENAMED: '%s' -> '%s' at address %s", oldName, newName, record.getStart())); } @@ -244,7 +303,7 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj try { // Check return type changes if (!oldFunc.getReturnType().equals(newFunc.getReturnType())) { - Msg.info(this, String.format(" Return type changed: %s -> %s", + logWithContext(String.format(" Return type changed: %s -> %s", oldFunc.getReturnType().getName(), newFunc.getReturnType().getName())); } @@ -252,7 +311,7 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj int oldParamCount = oldFunc.getParameterCount(); int newParamCount = newFunc.getParameterCount(); if (oldParamCount != newParamCount) { - Msg.info(this, String.format(" Parameter count changed: %d -> %d", + logWithContext(String.format(" Parameter count changed: %d -> %d", oldParamCount, newParamCount)); } @@ -264,28 +323,28 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj ghidra.program.model.listing.Parameter newParam = newFunc.getParameter(i); if (!oldParam.getDataType().equals(newParam.getDataType())) { - Msg.info(this, String.format(" Parameter %d type changed: %s -> %s", + logWithContext(String.format(" Parameter %d type changed: %s -> %s", i, oldParam.getDataType().getName(), newParam.getDataType().getName())); } if (!oldParam.getName().equals(newParam.getName())) { - Msg.info(this, String.format(" Parameter %d name changed: %s -> %s", + logWithContext(String.format(" Parameter %d name changed: %s -> %s", i, oldParam.getName(), newParam.getName())); } } else if (i < newParamCount) { ghidra.program.model.listing.Parameter newParam = newFunc.getParameter(i); - Msg.info(this, String.format(" Parameter %d added: %s %s", + logWithContext(String.format(" Parameter %d added: %s %s", i, newParam.getDataType().getName(), newParam.getName())); } else { ghidra.program.model.listing.Parameter oldParam = oldFunc.getParameter(i); - Msg.info(this, String.format(" Parameter %d removed: %s %s", + logWithContext(String.format(" Parameter %d removed: %s %s", i, oldParam.getDataType().getName(), oldParam.getName())); } } // Check calling convention changes if (!oldFunc.getCallingConventionName().equals(newFunc.getCallingConventionName())) { - Msg.info(this, String.format(" Calling convention changed: %s -> %s", + logWithContext(String.format(" Calling convention changed: %s -> %s", oldFunc.getCallingConventionName(), newFunc.getCallingConventionName())); } @@ -299,7 +358,7 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj if (newValue instanceof Symbol) { Symbol symbol = (Symbol) newValue; String symbolType = getSymbolTypeDescription(symbol); - Msg.info(this, String.format("SYMBOL ADDED: '%s' (%s) at address %s", + logWithContext(String.format("SYMBOL ADDED: '%s' (%s) at address %s", symbol.getName(), symbolType, symbol.getAddress())); } } @@ -309,7 +368,7 @@ public class SymbolRenameLoggerPlugin extends ProgramPlugin implements DomainObj if (oldValue instanceof Symbol) { Symbol symbol = (Symbol) oldValue; String symbolType = getSymbolTypeDescription(symbol); - Msg.info(this, String.format("SYMBOL REMOVED: '%s' (%s) at address %s", + logWithContext(String.format("SYMBOL REMOVED: '%s' (%s) at address %s", symbol.getName(), symbolType, symbol.getAddress())); } }