arm64 can have empty alternatives, which are effectively no-ops. Ignore them. While at it, fix a memory leak.
Acked-by: Song Liu <[email protected]> Signed-off-by: Josh Poimboeuf <[email protected]> --- tools/objtool/check.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/objtool/check.c b/tools/objtool/check.c index 73451aef68029..e05dc7a93dc1e 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -1953,6 +1953,9 @@ static int add_special_section_alts(struct objtool_file *file) list_for_each_entry_safe(special_alt, tmp, &special_alts, list) { + if (special_alt->group && !special_alt->orig_len) + goto next; + orig_insn = find_insn(file, special_alt->orig_sec, special_alt->orig_off); if (!orig_insn) { @@ -1973,10 +1976,6 @@ static int add_special_section_alts(struct objtool_file *file) } if (special_alt->group) { - if (!special_alt->orig_len) { - ERROR_INSN(orig_insn, "empty alternative entry"); - continue; - } if (handle_group_alt(file, special_alt, orig_insn, &new_insn)) return -1; @@ -2014,6 +2013,7 @@ static int add_special_section_alts(struct objtool_file *file) a->next = alt; } +next: list_del(&special_alt->list); free(special_alt); } -- 2.53.0

