summaryrefslogtreecommitdiffstats
path: root/vendor/backtrace
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/backtrace')
-rw-r--r--vendor/backtrace/.cargo-checksum.json2
-rw-r--r--vendor/backtrace/Cargo.lock58
-rw-r--r--vendor/backtrace/Cargo.toml10
-rwxr-xr-xvendor/backtrace/ci/android-ndk.sh27
-rw-r--r--vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile6
-rw-r--r--vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile6
-rw-r--r--vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile6
-rw-r--r--vendor/backtrace/ci/docker/i686-linux-android/Dockerfile6
-rw-r--r--vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile6
-rw-r--r--vendor/backtrace/src/backtrace/libunwind.rs5
-rw-r--r--vendor/backtrace/src/backtrace/mod.rs1
-rw-r--r--vendor/backtrace/src/dbghelp.rs26
-rw-r--r--vendor/backtrace/src/lib.rs1
-rw-r--r--vendor/backtrace/src/print.rs17
-rw-r--r--vendor/backtrace/src/print/fuchsia.rs2
-rw-r--r--vendor/backtrace/src/symbolize/gimli.rs73
-rw-r--r--vendor/backtrace/src/symbolize/gimli/coff.rs14
-rw-r--r--vendor/backtrace/src/symbolize/gimli/elf.rs92
-rw-r--r--vendor/backtrace/src/symbolize/gimli/macho.rs17
-rw-r--r--vendor/backtrace/src/symbolize/gimli/mmap_unix.rs7
-rw-r--r--vendor/backtrace/src/symbolize/gimli/mmap_windows.rs2
-rw-r--r--vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs26
-rw-r--r--vendor/backtrace/src/symbolize/gimli/stash.rs22
-rw-r--r--vendor/backtrace/tests/current-exe-mismatch.rs7
24 files changed, 295 insertions, 144 deletions
diff --git a/vendor/backtrace/.cargo-checksum.json b/vendor/backtrace/.cargo-checksum.json
index e94768666..00ff1627f 100644
--- a/vendor/backtrace/.cargo-checksum.json
+++ b/vendor/backtrace/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"7d3b2926febbfe2d3ae525bf139703fa9d614cad0836d0e88a176352787a8151","Cargo.toml":"01600b69a4b1967a6f307a698f576a86308d39c4e571ff398235a88204b7b220","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"6007ea91612793f8c77d499d2065acd2255fc5f3c3268fd8bd1ae5f7bb40d6de","benches/benchmarks.rs":"029b78bb79052ec940eecfd18067b743925189202fc16015d3c4c25b05eb6d67","build.rs":"8d5e860da109f86c67596b10b5613ff6d19f9d24c2970f491a55261fb1973692","ci/android-ndk.sh":"89fafa41d08ff477f949bfc163d04d1eb34fdee370f7a695cfba4ef34c164a55","ci/android-sdk.sh":"69a953f70f32064d1d2a57c7082a50336b90a12d10c75e5416dbb1d6d718016c","ci/debuglink-docker.sh":"3a16131df8c69fef37331cb6f01a6623d169177474f475159d05bab61df077a9","ci/debuglink.sh":"164a961b930de8c9aedf45a11076c3d41081846a8e6a9566ba2b6ad615179e0b","ci/docker/aarch64-linux-android/Dockerfile":"1058f2ee9cf74b4c51a489e62544bea94c6cd537ad5c1b056f3e4b262f7e09f2","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"a7b7aae0d8e2f826cf1c6c7c3160f8e5e9a30478b83c394b6575ce15b0ff0802","ci/docker/arm-linux-androideabi/Dockerfile":"12f8c62f0750d3581292b23309f5aef15492c946a73e55df13bc345de5ca576e","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"5156382ff639b11801c1bd7ddc6e03e8834505a74ecf7160e92182603cd5d96f","ci/docker/armv7-linux-androideabi/Dockerfile":"7c582c2a4b162b147deada3194a30185ccb7a01215f97990cd1a5a3460c30fb9","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"4aaceef14ba700ea3719fe30fcb46f1bb154a47aa52cdb64fa6ed7eff96d6c85","ci/docker/i586-unknown-linux-gnu/Dockerfile":"0816c89b79a74be7ccfc34e95cd718ce29a8698a2ab56903b4b0712470f5c8bb","ci/docker/i686-linux-android/Dockerfile":"18957e8dad4c6d9c8ad561f846e20f6e2186ff7a8421f2a0089793b510f66fe2","ci/docker/i686-unknown-linux-gnu/Dockerfile":"0816c89b79a74be7ccfc34e95cd718ce29a8698a2ab56903b4b0712470f5c8bb","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"270de99179c925e6284a8283fdb4e40a8c813a569b24930d6cfe79a4c470ab61","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"4aa8ca641efd2f1937ef669eda2f3e357b2fb926911722b3afc6cf25ce4bcac2","ci/docker/x86_64-linux-android/Dockerfile":"e6d6fb37041a9d6fc6771be1ae8d1eaa506a1dc8796170c1ffcc3d6dd043bed2","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"654988c5c008610f90d5159a8dd0ab6fd491e9c0d16ad65b03ef53f694a5400c","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"9f89f080551fff6678b1efcc0925fc8c16316f69cdd150e89f9e95cdab583510","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"4db3cb7d315588f363eb9f377bf1c27d8e8886c07b6c0d0c5cf7ee91114a718b","ci/run-docker.sh":"70760696a608b0d89eb3dcc4b08f176d709dd9f98e50297f2b7e0bb9b0f3b458","ci/run.sh":"0bb5c8256019779f3e1db20fcc2c01416ffd4679428f3e395ef5f3e55d2d642c","ci/runtest-android.rs":"be2e49bb296b92a8e3643a6c0a70917fe7b130fa43b71a29c4e7514f45c00e7e","examples/backtrace.rs":"5da0c95ccebfaffbbe7b5a92b0e488017dc375cbb5b8fb2b7712dd65b2dfb2ba","examples/raw.rs":"575ec6037f597ba7ab0eaf9dd699fadfabef918ba2affea7dc20cdbde55de5ec","src/android-api.c":"b75f16de578451464f49b83dc817b76aa9a0be0d86ea71d1659cc78f99e94fbd","src/backtrace/dbghelp.rs":"ea2f175d6c62259d86e7e9bb04328e03657d7259d4459aab70734f1cf1cd9d72","src/backtrace/libunwind.rs":"65373ce7bd87abc411b4307bd41679f9176987170b3b627abe0f0bb1625ff685","src/backtrace/miri.rs":"c0dcb1e430eea92fcbad3e293124010f39c1f8ff1bbbf1a0275c53b05880cd5f","src/backtrace/mod.rs":"b301e6b7da4f3811c5255c2f1fdb83f4ab97acfa1647d998d8455614ae90ddaf","src/backtrace/noop.rs":"a8550b70b3c83f6852a1dba83cf97b1325238b5aa3ce7b35437e9382cdafd924","src/capture.rs":"8701657803f04ea9e0b9dd6a4ca619761edb8a42cfd2f7c9c9e4ee31d9357159","src/dbghelp.rs":"40891588891fe48c16263374a36092ac3e67ddf4f756b880839f31dfcb80b7c4","src/lib.rs":"03f2a0f2524cb2078e2f28959c3eb1625ff400d3e23eeb7d3b73d86c012979b2","src/print.rs":"7bae8abae6947d6d0e57ff9c834d1d4d0b528a6d7e6424e7ad9a5ac557cf3e08","src/print/fuchsia.rs":"de45f55032e05fdc1fd55224910158f8c64a705494103a29c7e2680536e76e40","src/symbolize/dbghelp.rs":"58aeda764a27702e0abb3af62bae8a162d8b6cb8c80ffd141ee794d81a8ace15","src/symbolize/gimli.rs":"f43374c89f12095a99431de0f758a3414dfd2f1e84bfa35897ce8afdaf006041","src/symbolize/gimli/coff.rs":"d3f4a274bd3b2ed81d114a9326630c019f682ca91aac6ec31e660f420c35b064","src/symbolize/gimli/elf.rs":"3445558fc1feed60165af55e07847c59c3eca5e4031f50b04329fc5be36eb057","src/symbolize/gimli/libs_dl_iterate_phdr.rs":"bc64242857dd82288d6e7d6b183e651d05ab7bc4f037f19b9e42719f04fc2c83","src/symbolize/gimli/libs_haiku.rs":"0a0d4b37145e898f7068cadacccf362d8216e463e7026af2ce38d75ebfd74bea","src/symbolize/gimli/libs_illumos.rs":"523e96272b46bdaab2abb0dd0201cb8032bf86558cbed986a20d7e2cc02fa8be","src/symbolize/gimli/libs_libnx.rs":"4116eceadb2d9916d4f5602712eacec647f185d4c53c723aced8de5fc471b14d","src/symbolize/gimli/libs_macos.rs":"c24cb480ae029b350325873ac4358104e5943ad61b62eb22bb6b65b2f05bbd29","src/symbolize/gimli/libs_windows.rs":"6459f8610ca1a0fd7456539ec604f5276c94b3d0d7331357eaed338e49220a02","src/symbolize/gimli/macho.rs":"47a970c23443f322e79bf54cf7f11d9990516b17fbad7c893f20bd56a22083af","src/symbolize/gimli/mmap_fake.rs":"9564fcf47000e70d521b31518e205c8e6ee09b7410fb1eb1e452721757ff54ba","src/symbolize/gimli/mmap_unix.rs":"8159a4a807bd5692412ba1a280bb36ab942c06e904f37a92e2545f0b4211308a","src/symbolize/gimli/mmap_windows.rs":"1ca715317c1054968d92350438b293f800bae2174f395b20bc43a633d757fe8f","src/symbolize/gimli/parse_running_mmaps_unix.rs":"1e25b842b979b745bf3e22e8ce6f13b242f2fb52a75d8e865bad9538e44b76a3","src/symbolize/gimli/stash.rs":"67d01016b17ca4c0adbb0827da9b83fde5f79ccc89db3e4fd769ab03c1248d8e","src/symbolize/miri.rs":"f5201cc8a7de24ad3424d2472cb0af59cd28563d09cc0c21e998f4cee4367ade","src/symbolize/mod.rs":"a7177603810aca1cd9cd4a59027a1dd2c792dc9d345435b5dc866eb7c8b66baf","src/symbolize/noop.rs":"5d4432079b8ae2b9382945a57ae43df57bb4b7ed2e5956d4167e051a44567388","src/types.rs":"f43c94b99d57ca66a5cfe939a46016c95b2d69d82695fb52480f7a3e5b344fd9","src/windows.rs":"b0bbbf4088021fd646024ad01de1a60bf12bf62b6b744f0f5952681f77cd49e6","tests/accuracy/auxiliary.rs":"71d2238da401042e007ef5ee20336d6834724bae96d93c8c52d11a5a332d7d34","tests/accuracy/main.rs":"f8e42aeeb50b35fca380db2e9fe52820cc0bc3133167289c5710e3290701e78e","tests/common/mod.rs":"733101288a48cf94d5a87a1957724deaf2650c3e4e8aa0190a4a7db62aa90d01","tests/concurrent-panics.rs":"b60279ad5c4fb9b2754807f35179cbc8fbd7acbe6e92ac6d0f416ae75db38705","tests/current-exe-mismatch.rs":"b44a885a655f761eb15d4a47bdfff4332f9a1f88105b7aed9ea0b052e385615f","tests/long_fn_name.rs":"ebef58e34543ed4d47048faa9b6525f68fc71e12255af734523a513c5d4baa6f","tests/skip_inner_frames.rs":"6c03cd0ad9facf0aa81e59cf970504785b6ada9993a2dfc2aea0b18b79419aeb","tests/smoke.rs":"33014495f9158aea2d0ee2ee3335ffe82105c7ed894f96eaf7d23845a60f7439"},"package":"233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca"} \ No newline at end of file
+{"files":{"Cargo.lock":"f31feb9df764e7218aedb67711229342357ec7d5f42d864483a8a922803ffcab","Cargo.toml":"9027cbc60eb972c10a49815c896ebf4e47299ec4ee739e5eed5eb9ac3832ed11","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"6007ea91612793f8c77d499d2065acd2255fc5f3c3268fd8bd1ae5f7bb40d6de","benches/benchmarks.rs":"029b78bb79052ec940eecfd18067b743925189202fc16015d3c4c25b05eb6d67","build.rs":"8d5e860da109f86c67596b10b5613ff6d19f9d24c2970f491a55261fb1973692","ci/android-ndk.sh":"66a384ed28980c3fdf42e773925938d56f045c27fa34487525a6d41bc5ef6d56","ci/android-sdk.sh":"69a953f70f32064d1d2a57c7082a50336b90a12d10c75e5416dbb1d6d718016c","ci/debuglink-docker.sh":"3a16131df8c69fef37331cb6f01a6623d169177474f475159d05bab61df077a9","ci/debuglink.sh":"164a961b930de8c9aedf45a11076c3d41081846a8e6a9566ba2b6ad615179e0b","ci/docker/aarch64-linux-android/Dockerfile":"e9736941e1de9664dca7055898b74bd7148a455b3d3c208c97b2fae2a060fd27","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"a7b7aae0d8e2f826cf1c6c7c3160f8e5e9a30478b83c394b6575ce15b0ff0802","ci/docker/arm-linux-androideabi/Dockerfile":"435a6b1c68a3e33503e01e382eb4c0d69907d15ffe4e2d466307b4643afb1a72","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"5156382ff639b11801c1bd7ddc6e03e8834505a74ecf7160e92182603cd5d96f","ci/docker/armv7-linux-androideabi/Dockerfile":"4a779ddce215f7552a5bb77a10587b9a3cc03ef94434546b6ac2da458d598b19","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"4aaceef14ba700ea3719fe30fcb46f1bb154a47aa52cdb64fa6ed7eff96d6c85","ci/docker/i586-unknown-linux-gnu/Dockerfile":"0816c89b79a74be7ccfc34e95cd718ce29a8698a2ab56903b4b0712470f5c8bb","ci/docker/i686-linux-android/Dockerfile":"08bfb5d56443fc03f513a631a1ae2a1d9665338c25d3c3e4f021533a2805a336","ci/docker/i686-unknown-linux-gnu/Dockerfile":"0816c89b79a74be7ccfc34e95cd718ce29a8698a2ab56903b4b0712470f5c8bb","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"270de99179c925e6284a8283fdb4e40a8c813a569b24930d6cfe79a4c470ab61","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"4aa8ca641efd2f1937ef669eda2f3e357b2fb926911722b3afc6cf25ce4bcac2","ci/docker/x86_64-linux-android/Dockerfile":"0a6e8f5adc84d4d426104fbf0606fd6aabfb7550fc105d62539a8516d631e8ad","ci/docker/x86_64-pc-windows-gnu/Dockerfile":"654988c5c008610f90d5159a8dd0ab6fd491e9c0d16ad65b03ef53f694a5400c","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"9f89f080551fff6678b1efcc0925fc8c16316f69cdd150e89f9e95cdab583510","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"4db3cb7d315588f363eb9f377bf1c27d8e8886c07b6c0d0c5cf7ee91114a718b","ci/run-docker.sh":"70760696a608b0d89eb3dcc4b08f176d709dd9f98e50297f2b7e0bb9b0f3b458","ci/run.sh":"0bb5c8256019779f3e1db20fcc2c01416ffd4679428f3e395ef5f3e55d2d642c","ci/runtest-android.rs":"be2e49bb296b92a8e3643a6c0a70917fe7b130fa43b71a29c4e7514f45c00e7e","examples/backtrace.rs":"5da0c95ccebfaffbbe7b5a92b0e488017dc375cbb5b8fb2b7712dd65b2dfb2ba","examples/raw.rs":"575ec6037f597ba7ab0eaf9dd699fadfabef918ba2affea7dc20cdbde55de5ec","src/android-api.c":"b75f16de578451464f49b83dc817b76aa9a0be0d86ea71d1659cc78f99e94fbd","src/backtrace/dbghelp.rs":"ea2f175d6c62259d86e7e9bb04328e03657d7259d4459aab70734f1cf1cd9d72","src/backtrace/libunwind.rs":"0034180e37da7b155cfe87136f07aecf6e67d51848a2db9689b19cf757bd30ee","src/backtrace/miri.rs":"c0dcb1e430eea92fcbad3e293124010f39c1f8ff1bbbf1a0275c53b05880cd5f","src/backtrace/mod.rs":"c782a02a0f9abd1eab79b1271cb6b793102a3c5b516b5dac2977ec634e158bfc","src/backtrace/noop.rs":"a8550b70b3c83f6852a1dba83cf97b1325238b5aa3ce7b35437e9382cdafd924","src/capture.rs":"8701657803f04ea9e0b9dd6a4ca619761edb8a42cfd2f7c9c9e4ee31d9357159","src/dbghelp.rs":"eae2d15fdf7a894ff4c0641f801b687337c07640a80b3a60f2b66013195ca7b4","src/lib.rs":"897d98f5db9ba97802b853b2aaab79645808c0570e840e22c661bae43ba7f111","src/print.rs":"c158bb0c995b3048482e4caebbf7afaa1361300ee8a4d48e50cfb47a9e09a117","src/print/fuchsia.rs":"cd760acf0c5b5f866ef9dbc83ef8895d8d459ad5146afd79f89be453d8bdcad4","src/symbolize/dbghelp.rs":"58aeda764a27702e0abb3af62bae8a162d8b6cb8c80ffd141ee794d81a8ace15","src/symbolize/gimli.rs":"4f93f6d6652a518ca4c4866fdefb928aa8cf7f547cbdffe0eec081760d1a2507","src/symbolize/gimli/coff.rs":"1a6d69aeb9c79d1acdeb054c1af050251c774d1328ef1a964d08f01c27f2bd2f","src/symbolize/gimli/elf.rs":"0b11415c75302bd4f70abf5147e83595fba38fcd54344170aedce1cb70049807","src/symbolize/gimli/libs_dl_iterate_phdr.rs":"bc64242857dd82288d6e7d6b183e651d05ab7bc4f037f19b9e42719f04fc2c83","src/symbolize/gimli/libs_haiku.rs":"0a0d4b37145e898f7068cadacccf362d8216e463e7026af2ce38d75ebfd74bea","src/symbolize/gimli/libs_illumos.rs":"523e96272b46bdaab2abb0dd0201cb8032bf86558cbed986a20d7e2cc02fa8be","src/symbolize/gimli/libs_libnx.rs":"4116eceadb2d9916d4f5602712eacec647f185d4c53c723aced8de5fc471b14d","src/symbolize/gimli/libs_macos.rs":"c24cb480ae029b350325873ac4358104e5943ad61b62eb22bb6b65b2f05bbd29","src/symbolize/gimli/libs_windows.rs":"6459f8610ca1a0fd7456539ec604f5276c94b3d0d7331357eaed338e49220a02","src/symbolize/gimli/macho.rs":"3cb44a7ff72d0b8c619463c2346f2cfdc378996bb523ceb0c5ab22b1443035b6","src/symbolize/gimli/mmap_fake.rs":"9564fcf47000e70d521b31518e205c8e6ee09b7410fb1eb1e452721757ff54ba","src/symbolize/gimli/mmap_unix.rs":"7d3d7bc6e5d34e3ecb1fe8b30d36bed404b4b9cd79d3b771c91215abfabb9ad1","src/symbolize/gimli/mmap_windows.rs":"a80bada1cef7e2ba1cff7b211eaa53b816248a7c89713c8cc6a70996f727efe4","src/symbolize/gimli/parse_running_mmaps_unix.rs":"0b343cf9ceacd57661b7d86cf5e1df7cc65559f5f684b85fa92014cd6214802d","src/symbolize/gimli/stash.rs":"69153136df5cb9bf955430c0a2f43c6131834cb7846631f39b58c074496a6ef0","src/symbolize/miri.rs":"f5201cc8a7de24ad3424d2472cb0af59cd28563d09cc0c21e998f4cee4367ade","src/symbolize/mod.rs":"a7177603810aca1cd9cd4a59027a1dd2c792dc9d345435b5dc866eb7c8b66baf","src/symbolize/noop.rs":"5d4432079b8ae2b9382945a57ae43df57bb4b7ed2e5956d4167e051a44567388","src/types.rs":"f43c94b99d57ca66a5cfe939a46016c95b2d69d82695fb52480f7a3e5b344fd9","src/windows.rs":"b0bbbf4088021fd646024ad01de1a60bf12bf62b6b744f0f5952681f77cd49e6","tests/accuracy/auxiliary.rs":"71d2238da401042e007ef5ee20336d6834724bae96d93c8c52d11a5a332d7d34","tests/accuracy/main.rs":"f8e42aeeb50b35fca380db2e9fe52820cc0bc3133167289c5710e3290701e78e","tests/common/mod.rs":"733101288a48cf94d5a87a1957724deaf2650c3e4e8aa0190a4a7db62aa90d01","tests/concurrent-panics.rs":"b60279ad5c4fb9b2754807f35179cbc8fbd7acbe6e92ac6d0f416ae75db38705","tests/current-exe-mismatch.rs":"540523069f005a9a0822497c6e1c5b7f0df442f0cef6b6e411d6f600bcd0be15","tests/long_fn_name.rs":"ebef58e34543ed4d47048faa9b6525f68fc71e12255af734523a513c5d4baa6f","tests/skip_inner_frames.rs":"6c03cd0ad9facf0aa81e59cf970504785b6ada9993a2dfc2aea0b18b79419aeb","tests/smoke.rs":"33014495f9158aea2d0ee2ee3335ffe82105c7ed894f96eaf7d23845a60f7439"},"package":"4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12"} \ No newline at end of file
diff --git a/vendor/backtrace/Cargo.lock b/vendor/backtrace/Cargo.lock
index 14da4f7d5..668232168 100644
--- a/vendor/backtrace/Cargo.lock
+++ b/vendor/backtrace/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "addr2line"
-version = "0.19.0"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97"
+checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3"
dependencies = [
"gimli",
]
@@ -19,7 +19,7 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "backtrace"
-version = "0.3.67"
+version = "0.3.68"
dependencies = [
"addr2line",
"cc",
@@ -37,9 +37,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.77"
+version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
[[package]]
name = "cfg-if"
@@ -49,24 +49,24 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "cpp_demangle"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b446fd40bcc17eddd6a4a78f24315eb90afdb3334999ddfd4909985c47722442"
+checksum = "2c76f98bdfc7f66172e6c7065f981ebb576ffc903fe4c0561d9f0c2509226dc6"
dependencies = [
"cfg-if",
]
[[package]]
name = "gimli"
-version = "0.27.0"
+version = "0.27.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dec7af912d60cdbd3677c1af9352ebae6fb8394d165568a2234df0fa00f87793"
+checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
[[package]]
name = "libc"
-version = "0.2.138"
+version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
+checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libloading"
@@ -86,45 +86,45 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "miniz_oxide"
-version = "0.6.2"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
dependencies = [
"adler",
]
[[package]]
name = "object"
-version = "0.30.0"
+version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "239da7f290cfa979f43f85a8efeee9a8a76d0827c356d37f9d3d7254d6b537fb"
+checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1"
dependencies = [
"memchr",
]
[[package]]
name = "proc-macro2"
-version = "1.0.47"
+version = "1.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"
+checksum = "dec2b086b7a862cf4de201096214fa870344cf922b2b30c167badb3af3195406"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.21"
+version = "1.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+checksum = "1b9ab9c7eadfd8df19006f1cf1a4aed13540ed5cbc047010ece5826e10825488"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rustc-demangle"
-version = "0.1.21"
+version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
[[package]]
name = "rustc-serialize"
@@ -134,18 +134,18 @@ checksum = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
[[package]]
name = "serde"
-version = "1.0.150"
+version = "1.0.164"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e326c9ec8042f1b5da33252c8a37e9ffbd2c9bef0155215b6e6c80c790e05f91"
+checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.150"
+version = "1.0.164"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42a3df25b0713732468deadad63ab9da1f1fd75a48a15024b50363f128db627e"
+checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68"
dependencies = [
"proc-macro2",
"quote",
@@ -154,9 +154,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.105"
+version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
+checksum = "32d41677bcbe24c20c52e7c70b0d8db04134c5d1066bf98662e2871ad200ea3e"
dependencies = [
"proc-macro2",
"quote",
@@ -165,9 +165,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.5"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0"
[[package]]
name = "winapi"
diff --git a/vendor/backtrace/Cargo.toml b/vendor/backtrace/Cargo.toml
index 96f41466b..f33884ae4 100644
--- a/vendor/backtrace/Cargo.toml
+++ b/vendor/backtrace/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "backtrace"
-version = "0.3.67"
+version = "0.3.68"
authors = ["The Rust Project Developers"]
build = "build.rs"
autoexamples = true
@@ -63,7 +63,7 @@ harness = false
required-features = ["std"]
[dependencies.addr2line]
-version = "0.19.0"
+version = "0.20.0"
default-features = false
[dependencies.cfg-if]
@@ -76,15 +76,15 @@ optional = true
default-features = false
[dependencies.libc]
-version = "0.2.94"
+version = "0.2.146"
default-features = false
[dependencies.miniz_oxide]
-version = "0.6.0"
+version = "0.7.0"
default-features = false
[dependencies.object]
-version = "0.30.0"
+version = "0.31.1"
features = [
"read_core",
"elf",
diff --git a/vendor/backtrace/ci/android-ndk.sh b/vendor/backtrace/ci/android-ndk.sh
index b5df62b6f..38521daf1 100755
--- a/vendor/backtrace/ci/android-ndk.sh
+++ b/vendor/backtrace/ci/android-ndk.sh
@@ -1,23 +1,14 @@
set -ex
-ANDROID_ARCH=$1
-ANDROID_SDK_VERSION=4333796
-
-mkdir /tmp/android
-cd /tmp/android
-
-curl -o android-sdk.zip \
- "https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_VERSION}.zip"
-unzip -q android-sdk.zip
-
-yes | ./tools/bin/sdkmanager --licenses > /dev/null
-./tools/bin/sdkmanager ndk-bundle > /dev/null
-
-./ndk-bundle/build/tools/make_standalone_toolchain.py \
- --arch $ANDROID_ARCH \
- --stl=libc++ \
- --api 21 \
- --install-dir /android-toolchain
+ANDROID_NDK_URL=https://dl.google.com/android/repository
+ANDROID_NDK_ARCHIVE=android-ndk-r25b-linux.zip
+
+mkdir /android-toolchain
+cd /android-toolchain
+curl -fO $ANDROID_NDK_URL/$ANDROID_NDK_ARCHIVE
+unzip -q $ANDROID_NDK_ARCHIVE
+rm $ANDROID_NDK_ARCHIVE
+mv android-ndk-* ndk
cd /tmp
rm -rf android
diff --git a/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile b/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile
index c5655ed5e..906c68789 100644
--- a/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile
+++ b/vendor/backtrace/ci/docker/aarch64-linux-android/Dockerfile
@@ -10,9 +10,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev
COPY android-ndk.sh /
-RUN /android-ndk.sh arm64
-ENV PATH=$PATH:/android-toolchain/bin
+RUN /android-ndk.sh
+ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
# TODO: run tests in an emulator eventually
-ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android-gcc \
+ENV CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER=aarch64-linux-android21-clang \
CARGO_TARGET_AARCH64_LINUX_ANDROID_RUNNER=echo
diff --git a/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile b/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile
index 446a64cc0..7471dcb73 100644
--- a/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile
+++ b/vendor/backtrace/ci/docker/arm-linux-androideabi/Dockerfile
@@ -10,9 +10,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev
COPY android-ndk.sh /
-RUN /android-ndk.sh arm
-ENV PATH=$PATH:/android-toolchain/bin
+RUN /android-ndk.sh
+ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
# TODO: run tests in an emulator eventually
-ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
+ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi19-clang \
CARGO_TARGET_ARM_LINUX_ANDROIDEABI_RUNNER=echo
diff --git a/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile b/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile
index 539bbc494..543fcd243 100644
--- a/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile
+++ b/vendor/backtrace/ci/docker/armv7-linux-androideabi/Dockerfile
@@ -10,9 +10,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev
COPY android-ndk.sh /
-RUN /android-ndk.sh arm
-ENV PATH=$PATH:/android-toolchain/bin
+RUN /android-ndk.sh
+ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
# TODO: run tests in an emulator eventually
-ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \
+ENV CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER=armv7a-linux-androideabi19-clang \
CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_RUNNER=echo
diff --git a/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile b/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile
index 83ccb2948..61cb9d075 100644
--- a/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile
+++ b/vendor/backtrace/ci/docker/i686-linux-android/Dockerfile
@@ -10,9 +10,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev
COPY android-ndk.sh /
-RUN /android-ndk.sh x86
-ENV PATH=$PATH:/android-toolchain/bin
+RUN /android-ndk.sh
+ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
# TODO: run tests in an emulator eventually
-ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android-gcc \
+ENV CARGO_TARGET_I686_LINUX_ANDROID_LINKER=i686-linux-android19-clang \
CARGO_TARGET_I686_LINUX_ANDROID_RUNNER=echo
diff --git a/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile b/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile
index 88a22ce6c..4c8922936 100644
--- a/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile
+++ b/vendor/backtrace/ci/docker/x86_64-linux-android/Dockerfile
@@ -10,9 +10,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libc6-dev
COPY android-ndk.sh /
-RUN /android-ndk.sh x86_64
-ENV PATH=$PATH:/android-toolchain/bin
+RUN /android-ndk.sh
+ENV PATH=$PATH:/android-toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin
# TODO: run tests in an emulator eventually
-ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \
+ENV CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android21-clang \
CARGO_TARGET_X86_64_LINUX_ANDROID_RUNNER=echo
diff --git a/vendor/backtrace/src/backtrace/libunwind.rs b/vendor/backtrace/src/backtrace/libunwind.rs
index ef77edda5..aefa8b094 100644
--- a/vendor/backtrace/src/backtrace/libunwind.rs
+++ b/vendor/backtrace/src/backtrace/libunwind.rs
@@ -66,7 +66,7 @@ impl Frame {
//
// Note the `skip_inner_frames.rs` test is skipped on macOS due to this
// clause, and if this is fixed that test in theory can be run on macOS!
- if cfg!(target_os = "macos") || cfg!(target_os = "ios") {
+ if cfg!(target_vendor = "apple") {
self.ip()
} else {
unsafe { uw::_Unwind_FindEnclosingFunction(self.ip()) }
@@ -158,7 +158,8 @@ mod uw {
not(all(target_os = "android", target_arch = "arm")),
not(all(target_os = "freebsd", target_arch = "arm")),
not(all(target_os = "linux", target_arch = "arm")),
- not(all(target_os = "horizon", target_arch = "arm"))
+ not(all(target_os = "horizon", target_arch = "arm")),
+ not(all(target_os = "vita", target_arch = "arm")),
))] {
extern "C" {
pub fn _Unwind_GetIP(ctx: *mut _Unwind_Context) -> libc::uintptr_t;
diff --git a/vendor/backtrace/src/backtrace/mod.rs b/vendor/backtrace/src/backtrace/mod.rs
index 93355d744..6ca1080c4 100644
--- a/vendor/backtrace/src/backtrace/mod.rs
+++ b/vendor/backtrace/src/backtrace/mod.rs
@@ -138,6 +138,7 @@ cfg_if::cfg_if! {
unix,
not(target_os = "emscripten"),
not(all(target_os = "ios", target_arch = "arm")),
+ not(all(target_os = "nto", target_env = "nto70")),
),
all(
target_env = "sgx",
diff --git a/vendor/backtrace/src/dbghelp.rs b/vendor/backtrace/src/dbghelp.rs
index e01002beb..c81766bae 100644
--- a/vendor/backtrace/src/dbghelp.rs
+++ b/vendor/backtrace/src/dbghelp.rs
@@ -79,7 +79,7 @@ macro_rules! dbghelp {
static mut DBGHELP: Dbghelp = Dbghelp {
// Initially we haven't loaded the DLL
dll: 0 as *mut _,
- // Initiall all functions are set to zero to say they need to be
+ // Initially all functions are set to zero to say they need to be
// dynamically loaded.
$($name: 0,)*
};
@@ -239,6 +239,23 @@ pub struct Init {
pub fn init() -> Result<Init, ()> {
use core::sync::atomic::{AtomicUsize, Ordering::SeqCst};
+ // Helper function for generating a name that's unique to the process.
+ fn mutex_name() -> [u8; 33] {
+ let mut name: [u8; 33] = *b"Local\\RustBacktraceMutex00000000\0";
+ let mut id = unsafe { GetCurrentProcessId() };
+ // Quick and dirty no alloc u32 to hex.
+ let mut index = name.len() - 1;
+ while id > 0 {
+ name[index - 1] = match (id & 0xF) as u8 {
+ h @ 0..=9 => b'0' + h,
+ h => b'A' + (h - 10),
+ };
+ id >>= 4;
+ index -= 1;
+ }
+ name
+ }
+
unsafe {
// First thing we need to do is to synchronize this function. This can
// be called concurrently from other threads or recursively within one
@@ -277,11 +294,8 @@ pub fn init() -> Result<Init, ()> {
static LOCK: AtomicUsize = AtomicUsize::new(0);
let mut lock = LOCK.load(SeqCst);
if lock == 0 {
- lock = CreateMutexA(
- ptr::null_mut(),
- 0,
- "Local\\RustBacktraceMutex\0".as_ptr() as _,
- ) as usize;
+ let name = mutex_name();
+ lock = CreateMutexA(ptr::null_mut(), 0, name.as_ptr().cast::<i8>()) as usize;
if lock == 0 {
return Err(());
}
diff --git a/vendor/backtrace/src/lib.rs b/vendor/backtrace/src/lib.rs
index e5dea3387..4615e1f96 100644
--- a/vendor/backtrace/src/lib.rs
+++ b/vendor/backtrace/src/lib.rs
@@ -86,7 +86,6 @@
//! time, but otherwise it's important to be aware of the limitations of
//! unwinding-based backtraces!
-#![doc(html_root_url = "https://docs.rs/backtrace")]
#![deny(missing_docs)]
#![no_std]
#![cfg_attr(
diff --git a/vendor/backtrace/src/print.rs b/vendor/backtrace/src/print.rs
index 174d8ae5c..8d9cbe3d4 100644
--- a/vendor/backtrace/src/print.rs
+++ b/vendor/backtrace/src/print.rs
@@ -86,6 +86,23 @@ impl<'a, 'b> BacktraceFmt<'a, 'b> {
// Currently a no-op-- including this hook to allow for future additions.
Ok(())
}
+
+ /// Inserts a message in the backtrace output.
+ ///
+ /// This allows information to be inserted between frames,
+ /// and won't increment the `frame_index` unlike the `frame`
+ /// method.
+ pub fn message(&mut self, msg: &str) -> fmt::Result {
+ self.fmt.write_str(msg)
+ }
+
+ /// Return the inner formatter.
+ ///
+ /// This is used for writing custom information between frames with `write!` and `writeln!`,
+ /// and won't increment the `frame_index` unlike the `frame` method.
+ pub fn formatter(&mut self) -> &mut fmt::Formatter<'b> {
+ self.fmt
+ }
}
/// A formatter for just one frame of a backtrace.
diff --git a/vendor/backtrace/src/print/fuchsia.rs b/vendor/backtrace/src/print/fuchsia.rs
index 959253acb..ce3f17862 100644
--- a/vendor/backtrace/src/print/fuchsia.rs
+++ b/vendor/backtrace/src/print/fuchsia.rs
@@ -25,7 +25,7 @@ const PT_NOTE: u32 = 4;
// Now we have to replicate, bit for bit, the structure of the dl_phdr_info
// type used by fuchsia's current dynamic linker. Chromium also has this ABI
-// boundary as well as crashpad. Eventully we'd like to move these cases to
+// boundary as well as crashpad. Eventually we'd like to move these cases to
// use elf-search but we'd need to provide that in the SDK and that has not
// yet been done. Thus we (and they) are stuck having to use this method
// which incurs a tight coupling with the fuchsia libc.
diff --git a/vendor/backtrace/src/symbolize/gimli.rs b/vendor/backtrace/src/symbolize/gimli.rs
index cd4cec58c..7f1c6a528 100644
--- a/vendor/backtrace/src/symbolize/gimli.rs
+++ b/vendor/backtrace/src/symbolize/gimli.rs
@@ -58,7 +58,7 @@ struct Mapping {
// 'static lifetime is a lie to hack around lack of support for self-referential structs.
cx: Context<'static>,
_map: Mmap,
- _stash: Stash,
+ stash: Stash,
}
enum Either<A, B> {
@@ -97,7 +97,7 @@ impl Mapping {
// only borrow `map` and `stash` and we're preserving them below.
cx: unsafe { core::mem::transmute::<Context<'_>, Context<'static>>(cx) },
_map: data,
- _stash: stash,
+ stash: stash,
})
}
}
@@ -105,6 +105,7 @@ impl Mapping {
struct Context<'a> {
dwarf: addr2line::Context<EndianSlice<'a, Endian>>,
object: Object<'a>,
+ package: Option<gimli::DwarfPackage<EndianSlice<'a, Endian>>>,
}
impl<'data> Context<'data> {
@@ -112,6 +113,7 @@ impl<'data> Context<'data> {
stash: &'data Stash,
object: Object<'data>,
sup: Option<Object<'data>>,
+ dwp: Option<Object<'data>>,
) -> Option<Context<'data>> {
let mut sections = gimli::Dwarf::load(|id| -> Result<_, ()> {
let data = object.section(stash, id.name()).unwrap_or(&[]);
@@ -129,7 +131,46 @@ impl<'data> Context<'data> {
}
let dwarf = addr2line::Context::from_dwarf(sections).ok()?;
- Some(Context { dwarf, object })
+ let mut package = None;
+ if let Some(dwp) = dwp {
+ package = Some(
+ gimli::DwarfPackage::load(
+ |id| -> Result<_, gimli::Error> {
+ let data = id
+ .dwo_name()
+ .and_then(|name| dwp.section(stash, name))
+ .unwrap_or(&[]);
+ Ok(EndianSlice::new(data, Endian))
+ },
+ EndianSlice::new(&[], Endian),
+ )
+ .ok()?,
+ );
+ }
+
+ Some(Context {
+ dwarf,
+ object,
+ package,
+ })
+ }
+
+ fn find_frames(
+ &'_ self,
+ stash: &'data Stash,
+ probe: u64,
+ ) -> gimli::Result<addr2line::FrameIter<'_, EndianSlice<'data, Endian>>> {
+ use addr2line::{LookupContinuation, LookupResult};
+
+ let mut l = self.dwarf.find_frames(probe);
+ loop {
+ let (load, continuation) = match l {
+ LookupResult::Output(output) => break output,
+ LookupResult::Load { load, continuation } => (load, continuation),
+ };
+
+ l = continuation.resume(handle_split_dwarf(self.package.as_ref(), stash, load));
+ }
}
}
@@ -142,7 +183,7 @@ fn mmap(path: &Path) -> Option<Mmap> {
cfg_if::cfg_if! {
if #[cfg(windows)] {
mod coff;
- use self::coff::Object;
+ use self::coff::{handle_split_dwarf, Object};
} else if #[cfg(any(
target_os = "macos",
target_os = "ios",
@@ -150,10 +191,10 @@ cfg_if::cfg_if! {
target_os = "watchos",
))] {
mod macho;
- use self::macho::Object;
+ use self::macho::{handle_split_dwarf, Object};
} else {
mod elf;
- use self::elf::Object;
+ use self::elf::{handle_split_dwarf, Object};
}
}
@@ -178,6 +219,7 @@ cfg_if::cfg_if! {
target_os = "fuchsia",
target_os = "freebsd",
target_os = "openbsd",
+ target_os = "netbsd",
all(target_os = "android", feature = "dl_iterate_phdr"),
),
not(target_env = "uclibc"),
@@ -302,7 +344,7 @@ impl Cache {
.next()
}
- fn mapping_for_lib<'a>(&'a mut self, lib: usize) -> Option<&'a mut Context<'a>> {
+ fn mapping_for_lib<'a>(&'a mut self, lib: usize) -> Option<(&'a mut Context<'a>, &'a Stash)> {
let idx = self.mappings.iter().position(|(idx, _)| *idx == lib);
// Invariant: after this conditional completes without early returning
@@ -328,10 +370,15 @@ impl Cache {
self.mappings.insert(0, (lib, mapping));
}
- let cx: &'a mut Context<'static> = &mut self.mappings[0].1.cx;
+ let mapping = &mut self.mappings[0].1;
+ let cx: &'a mut Context<'static> = &mut mapping.cx;
+ let stash: &'a Stash = &mapping.stash;
// don't leak the `'static` lifetime, make sure it's scoped to just
// ourselves
- Some(unsafe { mem::transmute::<&'a mut Context<'static>, &'a mut Context<'a>>(cx) })
+ Some((
+ unsafe { mem::transmute::<&'a mut Context<'static>, &'a mut Context<'a>>(cx) },
+ stash,
+ ))
}
}
@@ -353,12 +400,12 @@ pub unsafe fn resolve(what: ResolveWhat<'_>, cb: &mut dyn FnMut(&super::Symbol))
// Finally, get a cached mapping or create a new mapping for this file, and
// evaluate the DWARF info to find the file/line/name for this address.
- let cx = match cache.mapping_for_lib(lib) {
- Some(cx) => cx,
+ let (cx, stash) = match cache.mapping_for_lib(lib) {
+ Some((cx, stash)) => (cx, stash),
None => return,
};
let mut any_frames = false;
- if let Ok(mut frames) = cx.dwarf.find_frames(addr as u64) {
+ if let Ok(mut frames) = cx.find_frames(stash, addr as u64) {
while let Ok(Some(frame)) = frames.next() {
any_frames = true;
let name = match frame.function {
@@ -374,7 +421,7 @@ pub unsafe fn resolve(what: ResolveWhat<'_>, cb: &mut dyn FnMut(&super::Symbol))
}
if !any_frames {
if let Some((object_cx, object_addr)) = cx.object.search_object_map(addr as u64) {
- if let Ok(mut frames) = object_cx.dwarf.find_frames(object_addr) {
+ if let Ok(mut frames) = object_cx.find_frames(stash, object_addr) {
while let Ok(Some(frame)) = frames.next() {
any_frames = true;
call(Symbol::Frame {
diff --git a/vendor/backtrace/src/symbolize/gimli/coff.rs b/vendor/backtrace/src/symbolize/gimli/coff.rs
index 84d334207..759c827e0 100644
--- a/vendor/backtrace/src/symbolize/gimli/coff.rs
+++ b/vendor/backtrace/src/symbolize/gimli/coff.rs
@@ -1,6 +1,8 @@
-use super::{Context, Mapping, Path, Stash, Vec};
+use super::{gimli, Context, Endian, EndianSlice, Mapping, Path, Stash, Vec};
+use alloc::sync::Arc;
use core::convert::TryFrom;
use object::pe::{ImageDosHeader, ImageSymbol};
+use object::read::coff::ImageSymbol as _;
use object::read::pe::{ImageNtHeaders, ImageOptionalHeader, SectionTable};
use object::read::StringTable;
use object::LittleEndian as LE;
@@ -14,7 +16,7 @@ impl Mapping {
pub fn new(path: &Path) -> Option<Mapping> {
let map = super::mmap(path)?;
Mapping::mk(map, |data, stash| {
- Context::new(stash, Object::parse(data)?, None)
+ Context::new(stash, Object::parse(data)?, None, None)
})
}
}
@@ -106,3 +108,11 @@ impl<'a> Object<'a> {
None
}
}
+
+pub(super) fn handle_split_dwarf<'data>(
+ _package: Option<&gimli::DwarfPackage<EndianSlice<'data, Endian>>>,
+ _stash: &'data Stash,
+ _load: addr2line::SplitDwarfLoad<EndianSlice<'data, Endian>>,
+) -> Option<Arc<gimli::Dwarf<EndianSlice<'data, Endian>>>> {
+ None
+}
diff --git a/vendor/backtrace/src/symbolize/gimli/elf.rs b/vendor/backtrace/src/symbolize/gimli/elf.rs
index bc71ee2c9..b0eec0762 100644
--- a/vendor/backtrace/src/symbolize/gimli/elf.rs
+++ b/vendor/backtrace/src/symbolize/gimli/elf.rs
@@ -3,7 +3,8 @@ use super::mystd::fs;
use super::mystd::os::unix::ffi::{OsStrExt, OsStringExt};
use super::mystd::path::{Path, PathBuf};
use super::Either;
-use super::{Context, Mapping, Stash, Vec};
+use super::{gimli, Context, Endian, EndianSlice, Mapping, Stash, Vec};
+use alloc::sync::Arc;
use core::convert::{TryFrom, TryInto};
use core::str;
use object::elf::{ELFCOMPRESS_ZLIB, ELF_NOTE_GNU, NT_GNU_BUILD_ID, SHF_COMPRESSED};
@@ -24,24 +25,26 @@ impl Mapping {
// Try to locate an external debug file using the build ID.
if let Some(path_debug) = object.build_id().and_then(locate_build_id) {
- if let Some(mapping) = Mapping::new_debug(path_debug, None) {
+ if let Some(mapping) = Mapping::new_debug(path, path_debug, None) {
return Some(Either::A(mapping));
}
}
// Try to locate an external debug file using the GNU debug link section.
if let Some((path_debug, crc)) = object.gnu_debuglink_path(path) {
- if let Some(mapping) = Mapping::new_debug(path_debug, Some(crc)) {
+ if let Some(mapping) = Mapping::new_debug(path, path_debug, Some(crc)) {
return Some(Either::A(mapping));
}
}
- Context::new(stash, object, None).map(Either::B)
+ let dwp = Mapping::load_dwarf_package(path, stash);
+
+ Context::new(stash, object, None, dwp).map(Either::B)
})
}
/// Load debuginfo from an external debug file.
- fn new_debug(path: PathBuf, crc: Option<u32>) -> Option<Mapping> {
+ fn new_debug(original_path: &Path, path: PathBuf, crc: Option<u32>) -> Option<Mapping> {
let map = super::mmap(&path)?;
Mapping::mk(map, |map, stash| {
let object = Object::parse(&map)?;
@@ -51,20 +54,45 @@ impl Mapping {
}
// Try to locate a supplementary object file.
+ let mut sup = None;
if let Some((path_sup, build_id_sup)) = object.gnu_debugaltlink_path(&path) {
if let Some(map_sup) = super::mmap(&path_sup) {
- let map_sup = stash.set_mmap_aux(map_sup);
- if let Some(sup) = Object::parse(map_sup) {
- if sup.build_id() == Some(build_id_sup) {
- return Context::new(stash, object, Some(sup));
+ let map_sup = stash.cache_mmap(map_sup);
+ if let Some(sup_) = Object::parse(map_sup) {
+ if sup_.build_id() == Some(build_id_sup) {
+ sup = Some(sup_);
}
}
}
}
- Context::new(stash, object, None)
+ let dwp = Mapping::load_dwarf_package(original_path, stash);
+
+ Context::new(stash, object, sup, dwp)
})
}
+
+ /// Try to locate a DWARF package file.
+ fn load_dwarf_package<'data>(path: &Path, stash: &'data Stash) -> Option<Object<'data>> {
+ let mut path_dwp = path.to_path_buf();
+ let dwp_extension = path
+ .extension()
+ .map(|previous_extension| {
+ let mut previous_extension = previous_extension.to_os_string();
+ previous_extension.push(".dwp");
+ previous_extension
+ })
+ .unwrap_or_else(|| "dwp".into());
+ path_dwp.set_extension(dwp_extension);
+ if let Some(map_dwp) = super::mmap(&path_dwp) {
+ let map_dwp = stash.cache_mmap(map_dwp);
+ if let Some(dwp_) = Object::parse(map_dwp) {
+ return Some(dwp_);
+ }
+ }
+
+ None
+ }
}
struct ParsedSym {
@@ -421,3 +449,47 @@ fn locate_debugaltlink(path: &Path, filename: &[u8], build_id: &[u8]) -> Option<
locate_build_id(build_id)
}
+
+fn convert_path<R: gimli::Reader>(r: &R) -> Result<PathBuf, gimli::Error> {
+ let bytes = r.to_slice()?;
+ Ok(PathBuf::from(OsStr::from_bytes(&bytes)))
+}
+
+pub(super) fn handle_split_dwarf<'data>(
+ package: Option<&gimli::DwarfPackage<EndianSlice<'data, Endian>>>,
+ stash: &'data Stash,
+ load: addr2line::SplitDwarfLoad<EndianSlice<'data, Endian>>,
+) -> Option<Arc<gimli::Dwarf<EndianSlice<'data, Endian>>>> {
+ if let Some(dwp) = package.as_ref() {
+ if let Ok(Some(cu)) = dwp.find_cu(load.dwo_id, &load.parent) {
+ return Some(Arc::new(cu));
+ }
+ }
+
+ let mut path = PathBuf::new();
+ if let Some(p) = load.comp_dir.as_ref() {
+ path.push(convert_path(p).ok()?);
+ }
+
+ path.push(convert_path(load.path.as_ref()?).ok()?);
+
+ if let Some(map_dwo) = super::mmap(&path) {
+ let map_dwo = stash.cache_mmap(map_dwo);
+ if let Some(dwo) = Object::parse(map_dwo) {
+ return gimli::Dwarf::load(|id| -> Result<_, ()> {
+ let data = id
+ .dwo_name()
+ .and_then(|name| dwo.section(stash, name))
+ .unwrap_or(&[]);
+ Ok(EndianSlice::new(data, Endian))
+ })
+ .ok()
+ .map(|mut dwo_dwarf| {
+ dwo_dwarf.make_dwo(&load.parent);
+ Arc::new(dwo_dwarf)
+ });
+ }
+ }
+
+ None
+}
diff --git a/vendor/backtrace/src/symbolize/gimli/macho.rs b/vendor/backtrace/src/symbolize/gimli/macho.rs
index adea97a09..74ed8091a 100644
--- a/vendor/backtrace/src/symbolize/gimli/macho.rs
+++ b/vendor/backtrace/src/symbolize/gimli/macho.rs
@@ -1,4 +1,5 @@
-use super::{Box, Context, Mapping, Path, Stash, Vec};
+use super::{gimli, Box, Context, Endian, EndianSlice, Mapping, Path, Stash, Vec};
+use alloc::sync::Arc;
use core::convert::TryInto;
use object::macho;
use object::read::macho::{MachHeader, Nlist, Section, Segment as _};
@@ -45,7 +46,7 @@ impl Mapping {
let (macho, data) = find_header(data)?;
let endian = macho.endian().ok()?;
let obj = Object::parse(macho, endian, data)?;
- Context::new(stash, obj, None)
+ Context::new(stash, obj, None, None)
})
}
@@ -82,7 +83,7 @@ impl Mapping {
return None;
}
let obj = Object::parse(macho, endian, data)?;
- Context::new(stash, obj, None)
+ Context::new(stash, obj, None, None)
});
if let Some(candidate) = candidate {
return Some(candidate);
@@ -309,7 +310,7 @@ fn object_mapping(path: &[u8]) -> Option<Mapping> {
let (macho, data) = find_header(data)?;
let endian = macho.endian().ok()?;
let obj = Object::parse(macho, endian, data)?;
- Context::new(stash, obj, None)
+ Context::new(stash, obj, None, None)
})
}
@@ -322,3 +323,11 @@ fn split_archive_path(path: &[u8]) -> Option<(&[u8], &[u8])> {
let (archive, rest) = path.split_at(index);
Some((archive, &rest[1..]))
}
+
+pub(super) fn handle_split_dwarf<'data>(
+ _package: Option<&gimli::DwarfPackage<EndianSlice<'data, Endian>>>,
+ _stash: &'data Stash,
+ _load: addr2line::SplitDwarfLoad<EndianSlice<'data, Endian>>,
+) -> Option<Arc<gimli::Dwarf<EndianSlice<'data, Endian>>>> {
+ None
+}
diff --git a/vendor/backtrace/src/symbolize/gimli/mmap_unix.rs b/vendor/backtrace/src/symbolize/gimli/mmap_unix.rs
index 5806c9f7e..261ffc1d8 100644
--- a/vendor/backtrace/src/symbolize/gimli/mmap_unix.rs
+++ b/vendor/backtrace/src/symbolize/gimli/mmap_unix.rs
@@ -4,6 +4,11 @@ use core::ops::Deref;
use core::ptr;
use core::slice;
+#[cfg(not(all(target_os = "linux", target_env = "gnu")))]
+use libc::mmap as mmap64;
+#[cfg(all(target_os = "linux", target_env = "gnu"))]
+use libc::mmap64;
+
pub struct Mmap {
ptr: *mut libc::c_void,
len: usize,
@@ -11,7 +16,7 @@ pub struct Mmap {
impl Mmap {
pub unsafe fn map(file: &File, len: usize) -> Option<Mmap> {
- let ptr = libc::mmap(
+ let ptr = mmap64(
ptr::null_mut(),
len,
libc::PROT_READ,
diff --git a/vendor/backtrace/src/symbolize/gimli/mmap_windows.rs b/vendor/backtrace/src/symbolize/gimli/mmap_windows.rs
index 22f53fe03..b39509d8c 100644
--- a/vendor/backtrace/src/symbolize/gimli/mmap_windows.rs
+++ b/vendor/backtrace/src/symbolize/gimli/mmap_windows.rs
@@ -6,7 +6,7 @@ use core::ptr;
use core::slice;
pub struct Mmap {
- // keep the file alive to prevent it from ebeing deleted which would cause
+ // keep the file alive to prevent it from being deleted which would cause
// us to read bad data.
_file: File,
ptr: *mut c_void,
diff --git a/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs b/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs
index a196ffcfb..deeeb2971 100644
--- a/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs
+++ b/vendor/backtrace/src/symbolize/gimli/parse_running_mmaps_unix.rs
@@ -97,15 +97,10 @@ impl FromStr for MapsEntry {
let pathname_str = parts.next().unwrap_or(""); // pathname may be omitted.
let hex = |s| usize::from_str_radix(s, 16).map_err(|_| "Couldn't parse hex number");
- let address = {
- // This could use `range_str.split_once('-')` once the MSRV passes 1.52.
- if let Some(idx) = range_str.find('-') {
- let (start, rest) = range_str.split_at(idx);
- let (_div, limit) = rest.split_at(1);
- (hex(start)?, hex(limit)?)
- } else {
- return Err("Couldn't parse address range");
- }
+ let address = if let Some((start, limit)) = range_str.split_once('-') {
+ (hex(start)?, hex(limit)?)
+ } else {
+ return Err("Couldn't parse address range");
};
let perms: [char; 4] = {
let mut chars = perms_str.chars();
@@ -117,15 +112,10 @@ impl FromStr for MapsEntry {
perms
};
let offset = hex(offset_str)?;
- let dev = {
- // This could use `dev_str.split_once(':')` once the MSRV passes 1.52.
- if let Some(idx) = dev_str.find(':') {
- let (major, rest) = dev_str.split_at(idx);
- let (_div, minor) = rest.split_at(1);
- (hex(major)?, hex(minor)?)
- } else {
- return Err("Couldn't parse dev")?;
- }
+ let dev = if let Some((major, minor)) = dev_str.split_once(':') {
+ (hex(major)?, hex(minor)?)
+ } else {
+ return Err("Couldn't parse dev");
};
let inode = hex(inode_str)?;
let pathname = pathname_str.into();
diff --git a/vendor/backtrace/src/symbolize/gimli/stash.rs b/vendor/backtrace/src/symbolize/gimli/stash.rs
index 3adfc598a..792f9a6f8 100644
--- a/vendor/backtrace/src/symbolize/gimli/stash.rs
+++ b/vendor/backtrace/src/symbolize/gimli/stash.rs
@@ -9,14 +9,14 @@ use core::cell::UnsafeCell;
/// A simple arena allocator for byte buffers.
pub struct Stash {
buffers: UnsafeCell<Vec<Vec<u8>>>,
- mmap_aux: UnsafeCell<Option<Mmap>>,
+ mmaps: UnsafeCell<Vec<Mmap>>,
}
impl Stash {
pub fn new() -> Stash {
Stash {
buffers: UnsafeCell::new(Vec::new()),
- mmap_aux: UnsafeCell::new(None),
+ mmaps: UnsafeCell::new(Vec::new()),
}
}
@@ -35,18 +35,16 @@ impl Stash {
/// Stores a `Mmap` for the lifetime of this `Stash`, returning a pointer
/// which is scoped to just this lifetime.
- pub fn set_mmap_aux(&self, map: Mmap) -> &[u8] {
+ pub fn cache_mmap(&self, map: Mmap) -> &[u8] {
// SAFETY: this is the only location for a mutable pointer to
- // `mmap_aux`, and this structure isn't threadsafe to shared across
- // threads either. This also is careful to store at most one `mmap_aux`
- // since overwriting a previous one would invalidate the previous
- // pointer. Given that though we can safely return a pointer to our
- // interior-owned contents.
+ // `mmaps`, and this structure isn't threadsafe to shared across
+ // threads either. We also never remove elements from `self.mmaps`,
+ // so a reference to the data inside the map will live as long as
+ // `self` does.
unsafe {
- let mmap_aux = &mut *self.mmap_aux.get();
- assert!(mmap_aux.is_none());
- *mmap_aux = Some(map);
- mmap_aux.as_ref().unwrap()
+ let mmaps = &mut *self.mmaps.get();
+ mmaps.push(map);
+ mmaps.last().unwrap()
}
}
}
diff --git a/vendor/backtrace/tests/current-exe-mismatch.rs b/vendor/backtrace/tests/current-exe-mismatch.rs
index 21c67bcbf..b655827fb 100644
--- a/vendor/backtrace/tests/current-exe-mismatch.rs
+++ b/vendor/backtrace/tests/current-exe-mismatch.rs
@@ -118,11 +118,8 @@ fn find_interpreter(me: &Path) -> Result<PathBuf, EarlyExit> {
let line = line?;
let line = line.trim();
let prefix = "[Requesting program interpreter: ";
- // This could use `line.split_once` and `suffix.rsplit_once` once the MSRV passes 1.52
- if let Some(idx) = line.find(prefix) {
- let (_, suffix) = line.split_at(idx + prefix.len());
- if let Some(idx) = suffix.rfind("]") {
- let (found_path, _ignore_remainder) = suffix.split_at(idx);
+ if let Some((_, suffix)) = line.split_once(prefix) {
+ if let Some((found_path, _)) = suffix.rsplit_once("]") {
return Ok(found_path.into());
}
}