xref: /kernel/linux/linux-5.10/tools/objtool/cfi.h (revision 8c2ecf20)
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright (C) 2015-2017 Josh Poimboeuf <jpoimboe@redhat.com>
4 */
5
6#ifndef _OBJTOOL_CFI_H
7#define _OBJTOOL_CFI_H
8
9#include "cfi_regs.h"
10#include <linux/list.h>
11
12#define CFI_UNDEFINED		-1
13#define CFI_CFA			-2
14#define CFI_SP_INDIRECT		-3
15#define CFI_BP_INDIRECT		-4
16
17struct cfi_reg {
18	int base;
19	int offset;
20};
21
22struct cfi_init_state {
23	struct cfi_reg regs[CFI_NUM_REGS];
24	struct cfi_reg cfa;
25};
26
27struct cfi_state {
28	struct hlist_node hash; /* must be first, cficmp() */
29	struct cfi_reg regs[CFI_NUM_REGS];
30	struct cfi_reg vals[CFI_NUM_REGS];
31	struct cfi_reg cfa;
32	int stack_size;
33	int drap_reg, drap_offset;
34	unsigned char type;
35	bool bp_scratch;
36	bool drap;
37	bool end;
38};
39
40#endif /* _OBJTOOL_CFI_H */
41