182 lines
40 KiB
Plaintext
182 lines
40 KiB
Plaintext
<div id="readability-page-1" class="page">
|
||
<div id="mdbook-help-container">
|
||
<h2>Keyboard shortcuts</h2>
|
||
<div>
|
||
<p>Press <kbd>←</kbd> or <kbd>→</kbd> to navigate between chapters</p>
|
||
<p>Press <kbd>S</kbd> or <kbd>/</kbd> to search in the book</p>
|
||
<p>Press <kbd>?</kbd> to show this help</p>
|
||
<p>Press <kbd>Esc</kbd> to hide this help</p>
|
||
</div>
|
||
</div>
|
||
<div id="mdbook-body-container">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<nav id="mdbook-sidebar" aria-label="Table of contents" aria-hidden="false">
|
||
|
||
<ol><li><span><a href="https://doc.rust-lang.org/rustc/what-is-rustc.html" tabindex="0"><strong aria-hidden="true">1.</strong> What is rustc?</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/command-line-arguments.html" tabindex="0"><strong aria-hidden="true">2.</strong> Command-line Arguments</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/command-line-arguments/print-options.html" tabindex="0"><strong aria-hidden="true">2.1.</strong> Print Options</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/codegen-options/index.html" tabindex="0"><strong aria-hidden="true">2.2.</strong> Codegen Options</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/jobserver.html" tabindex="0"><strong aria-hidden="true">3.</strong> Jobserver</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/lints/index.html" tabindex="0"><strong aria-hidden="true">4.</strong> Lints</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/lints/levels.html" tabindex="0"><strong aria-hidden="true">4.1.</strong> Lint Levels</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/lints/groups.html" tabindex="0"><strong aria-hidden="true">4.2.</strong> Lint Groups</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/lints/listing/index.html" tabindex="0"><strong aria-hidden="true">4.3.</strong> Lint Listing</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html" tabindex="0"><strong aria-hidden="true">4.3.1.</strong> Allowed-by-default Lints</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/lints/listing/warn-by-default.html" tabindex="0"><strong aria-hidden="true">4.3.2.</strong> Warn-by-default Lints</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/lints/listing/deny-by-default.html" tabindex="0"><strong aria-hidden="true">4.3.3.</strong> Deny-by-default Lints</a></span></li></ol></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/json.html" tabindex="0"><strong aria-hidden="true">5.</strong> JSON Output</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/tests/index.html" tabindex="0"><strong aria-hidden="true">6.</strong> Tests</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/targets/index.html" tabindex="0"><strong aria-hidden="true">7.</strong> Targets</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/targets/built-in.html" tabindex="0"><strong aria-hidden="true">7.1.</strong> Built-in Targets</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/targets/custom.html" tabindex="0"><strong aria-hidden="true">7.2.</strong> Custom Targets</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/targets/known-issues.html" tabindex="0"><strong aria-hidden="true">7.3.</strong> Known Issues</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/profile-guided-optimization.html" tabindex="0"><strong aria-hidden="true">8.</strong> Profile-guided Optimization</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/instrument-coverage.html" tabindex="0"><strong aria-hidden="true">9.</strong> Instrumentation-based Code Coverage</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/linker-plugin-lto.html" tabindex="0"><strong aria-hidden="true">10.</strong> Linker-plugin-based LTO</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/check-cfg.html" tabindex="0"><strong aria-hidden="true">11.</strong> Checking Conditional Configurations</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/check-cfg/cargo-specifics.html" tabindex="0"><strong aria-hidden="true">11.1.</strong> Cargo Specifics</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/remap-source-paths.html" tabindex="0"><strong aria-hidden="true">12.</strong> Remap source paths</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/exploit-mitigations.html" tabindex="0"><strong aria-hidden="true">13.</strong> Exploit Mitigations</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/symbol-mangling/index.html" tabindex="0"><strong aria-hidden="true">14.</strong> Symbol Mangling</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/symbol-mangling/v0.html" tabindex="0"><strong aria-hidden="true">14.1.</strong> v0 Symbol Format</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/contributing.html" tabindex="0"><strong aria-hidden="true">15.</strong> Contributing to rustc</a></span></li><li></li><li></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support.html" tabindex="0"><strong aria-hidden="true">16.</strong> Platform Support</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/target-tier-policy.html" tabindex="0"><strong aria-hidden="true">16.1.</strong> Target Tier Policy</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/TEMPLATE.html" tabindex="0"><strong aria-hidden="true">16.2.</strong> Template for Target-specific Documentation</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/arm64ec-pc-windows-msvc.html" tabindex="0"><strong aria-hidden="true">16.3.</strong> arm64ec-pc-windows-msvc</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/apple-darwin.html" tabindex="0"><strong aria-hidden="true">16.4.</strong> *-apple-darwin</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/i686-apple-darwin.html" tabindex="0"><strong aria-hidden="true">16.4.1.</strong> i686-apple-darwin</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/x86_64h-apple-darwin.html" tabindex="0"><strong aria-hidden="true">16.4.2.</strong> x86_64h-apple-darwin</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/arm64e-apple-darwin.html" tabindex="0"><strong aria-hidden="true">16.4.3.</strong> arm64e-apple-darwin</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/apple-ios.html" tabindex="0"><strong aria-hidden="true">16.5.</strong> *-apple-ios</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/apple-ios-macabi.html" tabindex="0"><strong aria-hidden="true">16.5.1.</strong> *-apple-ios-macabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/arm64e-apple-ios.html" tabindex="0"><strong aria-hidden="true">16.5.2.</strong> arm64e-apple-ios</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/apple-tvos.html" tabindex="0"><strong aria-hidden="true">16.6.</strong> *-apple-tvos</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/arm64e-apple-tvos.html" tabindex="0"><strong aria-hidden="true">16.6.1.</strong> arm64e-apple-tvos</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/apple-watchos.html" tabindex="0"><strong aria-hidden="true">16.7.</strong> *-apple-watchos</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/apple-visionos.html" tabindex="0"><strong aria-hidden="true">16.8.</strong> *-apple-visionos</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64-nintendo-switch-freestanding.html" tabindex="0"><strong aria-hidden="true">16.9.</strong> aarch64-nintendo-switch-freestanding</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.10.</strong> aarch64-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.11.</strong> aarch64-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64-unknown-none.html" tabindex="0"><strong aria-hidden="true">16.12.</strong> aarch64-unknown-none*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64_be-unknown-none-softfloat.html" tabindex="0"><strong aria-hidden="true">16.13.</strong> aarch64_be-unknown-none-softfloat</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64_be-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.14.</strong> aarch64_be-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/amdgcn-amd-amdhsa.html" tabindex="0"><strong aria-hidden="true">16.15.</strong> amdgcn-amd-amdhsa</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/arm-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.</strong> arm-none-eabi</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv4t-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.1.</strong> {arm,thumb}v4t-none-eabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv5te-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.2.</strong> {arm,thumb}v5te-none-eabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7a-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.3.</strong> armv7a-none-eabi{,hf}</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7r-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.4.</strong> armv7r-none-eabi{,hf}</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armebv7r-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.5.</strong> armebv7r-none-eabi{,hf}</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv8r-none-eabihf.html" tabindex="0"><strong aria-hidden="true">16.16.6.</strong> armv8r-none-eabihf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/thumbv6m-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.7.</strong> thumbv6m-none-eabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/thumbv7em-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.8.</strong> thumbv7em-none-eabi*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/thumbv7m-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.9.</strong> thumbv7m-none-eabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/thumbv8m.base-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.10.</strong> thumbv8m.base-none-eabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/thumbv8m.main-none-eabi.html" tabindex="0"><strong aria-hidden="true">16.16.11.</strong> thumbv8m.main-none-eabi*</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/arm-linux.html" tabindex="0"><strong aria-hidden="true">16.17.</strong> arm*-unknown-linux-*</a></span><ol><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armeb-unknown-linux-gnueabi.html" tabindex="0"><strong aria-hidden="true">16.17.1.</strong> armeb-unknown-linux-gnueabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv5te-unknown-linux-gnueabi.html" tabindex="0"><strong aria-hidden="true">16.17.2.</strong> armv5te-unknown-linux-gnueabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7-unknown-linux-gnueabi.html" tabindex="0"><strong aria-hidden="true">16.17.3.</strong> armv7-unknown-linux-gnueabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7-unknown-linux-uclibceabi.html" tabindex="0"><strong aria-hidden="true">16.17.4.</strong> armv7-unknown-linux-uclibceabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7-unknown-linux-uclibceabihf.html" tabindex="0"><strong aria-hidden="true">16.17.5.</strong> armv7-unknown-linux-uclibceabihf</a></span></li></ol></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv6k-nintendo-3ds.html" tabindex="0"><strong aria-hidden="true">16.18.</strong> armv6k-nintendo-3ds</a></span><div><ol><li><span><a href="#target-maintainers">Target maintainers</a></span></li><li><span><a href="#requirements">Requirements</a></span></li><li><span><a href="#building-the-target">Building the target</a></span></li><li><span><a href="#building-rust-programs">Building Rust programs</a></span></li><li><span><a href="#testing">Testing</a></span></li><li><span><a href="#cross-compilation-toolchains-and-c-code">Cross-compilation toolchains and C code</a></span></li></ol></div></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7-rtems-eabihf.html" tabindex="0"><strong aria-hidden="true">16.19.</strong> armv7-rtems-eabihf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7-sony-vita-newlibeabihf.html" tabindex="0"><strong aria-hidden="true">16.20.</strong> armv7-sony-vita-newlibeabihf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/armv7a-vex-v5.html" tabindex="0"><strong aria-hidden="true">16.21.</strong> armv7a-vex-v5</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/android.html" tabindex="0"><strong aria-hidden="true">16.22.</strong> *-android and *-androideabi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/openharmony.html" tabindex="0"><strong aria-hidden="true">16.23.</strong> *-linux-ohos</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/hurd.html" tabindex="0"><strong aria-hidden="true">16.24.</strong> *-hurd-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aarch64-unknown-teeos.html" tabindex="0"><strong aria-hidden="true">16.25.</strong> aarch64-unknown-teeos</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/avr-none.html" tabindex="0"><strong aria-hidden="true">16.26.</strong> avr-none</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/esp-idf.html" tabindex="0"><strong aria-hidden="true">16.27.</strong> *-espidf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/fuchsia.html" tabindex="0"><strong aria-hidden="true">16.28.</strong> *-unknown-fuchsia</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/trusty.html" tabindex="0"><strong aria-hidden="true">16.29.</strong> *-unknown-trusty</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/kmc-solid.html" tabindex="0"><strong aria-hidden="true">16.30.</strong> *-kmc-solid_*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/csky-unknown-linux-gnuabiv2.html" tabindex="0"><strong aria-hidden="true">16.31.</strong> csky-unknown-linux-gnuabiv2*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/hexagon-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.32.</strong> hexagon-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/hexagon-unknown-none-elf.html" tabindex="0"><strong aria-hidden="true">16.33.</strong> hexagon-unknown-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/hexagon-unknown-qurt.html" tabindex="0"><strong aria-hidden="true">16.34.</strong> hexagon-unknown-qurt</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/illumos.html" tabindex="0"><strong aria-hidden="true">16.35.</strong> illumos</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/loongarch-linux.html" tabindex="0"><strong aria-hidden="true">16.36.</strong> loongarch*-unknown-linux-*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/loongarch-none.html" tabindex="0"><strong aria-hidden="true">16.37.</strong> loongarch*-unknown-none*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/lynxos178.html" tabindex="0"><strong aria-hidden="true">16.38.</strong> *-lynxos178-*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/m68k-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.39.</strong> m68k-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/m68k-unknown-none-elf.html" tabindex="0"><strong aria-hidden="true">16.40.</strong> m68k-unknown-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/mips64-openwrt-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.41.</strong> mips64-openwrt-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/mips64-unknown-linux-muslabi64.html" tabindex="0"><strong aria-hidden="true">16.42.</strong> mips64-unknown-linux-muslabi64</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/mipsel-sony-psx.html" tabindex="0"><strong aria-hidden="true">16.43.</strong> mipsel-sony-psx</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/mipsel-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.44.</strong> mipsel-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/mips-mti-none-elf.html" tabindex="0"><strong aria-hidden="true">16.45.</strong> mips*-mti-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/mips-release-6.html" tabindex="0"><strong aria-hidden="true">16.46.</strong> mipsisa*r6*-unknown-linux-gnu*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/nvptx64-nvidia-cuda.html" tabindex="0"><strong aria-hidden="true">16.47.</strong> nvptx64-nvidia-cuda</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/powerpc-unknown-openbsd.html" tabindex="0"><strong aria-hidden="true">16.48.</strong> powerpc-unknown-openbsd</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/powerpc-unknown-linux-gnuspe.html" tabindex="0"><strong aria-hidden="true">16.49.</strong> powerpc-unknown-linux-gnuspe</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/powerpc-unknown-linux-muslspe.html" tabindex="0"><strong aria-hidden="true">16.50.</strong> powerpc-unknown-linux-muslspe</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/aix.html" tabindex="0"><strong aria-hidden="true">16.51.</strong> powerpc64-ibm-aix</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/powerpc64-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.52.</strong> powerpc64-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/powerpc64le-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.53.</strong> powerpc64le-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/powerpc64le-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.54.</strong> powerpc64le-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv32e-unknown-none-elf.html" tabindex="0"><strong aria-hidden="true">16.55.</strong> riscv32e*-unknown-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv32-unknown-none-elf.html" tabindex="0"><strong aria-hidden="true">16.56.</strong> riscv32i*-unknown-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv32im-risc0-zkvm-elf.html" tabindex="0"><strong aria-hidden="true">16.57.</strong> riscv32im-risc0-zkvm-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv32imac-unknown-xous-elf.html" tabindex="0"><strong aria-hidden="true">16.58.</strong> riscv32imac-unknown-xous-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv64im-unknown-none-elf.html" tabindex="0"><strong aria-hidden="true">16.59.</strong> riscv64im-unknown-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv64gc-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.60.</strong> riscv64gc-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv64gc-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.61.</strong> riscv64gc-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/riscv64a23-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.62.</strong> riscv64a23-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/s390x-unknown-linux-gnu.html" tabindex="0"><strong aria-hidden="true">16.63.</strong> s390x-unknown-linux-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/s390x-unknown-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.64.</strong> s390x-unknown-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/sparc-unknown-none-elf.html" tabindex="0"><strong aria-hidden="true">16.65.</strong> sparc-unknown-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/solaris.html" tabindex="0"><strong aria-hidden="true">16.66.</strong> solaris</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/nto-qnx.html" tabindex="0"><strong aria-hidden="true">16.67.</strong> *-nto-qnx-*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/unikraft-linux-musl.html" tabindex="0"><strong aria-hidden="true">16.68.</strong> *-unikraft-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/helenos.html" tabindex="0"><strong aria-hidden="true">16.69.</strong> *-unknown-helenos</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/hermit.html" tabindex="0"><strong aria-hidden="true">16.70.</strong> *-unknown-hermit</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/freebsd.html" tabindex="0"><strong aria-hidden="true">16.71.</strong> *-unknown-freebsd</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/managarm.html" tabindex="0"><strong aria-hidden="true">16.72.</strong> *-unknown-managarm-mlibc</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/motor.html" tabindex="0"><strong aria-hidden="true">16.73.</strong> *-unknown-motor</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/netbsd.html" tabindex="0"><strong aria-hidden="true">16.74.</strong> *-unknown-netbsd*</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/openbsd.html" tabindex="0"><strong aria-hidden="true">16.75.</strong> *-unknown-openbsd</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/redox.html" tabindex="0"><strong aria-hidden="true">16.76.</strong> *-unknown-redox</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/unknown-uefi.html" tabindex="0"><strong aria-hidden="true">16.77.</strong> *-unknown-uefi</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/windows-msvc.html" tabindex="0"><strong aria-hidden="true">16.78.</strong> *-pc-windows-msvc</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/uwp-windows-msvc.html" tabindex="0"><strong aria-hidden="true">16.79.</strong> *-uwp-windows-msvc</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/vxworks.html" tabindex="0"><strong aria-hidden="true">16.80.</strong> *-wrs-vxworks</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip1.html" tabindex="0"><strong aria-hidden="true">16.81.</strong> wasm32-wasip1</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip1-threads.html" tabindex="0"><strong aria-hidden="true">16.82.</strong> wasm32-wasip1-threads</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip2.html" tabindex="0"><strong aria-hidden="true">16.83.</strong> wasm32-wasip2</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-wasip3.html" tabindex="0"><strong aria-hidden="true">16.84.</strong> wasm32-wasip3</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-wali-linux.html" tabindex="0"><strong aria-hidden="true">16.85.</strong> wasm32-wali-linux-musl</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-unknown-emscripten.html" tabindex="0"><strong aria-hidden="true">16.86.</strong> wasm32-unknown-emscripten</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32-unknown-unknown.html" tabindex="0"><strong aria-hidden="true">16.87.</strong> wasm32-unknown-unknown</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm32v1-none.html" tabindex="0"><strong aria-hidden="true">16.88.</strong> wasm32v1-none</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/wasm64-unknown-unknown.html" tabindex="0"><strong aria-hidden="true">16.89.</strong> wasm64-unknown-unknown</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/windows-gnu.html" tabindex="0"><strong aria-hidden="true">16.90.</strong> windows-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/windows-gnullvm.html" tabindex="0"><strong aria-hidden="true">16.91.</strong> windows-gnullvm</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/win7-windows-gnu.html" tabindex="0"><strong aria-hidden="true">16.92.</strong> *-win7-windows-gnu</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/win7-windows-msvc.html" tabindex="0"><strong aria-hidden="true">16.93.</strong> *-win7-windows-msvc</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/x86_64-fortanix-unknown-sgx.html" tabindex="0"><strong aria-hidden="true">16.94.</strong> x86_64-fortanix-unknown-sgx</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/x86_64-pc-cygwin.html" tabindex="0"><strong aria-hidden="true">16.95.</strong> x86_64-pc-cygwin</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/x86_64-unknown-linux-none.html" tabindex="0"><strong aria-hidden="true">16.96.</strong> x86_64-unknown-linux-none</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/x86_64-unknown-none.html" tabindex="0"><strong aria-hidden="true">16.97.</strong> x86_64-unknown-none</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/xtensa.html" tabindex="0"><strong aria-hidden="true">16.98.</strong> xtensa-*-none-elf</a></span></li><li><span><a href="https://doc.rust-lang.org/rustc/platform-support/nuttx.html" tabindex="0"><strong aria-hidden="true">16.99.</strong> *-nuttx-*</a></span></li></ol></li></ol>
|
||
|
||
|
||
</nav>
|
||
|
||
<div id="mdbook-page-wrapper">
|
||
|
||
<div id="mdbook-content" class="page">
|
||
<main>
|
||
<h2 id="armv6k-nintendo-3ds"><a href="#armv6k-nintendo-3ds"><code>armv6k-nintendo-3ds</code></a></h2>
|
||
<p><strong>Tier: 3</strong></p>
|
||
<p>The Nintendo 3DS platform, which has an Armv6k processor, and its associated
|
||
operating system (<code>horizon</code>).</p>
|
||
<p>Rust support for this target is not affiliated with Nintendo, and is not derived
|
||
from nor used with any official Nintendo SDK.</p>
|
||
<h2 id="target-maintainers"><a href="#target-maintainers">Target maintainers</a></h2>
|
||
<p>This target is maintained by members of the <a href="https://github.com/rust3ds">@rust3ds</a>
|
||
organization:</p>
|
||
<p><a href="https://github.com/Meziu">@Meziu</a>
|
||
<a href="https://github.com/AzureMarker">@AzureMarker</a>
|
||
<a href="https://github.com/ian-h-chamberlain">@ian-h-chamberlain</a></p>
|
||
<h2 id="requirements"><a href="#requirements">Requirements</a></h2>
|
||
<p>This target is cross-compiled. Dynamic linking is not supported.</p>
|
||
<p><code>#![no_std]</code> crates can be built using <code>build-std</code> to build <code>core</code> and optionally
|
||
<code>alloc</code>, and either <code>panic_abort</code> or <code>panic_unwind</code>.</p>
|
||
<p><code>std</code> is partially supported, but mostly works. Some APIs are unimplemented
|
||
and will simply return an error, such as <code>std::process</code>. An allocator is provided
|
||
by default.</p>
|
||
<p>In order to support some APIs, binaries must be linked against <code>libc</code> written
|
||
for the target, using a linker for the target. These are provided by the
|
||
devkitARM toolchain. See
|
||
<a href="#cross-compilation-toolchains-and-c-code">Cross-compilation toolchains and C code</a>
|
||
for more details.</p>
|
||
<p>Additionally, some helper crates provide implementations of some <code>libc</code> functions
|
||
use by <code>std</code> that may otherwise be missing. These, or an alternate implementation
|
||
of the relevant functions, are required to use <code>std</code>:</p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust3ds/pthread-3ds"><code>pthread-3ds</code></a> provides pthread APIs for <code>std::thread</code>.</li>
|
||
<li><a href="https://github.com/rust3ds/shim-3ds"><code>shim-3ds</code></a> fulfills some other missing libc APIs (e.g. <code>getrandom</code>).</li>
|
||
</ul>
|
||
<p>Binaries built for this target should be compatible with all variants of the
|
||
3DS (and 2DS) hardware and firmware, but testing is limited and some versions may
|
||
not work correctly.</p>
|
||
<p>This target generates binaries in the ELF format.</p>
|
||
<h2 id="building-the-target"><a href="#building-the-target">Building the target</a></h2>
|
||
<p>You can build Rust with support for the target by adding it to the <code>target</code>
|
||
list in <code>bootstrap.toml</code> and providing paths to the devkitARM toolchain.</p>
|
||
<pre><code><span>[build]</span>
|
||
<span>build-stage</span> = <span>1</span>
|
||
<span>target</span> = [<span>"armv6k-nintendo-3ds"</span>]
|
||
|
||
<span>[target.armv6k-nintendo-3ds]</span>
|
||
<span>cc</span> = <span>"/opt/devkitpro/devkitARM/bin/arm-none-eabi-gcc"</span>
|
||
<span>cxx</span> = <span>"/opt/devkitpro/devkitARM/bin/arm-none-eabi-g++"</span>
|
||
<span>ar</span> = <span>"/opt/devkitpro/devkitARM/bin/arm-none-eabi-ar"</span>
|
||
<span>ranlib</span> = <span>"/opt/devkitpro/devkitARM/bin/arm-none-eabi-ranlib"</span>
|
||
<span>linker</span> = <span>"/opt/devkitpro/devkitARM/bin/arm-none-eabi-gcc"</span>
|
||
</code></pre>
|
||
<p>Also, to build <code>compiler_builtins</code> for the target, export these flags before
|
||
building the Rust toolchain:</p>
|
||
<pre><code><span>export</span> CFLAGS_armv6k_nintendo_3ds=<span>"-mfloat-abi=hard -mtune=mpcore -mtp=soft -march=armv6k"</span>
|
||
</code></pre>
|
||
<h2 id="building-rust-programs"><a href="#building-rust-programs">Building Rust programs</a></h2>
|
||
<p>Rust does not yet ship pre-compiled artifacts for this target.</p>
|
||
<p>The recommended way to build binaries is by using the
|
||
<a href="https://github.com/rust3ds/cargo-3ds">cargo-3ds</a> tool, which uses <code>build-std</code>
|
||
and provides commands that work like the usual <code>cargo run</code>, <code>cargo build</code>, etc.
|
||
The <code>cargo 3ds new</code> will automatically set up a new project with the dependencies
|
||
needed to build a simple binary.</p>
|
||
<p>You can also build Rust with the target enabled (see
|
||
<a href="#building-the-target">Building the target</a> above).</p>
|
||
<p>As mentioned in <a href="#requirements">Requirements</a>, programs that use <code>std</code> must link
|
||
against both the devkitARM toolchain and libraries providing the <code>libc</code> APIs used
|
||
in <code>std</code>. There is a general-purpose utility crate for working with nonstandard
|
||
APIs provided by the OS: <a href="https://github.com/rust3ds/ctru-rs"><code>ctru-rs</code></a>.
|
||
Add it to Cargo.toml to use it in your program:</p>
|
||
<pre><code><span>[dependencies]</span>
|
||
<span>ctru-rs</span> = { git = <span>"https://github.com/rust3ds/ctru-rs.git"</span> }
|
||
</code></pre>
|
||
<p>Depending on <code>ctru-rs</code> ensures that all the necessary symbols are available at
|
||
link time.</p>
|
||
<h2 id="testing"><a href="#testing">Testing</a></h2>
|
||
<p>Binaries built for this target can be run in an emulator (most commonly
|
||
<a href="https://citra-emu.org/">Citra</a>), or sent to a device through
|
||
the use of a tool like devkitARM’s <code>3dslink</code>. They may also simply be copied
|
||
to an SD card to be inserted in the device.</p>
|
||
<p>The <code>cargo-3ds</code> tool mentioned in <a href="#building-rust-programs">Building Rust programs</a>
|
||
supports the use of <code>3dslink</code> with <code>cargo 3ds run</code>. The default Rust test runner
|
||
is not supported, but
|
||
<a href="https://doc.rust-lang.org/unstable-book/language-features/custom-test-frameworks.html">custom test frameworks</a>
|
||
can be used with <code>cargo 3ds test</code> to run unit tests on a device.</p>
|
||
<p>The Rust test suite for <code>library/std</code> is not yet supported.</p>
|
||
<h2 id="cross-compilation-toolchains-and-c-code"><a href="#cross-compilation-toolchains-and-c-code">Cross-compilation toolchains and C code</a></h2>
|
||
<p>C code can be built for this target using the
|
||
<a href="https://devkitpro.org/wiki/Getting_Started">devkitARM toolchain</a>.
|
||
This toolchain provides <code>arm-none-eabi-gcc</code> as the linker used to link Rust
|
||
programs as well.</p>
|
||
<p>The toolchain also provides a <code>libc</code> implementation, which is required by <code>std</code>
|
||
for many of its APIs, and a helper library <code>libctru</code> which is used by several
|
||
of the helper crates listed in <a href="#requirements">Requirements</a>.
|
||
This toolchain does not, however, include all of the APIs expected by <code>std</code>,
|
||
and the remaining APIs are implemented by <code>pthread-3ds</code> and <code>linker-fix-3ds</code>.</p>
|
||
|
||
</main>
|
||
|
||
<nav aria-label="Page navigation">
|
||
|
||
<a rel="prev" href="https://doc.rust-lang.org/rustc/platform-support/armv7-unknown-linux-uclibceabihf.html" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||
<span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"></path></svg></span>
|
||
</a>
|
||
|
||
<a rel="next prefetch" href="https://doc.rust-lang.org/rustc/platform-support/armv7-rtems-eabihf.html" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||
<span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"></path></svg></span>
|
||
</a>
|
||
|
||
|
||
</nav>
|
||
</div>
|
||
|
||
<nav aria-label="Page navigation">
|
||
<a rel="prev" href="https://doc.rust-lang.org/rustc/platform-support/armv7-unknown-linux-uclibceabihf.html" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
|
||
<span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"></path></svg></span>
|
||
</a>
|
||
|
||
<a rel="next prefetch" href="https://doc.rust-lang.org/rustc/platform-support/armv7-rtems-eabihf.html" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
|
||
<span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"></path></svg></span>
|
||
</a>
|
||
</nav>
|
||
|
||
</div>
|
||
|
||
<template id="fa-eye"><span class="fa-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path d="M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM432 256c0 79.5-64.5 144-144 144s-144-64.5-144-144s64.5-144 144-144s144 64.5 144 144zM288 192c0 35.3-28.7 64-64 64c-11.5 0-22.3-3-31.6-8.4c-.2 2.8-.4 5.5-.4 8.4c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6z"></path></svg></span></template>
|
||
<template id="fa-eye-slash"><span class="fa-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c5.2-11.8 8-24.8 8-38.5c0-53-43-96-96-96c-2.8 0-5.6 .1-8.4 .4c5.3 9.3 8.4 20.1 8.4 31.6c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zm223.1 298L373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5z"></path></svg></span></template>
|
||
<template id="fa-copy"><span class="fa-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M502.6 70.63l-61.25-61.25C435.4 3.371 427.2 0 418.7 0H255.1c-35.35 0-64 28.66-64 64l.0195 256C192 355.4 220.7 384 256 384h192c35.2 0 64-28.8 64-64V93.25C512 84.77 508.6 76.63 502.6 70.63zM464 320c0 8.836-7.164 16-16 16H255.1c-8.838 0-16-7.164-16-16L239.1 64.13c0-8.836 7.164-16 16-16h128L384 96c0 17.67 14.33 32 32 32h47.1V320zM272 448c0 8.836-7.164 16-16 16H63.1c-8.838 0-16-7.164-16-16L47.98 192.1c0-8.836 7.164-16 16-16H160V128H63.99c-35.35 0-64 28.65-64 64l.0098 256C.002 483.3 28.66 512 64 512h192c35.2 0 64-28.8 64-64v-32h-47.1L272 448z"></path></svg></span></template>
|
||
<template id="fa-play"><span class="fa-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path d="M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80V432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"></path></svg></span></template>
|
||
<template id="fa-clock-rotate-left"><span class="fa-svg"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M75 75L41 41C25.9 25.9 0 36.6 0 57.9V168c0 13.3 10.7 24 24 24H134.1c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24V256c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65V152c0-13.3-10.7-24-24-24z"></path></svg></span></template>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div> |