mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 15:41:46 +00:00
0c66606230
LLVM assumes that when it creates a call to a C library function it can use the C calling convention. On ARM the effective calling convention is determined from the target triple, however using -mfloat-abi=hard on ARM means that calls to (and definitions of) C library functions use the arm_aapcs_vfpcc calling convention which can result in a mismatch. Fix this by incorporating -mfloat-abi into the target triple, similar to how -mbig-endian and -march/-mcpu are. This only works for EABI targets and not Android or iOS, but there the float abi is fixed so instead give an error. Fixes PR45524 Differential Revision: https://reviews.llvm.org/D89573
49 lines
2.1 KiB
C
49 lines
2.1 KiB
C
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabi \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-DEFAULT
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=armeb-none-eabi -mlittle-endian \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-DEFAULT
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabihf -march=armv4t -mfloat-abi=softfp \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-DEFAULT
|
|
// CHECK-DEFAULT: armv4t-none-unknown-eabi
|
|
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=armeb-none-eabi \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-EB
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabi -mbig-endian \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-EB
|
|
// CHECK-EB: armebv4t-none-unknown-eabi
|
|
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabihf -march=armv4t \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-HF
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabi -mfloat-abi=hard \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-HF
|
|
// CHECK-HF: armv4t-none-unknown-eabihf
|
|
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=armeb-none-eabihf -march=armv4t \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-EB-HF
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=armeb-none-eabi -mfloat-abi=hard \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-EB-HF
|
|
// RUN: %clang -print-effective-triple -march=armv4t \
|
|
// RUN: --target=arm-none-eabihf -mbig-endian \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-EB-HF
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabi -mbig-endian -mfloat-abi=hard \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-EB-HF
|
|
// CHECK-EB-HF: armebv4t-none-unknown-eabihf
|
|
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabi -march=armv8m.main -mbig-endian -mfloat-abi=hard \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-V8M-EB-HF
|
|
// RUN: %clang -print-effective-triple \
|
|
// RUN: --target=arm-none-eabi -mcpu=cortex-m33 -mbig-endian -mfloat-abi=hard \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-V8M-EB-HF
|
|
// CHECK-V8M-EB-HF: thumbebv8m.main-none-unknown-eabihf
|