arch_uprobe
void (*prehandler)(struct arch_uprobe *auprobe,
void (*posthandler)(struct arch_uprobe *auprobe,
struct arch_uprobe *auprobe = container_of(asi, struct arch_uprobe,
struct arch_uprobe *auprobe = container_of(asi, struct arch_uprobe,
struct arch_uprobe *auprobe = container_of(asi, struct arch_uprobe,
static void uprobe_set_pc(struct arch_uprobe *auprobe,
static void uprobe_unset_pc(struct arch_uprobe *auprobe,
static void uprobe_aluwrite_pc(struct arch_uprobe *auprobe,
static void uprobe_write_pc(struct arch_uprobe *auprobe,
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int set_swbp(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
bool arch_uprobe_ignore(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe,
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *aup,
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *aup,
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe,
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm,
static void handle_insn_ril(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe,
static int swbp_optimize(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
static int swbp_unoptimize(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
static bool should_optimize(struct arch_uprobe *auprobe)
int set_swbp(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
int set_orig_insn(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
static int __arch_uprobe_optimize(struct arch_uprobe *auprobe, struct mm_struct *mm,
void arch_uprobe_optimize(struct arch_uprobe *auprobe, unsigned long vaddr)
static void riprel_analyze(struct arch_uprobe *auprobe, struct insn *insn)
static void riprel_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
static void riprel_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool (*emulate)(struct arch_uprobe *, struct pt_regs *);
int (*pre_xol)(struct arch_uprobe *, struct pt_regs *);
int (*post_xol)(struct arch_uprobe *, struct pt_regs *);
void (*abort)(struct arch_uprobe *, struct pt_regs *);
static int default_pre_xol_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
static int default_post_xol_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
static void default_abort_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
static bool branch_is_call(struct arch_uprobe *auprobe)
static bool check_jmp_cond(struct arch_uprobe *auprobe, struct pt_regs *regs)
static bool branch_emulate_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
static bool push_emulate_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
static int branch_post_xol_op(struct arch_uprobe *auprobe, struct pt_regs *regs)
static void branch_clear_offset(struct arch_uprobe *auprobe, struct insn *insn)
static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
static int push_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, struct mm_struct *mm, unsigned long addr)
int arch_uprobe_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
int arch_uprobe_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
void arch_uprobe_abort_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
static bool __skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs)
struct arch_uprobe *auprobe;
static int uprobe_init_insn(struct arch_uprobe *auprobe, struct insn *insn, bool x86_64)
static void riprel_analyze(struct arch_uprobe *auprobe, struct insn *insn)
scratch_reg(struct arch_uprobe *auprobe, struct pt_regs *regs)
static void riprel_pre_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
static void riprel_post_xol(struct arch_uprobe *auprobe, struct pt_regs *regs)
static int int3_update(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
struct arch_uprobe *auprobe;
extern int set_swbp(struct arch_uprobe *aup, struct vm_area_struct *vma, unsigned long vaddr);
extern int set_orig_insn(struct arch_uprobe *aup, struct vm_area_struct *vma, unsigned long vaddr);
extern int uprobe_write_opcode(struct arch_uprobe *auprobe, struct vm_area_struct *vma, unsigned long vaddr, uprobe_opcode_t,
extern int uprobe_write(struct arch_uprobe *auprobe, struct vm_area_struct *vma, const unsigned long opcode_vaddr,
extern bool arch_uprobe_skip_sstep(struct arch_uprobe *aup, struct pt_regs *regs);
extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long addr);
extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *regs);
extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *regs);
extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs);
extern bool arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *regs);
extern void arch_uprobe_optimize(struct arch_uprobe *auprobe, unsigned long vaddr);
bool __weak arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *regs)
void __weak arch_uprobe_optimize(struct arch_uprobe *auprobe, unsigned long vaddr)
int uprobe_write_opcode(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
int uprobe_write(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
int __weak set_swbp(struct arch_uprobe *auprobe, struct vm_area_struct *vma,
int __weak set_orig_insn(struct arch_uprobe *auprobe,
struct arch_uprobe arch;