diff --git a/Ghidra/Configurations/Public_Release/src/global/docs/WhatsNew.md b/Ghidra/Configurations/Public_Release/src/global/docs/WhatsNew.md index 6cd8d4773f..115c033e61 100644 --- a/Ghidra/Configurations/Public_Release/src/global/docs/WhatsNew.md +++ b/Ghidra/Configurations/Public_Release/src/global/docs/WhatsNew.md @@ -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 diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/UnixAoutProgramLoader.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/UnixAoutProgramLoader.java index fc7fc65c00..987b83d8db 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/UnixAoutProgramLoader.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/UnixAoutProgramLoader.java @@ -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 {