bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/23000] New: TLSDESC_PLT is incompatible with IBT


From: hjl.tools at gmail dot com
Subject: [Bug ld/23000] New: TLSDESC_PLT is incompatible with IBT
Date: Sat, 24 Mar 2018 22:10:06 +0000

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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]