From bb0fda5ea25e0011df26e2f1950d5a3d871b30c0 Mon Sep 17 00:00:00 2001 From: Nelson Elhage Date: Wed, 27 May 2020 12:43:50 -0700 Subject: [PATCH 1/3] Add some optimization options to our asm Since we don't actually emit code to speak of, we can let rustc/LLVM know that we don't clobber anything, letting them avoid saving/restoring registers or other state around the probe. We can't mark the probe as `pure`, even though our _code_ is `pure`, since that would enable LLVM to delete it entirely (since we have no outputs). --- src/platform/systemtap.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/systemtap.rs b/src/platform/systemtap.rs index 7f04cb0..ad96545 100644 --- a/src/platform/systemtap.rs +++ b/src/platform/systemtap.rs @@ -181,7 +181,7 @@ macro_rules! sdt_asm( #[doc(hidden)] #[macro_export] macro_rules! _sdt_asm( - ($addr:tt, options $opt:tt, $provider:ident, $name:ident, $argstr:tt, $($arg:expr),*) => ( + ($addr:tt, options ($opt:tt), $provider:ident, $name:ident, $argstr:tt, $($arg:expr),*) => ( asm!(concat!(r#" 990: nop .pushsection .note.stapsdt,"?","note" @@ -208,6 +208,6 @@ _.stapsdt.base: .space 1 "# ), $(in(reg) (($arg) as isize) ,)* - options $opt, + options($opt, nomem, nostack, preserves_flags), ) )); From 2ed4e987e7d30a8845d9e6d6ebed1cb8bbfbb97b Mon Sep 17 00:00:00 2001 From: Nelson Elhage Date: Thu, 28 May 2020 18:51:03 -0700 Subject: [PATCH 2/3] nonmem -> readonly, per code review Make it hopefully easier for debuggers stopped at a probe to get a consistent view of the world. --- src/platform/systemtap.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/systemtap.rs b/src/platform/systemtap.rs index ad96545..a23f133 100644 --- a/src/platform/systemtap.rs +++ b/src/platform/systemtap.rs @@ -208,6 +208,6 @@ _.stapsdt.base: .space 1 "# ), $(in(reg) (($arg) as isize) ,)* - options($opt, nomem, nostack, preserves_flags), + options($opt, readonly, nostack, preserves_flags), ) )); From 37d6ab58edc2b02569199c9b9720b365a0a6f31e Mon Sep 17 00:00:00 2001 From: Nelson Elhage Date: Fri, 29 May 2020 10:18:33 -0700 Subject: [PATCH 3/3] Fix asm options for non-x86 platforms --- src/platform/systemtap.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/systemtap.rs b/src/platform/systemtap.rs index a23f133..34fe3ba 100644 --- a/src/platform/systemtap.rs +++ b/src/platform/systemtap.rs @@ -181,7 +181,7 @@ macro_rules! sdt_asm( #[doc(hidden)] #[macro_export] macro_rules! _sdt_asm( - ($addr:tt, options ($opt:tt), $provider:ident, $name:ident, $argstr:tt, $($arg:expr),*) => ( + ($addr:tt, options ($($opt:ident),*), $provider:ident, $name:ident, $argstr:tt, $($arg:expr),*) => ( asm!(concat!(r#" 990: nop .pushsection .note.stapsdt,"?","note" @@ -208,6 +208,6 @@ _.stapsdt.base: .space 1 "# ), $(in(reg) (($arg) as isize) ,)* - options($opt, readonly, nostack, preserves_flags), + options(readonly, nostack, preserves_flags, $($opt),*), ) ));