On Tue, Jun 25, 2019 at 11:15:57AM -0700, Nick Desaulniers wrote: > Unreleased versions of Clang built from source can;
I've bad experiences with using unreleased compilers; life is too short. > We're currently planning multiple output constraint support w/ asm > goto, and have recently implemented things like > __GCC_ASM_FLAG_OUTPUTS__. That's good to hear. > If there's other features that we should > start implementing, please let us know. If you've got any ideas on how to make this: https://lkml.kernel.org/r/20190621120923.gt3...@hirez.programming.kicks-ass.net work, that'd be nice. Basically I wanted the asm goto to emit a 2 or 5 byte JMP/NOP depending on the displacement size. We can trivially get JMP right by using: jmp \l_yes and letting the assembler sort it, but getting the NOP right has so far eluded me: .if \l_yes - (. + 2) < 127 .byte 0x66, 0x90 .else .byte STATIC_KEY_INIT_NOP .endif doesn't work. We can ofcourse unconditionally emit the JMP and then rewrite the binary afterward, and replace the emitted jumps with the right size NOP, but that's a bit yuck. Once it emits the variable size instruction consistently, we can update the patching side to use the same condition to select the new instruction (and fix objtool).