librz/arch/c166: remove unnecessary use of assert macroses (#6345)

This commit is contained in:
SSharshunov 2026-05-15 20:53:27 +05:00 committed by GitHub
parent e8708c62d5
commit 5256726d00
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 94 additions and 67 deletions

View file

@ -1500,7 +1500,7 @@ end:
* \param len Length of buffer
* \return Instruction byte size, 2 or 4 or -1 on error
*/
RZ_IPI st32 c166_decode_command(RZ_NONNULL C166State *state, RZ_NONNULL C166_Inst *instr, const ut8 *bytes, st32 len) {
RZ_IPI st32 c166_decode_command(RZ_NONNULL C166State *state, RZ_NONNULL C166_Inst *instr, RZ_NONNULL const ut8 *bytes, st32 len) {
rz_return_val_if_fail(state && instr && bytes, -1);
if (len < 2)
return -1;

View file

@ -6,6 +6,7 @@
#ifndef C166_DISAS_H
#define C166_DISAS_H
#include <rz_vector.h>
#include <rz_types.h>
#define C166_INSTR_MAXLEN (16 + 16) // ?
@ -748,7 +749,7 @@ typedef enum {
typedef struct {
bool esfr; ///< Extended register sequence active
C166ExtMode mode; ///< Extended page/seq mode
ut8 i; ///< Number of unstructions remaining until state exits
ut8 i; ///< Number of unstructions remaining until state exits
ut16 value; ///< Value of ext
} C166ExtState;
@ -785,6 +786,6 @@ static inline ut16 get_operand(const C166_Inst *i, const ut8 index) {
return get_byte(i, index);
}
RZ_IPI st32 c166_decode_command(RZ_NONNULL C166State *state, RZ_NONNULL C166_Inst *instr, const ut8 *bytes, st32 len);
RZ_IPI st32 c166_decode_command(RZ_NONNULL C166State *state, RZ_NONNULL C166_Inst *instr, RZ_NONNULL const ut8 *bytes, st32 len);
static bool check_unused_opcode(ut8 opcode);
#endif /* C166_DISAS_H */

View file

@ -9,6 +9,31 @@
#include <string.h>
#include "omf/omf.h"
bool set_reg_val2(RzReg *areg, const char *name, const ut16 value) {
RzRegItem *r = rz_reg_get(areg, name, RZ_REG_TYPE_GPR);
return rz_reg_set_value(areg, r, (ut64)value);
}
ut64 get_flg_val(RzReg *areg, const char *name) {
const ut64 value = rz_reg_getv(areg, name);
return value;
}
ut64 get_reg_val2(RzReg *areg, const char *name) {
RzRegItem *reg = rz_reg_get(areg, name, RZ_REG_TYPE_GPR);
const ut64 value = rz_reg_get_value(areg, reg);
return value;
}
#define SET_CPUCON1(val) set_reg_val2(areg, CPUCON1_NAME, val)
#define SET_SP(val) set_reg_val2(areg, "SP", val)
#define SET_CSP(val) set_reg_val2(areg, "CSP", val)
#define SET_SGTDIS(val) set_reg_val2(areg, CPUCON1_NAME, (CPUCON1_RESET_VALUE | (val << 3)))
#define GET_SGTDIS get_flg_val(areg, "SGTDIS")
#define GET_CPUCON1 get_reg_val2(areg, "CPUCON1")
#define GET_SP get_reg_val2(areg, "SP")
static OMF_components *get_component_by_ti(const rz_bin_omf166_obj *omf_obj, ut16 ti) {
bool found = false;
OMF_type *type = ht_up_find(omf_obj->ht_types, ti, &found);
@ -21,7 +46,9 @@ static OMF_components *get_component_by_ti(const rz_bin_omf166_obj *omf_obj, ut1
static bool is_final_type(const rz_bin_omf166_obj *obj, ut16 ti_index) {
bool found = false;
const OMF_type *type = ht_up_find(obj->ht_types, ti_index, &found);
rz_return_val_if_fail(found, false);
if (!found) {
return false;
}
return (type->descr_type == FINAL_TYPE) ? true : false;
}
@ -30,7 +57,9 @@ static inline RzType *TYPE_TI(rz_bin_omf166_obj *omf_obj, ut16 ti) {
const RzTypeDB *typedb = omf_obj->typedb;
const OMF_type *type = ht_up_find(omf_obj->ht_types, ti, &found);
rz_return_val_if_fail(found, rz_type_identifier_of_base_type_str(typedb, "unknown_t"));
if (!found) {
return rz_type_identifier_of_base_type_str(typedb, "unknown_t");
}
if (found && type->descr_type == ARRAY_DESCRIPTOR) {
RzType *subtype = TYPE_TI(omf_obj, type->descriptor.array.ti);
const ut64 count = (type->descriptor.array.dimsz == 0xFFFFFFFF) ? 0 : type->descriptor.array.dimsz;
@ -72,6 +101,7 @@ static RzBaseType *create_new_primitive_type(const RzTypeDB *typedb, const char
const bool result = rz_type_db_save_base_type(typedb, bt);
if (!result) {
rz_type_base_type_free(bt);
RZ_LOG_WARN("Not found: `%s`\n", name);
return NULL;
}
return bt;
@ -134,7 +164,9 @@ static bool types_cb(void *user, const ut64 k, const void *v) {
newtype->callable = cal;
cal->ret = TYPE_TI(omf_obj, type->descriptor.function.rtype_ti);
cal->args = rz_pvector_new((RzPVectorFree)rz_type_callable_arg_free);
rz_return_val_if_fail(cal->args, false);
if (!cal->args) {
return false;
}
const OMF_components *components = get_component_by_ti(omf_obj, type->descriptor.function.parmlist_ti);
if (components) {
@ -157,32 +189,10 @@ static bool types_cb(void *user, const ut64 k, const void *v) {
return true;
}
bool set_reg_val2(RzReg *areg, const char *name, const ut16 value) {
RzRegItem *r = rz_reg_get(areg, name, RZ_REG_TYPE_GPR);
return rz_reg_set_value(areg, r, (ut64)value);
}
ut64 get_flg_val(RzReg *areg, const char *name) {
const ut64 value = rz_reg_getv(areg, name);
return value;
}
ut64 get_reg_val2(RzReg *areg, const char *name) {
RzRegItem *reg = rz_reg_get(areg, name, RZ_REG_TYPE_GPR);
const ut64 value = rz_reg_get_value(areg, reg);
return value;
}
#define SET_CPUCON1(val) rz_return_val_if_fail(set_reg_val2(areg, CPUCON1_NAME, val), false)
#define SET_SP(val) rz_return_val_if_fail(set_reg_val2(areg, "SP", val), false)
#define SET_CSP(val) rz_return_val_if_fail(set_reg_val2(areg, "CSP", val), false)
#define SET_SGTDIS(val) rz_return_val_if_fail(set_reg_val2(areg, CPUCON1_NAME, (CPUCON1_RESET_VALUE | (val << 3))), false)
#define GET_SGTDIS get_flg_val(areg, "SGTDIS")
#define GET_CPUCON1 get_reg_val2(areg, "CPUCON1")
#define GET_SP get_reg_val2(areg, "SP")
RZ_API bool rz_core_bin_apply_omf_debug(const RzCore *core, const RzBinFile *binfile) {
rz_return_val_if_fail(core, false);
if (!core || !binfile) {
return false;
}
const char *arch = rz_config_get(core->config, "asm.arch");
if (!strstr(arch, "c166")) {
@ -200,12 +210,9 @@ RZ_API bool rz_core_bin_apply_omf_debug(const RzCore *core, const RzBinFile *bin
if (RZ_STR_NE(info->rclass, "OMF166")) {
return false;
}
rz_return_val_if_fail(binfile, false);
RzReg *areg = rz_analysis_get_reg(core->analysis);
SET_SP(SP_RESET_VALUE);
rz_bin_omf166_obj *omf_obj = (rz_bin_omf166_obj *)binfile->o->bin_obj;
#ifdef RZ_BUILD_DEBUG
@ -217,7 +224,7 @@ RZ_API bool rz_core_bin_apply_omf_debug(const RzCore *core, const RzBinFile *bin
const ut8 mm = memory_model_type(omf_obj->modinfo);
if (mm == OMF_MEMORY_MODEL_TINY && !(omf_obj->modinfo & 0x01)) {
eprintf("Wrong memory model type, segmentation cannot be enabled, if mm is TINY\n");
RZ_LOG_WARN("Wrong memory model type, segmentation cannot be enabled, if mm is TINY\n");
return false;
}

View file

@ -380,7 +380,7 @@ static void c166_op_jmps_seg_caddr(RzAnalysis *analysis, RzAnalysisOp *op, const
const ut8 SGTDIS = (ut8)GET_A_SGTDIS;
if (SGTDIS == 0) {
if (!SET_A_CSP((ut64)seg)) {
eprintf("Error setting reg value\n");
RZ_LOG_WARN("Error setting reg value\n");
}
}
c166_set_jump_target_seg_caddr(op, seg, caddr);
@ -502,7 +502,7 @@ static void c166_op_call_seg_caddr(RzAnalysis *analysis, RzAnalysisOp *op, const
const ut8 SGTDIS = (ut8)GET_A_SGTDIS;
if (SGTDIS == 0) {
if (!SET_A_CSP((ut64)seg)) {
eprintf("Error setting reg value\n");
RZ_LOG_WARN("Error setting reg value\n");
}
}
SET_A_IP((ut64)caddr);
@ -1299,7 +1299,7 @@ static void c166_op_set_type(RZ_NONNULL C166_Inst *instr, RzAnalysis *analysis,
case C166_CoSTORE_B3:
break;
default:
printf("c166_op_set_type 0x%02x\n", instr->id);
RZ_LOG_DEBUG("c166_op_set_type 0x%02x\n", instr->id);
rz_warn_if_reached();
}
}

View file

@ -332,7 +332,9 @@ static _RzAnalysisOpType c166_analysis_op_type_by_opcode(const ut8 opcode) {
* to perform the actual disassembly.
*/
static st32 disassemble(const RzAsm *a, RzAsmOp *op, const ut8 *buf, st32 len) {
rz_return_val_if_fail(a && op && buf, -1);
if (!a || !op || !buf) {
return -1;
}
if (len < 2) {
rz_asm_op_setf_asm(op, FMT_WORD, buf[0], 0x00);
@ -373,9 +375,10 @@ static st32 disassemble(const RzAsm *a, RzAsmOp *op, const ut8 *buf, st32 len) {
}
}
op->asm_toks = rz_asm_tokenize_asm_regex(&op->buf_asm, state->token_patterns);
rz_return_val_if_fail(op->asm_toks, op->size);
op->asm_toks->op_type = c166_analysis_op_type_by_opcode(inst.id); // ???
if (!op->asm_toks) {
return op->size;
}
op->asm_toks->op_type = c166_analysis_op_type_by_opcode(inst.id);
return op->size;
}
@ -450,7 +453,9 @@ static bool c16x_init(void **user) {
}
static bool c16x_fini(void *user) {
rz_return_val_if_fail(user, false);
if (!user) {
return false;
}
C166State *state = (C166State *)user;
rz_pvector_free(state->token_patterns);
free(state);

View file

@ -9,11 +9,8 @@
#include <rz_util.h>
#include <rz_types.h>
#include <rz_bin.h>
#include "omf_specs.h"
#define BOOL_STR(x) x ? "true" : "false"
#define FINAL_TYPE 0x00
/**
* <b>COMPONENT-LIST Descriptor</b><br>

View file

@ -31,7 +31,9 @@ static bool check_buffer(RzBuffer *buf) {
rz_bin_c166_obj *rz_bin_format_c166_load(const ut8 *buf, ut64 size) {
rz_bin_c166_obj *ret = RZ_NEW0(rz_bin_c166_obj);
rz_return_val_if_fail(ret, NULL);
if (!ret) {
return NULL;
}
const ut8 c = rz_read_le8(buf + 1);
ret->base_addr = c << 16 | 0x000000;
return ret;
@ -40,9 +42,13 @@ rz_bin_c166_obj *rz_bin_format_c166_load(const ut8 *buf, ut64 size) {
static bool load_buffer(RzBinFile *bf, RzBinObject *obj, RzBuffer *b, Sdb *sdb) {
ut64 size;
const ut8 *buf = rz_buf_data(b, &size);
rz_return_val_if_fail(buf, false);
if (!buf) {
return false;
}
obj->bin_obj = rz_bin_format_c166_load(buf, size);
rz_return_val_if_fail(obj->bin_obj, false);
if (!obj->bin_obj) {
return false;
}
return true;
}

View file

@ -32,10 +32,14 @@ static bool _is_any_n(const char *str, size_t n, ...) {
static bool load_buffer(RzBinFile *bf, RzBinObject *obj, RzBuffer *b, Sdb *sdb) {
ut64 size;
const ut8 *buf = rz_buf_data(b, &size);
rz_return_val_if_fail(buf, false);
if (!buf) {
return false;
}
obj->bin_obj = rz_bin_format_omf166_load(buf, size);
rz_return_val_if_fail(obj->bin_obj, false);
if (!obj->bin_obj) {
return false;
}
return true;
}
@ -51,7 +55,9 @@ static void destroy(RzBinFile *bf) {
}
rz_bin_omf166_obj *omf_obj = (rz_bin_omf166_obj *)bf->o->bin_obj;
rz_return_val_if_fail(omf_obj, (void)NULL);
if (omf_obj) {
return;
}
ht_up_free(omf_obj->ht_types);
rz_bin_format_omf166_fini(omf_obj);
}
@ -88,7 +94,6 @@ static bool check_buffer(RzBuffer *b) {
rz_buf_read_at(b, 0, sbuf, sizeof(sbuf));
return rz_bin_checksum_omf_ok(sbuf, sizeof(sbuf));
}
rz_return_val_if_fail(buf, false);
return rz_bin_checksum_omf_ok(buf, length);
}
@ -198,18 +203,20 @@ static int offset_cmp(const void *a, const void *b, void *user) {
}
static RzPVector /*<RzBinSymbol *>*/ *symbols(RzBinFile *bf) {
rz_return_val_if_fail(bf && bf->o, NULL);
if (!bf || !bf->o) {
return NULL;
}
const rz_bin_omf166_obj *obj = (rz_bin_omf166_obj *)bf->o->bin_obj;
rz_return_val_if_fail(obj, NULL);
if (!obj) {
return NULL;
}
if (!rz_pvector_len(obj->symbols_vec)) {
return NULL;
}
RzPVector *ret = rz_pvector_new((RzPVectorFree)rz_bin_symbol_free);
rz_return_val_if_fail(obj, ret);
rz_pvector_sort(obj->symbols_vec, offset_cmp, NULL);
void **it;
rz_pvector_foreach (obj->symbols_vec, it) {
@ -283,11 +290,13 @@ static RzPVector /*<RzBinSymbol *>*/ *symbols(RzBinFile *bf) {
}
static RzStructuredData *omf166_structure(RzBinFile *bf) {
rz_return_val_if_fail(bf, NULL);
const RzBinObject *o = bf->o;
rz_return_val_if_fail(o, NULL);
const rz_bin_omf166_obj *obj = (rz_bin_omf166_obj *)o->bin_obj;
rz_return_val_if_fail(obj, NULL);
if (!bf || !bf->o) {
return NULL;
}
const rz_bin_omf166_obj *obj = (rz_bin_omf166_obj *)bf->o->bin_obj;
if (!obj) {
return NULL;
}
RzStructuredData *info = rz_structured_data_new_map();
if (!info) {
@ -343,11 +352,13 @@ static RzStructuredData *omf166_structure(RzBinFile *bf) {
}
static RzBinInfo *info(RzBinFile *bf) {
rz_return_val_if_fail(bf, NULL);
const RzBinObject *o = bf->o;
rz_return_val_if_fail(o, NULL);
const rz_bin_omf166_obj *obj = (rz_bin_omf166_obj *)o->bin_obj;
rz_return_val_if_fail(obj, NULL);
if (!bf || !bf->o) {
return NULL;
}
const rz_bin_omf166_obj *obj = (rz_bin_omf166_obj *)bf->o->bin_obj;
if (!obj) {
return NULL;
}
RzBinInfo *ret;
if (!((ret = RZ_NEW0(RzBinInfo)))) {