mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-01-08 21:47:59 -05:00
Merge remote-tracking branch 'origin/Ghidra_12.0'
This commit is contained in:
@@ -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)
|
||||
|
||||
### Improvements
|
||||
|
||||
@@ -170,6 +170,13 @@
|
||||
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.
|
||||
</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>
|
||||
|
||||
@@ -355,7 +355,21 @@ public class XReferenceUtils {
|
||||
if (tableModel.isBusy()) {
|
||||
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
|
||||
@@ -391,8 +405,13 @@ public class XReferenceUtils {
|
||||
CompoundCmd<Program> compoundCmd = new CompoundCmd<>("Delete References");
|
||||
for (int row : rows) {
|
||||
ReferenceEndpoint endpoint = tableModel.getRowObject(row);
|
||||
deletedRowObjects.add(endpoint);
|
||||
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);
|
||||
compoundCmd.add(cmd);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user