mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-01-09 14:08:03 -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)
|
# Ghidra 11.4.2 Change History (August 2025)
|
||||||
|
|
||||||
### Improvements
|
### Improvements
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user