i686 or newer processors support multi-byte NOPs, which is preferred for aligning code:
[...@gnu-6 tmp]$ cat a.s jmp bar mov %eax,%ebx mov %eax,%ebx .p2align 4 bar: mov %eax,%ebx [...@gnu-6 tmp]$ as --32 -o old.o a.s [...@gnu-6 tmp]$ as --32 -mtune=i686 -o new.o a.s [...@gnu-6 tmp]$ objdump -dw old.o old.o: file format elf32-i386 Disassembly of section .text: 00000000 <bar-0x10>: 0: eb 0e jmp 10 <bar> 2: 89 c3 mov %eax,%ebx 4: 89 c3 mov %eax,%ebx 6: 8d 76 00 lea 0x0(%esi),%esi 9: 8d bc 27 00 00 00 00 lea 0x0(%edi,%eiz,1),%edi 00000010 <bar>: 10: 89 c3 mov %eax,%ebx [...@gnu-6 tmp]$ objdump -dw new.o new.o: file format elf32-i386 Disassembly of section .text: 00000000 <bar-0x10>: 0: eb 0e jmp 10 <bar> 2: 89 c3 mov %eax,%ebx 4: 89 c3 mov %eax,%ebx 6: 66 2e 0f 1f 84 00 00 00 00 00 nopw %cs:0x0(%eax,%eax,1) 00000010 <bar>: 10: 89 c3 mov %eax,%ebx [...@gnu-6 tmp]$ -march=i686 or higher should pass -mtune=i686 to assembler if it is supported. -- Summary: Pass -mtune=i686 for -march=i686 or higher Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hjl dot tools at gmail dot com GCC target triplet: ii686-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43153