From: David Daney <ddaney@caviumnetworks.com>
To: Wu Zhangjin <wuzhangjin@gmail.com>
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org, rostedt@goodmis.org
Subject: Re: [RFC 2/2] MIPS: tracing/ftrace: Fixes mcount_regex for modules
Date: Fri, 22 Oct 2010 14:10:09 -0700 [thread overview]
Message-ID: <4CC1FDB1.8050404@caviumnetworks.com> (raw)
In-Reply-To: <485f5af61fae72dc9c1f0e31b1b5f1f57a5e7ed8.1287779153.git.wuzhangjin@gmail.com>
On 10/22/2010 01:58 PM, Wu Zhangjin wrote:
> From: Wu Zhangjin<wuzhangjin@gmail.com>
>
> In some situations(with related kernel config and gcc options), the
> modules may have the same address space as the core kernel space, so
> mcount_regex for modules should also match R_MIPS_26.
>
I think Steve is rewriting this bit to be a pure C program. Is this
file even used anymore? If so for how long?
David Daney
> Signed-off-by: Wu Zhangjin<wuzhangjin@gmail.com>
> ---
> scripts/recordmcount.pl | 46 +++++++++++++++++++++++++++++-----------------
> 1 files changed, 29 insertions(+), 17 deletions(-)
>
> diff --git a/scripts/recordmcount.pl b/scripts/recordmcount.pl
> index e67f054..e9c1a0f 100755
> --- a/scripts/recordmcount.pl
> +++ b/scripts/recordmcount.pl
> @@ -299,14 +299,33 @@ if ($arch eq "x86_64") {
> $cc .= " -m64";
> $objcopy .= " -O elf64-sparc";
> } elsif ($arch eq "mips") {
> - # To enable module support, we need to enable the -mlong-calls option
> - # of gcc for module, after using this option, we can not get the real
> - # offset of the calling to _mcount, but the offset of the lui
> - # instruction or the addiu one. herein, we record the address of the
> - # first one, and then we can replace this instruction by a branch
> - # instruction to jump over the profiling function to filter the
> - # indicated functions, or swith back to the lui instruction to trace
> - # them, which means dynamic tracing.
> + #<For kernel>
> + # To disable tracing, just replace "jal _mcount" with nop;
> + # to enable tracing, replace back. so, the offset 14 is
> + # needed to be recorded.
> + #
> + # 10: 03e0082d move at,ra
> + # 14: 0c000000 jal 0
> + # 14: R_MIPS_26 _mcount
> + # 14: R_MIPS_NONE *ABS*
> + # 14: R_MIPS_NONE *ABS*
> + # 18: 00020021 nop
> + #
> + #<For module>
> + #
> + # If no long call(-mlong-calls), the same to kernel.
> + #
> + # If the module space differs from the kernel space, long
> + # call is needed, as a result, the address of _mcount is
> + # needed to be recorded in a register and then jump from
> + # module space to kernel space via "jalr<register>". To
> + # disable tracing, "jalr<register>" can be replaced by
> + # nop; to enable tracing, replace it back. Since the
> + # offset of "jalr<register>" is not easy to be matched,
> + # the offset of the 1st _mcount below is recorded and to
> + # disable tracing, "lui v1, 0x0" is substituted with "b
> + # label", which jumps over "jalr<register>"; to enable
> + # tracing, replace it back.
> #
> # c: 3c030000 lui v1,0x0
> # c: R_MIPS_HI16 _mcount
> @@ -318,19 +337,12 @@ if ($arch eq "x86_64") {
> # 10: R_MIPS_NONE *ABS*
> # 14: 03e0082d move at,ra
> # 18: 0060f809 jalr v1
> + # label:
> #
> - # for the kernel:
> - #
> - # 10: 03e0082d move at,ra
> - # 14: 0c000000 jal 0<loongson_halt>
> - # 14: R_MIPS_26 _mcount
> - # 14: R_MIPS_NONE *ABS*
> - # 14: R_MIPS_NONE *ABS*
> - # 18: 00020021 nop
> if ($is_module eq "0") {
> $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_26\\s+_mcount\$";
> } else {
> - $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_HI16\\s+_mcount\$";
> + $mcount_regex = "^\\s*([0-9a-fA-F]+): R_MIPS_(HI16|26)\\s+_mcount\$";
> }
> $objdump .= " -Melf-trad".$endian."mips ";
>
next prev parent reply other threads:[~2010-10-22 21:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-22 20:58 [RFC 0/2] Fixes the modules support of dynamic function tracer for MIPS Wu Zhangjin
2010-10-22 20:58 ` [RFC 1/2] MIPS: tracing/ftrace: Replace in_module() with a generic in_kernel_space() Wu Zhangjin
2010-10-22 21:31 ` David Daney
2010-10-23 5:51 ` wu zhangjin
2010-10-27 11:11 ` wu zhangjin
2010-10-22 20:58 ` [RFC 2/2] MIPS: tracing/ftrace: Fixes mcount_regex for modules Wu Zhangjin
2010-10-22 21:10 ` David Daney [this message]
2010-10-22 21:31 ` Steven Rostedt
2010-10-23 6:03 ` wu zhangjin
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=4CC1FDB1.8050404@caviumnetworks.com \
--to=ddaney@caviumnetworks.com \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
--cc=rostedt@goodmis.org \
--cc=wuzhangjin@gmail.com \
/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