Handle UTRACE_API_VERSION 20091216 (Fedora 2.6.32 kernels).
This commit is contained in:
parent
a88a23f688
commit
bf2fc596e2
494
SystemTap-1.0-new-utrace-api.patch
Normal file
494
SystemTap-1.0-new-utrace-api.patch
Normal file
@ -0,0 +1,494 @@
|
|||||||
|
From b8b815b7163b3df61a7364e404a282cb17d775db Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Smith <dsmith@redhat.com>
|
||||||
|
Date: Mon, 21 Dec 2009 21:04:36 -0600
|
||||||
|
Subject: [PATCH] PR11113 fix. Support new utrace API.
|
||||||
|
|
||||||
|
* tapset-utrace.cxx (utrace_derived_probe_group::emit_module_decls):
|
||||||
|
Handles new utrace api.
|
||||||
|
* runtime/itrace.c (usr_itrace_report_signal): Ditto.
|
||||||
|
(usr_itrace_report_clone): Ditto.
|
||||||
|
(usr_itrace_report_death): Ditto.
|
||||||
|
* runtime/task_finder.c (__stp_utrace_task_finder_report_clone): Ditto.
|
||||||
|
(__stp_utrace_task_finder_report_exec): Ditto.
|
||||||
|
(__stap_utrace_task_finder_report_death): Ditto.
|
||||||
|
(__stp_utrace_task_finder_target_death): Ditto.
|
||||||
|
(__stp_utrace_task_finder_target_quiesce): Ditto.
|
||||||
|
(__stp_utrace_task_finder_target_syscall_entry): Ditto.
|
||||||
|
(__stp_utrace_task_finder_target_syscall_exit): Ditto.
|
||||||
|
* runtime/uprobes2/uprobes.c (uprobe_report_signal): Ditto.
|
||||||
|
(uprobe_report_quiesce): Ditto.
|
||||||
|
(uprobe_report_exit): Ditto.
|
||||||
|
(uprobe_report_clone): Ditto.
|
||||||
|
(uprobe_report_exec): Ditto.
|
||||||
|
---
|
||||||
|
runtime/itrace.c | 30 ++++++++++++++
|
||||||
|
runtime/task_finder.c | 94 ++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
runtime/uprobes2/uprobes.c | 35 ++++++++++++++--
|
||||||
|
tapset-utrace.cxx | 4 ++
|
||||||
|
4 files changed, 159 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/runtime/itrace.c b/runtime/itrace.c
|
||||||
|
index 5b2437a..399bfde 100644
|
||||||
|
--- a/runtime/itrace.c
|
||||||
|
+++ b/runtime/itrace.c
|
||||||
|
@@ -84,11 +84,17 @@ static struct itrace_info *create_itrace_info(
|
||||||
|
static u32 usr_itrace_report_quiesce(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32 usr_itrace_report_quiesce(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ unsigned long event)
|
||||||
|
+#else
|
||||||
|
static u32 usr_itrace_report_quiesce(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
unsigned long event)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
struct itrace_info *ui;
|
||||||
|
@@ -113,6 +119,14 @@ static u32 usr_itrace_report_signal(
|
||||||
|
const struct k_sigaction *orig_ka,
|
||||||
|
struct k_sigaction *return_ka)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32 usr_itrace_report_signal(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ struct pt_regs *regs,
|
||||||
|
+ siginfo_t *info,
|
||||||
|
+ const struct k_sigaction *orig_ka,
|
||||||
|
+ struct k_sigaction *return_ka)
|
||||||
|
+#else
|
||||||
|
static u32 usr_itrace_report_signal(u32 action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
@@ -121,7 +135,11 @@ static u32 usr_itrace_report_signal(u32 action,
|
||||||
|
const struct k_sigaction *orig_ka,
|
||||||
|
struct k_sigaction *return_ka)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
struct itrace_info *ui;
|
||||||
|
u32 return_flags;
|
||||||
|
unsigned long data = 0;
|
||||||
|
@@ -177,11 +195,18 @@ static u32 usr_itrace_report_clone(
|
||||||
|
unsigned long clone_flags,
|
||||||
|
struct task_struct *child)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32 usr_itrace_report_clone(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ unsigned long clone_flags,
|
||||||
|
+ struct task_struct *child)
|
||||||
|
+#else
|
||||||
|
static u32 usr_itrace_report_clone(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *parent, unsigned long clone_flags,
|
||||||
|
struct task_struct *child)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
return UTRACE_RESUME;
|
||||||
|
}
|
||||||
|
@@ -190,9 +215,14 @@ static u32 usr_itrace_report_clone(enum utrace_resume_action action,
|
||||||
|
static u32 usr_itrace_report_death(struct utrace_attached_engine *e,
|
||||||
|
struct task_struct *tsk)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32 usr_itrace_report_death(struct utrace_attached_engine *e,
|
||||||
|
+ bool group_dead, int signal)
|
||||||
|
+#else
|
||||||
|
static u32 usr_itrace_report_death(struct utrace_attached_engine *e,
|
||||||
|
struct task_struct *tsk, bool group_dead, int signal)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
struct itrace_info *ui = rcu_dereference(e->data);
|
||||||
|
WARN_ON(!ui);
|
||||||
|
diff --git a/runtime/task_finder.c b/runtime/task_finder.c
|
||||||
|
index e89ac8e..b77fff8 100644
|
||||||
|
--- a/runtime/task_finder.c
|
||||||
|
+++ b/runtime/task_finder.c
|
||||||
|
@@ -107,23 +107,35 @@ static u32
|
||||||
|
__stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk);
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine,
|
||||||
|
+ bool group_dead, int signal);
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
bool group_dead, int signal);
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef UTRACE_ORIG_VERSION
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_quiesce(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk);
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
static u32
|
||||||
|
+__stp_utrace_task_finder_target_quiesce(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ unsigned long event);
|
||||||
|
+#else
|
||||||
|
__stp_utrace_task_finder_target_quiesce(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
unsigned long event);
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef UTRACE_ORIG_VERSION
|
||||||
|
static u32
|
||||||
|
@@ -131,12 +143,19 @@ __stp_utrace_task_finder_target_syscall_entry(struct utrace_attached_engine *eng
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_syscall_entry(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ struct pt_regs *regs);
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_syscall_entry(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#ifdef UTRACE_ORIG_VERSION
|
||||||
|
static u32
|
||||||
|
@@ -144,12 +163,19 @@ __stp_utrace_task_finder_target_syscall_exit(struct utrace_attached_engine *engi
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_syscall_exit(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ struct pt_regs *regs);
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs);
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
static int
|
||||||
|
stap_register_task_finder_target(struct stap_task_finder_target *new_tgt)
|
||||||
|
@@ -857,6 +883,13 @@ __stp_utrace_task_finder_report_clone(struct utrace_attached_engine *engine,
|
||||||
|
unsigned long clone_flags,
|
||||||
|
struct task_struct *child)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_report_clone(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ unsigned long clone_flags,
|
||||||
|
+ struct task_struct *child)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_report_clone(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
@@ -864,7 +897,11 @@ __stp_utrace_task_finder_report_clone(enum utrace_resume_action action,
|
||||||
|
unsigned long clone_flags,
|
||||||
|
struct task_struct *child)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *parent = current;
|
||||||
|
+#endif
|
||||||
|
int rc;
|
||||||
|
struct mm_struct *mm;
|
||||||
|
char *mmpath_buf;
|
||||||
|
@@ -898,6 +935,14 @@ __stp_utrace_task_finder_report_exec(struct utrace_attached_engine *engine,
|
||||||
|
const struct linux_binprm *bprm,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_report_exec(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ const struct linux_binfmt *fmt,
|
||||||
|
+ const struct linux_binprm *bprm,
|
||||||
|
+ struct pt_regs *regs)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_report_exec(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
@@ -906,7 +951,11 @@ __stp_utrace_task_finder_report_exec(enum utrace_resume_action action,
|
||||||
|
const struct linux_binprm *bprm,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
size_t filelen;
|
||||||
|
struct list_head *tgt_node;
|
||||||
|
struct stap_task_finder_target *tgt;
|
||||||
|
@@ -949,11 +998,17 @@ static u32
|
||||||
|
stap_utrace_task_finder_report_death(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+stap_utrace_task_finder_report_death(struct utrace_attached_engine *engine,
|
||||||
|
+ bool group_dead, int signal)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
stap_utrace_task_finder_report_death(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
bool group_dead, int signal)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
debug_task_finder_detach();
|
||||||
|
return UTRACE_DETACH;
|
||||||
|
@@ -964,12 +1019,21 @@ static u32
|
||||||
|
__stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine,
|
||||||
|
+ bool group_dead, int signal)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_death(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
bool group_dead, int signal)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
struct stap_task_finder_target *tgt = engine->data;
|
||||||
|
|
||||||
|
if (atomic_read(&__stp_task_finder_state) != __STP_TF_RUNNING) {
|
||||||
|
@@ -1132,13 +1196,23 @@ static u32
|
||||||
|
__stp_utrace_task_finder_target_quiesce(struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_quiesce(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ unsigned long event)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_quiesce(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
unsigned long event)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
struct stap_task_finder_target *tgt = engine->data;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
@@ -1201,13 +1275,23 @@ __stp_utrace_task_finder_target_syscall_entry(struct utrace_attached_engine *eng
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_syscall_entry(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ struct pt_regs *regs)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_syscall_entry(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
struct stap_task_finder_target *tgt = engine->data;
|
||||||
|
long syscall_no;
|
||||||
|
unsigned long args[3] = { 0L };
|
||||||
|
@@ -1271,13 +1355,23 @@ __stp_utrace_task_finder_target_syscall_exit(struct utrace_attached_engine *engi
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
#else
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+static u32
|
||||||
|
+__stp_utrace_task_finder_target_syscall_exit(u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ struct pt_regs *regs)
|
||||||
|
+#else
|
||||||
|
static u32
|
||||||
|
__stp_utrace_task_finder_target_syscall_exit(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
struct stap_task_finder_target *tgt = engine->data;
|
||||||
|
unsigned long rv;
|
||||||
|
struct __stp_tf_map_entry *entry;
|
||||||
|
diff --git a/runtime/uprobes2/uprobes.c b/runtime/uprobes2/uprobes.c
|
||||||
|
index 4c3a9c9..02941e2 100644
|
||||||
|
--- a/runtime/uprobes2/uprobes.c
|
||||||
|
+++ b/runtime/uprobes2/uprobes.c
|
||||||
|
@@ -1881,7 +1881,9 @@ static void uprobe_inject_delayed_signals(struct list_head *delayed_signals)
|
||||||
|
*/
|
||||||
|
static u32 uprobe_report_signal(u32 action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
+#if !(defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216))
|
||||||
|
struct task_struct *tsk,
|
||||||
|
+#endif
|
||||||
|
struct pt_regs *regs,
|
||||||
|
siginfo_t *info,
|
||||||
|
const struct k_sigaction *orig_ka,
|
||||||
|
@@ -2129,9 +2131,15 @@ static int utask_quiesce_pending_sigtrap(struct uprobe_task *utask)
|
||||||
|
* insertions or removals pending. If we're the last thread in this
|
||||||
|
* process to quiesce, do the insertion(s) and/or removal(s).
|
||||||
|
*/
|
||||||
|
-static u32 uprobe_report_quiesce(enum utrace_resume_action action,
|
||||||
|
+static u32 uprobe_report_quiesce(
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ u32 action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+#else
|
||||||
|
+ enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
+#endif
|
||||||
|
unsigned long event)
|
||||||
|
{
|
||||||
|
struct uprobe_task *utask;
|
||||||
|
@@ -2140,7 +2148,9 @@ static u32 uprobe_report_quiesce(enum utrace_resume_action action,
|
||||||
|
|
||||||
|
utask = (struct uprobe_task *)rcu_dereference(engine->data);
|
||||||
|
BUG_ON(!utask);
|
||||||
|
+#if !(defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216))
|
||||||
|
BUG_ON(tsk != current); // guaranteed by utrace 2008
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (utask->state == UPTASK_SSTEP)
|
||||||
|
/*
|
||||||
|
@@ -2243,8 +2253,14 @@ static void uprobe_cleanup_process(struct uprobe_process *uproc)
|
||||||
|
*/
|
||||||
|
static u32 uprobe_report_exit(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
- struct task_struct *tsk, long orig_code, long *code)
|
||||||
|
+#if !(defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216))
|
||||||
|
+ struct task_struct *tsk,
|
||||||
|
+#endif
|
||||||
|
+ long orig_code, long *code)
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *tsk = current;
|
||||||
|
+#endif
|
||||||
|
struct uprobe_task *utask;
|
||||||
|
struct uprobe_process *uproc;
|
||||||
|
struct uprobe_probept *ppt;
|
||||||
|
@@ -2449,10 +2465,15 @@ static int uprobe_fork_uproc(struct uprobe_process *parent_uproc,
|
||||||
|
*/
|
||||||
|
static u32 uprobe_report_clone(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
+#if !(defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216))
|
||||||
|
struct task_struct *parent,
|
||||||
|
+#endif
|
||||||
|
unsigned long clone_flags,
|
||||||
|
struct task_struct *child)
|
||||||
|
{
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ struct task_struct *parent = current;
|
||||||
|
+#endif
|
||||||
|
int len;
|
||||||
|
struct uprobe_process *uproc;
|
||||||
|
struct uprobe_task *ptask, *ctask;
|
||||||
|
@@ -2554,9 +2575,15 @@ done:
|
||||||
|
* - We have to free up uprobe resources associated with
|
||||||
|
* this process.
|
||||||
|
*/
|
||||||
|
-static u32 uprobe_report_exec(enum utrace_resume_action action,
|
||||||
|
+static u32 uprobe_report_exec(
|
||||||
|
+#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)
|
||||||
|
+ u32 action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
- struct task_struct *tsk,
|
||||||
|
+#else
|
||||||
|
+ enum utrace_resume_action action,
|
||||||
|
+ struct utrace_attached_engine *engine,
|
||||||
|
+ struct task_struct *parent,
|
||||||
|
+#endif
|
||||||
|
const struct linux_binfmt *fmt,
|
||||||
|
const struct linux_binprm *bprm,
|
||||||
|
struct pt_regs *regs)
|
||||||
|
diff --git a/tapset-utrace.cxx b/tapset-utrace.cxx
|
||||||
|
index bd668a2..cc4f280 100644
|
||||||
|
--- a/tapset-utrace.cxx
|
||||||
|
+++ b/tapset-utrace.cxx
|
||||||
|
@@ -842,8 +842,12 @@ utrace_derived_probe_group::emit_module_decls (systemtap_session& s)
|
||||||
|
s.op->newline() << "#ifdef UTRACE_ORIG_VERSION";
|
||||||
|
s.op->newline() << "static u32 stap_utrace_probe_syscall(struct utrace_attached_engine *engine, struct task_struct *tsk, struct pt_regs *regs) {";
|
||||||
|
s.op->newline() << "#else";
|
||||||
|
+ s.op->newline() << "#if defined(UTRACE_API_VERSION) && (UTRACE_API_VERSION >= 20091216)";
|
||||||
|
+ s.op->newline() << "static u32 stap_utrace_probe_syscall(u32 action, struct utrace_attached_engine *engine, struct pt_regs *regs) {";
|
||||||
|
+ s.op->newline() << "#else";
|
||||||
|
s.op->newline() << "static u32 stap_utrace_probe_syscall(enum utrace_resume_action action, struct utrace_attached_engine *engine, struct task_struct *tsk, struct pt_regs *regs) {";
|
||||||
|
s.op->newline() << "#endif";
|
||||||
|
+ s.op->newline() << "#endif";
|
||||||
|
|
||||||
|
s.op->indent(1);
|
||||||
|
s.op->newline() << "struct stap_utrace_probe *p = (struct stap_utrace_probe *)engine->data;";
|
||||||
|
--
|
||||||
|
1.6.2.5
|
||||||
|
|
||||||
|
From 21b6dfed5aefcc09d1445df203627844586e6fda Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Smith <dsmith@redhat.com>
|
||||||
|
Date: Mon, 21 Dec 2009 21:29:48 -0600
|
||||||
|
Subject: [PATCH] Fixed compilation on f11.
|
||||||
|
|
||||||
|
* runtime/task_finder.c: Fixed last checkin.
|
||||||
|
---
|
||||||
|
runtime/task_finder.c | 1 +
|
||||||
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/runtime/task_finder.c b/runtime/task_finder.c
|
||||||
|
index b77fff8..deccfa7 100644
|
||||||
|
--- a/runtime/task_finder.c
|
||||||
|
+++ b/runtime/task_finder.c
|
||||||
|
@@ -130,6 +130,7 @@ __stp_utrace_task_finder_target_quiesce(u32 action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
unsigned long event);
|
||||||
|
#else
|
||||||
|
+static u32
|
||||||
|
__stp_utrace_task_finder_target_quiesce(enum utrace_resume_action action,
|
||||||
|
struct utrace_attached_engine *engine,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
--
|
||||||
|
1.6.2.5
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
Name: systemtap
|
Name: systemtap
|
||||||
Version: 1.0
|
Version: 1.0
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
# for version, see also configure.ac
|
# for version, see also configure.ac
|
||||||
Summary: Instrumentation System
|
Summary: Instrumentation System
|
||||||
Group: Development/System
|
Group: Development/System
|
||||||
@ -66,6 +66,9 @@ Patch10: SystemTap-1.0-limit-printf-arguments.patch
|
|||||||
Patch11: SystemTap-1.0-limit-dwarf-expression-stack-size.patch
|
Patch11: SystemTap-1.0-limit-dwarf-expression-stack-size.patch
|
||||||
Patch12: SystemTap-1.0-unwind-table-size-checks.patch
|
Patch12: SystemTap-1.0-unwind-table-size-checks.patch
|
||||||
|
|
||||||
|
# Handle UTRACE_API_VERSION 20091216.
|
||||||
|
Patch20: SystemTap-1.0-new-utrace-api.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
SystemTap is an instrumentation system for systems running Linux 2.6.
|
SystemTap is an instrumentation system for systems running Linux 2.6.
|
||||||
Developers can write instrumentation to collect data on the operation
|
Developers can write instrumentation to collect data on the operation
|
||||||
@ -174,6 +177,9 @@ cd ..
|
|||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
|
|
||||||
|
# Handle UTRACE_API_VERSION 20091216.
|
||||||
|
%patch20 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
%if %{with_bundled_elfutils}
|
%if %{with_bundled_elfutils}
|
||||||
@ -397,6 +403,9 @@ exit 0
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 8 2010 Roland McGrath <roland@redhat.com> - 1.0-4
|
||||||
|
- Handle UTRACE_API_VERSION 20091216 (Fedora 2.6.32 kernels).
|
||||||
|
|
||||||
* Fri Dec 11 2009 Josh Stone <jistone@redhat.com> - 1.0-3
|
* Fri Dec 11 2009 Josh Stone <jistone@redhat.com> - 1.0-3
|
||||||
- Rebuild against rpm-4.8.0
|
- Rebuild against rpm-4.8.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user