GP-6483: Loader option redesign with tooltip support

This commit is contained in:
Ryan Kurtz
2026-04-03 13:02:53 -04:00
parent 45963533d2
commit bf9484fdab
42 changed files with 1654 additions and 671 deletions
@@ -142,24 +142,38 @@ public class DyldCacheExtractLoader extends MachoLoader {
public List<Option> getDefaultOptions(ByteProvider provider, LoadSpec loadSpec,
DomainObject domainObject, boolean loadIntoProgram, boolean mirrorFsLayout) {
List<Option> list = new ArrayList<>();
list.add(new Option(LIBOBJC_OPTION_NAME, !loadIntoProgram && LIBOBJC_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-libobjc"));
list.add(new Option(AUTH_DATA_OPTION_NAME, !loadIntoProgram && AUTH_DATA_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-authData"));
list.add(new Option(DIRTY_DATA_OPTION_NAME, !loadIntoProgram && DIRTY_DATA_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-dirtyData"));
list.add(new Option(CONST_DATA_OPTION_NAME, !loadIntoProgram && CONST_DATA_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-constData"));
list.add(new Option(TEXT_STUBS_OPTION_NAME, !loadIntoProgram && TEXT_STUBS_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-textStubs"));
list.add(new Option(CONFIG_DATA_OPTION_NAME, !loadIntoProgram && CONFIG_DATA_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-configData"));
list.add(new Option(READ_ONLY_DATA_OPTION_NAME,
!loadIntoProgram && READ_ONLY_DATA_OPTION_DEFAULT, Boolean.class,
Loader.COMMAND_LINE_ARG_PREFIX + "-readOnlyData"));
list.add(new Option(CONST_TPRO_DATA_OPTION_NAME,
!loadIntoProgram && CONST_TPRO_DATA_OPTION_DEFAULT, Boolean.class,
Loader.COMMAND_LINE_ARG_PREFIX + "-constTproData"));
list.add(Option.newBoolean(LIBOBJC_OPTION_NAME)
.value(!loadIntoProgram && LIBOBJC_OPTION_DEFAULT)
.commandLineArgument(createArg("-libobjc"))
.build());
list.add(Option.newBoolean(AUTH_DATA_OPTION_NAME)
.value(!loadIntoProgram && AUTH_DATA_OPTION_DEFAULT)
.commandLineArgument(createArg("-authData"))
.build());
list.add(Option.newBoolean(DIRTY_DATA_OPTION_NAME)
.value(!loadIntoProgram && DIRTY_DATA_OPTION_DEFAULT)
.commandLineArgument(createArg("-dirtyData"))
.build());
list.add(Option.newBoolean(CONST_DATA_OPTION_NAME)
.value(!loadIntoProgram && CONST_DATA_OPTION_DEFAULT)
.commandLineArgument(createArg("-constData"))
.build());
list.add(Option.newBoolean(TEXT_STUBS_OPTION_NAME)
.value(!loadIntoProgram && TEXT_STUBS_OPTION_DEFAULT)
.commandLineArgument(createArg("-textStubs"))
.build());
list.add(Option.newBoolean(CONFIG_DATA_OPTION_NAME)
.value(!loadIntoProgram && CONFIG_DATA_OPTION_DEFAULT)
.commandLineArgument(createArg("-configData"))
.build());
list.add(Option.newBoolean(READ_ONLY_DATA_OPTION_NAME)
.value(!loadIntoProgram && READ_ONLY_DATA_OPTION_DEFAULT)
.commandLineArgument(createArg("-readOnlyData"))
.build());
list.add(Option.newBoolean(CONST_TPRO_DATA_OPTION_NAME)
.value(!loadIntoProgram && CONST_TPRO_DATA_OPTION_DEFAULT)
.commandLineArgument(createArg("-constTproData"))
.build());
return list;
}
@@ -4,9 +4,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -317,12 +317,17 @@ public class DumpFile {
protected static Collection<? extends Option> getDefaultOptions(DumpFileReader reader) {
List<Option> list = new ArrayList<>();
list.add(new Option(CREATE_MEMORY_BLOCKS_OPTION_NAME, CREATE_MEMORY_BLOCKS_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-createMemoryBlocks"));
list.add(new Option(JOIN_BLOCKS_OPTION_NAME, JOIN_BLOCKS_OPTION_DEFAULT, Boolean.class,
Loader.COMMAND_LINE_ARG_PREFIX + "-joinBlocks"));
list.add(new Option(ANALYZE_EMBEDDED_OBJECTS_OPTION_NAME,
ANALYZE_EMBEDDED_OBJECTS_OPTION_DEFAULT));
list.add(Option.newBoolean(CREATE_MEMORY_BLOCKS_OPTION_NAME)
.value(CREATE_MEMORY_BLOCKS_OPTION_DEFAULT)
.commandLineArgument(Loader.COMMAND_LINE_ARG_PREFIX + "-createMemoryBlocks")
.build());
list.add(Option.newBoolean(JOIN_BLOCKS_OPTION_NAME)
.value(JOIN_BLOCKS_OPTION_DEFAULT)
.commandLineArgument(Loader.COMMAND_LINE_ARG_PREFIX + "-joinBlocks")
.build());
list.add(Option.newBoolean(ANALYZE_EMBEDDED_OBJECTS_OPTION_NAME)
.value(ANALYZE_EMBEDDED_OBJECTS_OPTION_DEFAULT)
.build());
return list;
}
@@ -85,8 +85,9 @@ public class Apport extends DumpFile {
DecodedProvider provider =
new DecodedProvider(this, reader.getByteProvider(), monitor)) {
ElfLoader elfLoader = new ElfLoader();
Option base = new Option(ElfLoaderOptionsFactory.IMAGE_BASE_OPTION_NAME,
Long.toHexString(header.getMemoryInfo(0).getBaseAddress()));
Option base = Option.newString(ElfLoaderOptionsFactory.IMAGE_BASE_OPTION_NAME)
.value(Long.toHexString(header.getMemoryInfo(0).getBaseAddress()))
.build();
options.add(base);
program.addConsumer(consumer);
ImporterSettings settings = new ImporterSettings(provider, program.getName(), null,
@@ -192,8 +193,10 @@ public class Apport extends DumpFile {
public static Collection<? extends Option> getDefaultOptions(DumpFileReader reader) {
List<Option> list = new ArrayList<>();
list.add(new Option(CREATE_MEMORY_BLOCKS_OPTION_NAME, CREATE_MEMORY_BLOCKS_OPTION_DEFAULT,
Boolean.class, Loader.COMMAND_LINE_ARG_PREFIX + "-createMemoryBlocks"));
list.add(Option.newBoolean(CREATE_MEMORY_BLOCKS_OPTION_NAME)
.value(CREATE_MEMORY_BLOCKS_OPTION_DEFAULT)
.commandLineArgument(Loader.COMMAND_LINE_ARG_PREFIX + "-createMemoryBlocks")
.build());
return list;
}
@@ -612,8 +612,10 @@ public class Pagedump extends DumpFile {
List<Option> list = new ArrayList<>();
list.add(new Option(DEBUG_DATA_PATH_OPTION_NAME, DEBUG_DATA_PATH_OPTION_DEFAULT,
String.class, Loader.COMMAND_LINE_ARG_PREFIX + "-debugDataFilePath"));
list.add(Option.newString(DEBUG_DATA_PATH_OPTION_NAME)
.value(DEBUG_DATA_PATH_OPTION_DEFAULT)
.commandLineArgument(Loader.COMMAND_LINE_ARG_PREFIX + "-debugDataFilePath")
.build());
list.addAll(DumpFile.getDefaultOptions(reader));