- Introduce the following new methods: * `rz_analysis_similarity_basic_block()` * `rz_analysis_similarity_function()` * `rz_analysis_similarity_basic_block_2()` * `rz_analysis_similarity_function_2()` * `rz_analysis_match_basic_blocks()` * `rz_analysis_match_functions()` * `rz_analysis_match_basic_blocks_2()` * `rz_analysis_match_functions_2()` - Remove `RzAnalysisDiff` and its usages - Remove `librz/analysis/diff.c` entirely to and adds `librz/analysis/similarity.c` - Remove a lot of unused structures and simplified the code by a lot - Fix typo in levenshtein - Remove `librz/core/gdiff.c` and `gdiff` functions since they were unused or only used in rz-diff - Remove `difftype` (or "color") from `RzANode` which lead to dead code - Decrease serialized data in projects. - Add `RzAnalysisVarKind` and `RzAnalysisVarType` and replaces all the hardcoded values - Remove command `agd` - Remove all `rz_core_gdiff` usages from `rz_core.h` - Refactor `rz_analysis_var_list` and `rz_analysis_var_count` due unused argument (`RzAnalysis` was not used) - Add new method `rz_analysis_var_count_total` to simplify some usages - Remove `rz_core_graph_diff` - Add `typedef RzAnalysisFcnType` on `enum``used for function types - Remove unused `RZ_ANALYSIS_FCN_VARKIND_LOCAL` - Remove from `RzAnalysisFunction` the following variables: * `fingerprint` * `fingerprint_size` * `diff` * `diff_ops` * `diff_thbb` * `diff_thfcn` - Remove from `RzAnalysisBlock` the following variables: * `fingerprint` * `diff` - Remove `RZ_ANALYSIS_THRESHOLDBB` and `RZ_ANALYSIS_THRESHOLDFCN` - Remove the following callbacks from `RzAnalysisPlugin` * `RzAnalysisDiffBBCallback` * `RzAnalysisDiffFcnCallback` * `RzAnalysisDiffEvalCallback` - Fix fancy table columns/rows when a color string is in a cell - Bumped project version to 9
63 lines
2.6 KiB
C
63 lines
2.6 KiB
C
// SPDX-FileCopyrightText: 2020-2021 Florian Märkl <info@florianmaerkl.de>
|
|
// SPDX-License-Identifier: LGPL-3.0-only
|
|
|
|
#ifndef RZ_PROJECT_H
|
|
#define RZ_PROJECT_H
|
|
|
|
#include <rz_util/rz_serialize.h>
|
|
#include <rz_core.h>
|
|
#include <sdb.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define RZ_PROJECT_VERSION 9
|
|
|
|
typedef Sdb RzProject;
|
|
|
|
typedef enum rz_project_err {
|
|
RZ_PROJECT_ERR_SUCCESS,
|
|
RZ_PROJECT_ERR_FILE,
|
|
RZ_PROJECT_ERR_INVALID_TYPE,
|
|
RZ_PROJECT_ERR_INVALID_VERSION,
|
|
RZ_PROJECT_ERR_NEWER_VERSION,
|
|
RZ_PROJECT_ERR_INVALID_CONTENTS,
|
|
RZ_PROJECT_ERR_MIGRATION_FAILED,
|
|
RZ_PROJECT_ERR_COMPRESSION_FAILED,
|
|
RZ_PROJECT_ERR_UNKNOWN
|
|
} RzProjectErr;
|
|
|
|
RZ_API RZ_NONNULL const char *rz_project_err_message(RzProjectErr err);
|
|
RZ_API RzProjectErr rz_project_save(RzCore *core, RzProject *prj, const char *file);
|
|
RZ_API RzProjectErr rz_project_save_file(RzCore *core, const char *file, bool compress);
|
|
RZ_API RzProject *rz_project_load_file_raw(const char *file);
|
|
RZ_API void rz_project_free(RzProject *prj);
|
|
|
|
/**
|
|
* @param load_bin_io whether to also load the underlying RIO and RBin state from the project. If false, the current state will be kept and the project loaded on top.
|
|
* @param file filename of the project that db comes from. This is only used to re-locate the loaded RIO descs, the project file itself is not touched by this function.
|
|
*/
|
|
RZ_API RzProjectErr rz_project_load(RzCore *core, RzProject *prj, bool load_bin_io, RZ_NULLABLE const char *file, RzSerializeResultInfo *res);
|
|
|
|
/**
|
|
* @param load_bin_io whether to also load the underlying RIO and RBin state from the project. If false, the current state will be kept and the project loaded on top.
|
|
* @param file filename of the project to load from
|
|
*/
|
|
RZ_API RzProjectErr rz_project_load_file(RzCore *core, const char *file, bool load_bin_io, RzSerializeResultInfo *res);
|
|
|
|
RZ_API bool rz_project_migrate_v1_v2(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v2_v3(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v3_v4(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v4_v5(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v5_v6(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v6_v7(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v7_v8(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate_v8_v9(RzProject *prj, RzSerializeResultInfo *res);
|
|
RZ_API bool rz_project_migrate(RzProject *prj, unsigned long version, RzSerializeResultInfo *res);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|