[AVR] Replace broken 'avr-unknown-unknown' target with 'avr-unknown-gnu-atmega328' target The `avr-unknown-unknown` target has never worked correctly, always trying to invoke the host linker and failing. It aimed to be a mirror of AVR-GCC's default handling of the `avr-unknown-unknown' triple (assume bare minimum chip features, silently skip linking runtime libraries, etc). This behaviour is broken-by-default as it will cause a miscompiled executable when flashed. This patch improves the AVR builtin target specifications to instead expose only a 'avr-unknown-gnu-atmega328' target. This target system is `gnu`, as it uses the AVR-GCC frontend along with avr-binutils. The target triple ABI is 'atmega328'. In the future, it should be possible to replace the dependency on AVR-GCC and binutils by using the in-progress AVR LLD and compiler-rt support. Perhaps at that point it would make sense to add an 'avr-unknown-unknown-atmega328' target as a better default when implemented. There is no current intention to add in-tree AVR target specifications for other AVR microcontrollers - this one can serve as a reference implementation for other devices via `rustc --print target-spec-json avr-unknown-gnu-atmega328p`. There should be no users of the existing 'avr-unknown-unknown' Rust target as a custom target specification JSON has always been recommended, and the avr-unknown-unknown target could never pass the linking step anyway. |
||
|---|---|---|
| .. | ||
| bootstrap | ||
| build_helper | ||
| ci | ||
| doc | ||
| etc | ||
| librustc_apfloat | ||
| librustc_arena | ||
| librustc_ast | ||
| librustc_ast_lowering | ||
| librustc_ast_passes | ||
| librustc_ast_pretty | ||
| librustc_attr | ||
| librustc_builtin_macros | ||
| librustc_codegen_llvm | ||
| librustc_codegen_ssa | ||
| librustc_data_structures | ||
| librustc_driver | ||
| librustc_error_codes | ||
| librustc_errors | ||
| librustc_expand | ||
| librustc_feature | ||
| librustc_fs_util | ||
| librustc_graphviz | ||
| librustc_hir | ||
| librustc_hir_pretty | ||
| librustc_incremental | ||
| librustc_index | ||
| librustc_infer | ||
| librustc_interface | ||
| librustc_lexer | ||
| librustc_lint | ||
| librustc_llvm | ||
| librustc_macros | ||
| librustc_metadata | ||
| librustc_middle | ||
| librustc_mir | ||
| librustc_mir_build | ||
| librustc_parse | ||
| librustc_parse_format | ||
| librustc_passes | ||
| librustc_plugin_impl | ||
| librustc_privacy | ||
| librustc_query_system | ||
| librustc_resolve | ||
| librustc_save_analysis | ||
| librustc_serialize | ||
| librustc_session | ||
| librustc_span | ||
| librustc_symbol_mangling | ||
| librustc_target | ||
| librustc_trait_selection | ||
| librustc_traits | ||
| librustc_ty | ||
| librustc_typeck | ||
| librustdoc | ||
| llvm-project@45790d7949 | ||
| rustc | ||
| rustllvm | ||
| test | ||
| tools | ||
| README.md | ||
| stage0.txt | ||
This directory contains the source code of the rust project, including:
rustcand its tests- The bootstrapping build system
- Various submodules for tools, like rustdoc, rls, etc.
For more information on how various parts of the compiler work, see the rustc dev guide.