objtool: Rewrite jump_label instructions

When a jump_entry::key has bit1 set, rewrite the instruction to be a
NOP. This allows the compiler/assembler to emit JMP (and thus decide
on which encoding to use).

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20210506194158.091028792@infradead.org
This commit is contained in:
Peter Zijlstra 2021-05-06 21:34:03 +02:00 committed by Ingo Molnar
parent cbf82a3dc2
commit 6d37b83c5d
1 changed files with 14 additions and 0 deletions

View File

@ -1234,6 +1234,20 @@ static int handle_jump_alt(struct objtool_file *file,
return -1;
}
if (special_alt->key_addend & 2) {
struct reloc *reloc = insn_reloc(file, orig_insn);
if (reloc) {
reloc->type = R_NONE;
elf_write_reloc(file->elf, reloc);
}
elf_write_insn(file->elf, orig_insn->sec,
orig_insn->offset, orig_insn->len,
arch_nop_insn(orig_insn->len));
orig_insn->type = INSN_NOP;
return 0;
}
*new_insn = list_next_entry(orig_insn, list);
return 0;
}