/
usr
/
share
/
systemtap
/
runtime
/
/usr/share/systemtap/runtime
mkdir
upload
Name
Size
Mode
Actions
dyninst/
-
0755
rm
linux/
-
0755
rm
softfloat/
-
0755
rm
transport/
-
0755
rm
unwind/
-
0755
rm
addr-map.c
523
0644
edit
dl
rm
addr-map.h
1156
0644
edit
dl
rm
alloc.c
498
0644
edit
dl
rm
arith.c
483
0644
edit
dl
rm
common_probe_context.h
6576
0644
edit
dl
rm
common_session_state.h
415
0644
edit
dl
rm
compatdefs.h
3682
0644
edit
dl
rm
copy.c
585
0644
edit
dl
rm
debug.h
485
0644
edit
dl
rm
io.c
508
0644
edit
dl
rm
k_syms.h
182
0644
edit
dl
rm
loc2c-runtime.h
17937
0644
edit
dl
rm
map-gen.c
25977
0644
edit
dl
rm
map-stat.c
3589
0644
edit
dl
rm
map.c
14660
0644
edit
dl
rm
map.h
5918
0644
edit
dl
rm
mempool.c
2644
0644
edit
dl
rm
namespaces.h
487
0644
edit
dl
rm
pmap-gen.c
8710
0644
edit
dl
rm
print.c
486
0644
edit
dl
rm
print.h
872
0644
edit
dl
rm
print_flush.c
3073
0644
edit
dl
rm
probe_lock.h
498
0644
edit
dl
rm
procfs-probes.c
4673
0644
edit
dl
rm
procfs-probes.h
674
0644
edit
dl
rm
procfs.c
4021
0644
edit
dl
rm
proc_fs_compatibility.h
2316
0644
edit
dl
rm
ptrace_compatibility.h
1512
0644
edit
dl
rm
regs.c
4280
0644
edit
dl
rm
regs.h
2352
0644
edit
dl
rm
runtime.h
928
0644
edit
dl
rm
runtime_context.h
669
0644
edit
dl
rm
runtime_defines.h
3582
0644
edit
dl
rm
softfloat.c
77159
0644
edit
dl
rm
softfloat.h
5125
0644
edit
dl
rm
stack-arm.c
1688
0644
edit
dl
rm
stack-ia64.c
1083
0644
edit
dl
rm
stack-mips.c
125
0644
edit
dl
rm
stack-s390.c
2362
0644
edit
dl
rm
stack.c
21790
0644
edit
dl
rm
stat-common.c
8486
0644
edit
dl
rm
stat.c
7421
0644
edit
dl
rm
stat.h
1964
0644
edit
dl
rm
stp_helper_lock.h
3669
0644
edit
dl
rm
stp_string.c
8632
0644
edit
dl
rm
stp_string.h
598
0644
edit
dl
rm
stp_task_work.c
3511
0644
edit
dl
rm
stp_utrace.c
94735
0644
edit
dl
rm
stp_utrace.h
14010
0644
edit
dl
rm
sym.c
39757
0644
edit
dl
rm
sym.h
6539
0644
edit
dl
rm
syscall.h
17408
0644
edit
dl
rm
task_finder_vma.c
13290
0644
edit
dl
rm
time.c
14887
0644
edit
dl
rm
timer.c
481
0644
edit
dl
rm
timer.h
482
0644
edit
dl
rm
uidgid_compatibility.h
603
0644
edit
dl
rm
unwind.c
47890
0644
edit
dl
rm
utrace_compatibility.h
3148
0644
edit
dl
rm
vma.c
9545
0644
edit
dl
rm
vsprintf.c
24058
0644
edit
dl
rm
vsprintf.h
1502
0644
edit
dl
rm
Edit:
/usr/share/systemtap/runtime/regs.c
(4280B)
/* -*- linux-c -*- * Functions to access the members of pt_regs struct * Copyright (C) 2005, 2007 Red Hat Inc. * Copyright (C) 2005 Intel Corporation. * Copyright (C) 2007 Quentin Barnes. * * This file is part of systemtap, and is free software. You can * redistribute it and/or modify it under the terms of the GNU General * Public License (GPL); either version 2, or (at your option) any * later version. */ #ifndef _REGS_C_ #define _REGS_C_ #include "regs.h" #if defined(__KERNEL__) #include "linux/regs.c" #elif defined(__DYNINST__) #include "dyninst/regs.c" #endif /* Function arguments */ #define _STP_REGPARM 0x8000 #define _STP_REGPARM_MASK ((_STP_REGPARM) - 1) /* * x86_64 and i386 are especially ugly because: * 1) the pt_reg member names changed as part of the x86 merge. We use * either the pre-merge name or the post-merge name, as needed. * 2) -m32 apps on x86_64 look like i386 apps, so we need to support * those semantics on both i386 and x86_64. */ #ifdef __i386__ static long _stp_get_sp(struct pt_regs *regs) { if (!user_mode(regs)) return (long) &EREG(sp, regs); return EREG(sp, regs); } #endif /* __i386__ */ #ifdef __x86_64__ static long _stp_get_sp(struct pt_regs *regs) { return RREG(sp, regs); } #endif /* __x86_64__ */ #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) /* Ensure that the upper 32 bits of val are a sign-extension of the lower 32. */ static int64_t __stp_sign_extend32(int64_t val) { int32_t *val_ptr32 = (int32_t*) &val; return *val_ptr32; } /* Ensure that the upper 48 bits of val are a sign-extension of the lower 16. */ static int64_t __stp_sign_extend16(int64_t val) { int16_t *val_ptr16 = (int16_t*) &val; return *val_ptr16; } /* Ensure that the upper 56 bits of val are a sign-extension of the lower 8. */ static int64_t __stp_sign_extend8(int64_t val) { int8_t *val_ptr8 = (int8_t*) &val; return *val_ptr8; } #endif /* __x86_64__ || __ia64__ || __i386__ */ #if defined(__i386__) || defined(__x86_64__) /* * Use this for i386 kernel and apps, and for 32-bit apps running on x86_64. * Does arch-specific work for fetching function arg #argnum (1 = first arg). * nr_regargs is the number of arguments that reside in registers (e.g., * 3 for fastcall functions). * Returns: * 0 if the arg resides in a register. *val contains its value. * 1 if the arg resides on the kernel stack. *val contains its address. * 2 if the arg resides on the user stack. *val contains its address. * -1 if the arg number is invalid. * We assume that the regs pointer is valid. */ #if defined(__i386__) #define ERREG(nm, regs) EREG(nm, regs) #else /* x86_64 */ #define ERREG(nm, regs) RREG(nm, regs) #endif static int _stp_get_arg32_by_number(int n, int nr_regargs, struct pt_regs *regs, long *val) { if (nr_regargs < 0) return -1; if (n > nr_regargs) { /* * The typical case: arg n is on the stack. * stack[0] = return address */ int stack_index = n - nr_regargs; int32_t *stack = (int32_t*) _stp_get_sp(regs); *val = (long) &stack[stack_index]; return (user_mode(regs) ? 2 : 1); } else { switch (n) { case 1: *val = (int32_t)(ERREG(ax, regs)); break; case 2: *val = (int32_t)(ERREG(dx, regs)); break; case 3: *val = (int32_t)(ERREG(cx, regs)); break; default: /* gcc rejects regparm values > 3. */ return -1; } return 0; } } #endif /* __i386__ || __x86_64__ */ #ifdef __x86_64__ /* See _stp_get_arg32_by_number(). */ static int _stp_get_arg64_by_number(int n, int nr_regargs, struct pt_regs *regs, unsigned long *val) { if (nr_regargs < 0) return -1; if (n > nr_regargs) { /* arg n is on the stack. stack[0] = return address */ int stack_index = n - nr_regargs; unsigned long *stack = (unsigned long*) _stp_get_sp(regs); *val = (unsigned long) &stack[stack_index]; return (user_mode(regs) ? 2 : 1); } else { switch (n) { case 1: *val = RREG(di, regs); break; case 2: *val = RREG(si, regs); break; case 3: *val = RREG(dx, regs); break; case 4: *val = RREG(cx, regs); break; case 5: *val = regs->r8; break; case 6: *val = regs->r9; break; default: /* gcc rejects regparm values > 6. */ return -1; } return 0; } } #endif /* __x86_64__ */ /** @} */ #endif /* _REGS_C_ */
Save
cmd:
run