* elf64-x86-64.c (elf_x86_64_nacl_plt0_entry): Fix nop padding
authorRoland McGrath <roland@gnu.org>
Tue, 17 Apr 2012 19:53:19 +0000 (19:53 +0000)
committerRoland McGrath <roland@gnu.org>
Tue, 17 Apr 2012 19:53:19 +0000 (19:53 +0000)
so that 32-byte boundary is a proper instruction boundary.

bfd/ChangeLog
bfd/elf64-x86-64.c

index 7871002..e9ac993 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-17  Roland McGrath  <mcgrathr@google.com>
+
+       * elf64-x86-64.c (elf_x86_64_nacl_plt0_entry): Fix nop padding
+       so that 32-byte boundary is a proper instruction boundary.
+
 2012-04-17  Tristan Gingold  <gingold@adacore.com>
 
        * vms-lib.c (_bfd_vms_lib_get_module): Append .obj extension to
index 8ca811c..3b1c0cc 100644 (file)
@@ -5134,13 +5134,16 @@ static const bfd_byte elf_x86_64_nacl_plt0_entry[NACL_PLT_ENTRY_SIZE] =
     0x4d, 0x01, 0xfb,                  /* add %r15, %r11               */
     0x41, 0xff, 0xe3,                  /* jmpq *%r11                   */
 
-    /* 41 bytes of nop to pad out to the standard size.  */
+    /* 9-byte nop sequence to pad out to the next 32-byte boundary.  */
+    0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopl %cs:0x0(%rax,%rax,1)        */
+
+    /* 32 bytes of nop to pad out to the standard size.  */
     0x66, 0x66, 0x66, 0x66, 0x66, 0x66,    /* excess data32 prefixes   */
     0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)        */
     0x66, 0x66, 0x66, 0x66, 0x66, 0x66,    /* excess data32 prefixes   */
     0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)        */
-    0x66, 0x66,                            /* excess data32 prefixes   */
-    0x2e, 0x0f, 0x1f, 0x84, 0, 0, 0, 0, 0, /* nopw %cs:0x0(%rax,%rax,1)        */
+    0x66,                                  /* excess data32 prefix     */
+    0x90                                   /* nop */
   };
 
 static const bfd_byte elf_x86_64_nacl_plt_entry[NACL_PLT_ENTRY_SIZE] =