rizin/librz/include/rz_platform.h
Dean 59b38e6efa
Add /*<type>*/ comments everywhere (#2986)
Adds /*<type>*/ comments and a linter check from rz-bindgen to enforce
their existence and consistency

Also includes the following fixes made when adding the annotations:
* removed unused intern_table arguments in pyc_dis.c, pyc_dis.h, asm_pyc.c
* removed unused classes argument from place_nodes in agraph.c
* removed unused recurse and recurse_bb functions in canalysis.c
* removed unused vars field from RzPrint struct
* removed unused RzAnalysisType* structs from rz_analysis.h
* removed unused list field from RzEgg struct
* fixed bug in bp_plugin.c where duplication-checking logic iterates over the wrong list
* removed unused q_regs field from RzDebug struct
* removed unused backtrace field from RzDebugPlugin struct
* removed unused classes_list field from RzBinNXOObj struct
* removed unused methods_list and classes_list fields from RzBinZimgObj struct
2022-09-11 13:04:53 +08:00

69 lines
2.4 KiB
C

// SPDX-FileCopyrightText: 2021-2022 RizinOrg <info@rizin.re>
// SPDX-License-Identifier: LGPL-3.0-only
#ifndef RZ_PLATFORM_H
#define RZ_PLATFORM_H
#include <rz_config.h>
#include <rz_flag.h>
#include <rz_il.h>
#include <sdb.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct rz_platform_profile_t {
ut64 rom_size;
ut64 ram_size;
ut64 rom_address;
ut64 eeprom_size;
ut64 io_size;
ut64 sram_start;
ut64 sram_size;
ut64 pc;
ut64 page_size;
ut64 interrupt_vector_size;
HtUP /*<ut64 , char *>*/ *registers_mmio;
HtUP /*<ut64 , char *>*/ *registers_extended;
} RzPlatformProfile;
typedef struct rz_platform_target_t {
char *cpu;
char *arch;
RzPlatformProfile *profile;
} RzPlatformTarget;
typedef struct rz_platform_item_t {
char *name;
char *comment;
} RzPlatformItem;
typedef struct rz_platform_target_index_t {
HtUP /*<ut64 , RzPlatformItem>*/ *platforms;
char *path; ///< Path used to load the platforms, used to avoid reloading
} RzPlatformTargetIndex;
RZ_API RZ_OWN RzPlatformProfile *rz_platform_profile_new();
RZ_API RZ_OWN RzPlatformTarget *rz_platform_target_new();
RZ_API void rz_platform_profile_free(RzPlatformProfile *profile);
RZ_API void rz_platform_target_free(RzPlatformTarget *target);
RZ_API bool rz_platform_profiles_init(RzPlatformTarget *c, const char *cpu, const char *arch, const char *cpus_dir);
RZ_API void rz_platform_profile_add_flag_every_io(RzPlatformProfile *profile, RzFlag *flags);
RZ_API bool rz_platform_load_profile_sdb(RzPlatformTarget *t, const char *path);
RZ_API RZ_BORROW const char *rz_platform_profile_resolve_mmio(RZ_NONNULL RzPlatformProfile *profile, ut64 address);
RZ_API RZ_BORROW const char *rz_platform_profile_resolve_extended_register(RZ_NONNULL RzPlatformProfile *profile, ut64 address);
RZ_API RZ_OWN RzPlatformItem *rz_platform_item_new(RZ_NULLABLE const char *name);
RZ_API RZ_OWN RzPlatformTargetIndex *rz_platform_target_index_new();
RZ_API void rz_platform_target_index_free(RzPlatformTargetIndex *target);
RZ_API void rz_platform_item_free(RzPlatformItem *item);
RZ_API bool rz_platform_target_index_load_sdb(RZ_NONNULL RzPlatformTargetIndex *t, RZ_NONNULL const char *path);
RZ_API bool rz_platform_target_index_init(RzPlatformTargetIndex *t, RZ_NONNULL const char *arch, RZ_NONNULL const char *cpu,
const char *platform, RZ_NONNULL const char *platforms_dir);
#ifdef __cplusplus
}
#endif
#endif /* RZ_PLATFORM_H */