]> git.lizzy.rs Git - rust.git/commitdiff
Use a 'flags' parameter instead of 'version'
authorAaron Hill <aa1ronham@gmail.com>
Thu, 24 Sep 2020 18:18:47 +0000 (14:18 -0400)
committerAaron Hill <aa1ronham@gmail.com>
Mon, 28 Sep 2020 17:44:45 +0000 (13:44 -0400)
README.md
src/shims/foreign_items.rs
tests/compile-fail/backtrace/bad-backtrace-decl.rs
tests/compile-fail/backtrace/bad-backtrace-ptr.rs
tests/compile-fail/backtrace/bad-backtrace-version.rs
tests/run-pass/backtrace-api.rs

index 524c8e10cf3653d7b31b749de1509e946abc50bc..55d3bef727f326b79c727cad622aadb22f5cb0c8 100644 (file)
--- a/README.md
+++ b/README.md
@@ -290,7 +290,7 @@ extern "Rust" {
     ///
     /// The fields must be declared in exactly the same order as they appear in `MiriFrame` above.
     /// This function can be called on any thread (not just the one which obtained `frame`)
-    fn miri_resolve_frame(version: u8, frame: *mut ()) -> MiriFrame;
+    fn miri_resolve_frame(frame: *mut (), flags: u64) -> MiriFrame;
 
     /// Miri-provided extern function to begin unwinding with the given payload.
     ///
index 4d1ead8f0f82fda4a05fb70a5fc0e4a1055c699d..b1a02a8eb65b84513b7335441e60aed45e4dfdde 100644 (file)
@@ -251,11 +251,11 @@ fn emulate_foreign_item_by_name(
             // Resolves a Miri backtrace frame. See the README for details.
             "miri_resolve_frame" => {
                 let tcx = this.tcx;
-                let &[version, ptr] = check_arg_count(args)?;
+                let &[ptr, flags] = check_arg_count(args)?;
 
-                let version = this.read_scalar(version)?.to_u8()?;
-                if version != 0 {
-                    throw_ub_format!("Unknown `miri_resolve_frame` version {}", version);
+                let flags = this.read_scalar(flags)?.to_u64()?;
+                if flags != 0 {
+                    throw_ub_format!("Unknown `miri_resolve_frame` flags {}", flags);
                 }
 
                 let ptr = match this.read_scalar(ptr)?.check_init()? {
index 7c250fbbe3a4d330db8dab3ba6b71c586060908a..c55a1c6d38085fe73720f6f222e889711caa8279 100644 (file)
@@ -1,13 +1,13 @@
 extern "Rust" {
     fn miri_get_backtrace() -> Box<[*mut ()]>;
-    fn miri_resolve_frame(version: u8, ptr: *mut ());
+    fn miri_resolve_frame(ptr: *mut (), flags: u64);
 }
 
 fn main() {
     let frames = unsafe { miri_get_backtrace() };
     for frame in frames.into_iter() {
         unsafe {
-            miri_resolve_frame(0, *frame); //~ ERROR Undefined Behavior: Bad declaration of miri_resolve_frame - should return a struct with 4 fields
+            miri_resolve_frame(*frame, 0); //~ ERROR Undefined Behavior: Bad declaration of miri_resolve_frame - should return a struct with 4 fields
         }
     }
 }
index 49b8ac88494dc8a964c2d340fbc57986a4493f48..3f672eb2dcadcd32c284b80b3fddc34bd4b98c29 100644 (file)
@@ -1,9 +1,9 @@
 extern "Rust" {
-    fn miri_resolve_frame(version: u8, ptr: *mut ());
+    fn miri_resolve_frame(ptr: *mut (), flags: u64);
 }
 
 fn main() {
     unsafe {
-        miri_resolve_frame(0, 0 as *mut _); //~ ERROR Undefined Behavior: Expected a pointer
+        miri_resolve_frame(0 as *mut _, 0); //~ ERROR Undefined Behavior: Expected a pointer
     }
 }
index b0183ca99e942f496c812fb0405d7ea5c216cf4c..d6743ae8fff9327fee278641126ecea939980861 100644 (file)
@@ -1,9 +1,9 @@
 extern "Rust" {
-    fn miri_resolve_frame(version: u8, ptr: *mut ());
+    fn miri_resolve_frame(ptr: *mut (), flags: u64);
 }
 
 fn main() {
     unsafe {
-        miri_resolve_frame(1, 0 as *mut _); //~ ERROR  Undefined Behavior: Unknown `miri_resolve_frame` version 1
+        miri_resolve_frame(0 as *mut _, 1); //~ ERROR  Undefined Behavior: Unknown `miri_resolve_frame` flags 1
     }
 }
index 51da6cf9c4dc5842a2900ab6aa0e28eee02164f8..231b718cd3eb949460f11a77f21c1b22723e0b6b 100644 (file)
@@ -3,7 +3,7 @@
 
 extern "Rust" {
     fn miri_get_backtrace() -> Box<[*mut ()]>;
-    fn miri_resolve_frame(version: u8, ptr: *mut ()) -> MiriFrame;
+    fn miri_resolve_frame(ptr: *mut (), flags: u64) -> MiriFrame;
 }
 
 #[derive(Debug)]
@@ -17,7 +17,7 @@ struct MiriFrame {
 fn main() {
     let frames = unsafe { miri_get_backtrace() };
     for frame in frames.into_iter() {
-        let miri_frame = unsafe { miri_resolve_frame(0, *frame) };
+        let miri_frame = unsafe { miri_resolve_frame(*frame, 0) };
         let name = String::from_utf8(miri_frame.name.into()).unwrap();
         let filename = String::from_utf8(miri_frame.filename.into()).unwrap();
         eprintln!("{}:{}:{} ({})", filename, miri_frame.lineno, miri_frame.colno, name);