{
   // From Alexandre Oliva, "Thread-Local Storage Descriptors for IA32
   // and AMD64/EM64T", Version 0.9.4 (2005-10-10).
+  0xf3, 0x0f, 0x1e, 0xfa, // endbr64
   0xff, 0x35,          // pushq x(%rip)
   0, 0, 0, 0,          // replaced with address of linkmap GOT entry (at PLTGOT + 8)
-  0xf2, 0xff, 0x25,    // jmpq *y(%rip)
+  0xff, 0x25,          // jmpq *y(%rip)
   0, 0, 0, 0,          // replaced with offset of reserved TLSDESC_GOT entry
-  0x0f,        0x1f, 0         // nop
 };
 
 template<int size>
     unsigned int plt_offset)
 {
   memcpy(pov, tlsdesc_plt_entry, plt_entry_size);
-  elfcpp::Swap_unaligned<32, false>::writeval(pov + 2,
+  elfcpp::Swap_unaligned<32, false>::writeval(pov + 6,
                                              (got_address + 8
                                               - (plt_address + plt_offset
-                                                 + 6)));
-  elfcpp::Swap_unaligned<32, false>::writeval(pov + 9,
+                                                 + 10)));
+  elfcpp::Swap_unaligned<32, false>::writeval(pov + 12,
                                              (got_base
                                               + tlsdesc_got_offset
                                               - (plt_address + plt_offset
-                                                 + 13)));
+                                                 + 16)));
 }
 
 // The .eh_frame unwind information for the PLT.