On Fri, Mar 19, 2021 at 04:56:30PM +0100, Peter Zijlstra wrote: > 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.
Ah, makes sense now. -- Josh