forked from Minki/linux
9842ceae9f
This patch adds support for uprobe on ARM64 architecture. Unit tests for following have been done so far and they have been found working 1. Step-able instructions, like sub, ldr, add etc. 2. Simulation-able like ret, cbnz, cbz etc. 3. uretprobe 4. Reject-able instructions like sev, wfe etc. 5. trapped and abort xol path 6. probe at unaligned user address. 7. longjump test cases Currently it does not support aarch32 instruction probing. Signed-off-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
37 lines
777 B
C
37 lines
777 B
C
/*
|
|
* Copyright (C) 2014-2016 Pratyush Anand <panand@redhat.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef _ASM_UPROBES_H
|
|
#define _ASM_UPROBES_H
|
|
|
|
#include <asm/debug-monitors.h>
|
|
#include <asm/insn.h>
|
|
#include <asm/probes.h>
|
|
|
|
#define MAX_UINSN_BYTES AARCH64_INSN_SIZE
|
|
|
|
#define UPROBE_SWBP_INSN BRK64_OPCODE_UPROBES
|
|
#define UPROBE_SWBP_INSN_SIZE AARCH64_INSN_SIZE
|
|
#define UPROBE_XOL_SLOT_BYTES MAX_UINSN_BYTES
|
|
|
|
typedef u32 uprobe_opcode_t;
|
|
|
|
struct arch_uprobe_task {
|
|
};
|
|
|
|
struct arch_uprobe {
|
|
union {
|
|
u8 insn[MAX_UINSN_BYTES];
|
|
u8 ixol[MAX_UINSN_BYTES];
|
|
};
|
|
struct arch_probe_insn api;
|
|
bool simulate;
|
|
};
|
|
|
|
#endif
|