[PATCH] fix -mnop-mcount generate 5byte nop in 32bit.
박한범
kese111@gmail.com
Wed Nov 15 21:56:00 GMT 2017
"-mnop-mcount" needs to make 5byte size "nop" instruction.
however recently gcc make only 4byte "nop" in 32bit.
I have test in gcc 5.4, 7.2.
=======================================================
bug result
=======================================================
080485c5 <main>:
80485c5: 0f 1f 04 00 nopl (%eax,%eax,1)
80485c9: 8d 4c 24 04 lea 0x4(%esp),%ecx
80485cd: 83 e4 f0 and $0xfffffff0,%esp
=======================================================
fixed result
=======================================================
08048598 <main>:
8048598: 0f 1f 44 00 01 nopl 0x1(%eax,%eax,1)
804859d: 8d 4c 24 04 lea 0x4(%esp),%ecx
80485a1: 83 e4 f0 and $0xfffffff0,%esp
is it OK?
=======================================================
Index : gcc/config/i386/i386.c
=======================================================
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index c6ca071..e574de3 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -40474,7 +40474,7 @@ static void
x86_print_call_or_nop (FILE *file, const char *target)
{
if (flag_nop_mcount)
- fprintf (file, "1:\tnopl 0x00(%%eax,%%eax,1)\n"); /* 5 byte nop. */
+ fprintf (file, "1:\tnopl 0x01(%%eax,%%eax,1)\n"); /* 5 byte nop. */
else
fprintf (file, "1:\tcall\t%s\n", target);
}
More information about the Gcc-patches
mailing list