On Wed, Jan 23, 2019 at 01:55:13PM +0100, Laura Abbott wrote: > There's a build failure with gcc9: > > ./arch/s390/include/asm/jump_label.h: Assembler messages: > ./arch/s390/include/asm/jump_label.h:23: Error: bad expression > ./arch/s390/include/asm/jump_label.h:23: Error: junk at end of line, first unrecognized character is `r' > make[1]: *** [scripts/Makefile.build:277: init/main.o] Error 1 > > According to the toolchain people, the actual issue is the use of > "X" constraint which is too permissive. Switch to using "i" instead. > > Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1668703 > Signed-off-by: Laura Abbott <labbott@xxxxxxxxxx> > --- > arch/s390/include/asm/jump_label.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h > index e2d3e6c43395..41dabfd8518d 100644 > --- a/arch/s390/include/asm/jump_label.h > +++ b/arch/s390/include/asm/jump_label.h > @@ -22,7 +22,7 @@ static inline bool arch_static_branch(struct static_key *key, bool branch) > ".long 0b-.,%l[label]-.\n" > ".quad %0-.\n" > ".popsection\n" > - : : "X" (&((char *)key)[branch]) : : label); > + : : "i" (&((char *)key)[branch]) : : label); > return false; > label: > return true; Hmmm, this works only for the kernel image, but not for modules, which we compile with "-fPIC", which again doesn't work as described in the referenced bugzilla: In file included from ././include/linux/compiler_types.h:68, from <command-line>: ./arch/s390/include/asm/jump_label.h: In function 'kvm_vcpu_ioctl': ./include/linux/compiler-gcc.h:124:38: warning: asm operand 0 probably doesn't match constraints #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ^~~ ./arch/s390/include/asm/jump_label.h:19:2: note: in expansion of macro 'asm_volatile_goto' asm_volatile_goto("0: brcl 0,"__stringify(JUMP_LABEL_NOP_OFFSET)"\n" ^~~~~~~~~~~~~~~~~ ./include/linux/compiler-gcc.h:124:38: error: impossible constraint in 'asm' #define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) ^~~ ./arch/s390/include/asm/jump_label.h:19:2: note: in expansion of macro 'asm_volatile_goto' asm_volatile_goto("0: brcl 0,"__stringify(JUMP_LABEL_NOP_OFFSET)"\n" Andreas, Ilya, any idea how to fix this?