From: Li Huafei <lihuafei1@huawei.com>
To: <gregory.herrero@oracle.com>, <rostedt@goodmis.org>,
<catalin.marinas@arm.com>, <christophe.leroy@csgroup.eu>,
<linux-kernel@vger.kernel.org>
Cc: <lihuafei1@huawei.com>, <zhangjinhao2@huawei.com>,
<yangjihong1@huawei.com>, <xukuohai@huawei.com>
Subject: [PATCH] recordmcount: Fix the wrong use of w* in arm64_is_fake_mcount()
Date: Thu, 25 Feb 2021 22:07:47 +0800 [thread overview]
Message-ID: <20210225140747.10818-1-lihuafei1@huawei.com> (raw)
When cross-compiling the kernel, the endian of the target machine and
the local machine may not match, at this time the recordmcount tool
needs byte reversal when processing elf's variables to get the correct
value. w* callback function is used to solve this problem, w is used for
4-byte variable processing, while w8 is used for 8-byte.
arm64_is_fake_mcount() is used to filter '_mcount' relocations that are
not used by ftrace. In arm64_is_fake_mcount(), rp->info is 8 bytes in
size, but w is used. This causes arm64_is_fake_mcount() to get the wrong
type of relocation when we cross-compile the arm64_be kernel image on an
x86_le machine, and all valid '_mcount' is filtered out. The
recordmcount tool does not collect any mcount function call locations.
At kernel startup, the following ftrace log is seen:
ftrace: No functions to be traced?
and thus ftrace cannot be used.
Using w8 to get the value of rp->r_info will fix the problem.
Fixes: ea0eada45632 ("recordmcount: only record relocation of type
R_AARCH64_CALL26 on arm64")
Signed-off-by: Li Huafei <lihuafei1@huawei.com>
---
scripts/recordmcount.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c
index b9c2ee7ab43f..cce12e1971d8 100644
--- a/scripts/recordmcount.c
+++ b/scripts/recordmcount.c
@@ -438,7 +438,7 @@ static int arm_is_fake_mcount(Elf32_Rel const *rp)
static int arm64_is_fake_mcount(Elf64_Rel const *rp)
{
- return ELF64_R_TYPE(w(rp->r_info)) != R_AARCH64_CALL26;
+ return ELF64_R_TYPE(w8(rp->r_info)) != R_AARCH64_CALL26;
}
/* 64-bit EM_MIPS has weird ELF64_Rela.r_info.
--
2.17.1
next reply other threads:[~2021-02-25 14:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-25 14:07 Li Huafei [this message]
2021-02-25 14:44 ` Steven Rostedt
2021-02-25 16:01 ` Will Deacon
2021-02-25 16:08 ` Steven Rostedt
2021-03-02 22:30 ` Steven Rostedt
2021-03-02 22:33 ` Steven Rostedt
2021-03-03 13:12 ` Will Deacon
2021-03-03 1:25 ` Li Huafei
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=20210225140747.10818-1-lihuafei1@huawei.com \
--to=lihuafei1@huawei.com \
--cc=catalin.marinas@arm.com \
--cc=christophe.leroy@csgroup.eu \
--cc=gregory.herrero@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=xukuohai@huawei.com \
--cc=yangjihong1@huawei.com \
--cc=zhangjinhao2@huawei.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
all inboxes | Powered by JetHome®