Messages in this thread Patch in this message | | | From | Chen Zhongjin <> | Subject | [PATCH v6 10/33] objtool: arm64: Handle supported relocations in alternatives | Date | Thu, 23 Jun 2022 09:48:54 +0800 |
| |
Based on get_alt_insn() in arch/arm64/kernel/alternative.c, arm64 alternative code adapts offsets for static branches and adrp instructions.
Signed-off-by: Julien Thierry <jthierry@redhat.com> Signed-off-by: Chen Zhongjin <chenzhongjin@huawei.com> --- tools/objtool/arch/arm64/special.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/objtool/arch/arm64/special.c b/tools/objtool/arch/arm64/special.c index 45f283283091..a70b91e8bd7d 100644 --- a/tools/objtool/arch/arm64/special.c +++ b/tools/objtool/arch/arm64/special.c @@ -10,7 +10,11 @@ bool arch_support_alt_relocation(struct special_alt *special_alt, struct instruction *insn, struct reloc *reloc) { - return false; + u32 opcode = *(u32 *)(insn->sec->data->d_buf + insn->offset); + + return aarch64_insn_is_branch_imm(opcode) || + aarch64_insn_is_adrp(opcode) || + !aarch64_insn_uses_literal(opcode); } -- 2.17.1
| |