Skip to content
Snippets Groups Projects
Commit d2d86753 authored by Per's avatar Per
Browse files

runner examples

parent c2e88a26
Branches
No related tags found
No related merge requests found
...@@ -4,37 +4,40 @@ ...@@ -4,37 +4,40 @@
name = "aligned" name = "aligned"
version = "0.3.2" version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb1ce8b3382016136ab1d31a1b5ce807144f8b7eb2d5f16b2108f0f07edceb94"
dependencies = [ dependencies = [
"as-slice 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "as-slice",
] ]
[[package]] [[package]]
name = "as-slice" name = "as-slice"
version = "0.1.2" version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be6b7e95ac49d753f19cab5a825dea99a1149a04e4e3230b33ae16e120954c04"
dependencies = [ dependencies = [
"generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.12.3",
"generic-array 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", "generic-array 0.13.2",
"stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "stable_deref_trait",
] ]
[[package]] [[package]]
name = "bare-metal" name = "bare-metal"
version = "0.2.5" version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3"
dependencies = [ dependencies = [
"rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version",
] ]
[[package]] [[package]]
name = "cortex-m" name = "cortex-m"
version = "0.6.1" version = "0.6.1"
source = "git+https://github.com/perlindgren/cortex-m.git?branch=trustit#b2fa26f1044509a34006d4ad6303abc52ea09bce" source = "git+https://github.com/perlindgren/cortex-m.git?branch=trustit#d8f28518c429febf488baf0dd8d3488779edaa0e"
dependencies = [ dependencies = [
"aligned 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "aligned",
"bare-metal 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "bare-metal",
"klee-sys 0.1.0 (git+https://gitlab.henriktjader.com/pln/klee-sys.git)", "klee-sys",
"volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "volatile-register",
] ]
[[package]] [[package]]
...@@ -42,10 +45,10 @@ name = "cortex-m-rt" ...@@ -42,10 +45,10 @@ name = "cortex-m-rt"
version = "0.6.11" version = "0.6.11"
source = "git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit#8d2686097e168e8b82d51ae1ea17d9ebe6d567e0" source = "git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit#8d2686097e168e8b82d51ae1ea17d9ebe6d567e0"
dependencies = [ dependencies = [
"cortex-m 0.6.1 (git+https://github.com/perlindgren/cortex-m.git?branch=trustit)", "cortex-m",
"cortex-m-rt-macros 0.1.7 (git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit)", "cortex-m-rt-macros",
"klee-sys 0.1.0 (git+https://gitlab.henriktjader.com/pln/klee-sys.git)", "klee-sys",
"r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "r0",
] ]
[[package]] [[package]]
...@@ -53,91 +56,99 @@ name = "cortex-m-rt-macros" ...@@ -53,91 +56,99 @@ name = "cortex-m-rt-macros"
version = "0.1.7" version = "0.1.7"
source = "git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit#8d2686097e168e8b82d51ae1ea17d9ebe6d567e0" source = "git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit#8d2686097e168e8b82d51ae1ea17d9ebe6d567e0"
dependencies = [ dependencies = [
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "quote",
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", "syn",
] ]
[[package]] [[package]]
name = "cortex-m-semihosting" name = "cortex-m-semihosting"
version = "0.3.5" version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "113ef0ecffee2b62b58f9380f4469099b30e9f9cbee2804771b4203ba1762cfa"
dependencies = [ dependencies = [
"cortex-m 0.6.1 (git+https://github.com/perlindgren/cortex-m.git?branch=trustit)", "cortex-m",
] ]
[[package]] [[package]]
name = "cstr_core" name = "cstr_core"
version = "0.1.2" version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ebe7158ee57e848621d24d0ed87910edb97639cb94ad9977edf440e31226035"
dependencies = [ dependencies = [
"cty 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "cty",
"memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "memchr",
] ]
[[package]] [[package]]
name = "cty" name = "cty"
version = "0.1.5" version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4e1d41c471573612df00397113557693b5bf5909666a8acb253930612b93312"
[[package]] [[package]]
name = "generic-array" name = "generic-array"
version = "0.12.3" version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
dependencies = [ dependencies = [
"typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", "typenum",
] ]
[[package]] [[package]]
name = "generic-array" name = "generic-array"
version = "0.13.2" version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd"
dependencies = [ dependencies = [
"typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)", "typenum",
] ]
[[package]] [[package]]
name = "klee-examples" name = "klee-examples"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"cortex-m 0.6.1 (git+https://github.com/perlindgren/cortex-m.git?branch=trustit)", "cortex-m",
"cortex-m-rt 0.6.11 (git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit)", "cortex-m-rt",
"cortex-m-semihosting 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "cortex-m-semihosting",
"klee-sys 0.1.0 (git+https://gitlab.henriktjader.com/pln/klee-sys.git)", "klee-sys",
"lm3s6965 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "lm3s6965",
"panic-halt 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "panic-halt",
"panic-klee 0.1.0 (git+https://gitlab.henriktjader.com/pln/panic-klee.git)", "panic-klee",
"stm32f4 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "stm32f4",
"vcell 0.1.2 (git+https://github.com/perlindgren/vcell.git?branch=trustit)", "vcell",
"volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "volatile-register",
] ]
[[package]] [[package]]
name = "klee-sys" name = "klee-sys"
version = "0.1.0" version = "0.1.0"
source = "git+https://gitlab.henriktjader.com/pln/klee-sys.git#c8275a34cffb895984d6bdea80e9c6ff9079f769" source = "git+https://gitlab.henriktjader.com/pln/klee-sys.git#3e49ed21f5514e7a3244a21c3cbebfcc4042929c"
dependencies = [ dependencies = [
"cstr_core 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "cstr_core",
] ]
[[package]] [[package]]
name = "lm3s6965" name = "lm3s6965"
version = "0.1.3" version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8698042a7495160eac9f7298a32cd1ddbb6ad2780f766f5a99b4f0a6b915e0ad"
dependencies = [ dependencies = [
"bare-metal 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "bare-metal",
"cortex-m-rt 0.6.11 (git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit)", "cortex-m-rt",
] ]
[[package]] [[package]]
name = "memchr" name = "memchr"
version = "2.2.1" version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3197e20c7edb283f87c071ddfc7a2cca8f8e0b888c242959846a6fce03c72223"
[[package]] [[package]]
name = "panic-halt" name = "panic-halt"
version = "0.2.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812"
[[package]] [[package]]
name = "panic-klee" name = "panic-klee"
...@@ -148,123 +159,104 @@ source = "git+https://gitlab.henriktjader.com/pln/panic-klee.git#3b0c897f49d7fff ...@@ -148,123 +159,104 @@ source = "git+https://gitlab.henriktjader.com/pln/panic-klee.git#3b0c897f49d7fff
name = "proc-macro2" name = "proc-macro2"
version = "1.0.7" version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc"
dependencies = [ dependencies = [
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid",
] ]
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.2" version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
dependencies = [ dependencies = [
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2",
] ]
[[package]] [[package]]
name = "r0" name = "r0"
version = "0.2.2" version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f"
[[package]] [[package]]
name = "rustc_version" name = "rustc_version"
version = "0.2.3" version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
dependencies = [ dependencies = [
"semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "semver",
] ]
[[package]] [[package]]
name = "semver" name = "semver"
version = "0.9.0" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
dependencies = [ dependencies = [
"semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "semver-parser",
] ]
[[package]] [[package]]
name = "semver-parser" name = "semver-parser"
version = "0.7.0" version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]] [[package]]
name = "stable_deref_trait" name = "stable_deref_trait"
version = "1.1.1" version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
[[package]] [[package]]
name = "stm32f4" name = "stm32f4"
version = "0.9.0" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88640ad08c62e0651a1320187f38c3655d025ed580a10f0e4d85a2cc4829069f"
dependencies = [ dependencies = [
"bare-metal 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", "bare-metal",
"cortex-m 0.6.1 (git+https://github.com/perlindgren/cortex-m.git?branch=trustit)", "cortex-m",
"cortex-m-rt 0.6.11 (git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit)", "cortex-m-rt",
"vcell 0.1.2 (git+https://github.com/perlindgren/vcell.git?branch=trustit)", "vcell",
] ]
[[package]] [[package]]
name = "syn" name = "syn"
version = "1.0.13" version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
dependencies = [ dependencies = [
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "quote",
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid",
] ]
[[package]] [[package]]
name = "typenum" name = "typenum"
version = "1.11.2" version = "1.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.2.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
[[package]] [[package]]
name = "vcell" name = "vcell"
version = "0.1.2" version = "0.1.2"
source = "git+https://github.com/perlindgren/vcell.git?branch=trustit#4eb44a012d65860c596556d6a63af9e0fa31853a" source = "git+https://github.com/perlindgren/vcell.git?branch=trustit#4eb44a012d65860c596556d6a63af9e0fa31853a"
dependencies = [ dependencies = [
"klee-sys 0.1.0 (git+https://gitlab.henriktjader.com/pln/klee-sys.git)", "klee-sys",
] ]
[[package]] [[package]]
name = "volatile-register" name = "volatile-register"
version = "0.2.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286"
dependencies = [ dependencies = [
"vcell 0.1.2 (git+https://github.com/perlindgren/vcell.git?branch=trustit)", "vcell",
] ]
[metadata]
"checksum aligned 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eb1ce8b3382016136ab1d31a1b5ce807144f8b7eb2d5f16b2108f0f07edceb94"
"checksum as-slice 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "be6b7e95ac49d753f19cab5a825dea99a1149a04e4e3230b33ae16e120954c04"
"checksum bare-metal 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3"
"checksum cortex-m 0.6.1 (git+https://github.com/perlindgren/cortex-m.git?branch=trustit)" = "<none>"
"checksum cortex-m-rt 0.6.11 (git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit)" = "<none>"
"checksum cortex-m-rt-macros 0.1.7 (git+https://github.com/perlindgren/cortex-m-rt.git?branch=trustit)" = "<none>"
"checksum cortex-m-semihosting 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "113ef0ecffee2b62b58f9380f4469099b30e9f9cbee2804771b4203ba1762cfa"
"checksum cstr_core 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6ebe7158ee57e848621d24d0ed87910edb97639cb94ad9977edf440e31226035"
"checksum cty 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "c4e1d41c471573612df00397113557693b5bf5909666a8acb253930612b93312"
"checksum generic-array 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
"checksum generic-array 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd"
"checksum klee-sys 0.1.0 (git+https://gitlab.henriktjader.com/pln/klee-sys.git)" = "<none>"
"checksum lm3s6965 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8698042a7495160eac9f7298a32cd1ddbb6ad2780f766f5a99b4f0a6b915e0ad"
"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
"checksum panic-halt 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812"
"checksum panic-klee 0.1.0 (git+https://gitlab.henriktjader.com/pln/panic-klee.git)" = "<none>"
"checksum proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "0319972dcae462681daf4da1adeeaa066e3ebd29c69be96c6abb1259d2ee2bcc"
"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
"checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f"
"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
"checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"
"checksum stm32f4 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88640ad08c62e0651a1320187f38c3655d025ed580a10f0e4d85a2cc4829069f"
"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
"checksum vcell 0.1.2 (git+https://github.com/perlindgren/vcell.git?branch=trustit)" = "<none>"
"checksum volatile-register 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286"
...@@ -33,7 +33,9 @@ version = "0.1.0" ...@@ -33,7 +33,9 @@ version = "0.1.0"
[dependencies.klee-sys] [dependencies.klee-sys]
git = "https://gitlab.henriktjader.com/pln/klee-sys.git" git = "https://gitlab.henriktjader.com/pln/klee-sys.git"
# path = "../klee-sys"
version = "0.1.0" version = "0.1.0"
features = ["inline-asm"]
# [dependencies.cortex-m-rtfm] # [dependencies.cortex-m-rtfm]
# path = "../cortex-m-rtpro" # path = "../cortex-m-rtpro"
...@@ -48,13 +50,15 @@ vcell = { git = "https://github.com/perlindgren/vcell.git", branch = "trustit" } ...@@ -48,13 +50,15 @@ vcell = { git = "https://github.com/perlindgren/vcell.git", branch = "trustit" }
#vcell = { path = "../vcell" } #vcell = { path = "../vcell" }
cortex-m = { git = "https://github.com/perlindgren/cortex-m.git", branch = "trustit" } cortex-m = { git = "https://github.com/perlindgren/cortex-m.git", branch = "trustit" }
# cortex-m = { path = "../cortex-m" } #cortex-m = { path = "../cortex-m" }
cortex-m-rt = { git = "https://github.com/perlindgren/cortex-m-rt.git", branch = "trustit" } cortex-m-rt = { git = "https://github.com/perlindgren/cortex-m-rt.git", branch = "trustit" }
# cortex-m-rt = { path = "../cortex-m-rt" } # cortex-m-rt = { path = "../cortex-m-rt" }
[features] [features]
# default = ["f4"] # uncomment to enable as default feature
klee-analysis = [ klee-analysis = [
"klee-sys/klee-analysis",
"vcell/klee-analysis", "vcell/klee-analysis",
"cortex-m/klee-analysis", "cortex-m/klee-analysis",
"cortex-m-rt/klee-analysis" "cortex-m-rt/klee-analysis"
......
...@@ -73,14 +73,29 @@ See section `Cargo.toml` for detaled information on features introduced. ...@@ -73,14 +73,29 @@ See section `Cargo.toml` for detaled information on features introduced.
- llvm target `thumbv7em-none-eabihf` - llvm target `thumbv7em-none-eabihf`
- `> rustup show`, to show current Rust tool-chain and installed targets. - `> rustup show`, to show current Rust tool-chain and installed targets.
- `> rustup target add <target>`, to add target, e.g., `thumbv7em-none-eab¡hf`. - `> rustup target add <target>`, to add target, e.g., `thumbv7em-none-eab¡hf`.
- [cargo bin-utils](https://github.com/rust-embedded/cargo-binutils) (tested with version 0.1.7)
### Examples ### Examples
- `f401_minimal.rs` - `f401_minimal.rs`
This example showcase the execution of code on the stm32f401 (and similar targets from the f4). This example showcase the execution of a minimal "Hello World!" application on the stm32f401 (and similar targets from the f4).
-- - `f401_minimal2.rs`
This example showcase cycle accurate and non-intrusive execution time measurements. It also covers, debug vs. release mode optimization and the effect of the `inline-asm` feauture.
- `f401_probe.rs`
A continuation of `f401_minimal2.rs`, showcasing the ultimate degree of automation possible, in an all Rust profiling setting. Further information is found in the `runner` crate.
---
### Disclaimer
This project is in early development, thus expect bugs and shortcomings, no API stability offered or guaranteed. It is however well suited for experimentation and all implemented features have been successfully tested.
---
## Licencse ## Licencse
......
...@@ -8,6 +8,7 @@ extern crate panic_halt; ...@@ -8,6 +8,7 @@ extern crate panic_halt;
use stm32f4::stm32f401 as stm32; use stm32f4::stm32f401 as stm32;
use cortex_m::asm;
use cortex_m_rt::entry; use cortex_m_rt::entry;
use cortex_m_semihosting::hprintln; use cortex_m_semihosting::hprintln;
...@@ -15,7 +16,9 @@ use cortex_m_semihosting::hprintln; ...@@ -15,7 +16,9 @@ use cortex_m_semihosting::hprintln;
fn main() -> ! { fn main() -> ! {
hprintln!("Hello, world!").unwrap(); hprintln!("Hello, world!").unwrap();
loop {} loop {
asm::nop();
}
} }
// See RM0368 Reference Manual for details // See RM0368 Reference Manual for details
...@@ -29,4 +32,84 @@ fn main() -> ! { ...@@ -29,4 +32,84 @@ fn main() -> ! {
// openocd -f openocd.cfg // openocd -f openocd.cfg
// //
// cargo run --example f401_minimal --features f4 --target thumbv7em-none-eabihf // cargo run --example f401_minimal --features f4 --target thumbv7em-none-eabihf
//
// ...
// DefaultPreInit () at /home/pln/.cargo/git/checkouts/cortex-m-rt-073d0396a6df513c/8d26860/src/lib_thumb_rt.rs:571
// 571 pub unsafe extern "C" fn DefaultPreInit() {}
// (gdb)
//
// At this point, the progrom has been flashed onto the target (stm32f401/f411).
//
// (gdb) c
// Continuing.
//
// Breakpoint 1, main () at examples/f401_minimal.rs:14
// 14 #[entry]
//
// `main` is our "entry" point for the user applicaiton.
// It can be named anything by needs to annoted by #[entry].
// At this point global variables have been initiated.
//
// The `openocd.gdb` script defines the startup procedure, where we have set
// a breakpoint at the `main` symbol.
//
// Let's continue.
//
// (gdb) c
// Continuing.
// halted: PC: 0x08001206
//
// In the `openocd` terminal the `Hello world!` text should appear.
// The program is stuck in the infinite `loop {}`.
//
// If you press Ctrl-C, you will force the target (stm32fxx) to break.
//
// (gdb) c
// Continuing.
// halted: PC: 0x08001206
// ^C
// Program received signal SIGINT, Interrupt.
// f401_minimal::__cortex_m_rt_main () at examples/f401_minimal.rs:19
// 19 loop {
//
// (gdb) disassemble
// Dump of assembler code for function f401_minimal::__cortex_m_rt_main:
// 0x0800019a <+0>: movw r0, #5104 ; 0x13f0
// 0x0800019e <+4>: movt r0, #2048 ; 0x800
// 0x080001a2 <+8>: movs r1, #14
// 0x080001a4 <+10>: bl 0x8000f86 <cortex_m_semihosting::export::hstdout_str>
// 0x080001a8 <+14>: movw r1, #5144 ; 0x1418
// 0x080001ac <+18>: movt r1, #2048 ; 0x800
// 0x080001b0 <+22>: bl 0x80011fa <core::result::Result<T,E>::unwrap>
// 0x080001b4 <+26>: b.n 0x80001b6 <f401_minimal::__cortex_m_rt_main+28>
// 0x080001b6 <+28>: bl 0x80012b4 <__nop>
// => 0x080001ba <+32>: b.n 0x80001b6 <f401_minimal::__cortex_m_rt_main+28>
//
// (In gdb you may use tab, for command completion, up arrow for previous command and
// shortcuts for just about anything, `c` for `continue` e.g.)
//
// 0x080001b6 <+28>: bl 0x80012b4 <__nop>
// is a "branch and link call" to a function `__nop`, that simply does nothing (no operation).
// 0x080001ba <+32>: b.n 0x80001b6 <f401_minimal::__cortex_m_rt_main+28>
// in a branch to the previous instruction, indeed an infinite loop right.
//
// Some basic Rust.
// Use https://www.rust-lang.org/learn and in particular https://doc.rust-lang.org/book/.
// There is even a book on embeddded Rust available:
// https://rust-embedded.github.io/book/, it covers much more than we need here.
//
// Figure out a way to print the numbers 0..10 using a for loop.
//
// Figure out a way to store the numbers in 0..10 in a stacic (global) array using a loop.
//
// Print the resulting array (using a single println invocation, not a loop).
//
// (You may prototype the code directly on https://play.rust-lang.org/, and when it works
// backport that into the minimal example, and chack that it works the same)
//
// These two small excersises should get you warmed up.
//
// Some reflections:
// Why is does dealing with static variables require `unsafe`?
//
// This is the way! // This is the way!
// minimal example for the stm32-f401 (and the f4 series)
//! Prints "Hello, world!" on the host console using semihosting
#![no_main]
#![no_std]
extern crate panic_halt;
use stm32f4::stm32f401 as stm32;
use cortex_m::asm;
use cortex_m_rt::entry;
#[entry]
#[inline(never)] // to keep the symbol
fn main() -> ! {
asm::nop();
asm::nop();
asm::bkpt();
do_some_work();
asm::bkpt();
loop {
asm::nop();
}
}
fn do_some_work() {
for _ in 0..100 {
asm::nop();
}
}
// cargo run --example f401_minimal2 --features f4 --target thumbv7em-none-eabihf
// ...
// halted: PC: 0x08000322
// DefaultPreInit () at /home/pln/.cargo/git/checkouts/cortex-m-rt-073d0396a6df513c/8d26860/src/lib_thumb_rt.rs:571
// 571 pub unsafe extern "C" fn DefaultPreInit() {}
// (gdb) disassemble
// Dump of assembler code for function DefaultPreInit:
// => 0x08000322 <+0>: bx lr
// End of assembler dump.
// (gdb) c
// Continuing.
// Breakpoint 1, main () at examples/f401_minimal2.rs:14
// 14 #[entry]
// (gdb) c
// Continuing.
// halted: PC: 0x0800019a
// Program received signal SIGTRAP, Trace/breakpoint trap.
// 0x08000420 in __bkpt ()
// (gdb) backtrace
// #0 0x08000420 in __bkpt ()
// #1 0x080001a6 in cortex_m::asm::bkpt () at /home/pln/.cargo/git/checkouts/cortex-m-514878a7410beb63/d8f2851/src/asm.rs:19
// #2 f401_minimal2::__cortex_m_rt_main () at examples/f401_minimal2.rs:18
// inline-frame.c:156: internal-error: void inline_frame_this_id(frame_info*, void**, frame_id*): Assertion `frame_id_p (*this_id)' failed.
// A problem internal to GDB has been detected,
// further debugging may prove unreliable.
// Quit this debugging session? (y or n) n
//
// This is a bug, please report it. For instructions, see:
// <http://www.gnu.org/software/gdb/bugs/>.
//
// inline-frame.c:156: internal-error: void inline_frame_this_id(frame_info*, void**, frame_id*): Assertion `frame_id_p (*this_id)' failed.
// A problem internal to GDB has been detected,
// further debugging may prove unreliable.
// Create a core file of GDB? (y or n) n
// Command aborted.
// .... eeeehhh no worries, GDB is written in C and still kind of works
// (gdb) frame 2
// #2 f401_minimal2::__cortex_m_rt_main () at examples/f401_minimal2.rs:18
// 18 asm::bkpt();
// So we can get back to the "caller" (that called the `__bkpt()` function).
// At this point we can disassassemble the program.
//
// (gdb) disassemble
// Dump of assembler code for function f401_minimal2::__cortex_m_rt_main:
// 0x08000584 <+0>: bl 0x800077c <__nop>
// 0x08000588 <+4>: bl 0x800077c <__nop>
// 0x0800058c <+8>: bl 0x8000778 <__bkpt>
// => 0x08000590 <+12>: bl 0x800059c <f401_minimal2::do_some_work>
// 0x08000594 <+16>: b.n 0x8000596 <f401_minimal2::__cortex_m_rt_main+18>
// 0x08000596 <+18>: bl 0x800077c <__nop>
// 0x0800059a <+22>: b.n 0x8000596 <f401_minimal2::__cortex_m_rt_main+18>
//
// We see the two calls to the nop function, the bkpt call, the call to do_some_work_
// followed by the infinite loop.
// Great!
//
// Now lets try to find out how long it takes to `do_some_work`.
//
// One way would be by stepping the code and counting the number of steps.
// That is tedious and boring, and prone to errors.
//
// The ARM M4 core has some nice features allowing making our life easier.
//
// The DWT (Debug and Watchpoint and Trace Unit)
// http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.100166_0001_00_en/ric1417175910926.html
// And in particular, the DWT programmers model.
// What we want to do is
// (gdb) mon mww 0xe0001000 1
// (gdb) mon mww 0xe0001004 0
// (gdb) mon mdw 0xe0001004
// Which
// - enables the DWT
// - sets the cyclecounter to 0
// - reads the cyclcounter
//
// Now let the program run (from the first bkpt to the next bkpt.
// (gdb) c
// Continuing.
// Program received signal SIGTRAP, Trace/breakpoint trap.
// 0x0800077c in __bkpt ()
//
// (gdb) mon mdw 0xe0001004
// 0xe0001004: 0000b92f
//
// Alternativle you may use the `x` (examine memory command)
// (gdb) x 0xe0001004
// 0xe0001004: 0x0000b92f
//
// Or in decimal
// (gdb) x/d 0xe0001004
// 0xe0001004: 47407
//
// So some 47k clock cycles... Hmm quite a lot for a loop 0..100 doing ... nothing
//
// Let's repeat the experiment in --release (optimized mode)
//
// cargo run --example f401_minimal2 --features f4 --target thumbv7em-none-eabihf --release
// ...
// run to first breakpoint, setup the DWT cyclecounter, run to breakpoint
// I got 505, cycles. Good but not great... still 5 cycles per nop, right?
//
// Well let's look at the code.
// (gdb) disassemble
// Dump of assembler code for function f401_minimal2::__cortex_m_rt_main:
// => 0x0800019a <+0>: bl 0x80003f4 <__nop>
// 0x0800019e <+4>: bl 0x80003f4 <__nop>
// 0x080001a2 <+8>: bl 0x80003f0 <__bkpt>
// 0x080001a6 <+12>: bl 0x80003f4 <__nop>
// 0x080001aa <+16>: bl 0x80003f4 <__nop>
// 0x080001ae <+20>: bl 0x80003f4 <__nop>
// 0x080001b2 <+24>: bl 0x80003f4 <__nop>
// 0x080001b6 <+28>: bl 0x80003f4 <__nop>
// 0x080001ba <+32>: bl 0x80003f4 <__nop>
// 0x080001be <+36>: bl 0x80003f4 <__nop>
// 0x080001c2 <+40>: bl 0x80003f4 <__nop>
// 0x080001c6 <+44>: bl 0x80003f4 <__nop>
// 0x080001ca <+48>: bl 0x80003f4 <__nop>
// 0x080001ce <+52>: bl 0x80003f4 <__nop>
// 0x080001d2 <+56>: bl 0x80003f4 <__nop>
// ... a 100 in a row, that's some heavy inlining right!
//
// Well at this point, Rust + LLVM is not ALLOWED to do better.
// The assembly (nop) instruction is marked "volatile", meaning it implies
// a side effect, so Rust + LLVM is not allowed to optimize it out.
// That is indeed excellent, as we will discuss later.
//
// But why is the `__nop` a function call and not a native assebly nop?
// Well, Rust has yet to decide on a "stable" format for inline assembly.
// It's merely a syntactical thing, and the RFC has not yet been accepted
// (in due time we will have it.)
//
// In the meantime we can use inline assembly as an "unstable" feature
// by enabled in the nightly toolchain.
//
// > rustup override set nightly
//
// Now we have enabled the nightly toolchain for the current directory (a bit Nix like)
//
// cargo run --example f401_minimal2 --features f4 --target thumbv7em-none-eabihf --release --features inline-asm
//
// run until the first bkpt instruction...
//
// Program received signal SIGTRAP, Trace/breakpoint trap.
// f401_minimal2::__cortex_m_rt_main () at examples/f401_minimal2.rs:19
// 19 asm::bkpt();
// (gdb) disassemble
// Dump of assembler code for function f401_minimal2::__cortex_m_rt_main:
// 0x0800019a <+0>: nop
// 0x0800019c <+2>: nop
// => 0x0800019e <+4>: bkpt 0x0000
// 0x080001a0 <+6>: nop
// 0x080001a2 <+8>: nop
// 0x080001a4 <+10>: nop
// 0x080001a6 <+12>: nop
// 0x080001a8 <+14>: nop
// 0x080001aa <+16>: nop
// 0x080001ac <+18>: nop
// 0x080001ae <+20>: nop
// 0x080001b0 <+22>: nop
// 0x080001b2 <+24>: nop
// 0x080001b4 <+26>: nop
//
// (gdb) mon mww 0xe0001000 1
// (gdb) mon mww 0xe0001004 0
// (gdb) c
// Continuing.
//
// Program received signal SIGTRAP, Trace/breakpoint trap.
// f401_minimal2::__cortex_m_rt_main () at examples/f401_minimal2.rs:21
// 21 asm::bkpt();
// (gdb) mon mdw 0xe0001004
// 0xe0001004: 00000064
//
// (gdb) x/d 0xe0001004
// 0xe0001004: 100
//
// So what have we learned?
// - how we can do NON INTRUSIVE cycle accurate execution time measuremnts
// - how we can speed up a program 470 times without altering its semantics
//
// So back to the question on "volatile" (assembly) instructions.
// "volatile" in this context implies a number of things.
// - it may note be optimized out
// - the order of volatile instructions along an execution path must be preserved
//
// This allows us to
// - write inline assembler for parts of our code that is extremely timing critical
// - introduce precise delays
// - fiddle with CPU registers
// - stack pointer
// - link register
// - special purpose core registers (interrupt enable/disable etc.)
// Essentially using inline assembly we can ALL in Rust. We do not NEED to link
// to external assembly code or external C code (still we can if we want)...
//
// All in Rust, That is the Way!
// minimal example for the stm32-f401 (and the f4 series)
//! Prints "Hello, world!" on the host console using semihosting
#![no_main]
#![no_std]
extern crate panic_halt;
use stm32f4::stm32f401 as stm32;
use cortex_m::asm;
use cortex_m_rt::entry;
#[entry]
#[inline(never)] // to keep the symbol
fn main() -> ! {
asm::nop();
asm::nop();
asm::bkpt();
do_some_work();
asm::bkpt();
loop {
asm::nop();
}
}
fn do_some_work() {
for _ in 0..100 {
asm::nop();
}
}
// cargo run --example f401_probe --features f4 --target thumbv7em-none-eabihf
// ...
//
// The ARM M4 core provides the DWT register for cycle accurate measurements (CYCCNT).
// There is a lot more possibilities to tracing etc. that we will not cover in this course
//
// The real power however comes from automation.
// gdb (designed in the mid 80s) offers automation through python (natively)
// and bindings to sereverals high level languages have been developed.
//
// However, internally gdb has a lot of technical dept, and high internal complexity
// partly due to C and the ad-hoc threading model (threading was introduced along the way
// and not part of the "design".)
//
// More recently the llvm project has released debugger with largely compatible
// interface and automation capabalities. lldb is however not yet supporting
// embedded systems (so we stick to gdb atm)
//
// In both cases their code base is huge, and they are vary capable as designed for
// general purpose debugging.
//
// What we need in order to profile embedded code is however just a small but very
// precise subset of the functionality, defined by the ARM coresight API (for core access)
// and probing functionality (providid by e.g. stlink or DAP link).
//
// Using the latter you can e.g.:
// - read and write bytes/words and blocks thereof
// - read and write flash (writing is section based, first eraze then program)
//
// This type of low-level debug access is sufficent to automate profiling,
// tracing, etc.
//
// The recent Rust `probe-rs` team aims at supporting probing and coresight APIs.
// While the code base is young and immature, it already provides what we need to:
// - program (flash code), this was implemented for the M4 this weekend
// - stepping to and from breakpoint instructions
// - managing the DWT
// The latter two I implemented yesterday, so be aware there might be bugs out there...
//
// So here we go:
// 1. confirm that the above program compiles and runs as expected.
// 2. go to the `runner` folder and run `cargo run --bin f401_probe`
//
// You should get something like:
// device STLink V2-1 (VID: 1155, PID: 14155, STLink)
// probe connected
// strategy ChipInfo(ChipInfo { manufacturer: JEP106Code({ cc: 0x00, id: 0x20 } => Some("STMicroelectronics")), part: 1041 })
// target Target { identifier: TargetIdentifier { chip_name: "STM32F411VETx", ...
// Continue running
// Hit breakpoint :Core stopped at address 0x0800019e
// Continue from breakpoint.
// running
// Hit breakpoint :Core stopped at address 0x08000268
// cycles 100
//
// Have a close look at the small program, and the `runner` library.
//
// Hints:
// cargo doc --open
// Documenst the API, and lets you browse the documentation and source code behind.
//
// cargo objdump --example f401_probe --release --features f4,inline-asm --target thumbv7em-none-eabihf -- -d
// Part of the `cargo bin-utils` package that lets you inspect the generated binary.
//
// Later you will build a small analysis framework combining symbolic execution
// with the measurement based testing, to derive WCET estimates for embedded applications.
//
// This is the Way!
This diff is collapsed.
...@@ -7,9 +7,9 @@ set print asm-demangle on ...@@ -7,9 +7,9 @@ set print asm-demangle on
set backtrace limit 32 set backtrace limit 32
# detect unhandled exceptions, hard faults and panics # detect unhandled exceptions, hard faults and panics
break DefaultHandler #break DefaultHandler
break HardFault #break HardFault
break rust_begin_unwind #break rust_begin_unwind
# # run the next few lines so the panic message is printed immediately # # run the next few lines so the panic message is printed immediately
# # the number needs to be adjusted for your panic handler # # the number needs to be adjusted for your panic handler
# commands $bpnum # commands $bpnum
......
...@@ -42,6 +42,31 @@ name = "autocfg" ...@@ -42,6 +42,31 @@ name = "autocfg"
version = "1.0.0" version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "backtrace"
version = "0.3.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "backtrace-sys"
version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "base64"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "bit-set" name = "bit-set"
version = "0.5.1" version = "0.5.1"
...@@ -139,6 +164,26 @@ dependencies = [ ...@@ -139,6 +164,26 @@ dependencies = [
"syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "failure"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)",
"failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "failure_derive"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
"synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "fallible-iterator" name = "fallible-iterator"
version = "0.2.0" version = "0.2.0"
...@@ -241,6 +286,10 @@ dependencies = [ ...@@ -241,6 +286,10 @@ dependencies = [
"serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "ktest"
version = "0.1.0"
[[package]] [[package]]
name = "lazy_static" name = "lazy_static"
version = "1.4.0" version = "1.4.0"
...@@ -389,8 +438,10 @@ dependencies = [ ...@@ -389,8 +438,10 @@ dependencies = [
name = "probe-rs-t2rust" name = "probe-rs-t2rust"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
...@@ -464,6 +515,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" ...@@ -464,6 +515,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "runner" name = "runner"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"ktest 0.1.0",
"probe-rs 0.3.0", "probe-rs 0.3.0",
] ]
...@@ -477,6 +530,11 @@ dependencies = [ ...@@ -477,6 +530,11 @@ dependencies = [
"libusb1-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "libusb1-sys 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "rustc-demangle"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]] [[package]]
name = "scroll" name = "scroll"
version = "0.10.1" version = "0.10.1"
...@@ -567,6 +625,17 @@ dependencies = [ ...@@ -567,6 +625,17 @@ dependencies = [
"unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "synstructure"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"proc-macro2 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)",
"unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "take_mut" name = "take_mut"
version = "0.2.2" version = "0.2.2"
...@@ -655,6 +724,9 @@ dependencies = [ ...@@ -655,6 +724,9 @@ dependencies = [
"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" "checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" "checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d" "checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea"
"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491"
"checksum base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" "checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80"
"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" "checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
"checksum bitfield 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" "checksum bitfield 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719"
...@@ -669,6 +741,8 @@ dependencies = [ ...@@ -669,6 +741,8 @@ dependencies = [
"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
"checksum dyn-clone 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3ec9c7fb9a2ce708751c98e31ccbae74b6ab194f5c8e30cfb7ed62e38b70866" "checksum dyn-clone 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3ec9c7fb9a2ce708751c98e31ccbae74b6ab194f5c8e30cfb7ed62e38b70866"
"checksum enum-primitive-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2b90e520ec62c1864c8c78d637acbfe8baf5f63240f2fb8165b8325c07812dd" "checksum enum-primitive-derive 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2b90e520ec62c1864c8c78d637acbfe8baf5f63240f2fb8165b8325c07812dd"
"checksum failure 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f8273f13c977665c5db7eb2b99ae520952fe5ac831ae4cd09d80c4c7042b5ed9"
"checksum failure_derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0bc225b78e0391e4b8683440bf2e63c2deeeb2ce5189eab46e2b68c6d3725d08"
"checksum fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" "checksum fallible-iterator 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
"checksum filetime 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d" "checksum filetime 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1ff6d4dab0aa0c8e6346d46052e93b13a16cf847b54ed357087c35011048cc7d"
"checksum flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f" "checksum flate2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd6d6f4752952feb71363cffc9ebac9411b75b87c6ab6058c40c8900cf43c0f"
...@@ -707,6 +781,7 @@ dependencies = [ ...@@ -707,6 +781,7 @@ dependencies = [
"checksum rental-impl 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de" "checksum rental-impl 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "475e68978dc5b743f2f40d8e0a8fdc83f1c5e78cbf4b8fa5e74e73beebc340de"
"checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac" "checksum rle-decode-fast 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe4fa914dec5870285fa7f71f602645da47c486e68486d2b4ceb4a343e90ac"
"checksum rusb 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9c1c7856ddc8f77d741a288176e6c10586c4ac7c56637d33948a7362150a4a26" "checksum rusb 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "9c1c7856ddc8f77d741a288176e6c10586c4ac7c56637d33948a7362150a4a26"
"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
"checksum scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1" "checksum scroll 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "abb2332cb595d33f7edd5700f4cbf94892e680c7f0ae56adab58a35190b66cb1"
"checksum scroll_derive 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28" "checksum scroll_derive 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8584eea9b9ff42825b46faf46a8c24d2cff13ec152fa2a50df788b87c07ee28"
"checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449" "checksum serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)" = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
...@@ -717,6 +792,7 @@ dependencies = [ ...@@ -717,6 +792,7 @@ dependencies = [
"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
"checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8" "checksum syn 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1e4ff033220a41d1a57d8125eab57bf5263783dfdcc18688b1dacc6ce9651ef8"
"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
"checksum synstructure 0.12.3 (registry+https://github.com/rust-lang/crates.io-index)" = "67656ea1dc1b41b1451851562ea232ec2e5a80242139f7e679ceccfb5d61f545"
"checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" "checksum take_mut 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
"checksum tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "b3196bfbffbba3e57481b6ea32249fbaf590396a52505a2615adbb79d9d826d3" "checksum tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)" = "b3196bfbffbba3e57481b6ea32249fbaf590396a52505a2615adbb79d9d826d3"
"checksum target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d" "checksum target-lexicon 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab0e7238dcc7b40a7be719a25365910f6807bd864f4cce6b2e6b873658e2b19d"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment