Honor asm.cpu for asm.arch=ppc.gnu ##disasm (#18543)

This commit is contained in:
pancake 2021-04-04 22:17:17 +02:00 committed by GitHub
parent e5248e97ed
commit c150dc489f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -40,8 +40,9 @@ DECLARE_GENERIC_PRINT_ADDRESS_FUNC()
DECLARE_GENERIC_FPRINTF_FUNC()
static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
char options[64];
struct disassemble_info disasm_obj;
if (len<4) {
if (len < 4) {
return -1;
}
buf_global = &op->buf_asm;
@ -50,7 +51,14 @@ static int disassemble(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
/* prepare disassembler */
memset (&disasm_obj, '\0', sizeof (struct disassemble_info));
disasm_obj.disassembler_options = (a->bits==64)?"64":"";
*options = 0;
if (!R_STR_ISEMPTY (a->cpu)) {
snprintf (options, sizeof (options), "%s,%s",
(a->bits == 64)? "64": "", a->cpu);
} else if (a->bits == 64){
r_str_ncpy (options, "64", sizeof (options));
}
disasm_obj.disassembler_options = options;
disasm_obj.buffer = bytes;
disasm_obj.read_memory_func = &ppc_buffer_read_memory;
disasm_obj.symbol_at_address_func = &symbol_at_address;