963e88c x86-64: Add ENDBR64 to the TLSDESC PLT entry

Authored and Committed by H.J. Lu 6 years ago
    x86-64: Add ENDBR64 to the TLSDESC PLT entry
    
    The TLSDESC entry in a lazy procedure linkage table is called indirectly
    with "callq *(%rax)".  This patch adds an ENDBR64 to support indirect
    branch tracking in Intel CET.  The TLSDESC PLT entry now looks like:
    
    0xf3, 0x0f, 0x1e, 0xfa,  /* endbr64             */
    0xff, 0x35, 8, 0, 0, 0,  /* pushq GOT+8(%rip)   */
    0xff, 0x25, 16, 0, 0, 0  /* jmpq *GOT+TDG(%rip)  */
    
    The BND prefix isn't needed since MPX isn't used for TLSDESC.
    
    bfd/
    
    	PR ld/23000
    	* elf64-x86-64.c (elf_x86_64_finish_dynamic_sections): Add
    	ENDBR64 to the TLSDESC PLT entry.
    
    ld/
    
    	PR ld/23000
    	* testsuite/ld-x86-64/tlsdesc.pd: Updated.
    
    (cherry picked from commit bf54968b128a2133174d81c438d402ecfaf83042)
    
        
file modified
+9 -0
file modified
+19 -13
file modified
+8 -0