https://sourceware.org/bugzilla/show_bug.cgi?id=23000

            Bug ID: 23000
           Summary: TLSDESC_PLT is incompatible with IBT
           Product: binutils
           Version: 2.31 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
          Assignee: unassigned at sourceware dot org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: x86

TLSDESC_PLT:

Dump of assembler code from 0x7ffef7eab040 to 0x7ffef7eab05e:
=> 0x00007ffef7eab040:  ff 35 c2 2f 00 00       pushq  0x2fc2(%rip)
   0x00007ffef7eab046:  f2 ff 25 ab 2f 00 00    bnd jmpq *0x2fab(%rip)
   0x00007ffef7eab04d:  0f 1f 00        nopl   (%rax)

is incompatible with indirect branch tracking (IBT), which requires a
4-byte ENDBR at the beginning due to

  a8:   48 8d 05 00 00 00 00    lea    0x0(%rip),%rax        # af
<test_gd+0xf>ab: R_X86_64_GOTPC32_TLSDESC     gd-0x4
  af:   ff 10                   callq  *(%rax)  af: R_X86_64_TLSDESC_CALL      
gd

This can be changed to

endbr64
pushq GOT+8(%rip)
jmpq *GOT+16(%rip)

without BND prefix.  This will clear bound registers if MPX is
used.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to