https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104713
James Addison <jay+g...@jp-hosting.net> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jay+g...@jp-hosting.net --- Comment #5 from James Addison <jay+g...@jp-hosting.net> --- Adrian wrote: > To support the Geode in OLPC, the toolchain definition of i686 does include > CMOV but it does not include multi-byte NOPs. ... > Sorry for being unclear, this is the historical reason why the binutils/gcc > definition of i686 does not include multi-byte NOPs. Jakub wrote: > Just build for those as -march=i586. preventing -fcf-protection with > -march=i686 would be a really bad idea, that would basically prevent all of > CET protection for 32-bit code, i686 is what is used as the supported lowest > common denominator of 32-bit code. Could the findings indicate that there are two bugs here? - The Geode LX target capable of supporting fcf-protection but GCC-11 currently rejects that architecture and flag combination (in the potentially-buggy code[1] that Adrian refers to) - Multi-byte NOPs are emitted for architecture i686 by GCC-11, despite some CPUs within that architecture lacking[2] support Also potentially relevant is bug 41989. [1] - https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/config/i386/i386-options.cc;h=805539364108eee07f5bda527acd6f39f3f7bf95;hb=HEAD#l2929 [2] - https://bugzilla.redhat.com/show_bug.cgi?id=579838#c32