Files
garden/KaraKeep/attachments/bcbfe09f-691f-4f9d-a343-ee531061a0c3-armv6k-nintendo-3ds-The-rustc.jpg
Lauren Kaviak 27ad6989ac
All checks were successful
Deploy Quartz site to Pages / build (push) Successful in 31s
add karakeep sync
2026-04-11 22:51:19 -05:00

182 lines
40 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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 devkitARMs <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>