On Linux/s390x (Debian 8) in 32-bit mode (CC="gcc -m31"), with configure option --enable-dfltcc, there is a build failure:
CC dfltcc.o ../dfltcc.c: Assembler messages: ../dfltcc.c:163: Error: Unrecognized opcode: `stfle' Makefile:1640: recipe for target 'dfltcc.o' failed make[2]: *** [dfltcc.o] Error 1 Or, with V=1: depbase=`echo dfltcc.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ gcc -m31 -std=gnu11 -DHAVE_CONFIG_H -I. -I.. -I./lib -I../lib -I/home/bruno/prefix32/include -Wall -g -O2 -MT dfltcc.o -MD -MP -MF $depbase.Tpo -c -o dfltcc.o ../dfltcc.c &&\ mv -f $depbase.Tpo $depbase.Po ../dfltcc.c: Assembler messages: ../dfltcc.c:163: Error: Unrecognized opcode: `stfle' Makefile:1640: recipe for target 'dfltcc.o' failed make[2]: *** [dfltcc.o] Error 1 In the source code there is a comment that attempts to explain why this code is good for 32-bit mode: /* STFLE is supported since z9-109 and only in z/Architecture mode. When * compiling with -m31, gcc defaults to ESA mode, however, since the kernel * is 64-bit, it's always z/Architecture mode at runtime. */ But apparently it assumes that the assembler will grok the 'stfle' instruction. Which is not the case here (in 32-bit mode). Bruno
