diff options
author | Dean Michael Berris <dberris@google.com> | 2016-11-02 04:11:29 +0000 |
---|---|---|
committer | Dean Michael Berris <dberris@google.com> | 2016-11-02 04:11:29 +0000 |
commit | 0d86810158356199dcb4153bdb201abe744d0aea (patch) | |
tree | 872ecfbbbe182b4d4b6e1afecd0ba28bb41ec50a /compiler-rt/lib/xray/xray_interface_internal.h | |
parent | 0b460e6bf8e0c418558401acc4832538ed8b662b (diff) | |
download | bcm5719-llvm-0d86810158356199dcb4153bdb201abe744d0aea.tar.gz bcm5719-llvm-0d86810158356199dcb4153bdb201abe744d0aea.zip |
[XRay][x86_64] Define a tail exit trampoline.
Summary:
We define a new trampoline that's a hybrid between the exit and entry
trampolines with the following properties:
- Saves all of the callee-saved registers according to the x86_64
calling conventions.
- Indicate to the log handler function being called that this is a
function exit event.
This fixes a bug that is a result of not saving enough of the register
states, and that the log handler is clobbering registers that would be
used by the function being tail-exited into manifesting as runtime
errors.
Reviewers: rSerge, echristo, majnemer
Subscribers: mehdi_amini, llvm-commits
Differential Revision: https://reviews.llvm.org/D26020
llvm-svn: 285787
Diffstat (limited to 'compiler-rt/lib/xray/xray_interface_internal.h')
-rw-r--r-- | compiler-rt/lib/xray/xray_interface_internal.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/compiler-rt/lib/xray/xray_interface_internal.h b/compiler-rt/lib/xray/xray_interface_internal.h index 24a5acc97a5..c4f72433d17 100644 --- a/compiler-rt/lib/xray/xray_interface_internal.h +++ b/compiler-rt/lib/xray/xray_interface_internal.h @@ -61,6 +61,7 @@ extern "C" { // basis. See xray_trampoline_*.S files for implementations. extern void __xray_FunctionEntry(); extern void __xray_FunctionExit(); +extern void __xray_FunctionTailExit(); } #endif |