Merge remote-tracking branch 'origin/Ghidra_12.0'

This commit is contained in:
ghidra1
2025-12-03 13:15:10 -05:00
3 changed files with 43 additions and 2 deletions

View File

@@ -1,3 +1,18 @@
# Ghidra 11.4.3 Change History (December 2025)
### Improvements
* _Analysis_. Added the ability to restrict function start pattern matches per named section and added a pattern for thunks in the `.plt` so that they are marked up very early. (GP-5526)
* _Analysis_. Added several known PE-related, non-returning, named functions. (GP-5985)
* _Decompiler_. Restored the Decompiler's middle-mouse highlight functionality for if/else keywords. (GP-5951, Issue #8419)
* _Multi-User_. Updated `ghidraSvr` script and `server.conf` with improvements to restrict service wrapper memory consumption. (GP-6067)
* _Processors_. Added support for x86 SSE4a instructions. (GP-5906, Issue #8335)
### Bugs
* _Exporter_. Fixed missing reference type in the ASCII and HTML exporters. (GP-5957, Issue #8468)
* _PDB_. Fixed a `NullPointerException` that occurred during PDB load/analysis that was caused by a function null container class. (GP-6100, Issue #8596)
* _ProgramDB_. Corrected dynamic label bug which produced a stack overflow exception when a pointer reference loop existed. (GP-5995, Issue #8510)
* _Scripting_. Fixed OSGi-related errors that occurred when script-related directories were not readable. (GP-5965, Issue #8466)
# Ghidra 11.4.2 Change History (August 2025) # Ghidra 11.4.2 Change History (August 2025)
### Improvements ### Improvements

View File

@@ -170,6 +170,13 @@
from the <A HREF="help/topics/Search/Query_Results_Dialog.htm#Remove_Items">Remove Items from the <A HREF="help/topics/Search/Query_Results_Dialog.htm#Remove_Items">Remove Items
</A> action, which will simply remove items from the table. </A> action, which will simply remove items from the table.
</P> </P>
<BLOCKQUOTE>
<P><IMG border="0" src="help/shared/tip.png" alt="">If the <CODE>RefType</CODE> is
<CODE>THUNK</CODE>, then that reference cannot be deleted. However, it may be
<I>removed</I> from the table.</P>
</BLOCKQUOTE>
</BLOCKQUOTE> </BLOCKQUOTE>
</BLOCKQUOTE> </BLOCKQUOTE>

View File

@@ -355,7 +355,21 @@ public class XReferenceUtils {
if (tableModel.isBusy()) { if (tableModel.isBusy()) {
return false; return false;
} }
return table.getSelectedRowCount() > 0; return hasNonThunkRefs(table);
}
private boolean hasNonThunkRefs(JTable table) {
int[] rows = table.getSelectedRows();
for (int row : rows) {
ReferenceEndpoint rowObject = tableModel.getRowObject(row);
Reference ref = rowObject.getReference();
RefType type = ref.getReferenceType();
if (type != RefType.THUNK) {
return true;
}
}
return false;
} }
@Override @Override
@@ -391,8 +405,13 @@ public class XReferenceUtils {
CompoundCmd<Program> compoundCmd = new CompoundCmd<>("Delete References"); CompoundCmd<Program> compoundCmd = new CompoundCmd<>("Delete References");
for (int row : rows) { for (int row : rows) {
ReferenceEndpoint endpoint = tableModel.getRowObject(row); ReferenceEndpoint endpoint = tableModel.getRowObject(row);
deletedRowObjects.add(endpoint);
Reference ref = endpoint.getReference(); Reference ref = endpoint.getReference();
RefType type = ref.getReferenceType();
if (type == RefType.THUNK) {
continue; // we cannot delete THUNK types, as they are not real references
}
deletedRowObjects.add(endpoint);
RemoveReferenceCmd cmd = new RemoveReferenceCmd(ref); RemoveReferenceCmd cmd = new RemoveReferenceCmd(ref);
compoundCmd.add(cmd); compoundCmd.add(cmd);
} }