NationalSecurityAgency/ghidra · warning · IllegalArgumentException
Unsupported option specification: {}=
Error message
Unsupported option specification: {}= What it means
Thrown when a boolean option (one not in VALUE_OPTIONS) is assigned a value using the = syntax. Boolean options like --commit, --overwrite, --nocallgraph, --force, --date, --printselfsig, --callgraph, --printjustexe, --includelibs do not accept values; their presence alone enables them.
Source
Thrown at Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ingest/BSimLaunchable.java:337
}
}
if (!option.startsWith("--")) {
if (sawOptions) {
throw new IllegalArgumentException("Unexpected argument: " + option);
}
subParams.add(params[i]);
continue;
}
sawOptions = true;
if (!GLOBAL_OPTIONS.contains(option) && !allowedParams.contains(option)) {
throw new IllegalArgumentException("Unsupported option use: " + optionName);
}
if (!VALUE_OPTIONS.contains(option)) {
// consume option without value arg as a boolean option
if (value != null) {
throw new IllegalArgumentException(
"Unsupported option specification: " + optionName + "=");
}
booleanOptions.add(option);
}
else if (!StringUtils.isBlank(value)) {
optionValueMap.put(option, value);
}
else {
// consume next param as option value
if (++i == params.length) {
throw new IllegalArgumentException("Missing option value: " + optionName);
}
optionValueMap.put(option, params[i]);
}
}
return subParams;
}
View on GitHub (pinned to d5f144c24d)
Solutions
- Remove the value from the boolean option: use '--commit' instead of '--commit=true'.
- Check VALUE_OPTIONS (lines 100-103) to determine which options accept values.
- Use the bare flag form for all boolean options.
Example fix
// before bsim generatesigs ghidra://server/Repo --bsim h2://localhost/db --overwrite=true // error: Unsupported option specification: --overwrite= // after bsim generatesigs ghidra://server/Repo --bsim h2://localhost/db --overwrite
Defensive patterns
Strategy: validation
Validate before calling
Set<String> booleanOptions = Set.of("--commit","--date","--nocallgraph","--overwrite","--includelibs","--printselfsig","--callgraph","--printjustexe","--force");
for (String arg : args) {
if (arg.contains("=")) {
String optName = arg.substring(0, arg.indexOf("="));
if (booleanOptions.contains(optName)) {
throw new IllegalArgumentException("Boolean option " + optName + " does not accept a value");
}
}
} Prevention
- Use bare flag syntax for boolean options (--commit, not --commit=true).
- Check VALUE_OPTIONS to distinguish value-requiring options from boolean flags.
- Avoid habitual key=value syntax for all options.
When it happens
Trigger: Using the --option=value syntax with a boolean flag, e.g., '--commit=true', '--force=yes', or '--overwrite=1'. The parser detects the = sign and rejects the value assignment for a non-value option.
Common situations: Habitually using key=value syntax for all options; migrating from a tool that accepts boolean values; misunderstanding which options take values vs. which are toggles.
Related errors
- Unsupported option use: {}
- Unexpected argument: {}
- Missing option value: {}
- Missing required parameter: {}
- Missing required parameter ({}) before specified option: {}
AI-assisted analysis of NationalSecurityAgency/ghidra@d5f144c24d (2026-08-14).
Data as JSON: /api/errors/e763bf5d0a5421f8.
Report an issue: GitHub.