Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dynamic: x86_64: Runtime dynamic instrumentation #1698

Draft
wants to merge 30 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b0557dd
dynamic: Load dynamic info only once
clementguidi Apr 10, 2023
e65ea2f
dynamic: Initialize size filter only once
clementguidi Apr 10, 2023
b81a6fa
dynamic: arch: Initialize disassembly engine once
clementguidi Apr 10, 2023
9a1c695
dynamic: Discard the pattern list after update
clementguidi Apr 10, 2023
38b823b
dynamic: Refactor 'mcount_dynamic_update'
clementguidi Apr 10, 2023
faefcfa
dynamic: Streamline trampoline life cycle
clementguidi Mar 7, 2023
eb8e4df
dynamic: x86_64: Skip already patched functions
clementguidi Mar 8, 2023
03052c9
uftrace: Don't patch all functions by default
clementguidi Mar 10, 2023
417dfd0
mcount: Don't unpatch unmatched functions
clementguidi Mar 21, 2023
ad01830
dynamic: Refactor 'match_pattern_list'
clementguidi Apr 10, 2023
8725dbd
configure: Check for membarrier support
clementguidi Mar 10, 2023
ea149d6
utils: Implement syscall wrappers for glibc < 2.30
clementguidi Apr 3, 2023
25a8cea
utils: Define signal related functions
clementguidi Apr 4, 2023
45fc1f6
mcount: Init arch-specific dynamic structures
clementguidi Apr 4, 2023
ddf6420
x86_64: dynamic: Refactor 'get_target_address'
clementguidi Apr 4, 2023
1a572ae
x86_64: dynamic: Refactor 'patch_code'
clementguidi Apr 4, 2023
52a0113
x86_64: dynamic: Protect patch zone with trap
clementguidi Apr 4, 2023
5525472
x86_64: dynamic: Synchronize cores when patching
clementguidi Apr 4, 2023
c8070e6
x86_64: dynamic: Move threads out of patching zone
clementguidi Apr 4, 2023
94fed36
x86_64: dynamic: Comment patching process
clementguidi Apr 4, 2023
9b29fab
dynamic: Batch function patching process
clementguidi Apr 10, 2023
e076460
dynamic: x86_64: Factor out 'check_endbr64'
clementguidi Apr 10, 2023
77d4a6e
dynamic: x86_64: Full-dynamic runtime unpatching
clementguidi Mar 10, 2023
c97f295
dynamic: Batch function unpatching process
clementguidi Apr 10, 2023
05a4a04
mcount: Store filter settings as global variable
clementguidi Apr 12, 2023
606e5d7
mcount: Set match pattern type at runtime
clementguidi Feb 13, 2023
c47c117
uftrace: Apply dynamic (un)patching at runtime
clementguidi Mar 7, 2023
9c8977a
mcount: Use flag to indicate if target is running
clementguidi Apr 10, 2023
4f8b531
dynamic: x86_64: Use soft patching in cold targets
clementguidi Apr 10, 2023
d146f90
dynamic: Collect and display dynamic stats
clementguidi May 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 10 additions & 1 deletion arch/aarch64/mcount-insn.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,19 @@
#include <capstone/capstone.h>
#include <capstone/platform.h>

/**
* mcount_disasm_init - initialize the capstone engine once
* @disasm - mcount disassembly engine
*/
void mcount_disasm_init(struct mcount_disasm_engine *disasm)
{
if (disasm->engine)
return;

pr_dbg2("initialize disassembly engine\n");

if (cs_open(CS_ARCH_ARM64, CS_MODE_ARM, &disasm->engine) != CS_ERR_OK) {
pr_dbg("failed to init Capstone disasm engine\n");
pr_dbg("failed to init capstone disasm engine\n");
return;
}

Expand Down