]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
x86: Add _CET_ENDBR to functions in dl-tlsdesc.S
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 17 Jul 2018 23:07:03 +0000 (16:07 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 17 Jul 2018 23:07:17 +0000 (16:07 -0700)
Add _CET_ENDBR to functions in dl-tlsdesc.S, which are called indirectly,
to support IBT.

Tested on i686 and x86-64.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* sysdeps/i386/dl-tlsdesc.S (_dl_tlsdesc_return): Add
_CET_ENDBR.
(_dl_tlsdesc_undefweak): Likewise.
(_dl_tlsdesc_dynamic): Likewise.
(_dl_tlsdesc_resolve_abs_plus_addend): Likewise.
(_dl_tlsdesc_resolve_rel): Likewise.
(_dl_tlsdesc_resolve_rela): Likewise.
(_dl_tlsdesc_resolve_hold): Likewise.
* sysdeps/x86_64/dl-tlsdesc.S (_dl_tlsdesc_return): Likewise.
(_dl_tlsdesc_undefweak): Likewise.
(_dl_tlsdesc_dynamic): Likewise.
(_dl_tlsdesc_resolve_rela): Likewise.
(_dl_tlsdesc_resolve_hold): Likewise.

ChangeLog
sysdeps/i386/dl-tlsdesc.S
sysdeps/x86_64/dl-tlsdesc.S

index 59ed8bfa525d28b6659c559771a9f9b961cc5bc1..057c7b02e58f6390b64ae74ea2138007aa9a1a4b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2018-07-17  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * sysdeps/i386/dl-tlsdesc.S (_dl_tlsdesc_return): Add
+       _CET_ENDBR.
+       (_dl_tlsdesc_undefweak): Likewise.
+       (_dl_tlsdesc_dynamic): Likewise.
+       (_dl_tlsdesc_resolve_abs_plus_addend): Likewise.
+       (_dl_tlsdesc_resolve_rel): Likewise.
+       (_dl_tlsdesc_resolve_rela): Likewise.
+       (_dl_tlsdesc_resolve_hold): Likewise.
+       * sysdeps/x86_64/dl-tlsdesc.S (_dl_tlsdesc_return): Likewise.
+       (_dl_tlsdesc_undefweak): Likewise.
+       (_dl_tlsdesc_dynamic): Likewise.
+       (_dl_tlsdesc_resolve_rela): Likewise.
+       (_dl_tlsdesc_resolve_hold): Likewise.
+
 2018-07-17  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/i386/crti.S (_init): Add _CET_ENDBR.
index 2c4764d1aa494c26c2c64de2285cb1cc398c819b..128f0af3188f46bbaaec4483e2e989fe54915099 100644 (file)
@@ -37,6 +37,7 @@
        cfi_startproc
        .align 16
 _dl_tlsdesc_return:
+       _CET_ENDBR
        movl    4(%eax), %eax
        ret
        cfi_endproc
@@ -58,6 +59,7 @@ _dl_tlsdesc_return:
        cfi_startproc
        .align 16
 _dl_tlsdesc_undefweak:
+       _CET_ENDBR
        movl    4(%eax), %eax
        subl    %gs:0, %eax
        ret
@@ -99,6 +101,7 @@ _dl_tlsdesc_dynamic (struct tlsdesc *tdp)
        cfi_startproc
        .align 16
 _dl_tlsdesc_dynamic:
+       _CET_ENDBR
        /* Like all TLS resolvers, preserve call-clobbered registers.
           We need two scratch regs anyway.  */
        subl    $28, %esp
@@ -154,6 +157,7 @@ _dl_tlsdesc_dynamic:
        .align 16
 _dl_tlsdesc_resolve_abs_plus_addend:
 0:
+       _CET_ENDBR
        pushl   %eax
        cfi_adjust_cfa_offset (4)
        pushl   %ecx
@@ -192,6 +196,7 @@ _dl_tlsdesc_resolve_abs_plus_addend:
        .align 16
 _dl_tlsdesc_resolve_rel:
 0:
+       _CET_ENDBR
        pushl   %eax
        cfi_adjust_cfa_offset (4)
        pushl   %ecx
@@ -230,6 +235,7 @@ _dl_tlsdesc_resolve_rel:
        .align 16
 _dl_tlsdesc_resolve_rela:
 0:
+       _CET_ENDBR
        pushl   %eax
        cfi_adjust_cfa_offset (4)
        pushl   %ecx
@@ -268,6 +274,7 @@ _dl_tlsdesc_resolve_rela:
        .align 16
 _dl_tlsdesc_resolve_hold:
 0:
+       _CET_ENDBR
        pushl   %eax
        cfi_adjust_cfa_offset (4)
        pushl   %ecx
index 437bd8cde74572c291bf7c4583440734c1d6bb19..80d771cd887dd626d4e6de360641c331709a58eb 100644 (file)
@@ -37,6 +37,7 @@
        cfi_startproc
        .align 16
 _dl_tlsdesc_return:
+       _CET_ENDBR
        movq    8(%rax), %rax
        ret
        cfi_endproc
@@ -58,6 +59,7 @@ _dl_tlsdesc_return:
        cfi_startproc
        .align 16
 _dl_tlsdesc_undefweak:
+       _CET_ENDBR
        movq    8(%rax), %rax
        subq    %fs:0, %rax
        ret
@@ -96,6 +98,7 @@ _dl_tlsdesc_dynamic (register struct tlsdesc *tdp asm ("%rax"))
        cfi_startproc
        .align 16
 _dl_tlsdesc_dynamic:
+       _CET_ENDBR
        /* Preserve call-clobbered registers that we modify.
           We need two scratch regs anyway.  */
        movq    %rsi, -16(%rsp)
@@ -166,6 +169,7 @@ _dl_tlsdesc_dynamic:
        .align 16
        /* The PLT entry will have pushed the link_map pointer.  */
 _dl_tlsdesc_resolve_rela:
+       _CET_ENDBR
        cfi_adjust_cfa_offset (8)
        /* Save all call-clobbered registers.  Add 8 bytes for push in
           the PLT entry to align the stack.  */
@@ -216,6 +220,7 @@ _dl_tlsdesc_resolve_rela:
        .align 16
 _dl_tlsdesc_resolve_hold:
 0:
+       _CET_ENDBR
        /* Save all call-clobbered registers.  */
        subq    $72, %rsp
        cfi_adjust_cfa_offset (72)