summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/xray/xray_interface_internal.h
diff options
context:
space:
mode:
authorDean Michael Berris <dberris@google.com>2016-11-02 04:11:29 +0000
committerDean Michael Berris <dberris@google.com>2016-11-02 04:11:29 +0000
commit0d86810158356199dcb4153bdb201abe744d0aea (patch)
tree872ecfbbbe182b4d4b6e1afecd0ba28bb41ec50a /compiler-rt/lib/xray/xray_interface_internal.h
parent0b460e6bf8e0c418558401acc4832538ed8b662b (diff)
downloadbcm5719-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.h1
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
OpenPOWER on IntegriCloud