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

This commit is contained in:
Ryan Kurtz
2026-09-17 08:42:57 -04:00
2 changed files with 15 additions and 9 deletions

View File

@@ -29,11 +29,6 @@ Ghidra 12.2 is fully backward compatible with project data from previous release
and data type archives which are created or modified in 12.2 may not be usable by an earlier Ghidra
version.
**IMPORTANT:** Jython support is not supported by default but is included with the release as an
extension. An extra step is required to install it. If you have Ghidra Jython scripts, you must
either install the Jython Extension, convert your scripts to Python and run with PyGhidra, or
convert your scripts to JAVA.
**IMPORTANT:** Ghidra 12.2 requires, at minimum, JDK 25 to run.
**IMPORTANT:** To use the Debugger or do a full source distribution build, you will need Python3
@@ -196,6 +191,12 @@ Support has been added for integer datatypes in the C99 standard: `int8_t`, `uin
now leverage these new BuiltIn datatypes as well as related typedefs for improved portability across
target architectures.
Additionally, a new interactive Structure/Union/Enum merger has been created. Previously, when users
discovered that two partially recovered structures/unions/enums actually represented the same
datatype, their only option was to pick one or the other and manually edit it to include information
from the other datatype. Now, users can see them side by side and pick and choose each element in
either datatype to include in the resulting combined datatype.
## Beta support for "Timeless Debugging"
We've completed several enhancements to the Debugger to better support "timeless" or "time-travel"
debugging. This includes a native tool, based on Intel PIN, to capture execution traces in a format

View File

@@ -252,19 +252,20 @@ public class UnixAoutProgramLoader {
for (UnixAoutSymbol symbol : symtab) {
Address address = null;
long blockOffset = 0;
MemoryBlock block = null;
switch (symbol.type) {
case N_TEXT:
address = textBlock != null ? textBlock.getStart().add(symbol.value) : null;
blockOffset = symbol.value - header.getTextAddr();
block = textBlock;
break;
case N_DATA:
address = dataBlock != null ? dataBlock.getStart().add(symbol.value) : null;
blockOffset = symbol.value - header.getDataAddr();
block = dataBlock;
break;
case N_BSS:
address = bssBlock != null ? bssBlock.getStart().add(symbol.value) : null;
blockOffset = symbol.value - header.getBssAddr();
block = bssBlock;
break;
case N_UNDF:
@@ -290,10 +291,14 @@ public class UnixAoutProgramLoader {
break;
}
if (address == null || block == null) {
if (block == null) {
continue;
}
if (address == null) {
address = block.getStart().add(blockOffset);
}
switch (symbol.kind) {
case AUX_FUNC:
try {