//@ add-core-stubs //@ revisions: arm-mode thumb-mode //@ [arm-mode] compile-flags: --target armv5te-none-eabi //@ [thumb-mode] compile-flags: --target thumbv5te-none-eabi //@ [arm-mode] needs-llvm-components: arm //@ [thumb-mode] needs-llvm-components: arm #![crate_type = "lib"] #![feature(no_core, lang_items, rustc_attrs)] #![no_core] extern crate minicore; use minicore::*; // arm-mode: .arm // thumb-mode: .thumb // CHECK-LABEL: test_unspecified: // CHECK: bx lr // CHECK: .popsection // arm-mode: .arm // thumb-mode: .thumb #[no_mangle] #[unsafe(naked)] extern "C" fn test_unspecified() { naked_asm!("bx lr"); } // CHECK: .thumb // CHECK: .thumb_func // CHECK-LABEL: test_thumb: // CHECK: bx lr // CHECK: .popsection // arm-mode: .arm // thumb-mode: .thumb #[no_mangle] #[unsafe(naked)] #[instruction_set(arm::t32)] extern "C" fn test_thumb() { naked_asm!("bx lr"); } // CHECK: .arm // CHECK-LABEL: test_arm: // CHECK: bx lr // CHECK: .popsection // arm-mode: .arm // thumb-mode: .thumb #[no_mangle] #[unsafe(naked)] #[instruction_set(arm::a32)] extern "C" fn test_arm() { naked_asm!("bx lr"); }