From: "Ian Munsie" <imunsie@au1.ibm.com>
To: Avantika Mathur <mathur@linux.vnet.ibm.com>
Cc: Jason Baron <jbaron@redhat.com>, Ian Munsie <imunsie@au1.ibm.com>,
Randy Dunlap <rdunlap@xenotime.net>,
Steven Rostedt <rostedt@goodmis.org>,
Frederic Weisbecker <fweisbec@gmail.com>,
Ingo Molnar <mingo@redhat.com>,
Mike Frysinger <vapier@gentoo.org>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 4/6] ftrace syscalls: Allow arch specific syscall symbol matching
Date: Tue, 7 Dec 2010 15:29:09 +1100 [thread overview]
Message-ID: <1291696151-4336-5-git-send-email-imunsie@au1.ibm.com> (raw)
In-Reply-To: <1291696151-4336-1-git-send-email-imunsie@au1.ibm.com>
From: Ian Munsie <imunsie@au1.ibm.com>
Some architectures have unusual symbol names and the generic code to
match the symbol name with the function name for the syscall metadata
will fail. For example, symbols on PPC64 start with a period and the
generic code will fail to match them.
This patch splits out the match logic into a standalone weak function
that can be overridden on archs with unusual symbol names.
Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
---
Documentation/trace/ftrace-design.txt | 3 +++
include/linux/ftrace.h | 1 +
kernel/trace/trace_syscalls.c | 19 ++++++++++++-------
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/Documentation/trace/ftrace-design.txt b/Documentation/trace/ftrace-design.txt
index 6fca17b..d996d0a 100644
--- a/Documentation/trace/ftrace-design.txt
+++ b/Documentation/trace/ftrace-design.txt
@@ -250,6 +250,9 @@ You need very few things to get the syscalls tracing in an arch.
- If the system call table on this arch is more complicated than a simple array
of addresses of the system calls, implement an arch_syscall_addr to return
the address of a given system call.
+- If the symbol names of the system calls do not match the function names on
+ this arch, implement an arch_syscall_match_sym_name with the appropriate
+ logic to return true if the function name corresponds with the symbol name.
- Tag this arch as HAVE_SYSCALL_TRACEPOINTS.
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index dcd6a7c..8f6290a 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -527,6 +527,7 @@ extern enum ftrace_dump_mode ftrace_dump_on_oops;
#ifdef CONFIG_FTRACE_SYSCALLS
unsigned long arch_syscall_addr(int nr);
+bool arch_syscall_match_sym_name(const char *sym, const char *name);
#endif /* CONFIG_FTRACE_SYSCALLS */
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c
index b31ea2d..85983fd 100644
--- a/kernel/trace/trace_syscalls.c
+++ b/kernel/trace/trace_syscalls.c
@@ -81,13 +81,7 @@ static struct syscall_metadata *find_syscall_meta(unsigned long syscall)
kallsyms_lookup(syscall, NULL, NULL, NULL, str);
for ( ; start < stop; start++) {
- /*
- * Only compare after the "sys" prefix. Archs that use
- * syscall wrappers may have syscalls symbols aliases prefixed
- * with "SyS" instead of "sys", leading to an unwanted
- * mismatch.
- */
- if (start->name && !strcmp(start->name + 3, str + 3))
+ if (start->name && arch_syscall_match_sym_name(str, start->name))
return start;
}
return NULL;
@@ -452,6 +446,17 @@ unsigned long __init __weak arch_syscall_addr(int nr)
return (unsigned long)sys_call_table[nr];
}
+bool __weak arch_syscall_match_sym_name(const char *sym, const char *name)
+{
+ /*
+ * Only compare after the "sys" prefix. Archs that use
+ * syscall wrappers may have syscalls symbols aliases prefixed
+ * with "SyS" instead of "sys", leading to an unwanted
+ * mismatch.
+ */
+ return (!strcmp(sym + 3, name + 3));
+}
+
int __init init_ftrace_syscalls(void)
{
struct syscall_metadata *meta;
--
1.7.2.3
next prev parent reply other threads:[~2010-12-07 4:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1291696151-4336-1-git-send-email-imunsie@au1.ibm.com>
2010-12-07 4:29 ` [PATCH 1/6] ftrace syscalls: don't add events for unmapped syscalls Ian Munsie
2010-12-07 4:29 ` [PATCH 2/6] trace syscalls: Remove redundant syscall_nr checks Ian Munsie
2010-12-07 14:54 ` Steven Rostedt
2010-12-07 23:47 ` Ian Munsie
2010-12-07 4:29 ` [PATCH 3/6] ftrace syscalls: Make arch_syscall_addr weak Ian Munsie
2010-12-07 4:29 ` Ian Munsie [this message]
2010-12-07 4:56 ` [PATCH 4/6] ftrace syscalls: Allow arch specific syscall symbol matching Mike Frysinger
2010-12-07 5:06 ` Ian Munsie
2010-12-07 5:18 ` Steven Rostedt
2010-12-07 4:29 ` [PATCH 5/6] trace, powerpc: Implement raw syscall tracepoints on PowerPC Ian Munsie
2010-12-07 4:29 ` [PATCH 6/6] trace syscalls: Early terminate search for sys_ni_syscall Ian Munsie
2010-12-07 5:00 ` PowerPC, ftrace: Add PPC raw syscall tracepoints & ftrace fixes (subset from v2) Ian Munsie
2011-02-02 7:11 PowerPC, ftrace: Add PPC raw syscall tracepoints & ftrace fixes (mimimal subset only) v3 Ian Munsie
2011-02-02 7:11 ` [PATCH 4/6] ftrace syscalls: Allow arch specific syscall symbol matching Ian Munsie
2011-02-02 14:04 ` Steven Rostedt
2011-02-03 3:27 PowerPC, ftrace: Add PPC raw syscall tracepoints & ftrace fixes (mimimal subset only) v4 Ian Munsie
2011-02-03 3:27 ` [PATCH 4/6] ftrace syscalls: Allow arch specific syscall symbol matching Ian Munsie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1291696151-4336-5-git-send-email-imunsie@au1.ibm.com \
--to=imunsie@au1.ibm.com \
--cc=fweisbec@gmail.com \
--cc=heiko.carstens@de.ibm.com \
--cc=jbaron@redhat.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathur@linux.vnet.ibm.com \
--cc=mingo@redhat.com \
--cc=rdunlap@xenotime.net \
--cc=rostedt@goodmis.org \
--cc=vapier@gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®