On Tue, Mar 10, 2026 at 11:47:41AM +0100, Miroslav Benes wrote:
> Hi,
> 
> > @@ -3691,9 +3691,30 @@ static void checksum_update_insn(struct objtool_file 
> > *file, struct symbol *func,
> >                              struct instruction *insn)
> >  {
> >     struct reloc *reloc = insn_reloc(file, insn);
> > +   struct alternative *alt;
> >     unsigned long offset;
> >     struct symbol *sym;
> >  
> > +   for (alt = insn->alts; alt; alt = alt->next) {
> > +           struct alt_group *alt_group = alt->insn->alt_group;
> > +
> > +           checksum_update(func, insn, &alt->type, sizeof(alt->type));
> > +
> > +           if (alt_group && alt_group->orig_group) {
> > +                   struct instruction *alt_insn;
> > +
> > +                   checksum_update(func, insn, &alt_group->feature, 
> > sizeof(alt_group->feature));
> > +
> > +                   for (alt_insn = alt->insn; alt_insn; alt_insn = 
> > next_insn_same_sec(file, alt_insn)) {
> > +                           checksum_update_insn(file, func, alt_insn);
> > +                           if (alt_insn == alt_group->last_insn)
> > +                                   break;
> > +                   }
> > +           } else {
> > +                   checksum_update(func, insn, &alt->insn->offset, 
> > sizeof(alt->insn->offset));
> > +           }
> > +   }
> > +
> 
> does this hunk belong to the patch? Unless I am missing something, it 
> might be worth a separate one.

It belongs, but I should have clarified that in the patch description.

This hunk wasn't needed before because validate_branch() already
iterates all the alternatives, so it was calling checksum_update_insn()
for every instruction in the function, including the alternatives.

Now that it's no longer called by validate_branch(),
checksum_update_insn() has to manually iterate the alternatives.

-- 
Josh

Reply via email to