summaryrefslogtreecommitdiff
path: root/sysdeps/x86/bits
diff options
context:
space:
mode:
authorIgor Zamyatin <igor.zamyatin@intel.com>2014-04-16 14:43:16 -0700
committerH.J. Lu <hjl.tools@gmail.com>2014-04-16 14:46:49 -0700
commitea8ba7cd14d0f479bae8365ae5c4ef177bdd0aad (patch)
treeaa6c46df56a9ac7567b3bcfa3db37f55ac7b3775 /sysdeps/x86/bits
parent3c799e913168a84197c08e62d47be666329308e0 (diff)
Save/restore bound registers for _dl_runtime_profile
This patch saves and restores bound registers in x86-64 PLT for ld.so profile and LD_AUDIT: * sysdeps/x86_64/bits/link.h (La_x86_64_regs): Add lr_bnd. (La_x86_64_retval): Add lrv_bnd0 and lrv_bnd1. * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Save Intel MPX bound registers before _dl_profile_fixup. * sysdeps/x86_64/dl-trampoline.h: Restore Intel MPX bound registers after _dl_profile_fixup. Save and restore bound registers bnd0/bnd1 when calling _dl_call_pltexit. * sysdeps/x86_64/link-defines.sym (BND_SIZE): New. (LR_BND_OFFSET): Likewise. (LRV_BND0_OFFSET): Likewise. (LRV_BND1_OFFSET): Likewise.
Diffstat (limited to 'sysdeps/x86/bits')
-rw-r--r--sysdeps/x86/bits/link.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/x86/bits/link.h b/sysdeps/x86/bits/link.h
index 8673b2119b..82522e5cc9 100644
--- a/sysdeps/x86/bits/link.h
+++ b/sysdeps/x86/bits/link.h
@@ -93,6 +93,9 @@ typedef struct La_x86_64_regs
uint64_t lr_rsp;
La_x86_64_xmm lr_xmm[8];
La_x86_64_vector lr_vector[8];
+#ifndef __ILP32__
+ __int128 lr_bnd[4];
+#endif
} La_x86_64_regs;
/* Return values for calls from PLT on x86-64. */
@@ -106,6 +109,10 @@ typedef struct La_x86_64_retval
long double lrv_st1;
La_x86_64_vector lrv_vector0;
La_x86_64_vector lrv_vector1;
+#ifndef __ILP32__
+ __int128 lrv_bnd0;
+ __int128 lrv_bnd1;
+#endif
} La_x86_64_retval;
#define La_x32_regs La_x86_64_regs