about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicholas Nethercote <nnethercote@mozilla.com>2020-04-02 15:58:07 +1100
committerNicholas Nethercote <nnethercote@mozilla.com>2020-04-19 19:53:54 +1000
commit7ec7b572a973b565b74f02e459906f647065ebab (patch)
tree3c15609db4b5ed23dd34525ecdd4acb4be8604e5
parent0b92969b8f5b328da13021a89b982f68b668b87d (diff)
downloadrust-7ec7b572a973b565b74f02e459906f647065ebab.tar.gz
rust-7ec7b572a973b565b74f02e459906f647065ebab.zip
Fix the `-Zsanitizer_memory_track_origins` error message.
Currently, if you give a bogus value like
`-Zsanitizer-memory-track-origins=99` you get this incorrect error:
```
error: debugging option `sanitizer-memory-track-origins` takes no value
```
This commit fixes it so it gives this instead:
```
error: incorrect value `99` for debugging option `sanitizer-memory-track-origins` - 0, 1, or 2 was expected
```
The commit also makes `parse_sanitizer_memory_track_origins` more
readable.
-rw-r--r--src/librustc_session/options.rs20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/librustc_session/options.rs b/src/librustc_session/options.rs
index 08c623457c2..dea7ffd6bbb 100644
--- a/src/librustc_session/options.rs
+++ b/src/librustc_session/options.rs
@@ -259,7 +259,8 @@ macro_rules! options {
             Some("one of: `address`, `leak`, `memory` or `thread`");
         pub const parse_sanitizer_list: Option<&str> =
             Some("comma separated list of sanitizers");
-        pub const parse_sanitizer_memory_track_origins: Option<&str> = None;
+        pub const parse_sanitizer_memory_track_origins: Option<&str> =
+            Some("0, 1, or 2");
         pub const parse_cfguard: Option<&str> =
             Some("either `disabled`, `nochecks`, or `checks`");
         pub const parse_linker_flavor: Option<&str> =
@@ -491,18 +492,11 @@ macro_rules! options {
         }
 
         fn parse_sanitizer_memory_track_origins(slot: &mut usize, v: Option<&str>) -> bool {
-            match v.map(|s| s.parse()) {
-                None => {
-                    *slot = 2;
-                    true
-                }
-                Some(Ok(i)) if i <= 2 => {
-                    *slot = i;
-                    true
-                }
-                _ => {
-                    false
-                }
+            match v {
+                Some("2") | None => { *slot = 2; true }
+                Some("1") => { *slot = 1; true }
+                Some("0") => { *slot = 0; true }
+                Some(_) => false,
             }
         }