#ifndef _CHECK_COMMON_H
#define _CHECK_COMMON_H
#include <stdlib.h>
#include <unistd.h>
#include <libctf.h>
#include <err.h>
#include <strings.h>
#include <sys/param.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
SKIP_CLANG = 1 << 0
} check_skip_t;
typedef struct check_number {
const char *cn_tname;
uint_t cn_kind;
uint_t cn_flags;
uint_t cn_offset;
uint_t cn_size;
check_skip_t cn_skips;
} check_number_t;
typedef struct check_symbol {
const char *cs_symbol;
const char *cs_type;
} check_symbol_t;
typedef struct check_descent {
const char *cd_tname;
uint_t cd_kind;
const char *cd_contents;
uint_t cd_nents;
} check_descent_t;
typedef struct check_descent_test {
const char *cdt_sym;
const check_descent_t *cdt_tests;
} check_descent_test_t;
typedef struct check_enum {
const char *ce_name;
int64_t ce_value;
} check_enum_t;
typedef struct check_enum_test {
const char *cet_type;
const check_enum_t *cet_tests;
} check_enum_test_t;
typedef struct check_member {
const char *cm_name;
const char *cm_type;
ulong_t cm_offset;
} check_member_t;
typedef struct check_member_test {
const char *cmt_type;
int cmt_kind;
size_t cmt_size;
const check_member_t *cmt_members;
check_skip_t cmt_skips;
} check_member_test_t;
typedef struct check_function_test {
const char *cft_name;
const char *cft_rtype;
uint_t cft_nargs;
uint_t cft_flags;
const char **cft_args;
} check_function_test_t;
typedef struct check_size_test {
const char *cst_name;
size_t cst_size;
} check_size_test_t;
extern boolean_t ctftest_check_numbers(ctf_file_t *, const check_number_t *);
extern boolean_t ctftest_check_symbols(ctf_file_t *, const check_symbol_t *);
extern boolean_t ctftest_check_descent(const char *, ctf_file_t *,
const check_descent_t *, boolean_t);
extern boolean_t ctftest_check_enum(const char *, ctf_file_t *,
const check_enum_t *);
extern boolean_t ctftest_check_members(const char *, ctf_file_t *, int, size_t,
const check_member_t *);
extern boolean_t ctftest_check_member_info(const char *, ctf_file_t *, int,
size_t, const check_member_t *);
extern boolean_t ctftest_check_function(const char *, ctf_file_t *,
const char *, uint_t, uint_t, const char **);
extern boolean_t ctftest_check_fptr(const char *, ctf_file_t *,
const char *, uint_t, uint_t, const char **);
extern boolean_t ctftest_check_size(const char *, ctf_file_t *, size_t);
extern boolean_t ctftest_duplicates(ctf_file_t *);
extern boolean_t ctftest_skip(check_skip_t);
#ifdef __cplusplus
}
#endif
#endif