mirror of
https://github.com/encounter/objdiff.git
synced 2025-06-08 07:33:39 +00:00
* Show reloc diff in func view when data content differs * Add "Relax shifted data diffs" option * Display fake pool relocations at end of line * Diff reloc data by display string instead of raw bytes This is to handle data symbols that contain multiple values in them at once, such as stringBase. If you compare the target symbol's bytes directly, then any part of the symbol having different bytes will cause *all* relocations to that symbol to show as a diff, even if the specific string being accessed is the same. * Fix weak stripped symbols showing as a false diff Fixed this by showing extern symbols correctly instead of skipping them. * Add "Relax shifted data diffs" option to objdiff-cli Includes both a command line argument and a keyboard shortcut (S). * Remove addi string data hack and ... pool name hack * Clippy fix * PPC: Clear relocs from GPRs when overwritten * PPC: Follow branches to improve pool detection accuracy * PPC: Handle following bctr jump table control flow * Clippy fixes * PPC: Fix extern relocations not having their addend copied * Add option to disable func data value diffing * PPC: Handle lmw when clearing GPRs * PPC: Handle moving reloc address with `add` inst * Combine "relax reloc diffs" with other reloc diff options * Add v3 config and migrate from v2 --------- Co-authored-by: Luke Street <luke@street.dev>
248 lines
5.3 KiB
JSON
248 lines
5.3 KiB
JSON
{
|
|
"properties": [
|
|
{
|
|
"id": "functionRelocDiffs",
|
|
"type": "choice",
|
|
"default": "name_address",
|
|
"name": "Function relocation diffs",
|
|
"description": "How relocation targets will be diffed in the function view.",
|
|
"items": [
|
|
{
|
|
"value": "none",
|
|
"name": "None"
|
|
},
|
|
{
|
|
"value": "name_address",
|
|
"name": "Name or address"
|
|
},
|
|
{
|
|
"value": "data_value",
|
|
"name": "Data value"
|
|
},
|
|
{
|
|
"value": "all",
|
|
"name": "Name or address, data value"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "spaceBetweenArgs",
|
|
"type": "boolean",
|
|
"default": true,
|
|
"name": "Space between args",
|
|
"description": "Adds a space between arguments in the diff output."
|
|
},
|
|
{
|
|
"id": "combineDataSections",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"name": "Combine data sections",
|
|
"description": "Combines data sections with equal names."
|
|
},
|
|
{
|
|
"id": "arm.archVersion",
|
|
"type": "choice",
|
|
"default": "auto",
|
|
"name": "Architecture version",
|
|
"description": "ARM architecture version to use for disassembly.",
|
|
"items": [
|
|
{
|
|
"value": "auto",
|
|
"name": "Auto"
|
|
},
|
|
{
|
|
"value": "v4t",
|
|
"name": "ARMv4T (GBA)"
|
|
},
|
|
{
|
|
"value": "v5te",
|
|
"name": "ARMv5TE (DS)"
|
|
},
|
|
{
|
|
"value": "v6k",
|
|
"name": "ARMv6K (3DS)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "arm.unifiedSyntax",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"name": "Unified syntax",
|
|
"description": "Disassemble as unified assembly language (UAL)."
|
|
},
|
|
{
|
|
"id": "arm.avRegisters",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"name": "Use A/V registers",
|
|
"description": "Display R0-R3 as A1-A4 and R4-R11 as V1-V8."
|
|
},
|
|
{
|
|
"id": "arm.r9Usage",
|
|
"type": "choice",
|
|
"default": "generalPurpose",
|
|
"name": "Display R9 as",
|
|
"items": [
|
|
{
|
|
"value": "generalPurpose",
|
|
"name": "R9 or V6",
|
|
"description": "Use R9 as a general-purpose register."
|
|
},
|
|
{
|
|
"value": "sb",
|
|
"name": "SB (static base)",
|
|
"description": "Used for position-independent data (PID)."
|
|
},
|
|
{
|
|
"value": "tr",
|
|
"name": "TR (TLS register)",
|
|
"description": "Used for thread-local storage."
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "arm.slUsage",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"name": "Display R10 as SL",
|
|
"description": "Used for explicit stack limits."
|
|
},
|
|
{
|
|
"id": "arm.fpUsage",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"name": "Display R11 as FP",
|
|
"description": "Used for frame pointers."
|
|
},
|
|
{
|
|
"id": "arm.ipUsage",
|
|
"type": "boolean",
|
|
"default": false,
|
|
"name": "Display R12 as IP",
|
|
"description": "Used for interworking and long branches."
|
|
},
|
|
{
|
|
"id": "mips.abi",
|
|
"type": "choice",
|
|
"default": "auto",
|
|
"name": "ABI",
|
|
"description": "MIPS ABI to use for disassembly.",
|
|
"items": [
|
|
{
|
|
"value": "auto",
|
|
"name": "Auto"
|
|
},
|
|
{
|
|
"value": "o32",
|
|
"name": "O32"
|
|
},
|
|
{
|
|
"value": "n32",
|
|
"name": "N32"
|
|
},
|
|
{
|
|
"value": "n64",
|
|
"name": "N64"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "mips.instrCategory",
|
|
"type": "choice",
|
|
"default": "auto",
|
|
"name": "Instruction category",
|
|
"description": "MIPS instruction category to use for disassembly.",
|
|
"items": [
|
|
{
|
|
"value": "auto",
|
|
"name": "Auto"
|
|
},
|
|
{
|
|
"value": "cpu",
|
|
"name": "CPU"
|
|
},
|
|
{
|
|
"value": "rsp",
|
|
"name": "RSP (N64)"
|
|
},
|
|
{
|
|
"value": "r3000gte",
|
|
"name": "R3000 GTE (PS1)"
|
|
},
|
|
{
|
|
"value": "r4000allegrex",
|
|
"name": "R4000 ALLEGREX (PSP)"
|
|
},
|
|
{
|
|
"value": "r5900",
|
|
"name": "R5900 EE (PS2)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "x86.formatter",
|
|
"type": "choice",
|
|
"default": "intel",
|
|
"name": "Format",
|
|
"description": "x86 disassembly syntax.",
|
|
"items": [
|
|
{
|
|
"value": "intel",
|
|
"name": "Intel"
|
|
},
|
|
{
|
|
"value": "gas",
|
|
"name": "AT&T"
|
|
},
|
|
{
|
|
"value": "nasm",
|
|
"name": "NASM"
|
|
},
|
|
{
|
|
"value": "masm",
|
|
"name": "MASM"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"groups": [
|
|
{
|
|
"id": "general",
|
|
"name": "General",
|
|
"properties": [
|
|
"functionRelocDiffs",
|
|
"spaceBetweenArgs",
|
|
"combineDataSections"
|
|
]
|
|
},
|
|
{
|
|
"id": "arm",
|
|
"name": "ARM",
|
|
"properties": [
|
|
"arm.archVersion",
|
|
"arm.unifiedSyntax",
|
|
"arm.avRegisters",
|
|
"arm.r9Usage",
|
|
"arm.slUsage",
|
|
"arm.fpUsage",
|
|
"arm.ipUsage"
|
|
]
|
|
},
|
|
{
|
|
"id": "mips",
|
|
"name": "MIPS",
|
|
"properties": [
|
|
"mips.abi",
|
|
"mips.instrCategory"
|
|
]
|
|
},
|
|
{
|
|
"id": "x86",
|
|
"name": "x86",
|
|
"properties": [
|
|
"x86.formatter"
|
|
]
|
|
}
|
|
]
|
|
} |