On Fri, Mar 19, 2021 at 10:30:26AM -0500, Josh Poimboeuf wrote: > On Fri, Mar 19, 2021 at 09:06:44AM +0100, Peter Zijlstra wrote: > > > Also doesn't the alternative code already insert nops? > > > > Problem is that the {call,jmp} *%\reg thing is not fixed length. They're > > 2 or 3 bytes depending on which register is picked. > > Why do they need to be fixed length? Objtool can use sym->len as the > alternative replacement length. Then alternatives can add nops as > needed.
UNDEF has size 0. That is, unless these symbols exist in the translation unit (they do not) we have no clue. Arguably I could parse the symbol name again and then we know the register number and thus if we need REX etc.. but I figured we wanted to avoid all that.