As recently discussed on the Linux kernel mailing list, in gas the semantics for choosing the i386 NOP sequence are incorrect and will cause unexpected failures. They should chosen depending on march where new instructions can be used and not mtune where new instructions must not be used.
http://thread.gmane.org/gmane.linux.kernel/730834/focus=731161 There is also another related issue with i686 class CPUs. Some do not actually support the NOPL instruction. Examples include Via C3, Via Eden, AMD Geode LX (as used in OLPC), Transmeta Crusoe and it appears broken on Virtual PC. Changing i686 to use f32_patt instead alt_long_patt allows binaries created with -march=i686 to run on all i686 class CPUs with only a minor optimization loss versus the gain from CMOV optimisation. The attached patch corrects both these issues. -- Summary: i386 NOPs must be derived from march not mtune Product: binutils Version: unspecified Status: NEW Severity: normal Priority: P2 Component: gas AssignedTo: unassigned at sources dot redhat dot com ReportedBy: swanson at ukfsn dot org CC: bug-binutils at gnu dot org GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://sourceware.org/bugzilla/show_bug.cgi?id=6957 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils