diff options
| author | Harald Hoyer <harald@redhat.com> | 2020-09-07 10:45:20 +0200 |
|---|---|---|
| committer | Harald Hoyer <harald@redhat.com> | 2020-10-02 09:00:29 +0200 |
| commit | cadd12b5f020b9b2c7bb0c5e7078b81fbdcfb6d8 (patch) | |
| tree | f08cb851bfe4d02d97b2b20748a9f0d69d225ed0 /compiler/rustc_passes/src | |
| parent | f283d3f02cf3ed261a519afe05cde9e23d1d9278 (diff) | |
| download | rust-cadd12b5f020b9b2c7bb0c5e7078b81fbdcfb6d8.tar.gz rust-cadd12b5f020b9b2c7bb0c5e7078b81fbdcfb6d8.zip | |
Implement Make `handle_alloc_error` default to panic (for no_std + liballoc)
Related: https://github.com/rust-lang/rust/issues/66741 Guarded with `#![feature(default_alloc_error_handler)]` a default `alloc_error_handler` is called, if a custom allocator is used and no other custom `#[alloc_error_handler]` is defined. The panic message does not contain the size anymore, because it would pull in the fmt machinery, which would blow up the code size significantly.
Diffstat (limited to 'compiler/rustc_passes/src')
| -rw-r--r-- | compiler/rustc_passes/src/weak_lang_items.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_passes/src/weak_lang_items.rs b/compiler/rustc_passes/src/weak_lang_items.rs index 6bc2110bfb3..effb25b0224 100644 --- a/compiler/rustc_passes/src/weak_lang_items.rs +++ b/compiler/rustc_passes/src/weak_lang_items.rs @@ -64,7 +64,10 @@ fn verify<'tcx>(tcx: TyCtxt<'tcx>, items: &lang_items::LanguageItems) { if item == LangItem::PanicImpl { tcx.sess.err("`#[panic_handler]` function required, but not found"); } else if item == LangItem::Oom { - tcx.sess.err("`#[alloc_error_handler]` function required, but not found"); + if !tcx.features().default_alloc_error_handler { + tcx.sess.err("`#[alloc_error_handler]` function required, but not found."); + tcx.sess.note_without_error("Use `#![feature(default_alloc_error_handler)]` for a default error handler."); + } } else { tcx.sess.err(&format!("language item required, but not found: `{}`", name)); } |
