From 35414254506f8cf1caddbecd7bf677b19a8686fa Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Fri, 5 Jan 2024 10:29:47 -0500 Subject: [PATCH 1/2] GP-4023 corrected auto-reference creation within byte-mapped memory block. --- .../java/ghidra/program/database/code/CodeManager.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/code/CodeManager.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/code/CodeManager.java index f938ca15f3..3e664a102a 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/code/CodeManager.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/code/CodeManager.java @@ -2094,13 +2094,8 @@ public class CodeManager implements ErrorHandler, ManagerDB { * data. */ private void addDataReferences(Data data, List
longSegmentAddressList) { - Memory mem = program.getMemory(); - MemoryBlock block = mem.getBlock(data.getAddress()); - if (block == null || !block.isInitialized()) { - return; - } DataType dt = data.getDataType(); - if (Address.class.equals(dt.getValueClass(null))) { + if (Address.class.equals(dt.getValueClass(data))) { Object obj = data.getValue(); if (obj instanceof Address) { // creates a reference unless the value is 0 or all f's From ad532036ab016dbf5bcb9ae6ac63b1e697aa0199 Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Fri, 5 Jan 2024 16:51:39 -0500 Subject: [PATCH 2/2] GP-4173 Change bsim command line script to not specify MAXMEM --- .../bsim/query/BSimControlLaunchable.java | 40 ++++++++++--------- .../bsim/query/ingest/BSimLaunchable.java | 16 +++++++- Ghidra/RuntimeScripts/Linux/support/bsim | 7 ++-- .../RuntimeScripts/Windows/support/bsim.bat | 5 ++- 4 files changed, 44 insertions(+), 24 deletions(-) diff --git a/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/BSimControlLaunchable.java b/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/BSimControlLaunchable.java index e318d598f3..9b8e7137aa 100644 --- a/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/BSimControlLaunchable.java +++ b/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/BSimControlLaunchable.java @@ -1426,27 +1426,31 @@ public class BSimControlLaunchable implements GhidraLaunchable { } } + private static void printUsage() { + //@formatter:off + System.err.println("\n" + + "USAGE: bsim_ctl [command] required-args... [OPTIONS...}\n\n" + + " start [--auth|-a pki|password|trust] [--noLocalAuth] [--cafile \"\"] [--dn \"\"]\n" + + " stop [--force]\n" + + " adduser [--dn \"\"]\n" + + " dropuser \n" + + " changeauth [--auth|-a pki|password|trust] [--noLocalAuth] [--cafile \"\"]\n" + + " resetpassword \n" + + " changeprivilege admin|user\n" + + "\n" + + "Global options:\n" + + " --port|-p \n" + + " --user|-u \n" + + " --cert \n" + + "\n" + + "NOTE: Options with values may also be specified using the form: --option=value\n"); + //@formatter:on + } + @Override public void launch(GhidraApplicationLayout ghidraLayout, String[] params) { if (params.length <= 1) { - //@formatter:off - System.err.println("USAGE: bsim_ctl [command] required-args... [OPTIONS...}\n"); - System.err.println(" start [--auth|-a pki|password|trust] [--noLocalAuth] [--cafile \"\"] [--dn \"\"]"); - System.err.println(" stop [--force]"); - System.err.println(" adduser [--dn \"\"]"); - System.err.println(" dropuser "); - System.err.println(" changeauth [--auth|-a pki|password|trust] [--noLocalAuth] [--cafile \"\"]"); - System.err.println(" resetpassword "); - System.err.println(" changeprivilege admin|user"); - System.err.println(); - System.err.println("Global options:"); - System.err.println(" --port|-p "); - System.err.println(" --user|-u "); - System.err.println(" --cert "); - System.err.println(); - System.err.println("NOTE: Options with values may also be specified using the form: --option=value\n"); - System.err.println(); - //@formatter:on + printUsage(); return; } layout = ghidraLayout; // Save layout for when we need to initialize application diff --git a/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java b/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java index b8a5a88a7e..439cf86984 100644 --- a/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java +++ b/Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java @@ -930,9 +930,20 @@ public class BSimLaunchable implements GhidraLaunchable { } } + private static void printMaxMemory() { + long maxMemoryBytes = Runtime.getRuntime().maxMemory(); + long maxMem = maxMemoryBytes >> 20; // MBytes + String units = " MBytes"; + if (maxMem >= 1024) { + maxMem >>= 10; + units = " GBytes"; + } + System.out.println("Max-Memory: " + maxMem + units); + } + private static void printUsage() { //@formatter:off - System.err.println( + System.err.println("\n" + "USAGE: bsim [command] required-args... [OPTIONS...]\n" + " createdatabase [--name|-n \"\"] [--owner|-o \"\"] [--description|-d \"\"] [--nocallgraph]\n" + " setmetadata [--name|-n \"\"] [--owner|-o \"\"] [--description|-d \"\"]\n" + @@ -978,6 +989,9 @@ public class BSimLaunchable implements GhidraLaunchable { @Override public void launch(GhidraApplicationLayout ghidraLayout, String[] params) { + + printMaxMemory(); + if (params.length == 0) { printUsage(); return; diff --git a/Ghidra/RuntimeScripts/Linux/support/bsim b/Ghidra/RuntimeScripts/Linux/support/bsim index 0254b785bb..a9ff1917e5 100755 --- a/Ghidra/RuntimeScripts/Linux/support/bsim +++ b/Ghidra/RuntimeScripts/Linux/support/bsim @@ -2,8 +2,9 @@ # # Command-line script for interacting with a BSim database -# maximum heap memory (may be increased) -MAXMEM=2G +# Maximum heap memory may be changed if default is inadequate. This will generally be up to 1/4 of +# the physical memory available to the OS. Uncomment MAXMEM setting if non-default value is needed. +#MAXMEM=2G # launch mode (fg, bg, debug, debug-suspend) LAUNCH_MODE=fg @@ -17,4 +18,4 @@ VMARG_LIST="-Djava.awt.headless=true " SCRIPT_FILE="$(readlink -f "$0" 2>/dev/null || readlink "$0" 2>/dev/null || echo "$0")" SCRIPT_DIR="${SCRIPT_FILE%/*}" -${SCRIPT_DIR}/launch.sh $LAUNCH_MODE jdk "BSim" $MAXMEM "" ghidra.features.bsim.query.ingest.BSimLaunchable "$@" +${SCRIPT_DIR}/launch.sh $LAUNCH_MODE jdk "BSim" "${MAXMEM}" "" ghidra.features.bsim.query.ingest.BSimLaunchable "$@" diff --git a/Ghidra/RuntimeScripts/Windows/support/bsim.bat b/Ghidra/RuntimeScripts/Windows/support/bsim.bat index da05434b38..fcc059ca19 100644 --- a/Ghidra/RuntimeScripts/Windows/support/bsim.bat +++ b/Ghidra/RuntimeScripts/Windows/support/bsim.bat @@ -3,8 +3,9 @@ @echo off setlocal -:: maximum heap memory (may be increased) -set MAXMEM=2G +:: Maximum heap memory may be changed if default is inadequate. This will generally be up to 1/4 of +:: the physical memory available to the OS. Uncomment MAXMEM setting if non-default value is needed. +::set MAXMEM=2G :: launch mode (fg, bg, debug, debug-suspend) set LAUNCH_MODE=fg