forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
927 B
41 lines
927 B
/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|
/* |
|
* Copyright (C) 2015 Josh Poimboeuf <[email protected]> |
|
*/ |
|
|
|
#ifndef _SPECIAL_H |
|
#define _SPECIAL_H |
|
|
|
#include <stdbool.h> |
|
#include "check.h" |
|
#include "elf.h" |
|
|
|
#define C_JUMP_TABLE_SECTION ".rodata..c_jump_table" |
|
|
|
struct special_alt { |
|
struct list_head list; |
|
|
|
bool group; |
|
bool skip_orig; |
|
bool skip_alt; |
|
bool jump_or_nop; |
|
|
|
struct section *orig_sec; |
|
unsigned long orig_off; |
|
|
|
struct section *new_sec; |
|
unsigned long new_off; |
|
|
|
unsigned int orig_len, new_len; /* group only */ |
|
}; |
|
|
|
int special_get_alts(struct elf *elf, struct list_head *alts); |
|
|
|
void arch_handle_alternative(unsigned short feature, struct special_alt *alt); |
|
|
|
bool arch_support_alt_relocation(struct special_alt *special_alt, |
|
struct instruction *insn, |
|
struct reloc *reloc); |
|
struct reloc *arch_find_switch_table(struct objtool_file *file, |
|
struct instruction *insn); |
|
#endif /* _SPECIAL_H */
|
|
|