mirror of
https://github.com/radareorg/radare2.git
synced 2024-11-26 22:50:48 +00:00
Move the arm assembler plugin from asm to arch ##arch
* force 4 jobs in bin/d
This commit is contained in:
parent
28ca83cd73
commit
7ca2004fc9
2
.gitignore
vendored
2
.gitignore
vendored
@ -66,6 +66,8 @@ libr/include/r_version.h
|
||||
libr/include/r_version.h.tmp
|
||||
libr/asm/arch/arm/v35arm64/arch-arm64
|
||||
libr/asm/arch/arm/v35arm64/arch-armv7
|
||||
libr/arch/p/arm/v35arm64/arch-arm64
|
||||
libr/arch/p/arm/v35arm64/arch-armv7
|
||||
shlr/capstone/
|
||||
shlr/java/out
|
||||
shlr/java/out.exe
|
||||
|
2
dist/plugins-cfg/plugins.android.cfg
vendored
2
dist/plugins-cfg/plugins.android.cfg
vendored
@ -1,5 +1,5 @@
|
||||
STATIC="
|
||||
asm.arm
|
||||
arch.arm
|
||||
arch.x86_nz
|
||||
anal.bf
|
||||
anal.avr
|
||||
|
2
dist/plugins-cfg/plugins.bin.cfg
vendored
2
dist/plugins-cfg/plugins.bin.cfg
vendored
@ -38,7 +38,7 @@ anal.x86_simple
|
||||
anal.xap
|
||||
anal.z80
|
||||
arch.sh
|
||||
asm.arm
|
||||
arch.arm
|
||||
asm.mips_cs
|
||||
asm.rar
|
||||
asm.sparc
|
||||
|
7
dist/plugins-cfg/plugins.def.cfg
vendored
7
dist/plugins-cfg/plugins.def.cfg
vendored
@ -44,8 +44,6 @@ anal.ppc_cs
|
||||
anal.ppc_gnu
|
||||
anal.propeller
|
||||
anal.pyc
|
||||
arch.any_as
|
||||
arch.riscv
|
||||
anal.riscv_cs
|
||||
anal.s390_cs
|
||||
anal.s390_gnu
|
||||
@ -71,8 +69,9 @@ arch.rsp
|
||||
arch.pickle
|
||||
arch.sh
|
||||
arch.v810
|
||||
asm.arm
|
||||
asm.arm_as
|
||||
arch.arm
|
||||
arch.any_as
|
||||
arch.riscv
|
||||
asm.null
|
||||
asm.ppc_as
|
||||
asm.vasm
|
||||
|
2
dist/plugins-cfg/plugins.emscripten.cfg
vendored
2
dist/plugins-cfg/plugins.emscripten.cfg
vendored
@ -1,5 +1,5 @@
|
||||
STATIC="
|
||||
asm.arm
|
||||
arch.arm
|
||||
arch.x86_nz
|
||||
asm.mips_cs
|
||||
anal.avr
|
||||
|
2
dist/plugins-cfg/plugins.ios-store.cfg
vendored
2
dist/plugins-cfg/plugins.ios-store.cfg
vendored
@ -1,5 +1,5 @@
|
||||
STATIC="
|
||||
asm.arm
|
||||
arch.arm
|
||||
arch.x86_nz
|
||||
anal.bf
|
||||
anal.null
|
||||
|
2
dist/plugins-cfg/plugins.ios.cfg
vendored
2
dist/plugins-cfg/plugins.ios.cfg
vendored
@ -7,7 +7,7 @@
|
||||
# do not build : asm.x86_nasm
|
||||
|
||||
STATIC="
|
||||
asm.arm
|
||||
arch.arm
|
||||
arch.x86_nz
|
||||
anal.bf
|
||||
anal.null
|
||||
|
4
dist/plugins-cfg/plugins.mingw.cfg
vendored
4
dist/plugins-cfg/plugins.mingw.cfg
vendored
@ -62,10 +62,10 @@ arch.i4004
|
||||
arch.amd29k
|
||||
arch.pickle
|
||||
esil.dummy
|
||||
asm.arm
|
||||
arch.arm
|
||||
asm.null
|
||||
asm.ppc_as
|
||||
asm.arm_as
|
||||
arch.any_as
|
||||
asm.x86_as
|
||||
arch.x86_nz
|
||||
asm.x86_nasm
|
||||
|
2
dist/plugins-cfg/plugins.nocs.cfg
vendored
2
dist/plugins-cfg/plugins.nocs.cfg
vendored
@ -53,7 +53,7 @@ esil.dummy
|
||||
asm.null
|
||||
asm.ppc_as
|
||||
anal.m68k_gnu
|
||||
asm.arm_as
|
||||
arch.any_as
|
||||
asm.x86_as
|
||||
arch.x86_nz
|
||||
asm.x86_nasm
|
||||
|
2
dist/plugins-cfg/plugins.nogpl.cfg
vendored
2
dist/plugins-cfg/plugins.nogpl.cfg
vendored
@ -25,7 +25,7 @@ anal.xcore_cs
|
||||
arch.null
|
||||
arch.i4004
|
||||
esil.dummy
|
||||
asm.arm
|
||||
arch.arm
|
||||
arch.x86_nz
|
||||
bin.any
|
||||
bin.bf
|
||||
|
4
dist/plugins-cfg/plugins.static.cfg
vendored
4
dist/plugins-cfg/plugins.static.cfg
vendored
@ -43,8 +43,8 @@ anal.propeller
|
||||
arch.null
|
||||
arch.i4004
|
||||
esil.dummy
|
||||
asm.arm
|
||||
asm.arm_as
|
||||
arch.arm
|
||||
arch.any_as
|
||||
asm.x86_as
|
||||
arch.x86_nz
|
||||
asm.x86_nasm
|
||||
|
4
dist/plugins-cfg/plugins.static.nogpl.cfg
vendored
4
dist/plugins-cfg/plugins.static.nogpl.cfg
vendored
@ -29,8 +29,8 @@ anal.propeller
|
||||
arch.null
|
||||
arch.i4004
|
||||
esil.dummy
|
||||
asm.arm
|
||||
asm.arm_as
|
||||
arch.arm
|
||||
arch.any_as
|
||||
asm.x86_as
|
||||
arch.x86_nz
|
||||
asm.x86_nasm
|
||||
|
4
dist/plugins-cfg/plugins.termux.cfg
vendored
4
dist/plugins-cfg/plugins.termux.cfg
vendored
@ -37,11 +37,11 @@ arch.rsp
|
||||
arch.i4004
|
||||
arch.v810
|
||||
esil.dummy
|
||||
asm.arm
|
||||
arch.arm
|
||||
asm.null
|
||||
asm.ppc_as
|
||||
anal.m68k_gnu
|
||||
asm.arm_as
|
||||
arch.any_as
|
||||
asm.x86_as
|
||||
arch.x86_nz
|
||||
asm.x86_nasm
|
||||
|
2
dist/plugins-cfg/plugins.tiny.cfg
vendored
2
dist/plugins-cfg/plugins.tiny.cfg
vendored
@ -7,7 +7,7 @@
|
||||
# do not build : asm.x86_nasm
|
||||
|
||||
STATIC="
|
||||
asm.arm
|
||||
arch.arm
|
||||
arch.x86_nz
|
||||
anal.null
|
||||
anal.x86_cs
|
||||
|
2
dist/plugins-cfg/plugins.wasi.cfg
vendored
2
dist/plugins-cfg/plugins.wasi.cfg
vendored
@ -1,6 +1,6 @@
|
||||
STATIC="
|
||||
arch.x86_nz
|
||||
asm.arm
|
||||
arch.arm
|
||||
asm.null
|
||||
anal.dalvik
|
||||
anal.wasm
|
||||
|
@ -19,7 +19,7 @@ LDFLAGS+=$(LINK)
|
||||
.PHONY: all main plugins libs ${EXTRA_CLEAN}
|
||||
|
||||
main:
|
||||
$(MAKE) -C d
|
||||
$(MAKE) -j 4 -C d
|
||||
$(MAKE) all
|
||||
|
||||
plugins: ${LIBSO} ${LIBAR}
|
||||
@ -81,7 +81,7 @@ tests-esil:
|
||||
.PHONY: do doclean
|
||||
|
||||
do:
|
||||
$(MAKE) -C ../asm/arch/arm/v35arm64
|
||||
$(MAKE) -C ../arch/p/arm/v35arm64
|
||||
$(MAKE) -C d
|
||||
|
||||
doclean:
|
||||
|
@ -5,8 +5,6 @@
|
||||
#include <r_util.h>
|
||||
#include <r_list.h>
|
||||
|
||||
#define aprintf(format, ...) if (anal->verbose) eprintf (format, __VA_ARGS__)
|
||||
|
||||
#define JMPTBL_MAXSZ 512
|
||||
|
||||
static void apply_case(RAnal *anal, RAnalBlock *block, ut64 switch_addr, ut64 offset_sz, ut64 case_addr, ut64 id, ut64 case_addr_loc) {
|
||||
@ -59,11 +57,11 @@ static inline void analyze_new_case(RAnal *anal, RAnalFunction *fcn, RAnalBlock
|
||||
if (block) {
|
||||
if (block->addr != ip) {
|
||||
st64 d = block->addr - ip;
|
||||
R_LOG_ERROR ("Cannot find basic block for switch case at 0x%08"PFMT64x" bbdelta = %d", ip, (int)R_ABS (d));
|
||||
R_LOG_WARN ("Cannot find basic block for switch case at 0x%08"PFMT64x" bbdelta = %d", ip, (int)R_ABS (d));
|
||||
block = NULL;
|
||||
return;
|
||||
} else {
|
||||
R_LOG_ERROR ("Inconsistent basicblock storage issue at 0x%08"PFMT64x, ip);
|
||||
R_LOG_WARN ("Inconsistent basicblock storage issue at 0x%08"PFMT64x, ip);
|
||||
}
|
||||
} else {
|
||||
R_LOG_ERROR ("Major disaster at 0x%08"PFMT64x, ip);
|
||||
@ -82,15 +80,15 @@ R_API bool try_walkthrough_casetbl(RAnal *anal, RAnalFunction *fcn, RAnalBlock *
|
||||
jmptbl_size = JMPTBL_MAXSZ;
|
||||
}
|
||||
if (jmptbl_loc == UT64_MAX) {
|
||||
aprintf ("Warning: Invalid JumpTable location 0x%08" PFMT64x "\n", jmptbl_loc);
|
||||
R_LOG_DEBUG ("Invalid JumpTable location 0x%08" PFMT64x, jmptbl_loc);
|
||||
return false;
|
||||
}
|
||||
if (casetbl_loc == UT64_MAX) {
|
||||
aprintf ("Warning: Invalid CaseTable location 0x%08" PFMT64x "\n", jmptbl_loc);
|
||||
R_LOG_DEBUG ("Invalid CaseTable location 0x%08" PFMT64x, jmptbl_loc);
|
||||
return false;
|
||||
}
|
||||
if (jmptbl_size < 1 || jmptbl_size > ST32_MAX) {
|
||||
aprintf ("Warning: Invalid JumpTable size at 0x%08" PFMT64x "\n", ip);
|
||||
R_LOG_DEBUG ("Invalid JumpTable size at 0x%08" PFMT64x, ip);
|
||||
return false;
|
||||
}
|
||||
ut64 jmpptr, case_idx, jmpptr_idx;
|
||||
@ -172,11 +170,11 @@ R_API bool try_walkthrough_jmptbl(RAnal *anal, RAnalFunction *fcn, RAnalBlock *b
|
||||
jmptbl_size = JMPTBL_MAXSZ;
|
||||
}
|
||||
if (jmptbl_loc == UT64_MAX) {
|
||||
aprintf ("Warning: Invalid JumpTable location 0x%08"PFMT64x"\n", jmptbl_loc);
|
||||
R_LOG_DEBUG ("Invalid JumpTable location 0x%08"PFMT64x, jmptbl_loc);
|
||||
return false;
|
||||
}
|
||||
if (jmptbl_size < 1 || jmptbl_size > ST32_MAX) {
|
||||
aprintf ("Warning: Invalid JumpTable size at 0x%08"PFMT64x"\n", ip);
|
||||
R_LOG_DEBUG ("Invalid JumpTable size at 0x%08"PFMT64x, ip);
|
||||
return false;
|
||||
}
|
||||
ut64 jmpptr, offs;
|
||||
@ -460,7 +458,7 @@ R_API bool try_get_jmptbl_info(RAnal *anal, RAnalFunction *fcn, ut64 addr, RAnal
|
||||
}
|
||||
// predecessor must be a conditional jump
|
||||
if (!prev_bb || !prev_bb->jump || !prev_bb->fail) {
|
||||
aprintf ("Warning: [anal.jmp.tbl] Missing predecesessor cjmp bb at 0x%08"PFMT64x"\n", addr);
|
||||
R_LOG_DEBUG ("[anal.jmp.tbl] Missing predecesessor cjmp bb at 0x%08"PFMT64x, addr);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -142,13 +142,13 @@ r_anal_sources = [
|
||||
'arch/msp430/msp430_disas.c',
|
||||
'arch/propeller/propeller_disas.c',
|
||||
'../asm/arch/amd29k/amd29k.c',
|
||||
'../asm/arch/arm/winedbg/be_arm.c',
|
||||
'../asm/arch/arm/gnu/floatformat.c',
|
||||
'../asm/arch/arm/gnu/arm-dis.c',
|
||||
'../asm/arch/arm/aarch64/aarch64-dis.c',
|
||||
'../asm/arch/arm/aarch64/aarch64-dis-2.c',
|
||||
'../asm/arch/arm/aarch64/aarch64-opc.c',
|
||||
'../asm/arch/arm/aarch64/aarch64-opc-2.c',
|
||||
'../arch/p/arm/winedbg/be_arm.c',
|
||||
'../arch/p/arm/gnu/floatformat.c',
|
||||
'../arch/p/arm/gnu/arm-dis.c',
|
||||
'../arch/p/arm/aarch64/aarch64-dis.c',
|
||||
'../arch/p/arm/aarch64/aarch64-dis-2.c',
|
||||
'../arch/p/arm/aarch64/aarch64-opc.c',
|
||||
'../arch/p/arm/aarch64/aarch64-opc-2.c',
|
||||
'../asm/arch/avr/avr_disasm.c',
|
||||
'../asm/arch/avr/format.c',
|
||||
'../asm/arch/avr/disasm.c',
|
||||
|
@ -6,11 +6,11 @@
|
||||
|
||||
/* DEPRECATE ?? */
|
||||
#include "wine-arm.h"
|
||||
#include "../asm/arch/arm/asm-arm.h"
|
||||
#include "../asm/arch/arm/winedbg/be_arm.h"
|
||||
#include "../arch/p/arm/asm-arm.h"
|
||||
#include "../arch/p/arm/winedbg/be_arm.h"
|
||||
#include "./anal_arm_hacks.inc"
|
||||
#include "disas-asm.h"
|
||||
#include "../../asm/arch/arm/gnu/opcode-arm.h"
|
||||
#include "../../arch/p/arm/gnu/opcode-arm.h"
|
||||
|
||||
static R_TH_LOCAL char *oldcpu = NULL;
|
||||
static R_TH_LOCAL int oldcpucode = 0;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* radare2 - LGPL - Copyright 2020-2021 - aemitt, pancake */
|
||||
/* radare2 - LGPL - Copyright 2020-2022 - aemitt, pancake */
|
||||
|
||||
#include <r_anal.h>
|
||||
#include <r_lib.h>
|
||||
@ -64,7 +64,7 @@ static bool is_mem(OperandClass op) {
|
||||
#if 0
|
||||
// TODO: Add support for thumb2 disassembler
|
||||
// #include "armv7.h"
|
||||
#include "../../asm/arch/arm/v35arm64/arch-armv7/armv7_disasm/armv7.c"
|
||||
#include "../../arch/p/arm/v35arm64/arch-armv7/armv7_disasm/armv7.c"
|
||||
R_API int disassemble_armv7(RAsm *a, RAsmOp *op, const ut8 *buf, int len) {
|
||||
Instruction inst = {0};
|
||||
char output[256];
|
||||
|
@ -1,15 +1,15 @@
|
||||
N=anal_arm_gnu
|
||||
OBJ_ARM=anal_arm_gnu.o
|
||||
OBJ_ARM+=../../asm/arch/arm/winedbg/be_arm.o
|
||||
OBJ_ARM+=../../arch/p/arm/winedbg/be_arm.o
|
||||
|
||||
#arm32
|
||||
OBJ_ARM+=../../asm/arch/arm/gnu/arm-dis.o
|
||||
OBJ_ARM+=../../asm/arch/arm/gnu/floatformat.o
|
||||
OBJ_ARM+=../../arch/p/arm/gnu/arm-dis.o
|
||||
OBJ_ARM+=../../arch/p/arm/gnu/floatformat.o
|
||||
#arm64
|
||||
OBJ_ARM+=../../asm/arch/arm/aarch64/aarch64-dis.o
|
||||
OBJ_ARM+=../../asm/arch/arm/aarch64/aarch64-dis-2.o
|
||||
OBJ_ARM+=../../asm/arch/arm/aarch64/aarch64-opc.o
|
||||
OBJ_ARM+=../../asm/arch/arm/aarch64/aarch64-opc-2.o
|
||||
OBJ_ARM+=../../arch/p/arm/aarch64/aarch64-dis.o
|
||||
OBJ_ARM+=../../arch/p/arm/aarch64/aarch64-dis-2.o
|
||||
OBJ_ARM+=../../arch/p/arm/aarch64/aarch64-opc.o
|
||||
OBJ_ARM+=../../arch/p/arm/aarch64/aarch64-opc-2.o
|
||||
|
||||
STATIC_OBJ+=${OBJ_ARM}
|
||||
TARGET_ARM=$(N).${EXT_SO}
|
||||
|
@ -1,14 +1,14 @@
|
||||
include ../config.mk
|
||||
N=anal_arm_v35
|
||||
V35ARM64_HOME=$(LIBR)/asm/arch/arm/v35arm64/
|
||||
V35ARM64_HOME=$(LIBR)/arch/p/arm/v35arm64/
|
||||
|
||||
include ../asm/arch/arm/v35arm64/deps-arm64.mk
|
||||
include ../arch/p/arm/v35arm64/deps-arm64.mk
|
||||
|
||||
OBJ_ARM_V35=anal_arm_v35.o
|
||||
# OBJ_ARM_V35+=${V35ARM64_LINK}
|
||||
OBJ_ARM_V35+=../../asm/arch/arm/v35arm64/arch-arm64/disassembler/*.o
|
||||
# OBJ_ARM_V35 += ../../asm/arch/arm/v35arm64/arm64dis.$(EXT_AR)
|
||||
#OBJ_ARM_V35+=../../asm/arch/arm/v35arm64/armv7dis.$(EXT_AR)
|
||||
OBJ_ARM_V35+=../../arch/p/arm/v35arm64/arch-arm64/disassembler/*.o
|
||||
# OBJ_ARM_V35 += ../../arch/p/arm/v35arm64/arm64dis.$(EXT_AR)
|
||||
# OBJ_ARM_V35+=../../arch/p/arm/v35arm64/armv7dis.$(EXT_AR)
|
||||
|
||||
STATIC_OBJ+=${OBJ_ARM_V35}
|
||||
CFLAGS+=$(V35ARM64_CFLAGS)
|
||||
|
@ -1,4 +1,5 @@
|
||||
include ../config.mk
|
||||
include p/capstone.mk
|
||||
|
||||
NAME=r_arch
|
||||
R2DEPS+=r_util r_reg
|
||||
@ -7,13 +8,18 @@ CFLAGS+=-DR2_PLUGIN_INCORE
|
||||
CFLAGS:=-I.. -I$(LTOP)/asm/arch/include -DR2_PLUGIN_INCORE -Iarch -I$(TOP)/shlr $(CFLAGS)
|
||||
|
||||
.PHONY: pre
|
||||
pre: libr_arch.$(EXT_SO) libr_arch.$(EXT_AR)
|
||||
$(MAKE) -C ../asm/arch/arm/v35arm64
|
||||
$(MAKE) -C p
|
||||
pre: p v35pre
|
||||
$(MAKE) libr_arch.$(EXT_SO)
|
||||
$(MAKE) libr_arch.$(EXT_AR)
|
||||
|
||||
v35pre:
|
||||
$(MAKE) -C p/arm/v35arm64
|
||||
|
||||
include $(STATIC_ARCH_PLUGINS)
|
||||
|
||||
STATIC_OBJS=$(subst ..,p/..,$(subst arch_,p/arch_,$(STATIC_OBJ)))
|
||||
OBJS=arch.o arch_config.o arch_switch.o arch_op.o arch_value.o arch_cond.o arch_session.o
|
||||
OBJS=arch.o arch_config.o arch_switch.o arch_op.o
|
||||
OBJS+=arch_value.o arch_cond.o arch_session.o
|
||||
OBJS+=${STATIC_OBJS}
|
||||
|
||||
include ../rules.mk
|
||||
|
@ -7,6 +7,9 @@ r_arch_sources = [
|
||||
'arch_cond.c',
|
||||
'arch_value.c',
|
||||
'p/null/plugin.c',
|
||||
'p/arm/plugin.c',
|
||||
'p/arm/armass.c',
|
||||
'p/arm/armass64.c',
|
||||
'p/any_as/plugin.c',
|
||||
'p/i4004/plugin.c',
|
||||
'p/amd29k/plugin.c',
|
||||
@ -29,7 +32,8 @@ r_arch = library('r_arch', r_arch_sources,
|
||||
c_args: library_cflags,
|
||||
dependencies: [
|
||||
r_util_dep,
|
||||
r_reg_dep
|
||||
r_reg_dep,
|
||||
capstone_dep,
|
||||
],
|
||||
install: true,
|
||||
implicit_include_directories: false,
|
||||
@ -44,7 +48,10 @@ if get_option('blob')
|
||||
r_arch_static = static_library('r_arch_static', r_arch_sources,
|
||||
include_directories: [platform_inc, arch_inc],
|
||||
c_args: library_cflags,
|
||||
dependencies: [r_util_static_dep],
|
||||
dependencies: [
|
||||
r_util_static_dep,
|
||||
capstone_static_dep,
|
||||
],
|
||||
install: true,
|
||||
implicit_include_directories: false,
|
||||
)
|
||||
|
12
libr/arch/p/arm.mk
Normal file
12
libr/arch/p/arm.mk
Normal file
@ -0,0 +1,12 @@
|
||||
OBJ_ARMARCH=p/arm/plugin.o
|
||||
OBJ_ARMARCH+=p/arm/armass64.o
|
||||
OBJ_ARMARCH+=p/arm/armass.o
|
||||
|
||||
STATIC_OBJ+=${OBJ_ARMARCH}
|
||||
TARGET_ARMARCH=arch_arm.${EXT_SO}
|
||||
|
||||
ALL_TARGETS+=${TARGET_ARMARCH}
|
||||
|
||||
${TARGET_ARMARCH}: ${OBJ_ARMARCH}
|
||||
${CC} ${CFLAGS} $(call libname,arch_arm) $(CS_CFLAGS) \
|
||||
-o arch_arm.${EXT_SO} ${OBJ_ARMARCH} $(CS_LDFLAGS)
|
@ -811,7 +811,7 @@ dump_qualifier_sequence (const aarch64_opnd_qualifier_t *qualifier)
|
||||
{
|
||||
int i;
|
||||
printf ("#### ");
|
||||
for (i = 0; i < AARCH64_MAX_OPND_NUM; i++, ++qualifier)
|
||||
for (i = 0; i < AARCH64_MAX_OPND_NUM; i++, qualifier++)
|
||||
printf ("%s,", aarch64_get_qualifier_name (*qualifier));
|
||||
printf ("\n");
|
||||
}
|
||||
@ -889,7 +889,7 @@ aarch64_find_best_match (const aarch64_inst *inst,
|
||||
stop_at = num_opnds - 1;
|
||||
|
||||
/* For each pattern. */
|
||||
for (i = 0; i < AARCH64_MAX_QLF_SEQ_NUM; ++i, ++qualifiers_list)
|
||||
for (i = 0; i < AARCH64_MAX_QLF_SEQ_NUM; ++i, qualifiers_list++)
|
||||
{
|
||||
int j;
|
||||
qualifiers = *qualifiers_list;
|
||||
@ -913,7 +913,7 @@ aarch64_find_best_match (const aarch64_inst *inst,
|
||||
break;
|
||||
}
|
||||
|
||||
for (j = 0; j < num_opnds && j <= stop_at; ++j, ++qualifiers)
|
||||
for (j = 0; j < num_opnds && j <= stop_at; j++, qualifiers++)
|
||||
{
|
||||
if (inst->operands[j].qualifier == AARCH64_OPND_QLF_NIL)
|
||||
{
|
||||
@ -959,9 +959,9 @@ aarch64_find_best_match (const aarch64_inst *inst,
|
||||
dump_qualifier_sequence (qualifiers);
|
||||
#endif
|
||||
|
||||
for (j = 0; j <= stop_at; ++j, ++qualifiers)
|
||||
for (j = 0; j <= stop_at; j++, qualifiers++)
|
||||
ret[j] = *qualifiers;
|
||||
for (; j < AARCH64_MAX_OPND_NUM; ++j)
|
||||
for (; j < AARCH64_MAX_OPND_NUM; j++)
|
||||
ret[j] = AARCH64_OPND_QLF_NIL;
|
||||
|
||||
DEBUG_TRACE ("SUCCESS");
|
@ -1,10 +1,11 @@
|
||||
/* radare2 - BSD - Copyright 2013-2022 - pancake */
|
||||
/* Copyright (C) 2008-2022 - pancake */
|
||||
|
||||
#include <r_arch.h>
|
||||
#include <r_asm.h>
|
||||
#include <r_lib.h>
|
||||
#include <sdb/ht_uu.h>
|
||||
#include "cs_version.h"
|
||||
#include "../arch/arm/asm-arm.h"
|
||||
#include "./cs_version.h"
|
||||
#include "./asm-arm.h"
|
||||
|
||||
bool arm64ass(const char *str, ut64 addr, ut32 *op);
|
||||
|
||||
@ -15,17 +16,17 @@ static bool encode(RArchSession *s, RAnalOp *op, ut32 mask) {
|
||||
ut32 opcode = UT32_MAX;
|
||||
if (bits == 64) {
|
||||
if (!arm64ass (op->mnemonic, op->addr, &opcode)) {
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
opcode = armass_assemble (op->mnemonic, op->addr, is_thumb);
|
||||
if (bits != 32 && bits != 16) {
|
||||
R_LOG_ERROR ("ARM assembler only supports 16 or 32 bits");
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (opcode == UT32_MAX) {
|
||||
return -1;
|
||||
return false;
|
||||
}
|
||||
ut8 opbuf[4];
|
||||
const bool be = R_ARCH_CONFIG_IS_BIG_ENDIAN (s->config);
|
||||
@ -56,9 +57,10 @@ static bool encode(RArchSession *s, RAnalOp *op, ut32 mask) {
|
||||
}
|
||||
r_anal_op_set_bytes (op, op->addr, opbuf, opsize);
|
||||
// r_strbuf_setbin (&op->buf, opbuf, opsize);
|
||||
return opsize;
|
||||
return true;
|
||||
}
|
||||
|
||||
#if 0
|
||||
// old api
|
||||
static int assemble(RAsm *a, RAsmOp *op, const char *buf) {
|
||||
const int bits = a->config->bits;
|
||||
@ -110,23 +112,23 @@ static int assemble(RAsm *a, RAsmOp *op, const char *buf) {
|
||||
// XXX. thumb endian assembler needs no swap
|
||||
return opsize;
|
||||
}
|
||||
#endif
|
||||
|
||||
RAsmPlugin r_asm_plugin_arm = {
|
||||
RArchPlugin r_arch_plugin_arm = {
|
||||
.name = "arm",
|
||||
.desc = "Custom THUMB, ARM32, AARCH64 assembler for radare2",
|
||||
.cpus = ",v8,cortex",
|
||||
.license = "BSD",
|
||||
.desc = "custom thumb, arm32 and arm64 assembler",
|
||||
.author = "pancake",
|
||||
.license = "LGPL3",
|
||||
.arch = "arm",
|
||||
.bits = 16 | 32 | 64,
|
||||
.bits = R_SYS_BITS_PACK3 (16, 32, 64),
|
||||
.endian = R_SYS_ENDIAN_LITTLE | R_SYS_ENDIAN_BIG,
|
||||
.assemble = &assemble, // DEPRECATE
|
||||
.encode = &encode,
|
||||
};
|
||||
|
||||
#ifndef R2_PLUGIN_INCORE
|
||||
R_API RLibStruct radare_plugin = {
|
||||
.type = R_LIB_TYPE_ASM,
|
||||
.data = &r_asm_plugin_arm,
|
||||
.type = R_LIB_TYPE_ARCH,
|
||||
.data = &r_arch_plugin_arm,
|
||||
.version = R2_VERSION
|
||||
};
|
||||
#endif
|
@ -8,16 +8,13 @@ CURDIR=p/
|
||||
|
||||
include $(TOP)/libr/config.mk
|
||||
|
||||
include p/capstone.mk
|
||||
LDFLAGS+=${CS_LDFLAGS}
|
||||
include $(STOP)/java/deps.mk
|
||||
include $(STOP)/capstone.mk
|
||||
|
||||
.PHONY: alle plugins
|
||||
|
||||
alle:
|
||||
$(MAKE) gperfs
|
||||
$(MAKE) -C arch/arm/v35arm64
|
||||
$(MAKE) plugins
|
||||
|
||||
SDB_PATH=../../../shlr/sdb
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include "mybfd.h"
|
||||
#include "disas-asm.h"
|
||||
// #include "disassemble.h"
|
||||
#include "../../arm/gnu/floatformat.h"
|
||||
#include "../../../arch/p/arm/gnu/floatformat.h"
|
||||
#include "libiberty.h"
|
||||
#include "opintl.h"
|
||||
// #include "cpu-m68k.h"
|
||||
|
@ -8,16 +8,13 @@ r_asm_sources = [
|
||||
'binutils_as.c',
|
||||
join_paths('p','asm_null.c'),
|
||||
join_paths('p','asm_arm_as.c'),
|
||||
join_paths('p','asm_arm.c'),
|
||||
#join_paths('p','asm_arm_winedbg.c'),
|
||||
#join_paths('p','asm_gas.c'),
|
||||
'arch/arm/gnu/floatformat.c',
|
||||
'../arch/p/arm/gnu/floatformat.c',
|
||||
join_paths('p','asm_ppc_as.c'),
|
||||
join_paths('p','asm_x86_as.c'),
|
||||
join_paths('p','asm_x86_nasm.c'),
|
||||
# join_paths('p','asm_z80.c'),
|
||||
join_paths('arch','arm','armass.c'),
|
||||
join_paths('arch','arm','armass64.c'),
|
||||
#join_paths('arch','arm','winedbg','be_arm.c'),
|
||||
join_paths('arch','avr','avr_disasm.c'),
|
||||
join_paths('arch','avr','format.c'),
|
||||
|
@ -1,22 +0,0 @@
|
||||
# capstone
|
||||
|
||||
OBJ_ARMCS=asm_arm.o
|
||||
OBJ_ARMCS+=../arch/arm/armass.o
|
||||
OBJ_ARMCS+=../arch/arm/armass64.o
|
||||
# OBJ_ARMCS+=../arch/arm/gnu/floatformat.o
|
||||
|
||||
include p/capstone.mk
|
||||
|
||||
#SHARED2_ARMCS=$(addprefix ../,${SHARED_ARMCS})
|
||||
|
||||
STATIC_OBJ+=${OBJ_ARMCS}
|
||||
SHARED_OBJ+=${SHARED_ARMCS}
|
||||
TARGET_ARMCS=asm_arm.${EXT_SO}
|
||||
|
||||
ifeq ($(WITHPIC),1)
|
||||
ALL_TARGETS+=${TARGET_ARMCS}
|
||||
|
||||
${TARGET_ARMCS}: ${OBJ_ARMCS}
|
||||
${CC} $(call libname,asm_arm) ${LDFLAGS} ${CFLAGS} ${CS_CFLAGS} \
|
||||
-o ${TARGET_ARMCS} ${OBJ_ARMCS} ${CS_LDFLAGS}
|
||||
endif
|
@ -8,7 +8,7 @@ R2DEPS=r_util r_io r_socket r_magic r_syscall r_cons r_crypto r_fs
|
||||
|
||||
pre: $(LIBSO) $(LIBAR)
|
||||
$(MAKE) -C p
|
||||
$(MAKE) -C d
|
||||
-$(MAKE) -j4 -C d
|
||||
|
||||
CFLAGS+=-DR2_PLUGIN_INCORE -Iformat -Imangling
|
||||
|
||||
|
@ -27,7 +27,7 @@ DLLS+=setup4 setupx shell sound spooler storage sysclass sysdetmg
|
||||
DLLS+=sysdm sysedit system systhunk tapi tapiaddr
|
||||
DLLS+=toolhelp typelib umdm16 user ver whlp16t win32s16
|
||||
DLLS+=win87em winaspi winnet16 winoldap winsock winspl16 wpsapd wpsuni
|
||||
DLLS+=wpsunire wsasrv
|
||||
# XXX DLLS+=wpsunire wsasrv
|
||||
DLL_SDB=$(addsuffix .sdb,$(addprefix dll/,$(DLLS)))
|
||||
|
||||
all: $(DLL_SDB)
|
||||
@ -57,7 +57,7 @@ symstall install-symlink:
|
||||
done
|
||||
|
||||
$(DLL_SDB):
|
||||
$(SDB) $@ = < $@.txt
|
||||
-$(SDB) $@ = < $@.txt
|
||||
|
||||
uninstall:
|
||||
rm -rf "$P"
|
||||
|
@ -257,6 +257,7 @@ extern RArchPlugin r_arch_plugin_rsp;
|
||||
extern RArchPlugin r_arch_plugin_riscv;
|
||||
extern RArchPlugin r_arch_plugin_x86_nz;
|
||||
extern RArchPlugin r_arch_plugin_any_as;
|
||||
extern RArchPlugin r_arch_plugin_arm;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ asm_plugins = [ 'null' ]
|
||||
anal_plugins = [ 'null' ]
|
||||
arch_plugins = [ 'null',
|
||||
'sh',
|
||||
'arm',
|
||||
'jdh8',
|
||||
'riscv',
|
||||
'i4004',
|
||||
@ -69,8 +70,8 @@ if not no_user_plugins
|
||||
io_plugins += [ 'r2web' ]
|
||||
endif
|
||||
if user_plugins.contains('arm')
|
||||
asm_plugins += [ 'arm' ]
|
||||
anal_plugins += [ 'arm_cs' ]
|
||||
arch_plugins += [ 'arm' ]
|
||||
bp_plugins += [ 'arm' ]
|
||||
parse_plugins += [ 'arm_pseudo' ]
|
||||
endif
|
||||
@ -123,7 +124,6 @@ if no_user_plugins
|
||||
|
||||
asm_plugins += [
|
||||
'arm_as',
|
||||
'arm',
|
||||
'ppc_as',
|
||||
'x86_as',
|
||||
'x86_nasm',
|
||||
|
Loading…
Reference in New Issue
Block a user