xref: /aosp_15_r20/external/clang/test/Driver/arm-abi.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // The default ABI is aapcs
2*67e74705SXin Li // RUN: %clang -target arm--- %s -### -o %t.o 2>&1 \
3*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
4*67e74705SXin Li // RUN: %clang -target armeb--- %s -### -o %t.o 2>&1 \
5*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
6*67e74705SXin Li // RUN: %clang -target thumb--- %s -### -o %t.o 2>&1 \
7*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
8*67e74705SXin Li // RUN: %clang -target thumbeb--- %s -### -o %t.o 2>&1 \
9*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
10*67e74705SXin Li 
11*67e74705SXin Li // MachO targets default to apcs-gnu, except for m-class processors
12*67e74705SXin Li // RUN: %clang -target arm--darwin- -arch armv7s %s -### -o %t.o 2>&1 \
13*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-APCS-GNU %s
14*67e74705SXin Li // RUN: %clang -target thumb--darwin- -arch armv7s %s -### -o %t.o 2>&1 \
15*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-APCS-GNU %s
16*67e74705SXin Li // RUN: %clang -target thumb--darwin- -arch armv7m %s -### -o %t.o 2>&1 \
17*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
18*67e74705SXin Li 
19*67e74705SXin Li // Windows targets default to AAPCS, regardless of environment
20*67e74705SXin Li // RUN: %clang -target arm--windows-gnueabi %s -### -o %t.o 2>&1 \
21*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
22*67e74705SXin Li 
23*67e74705SXin Li // NetBSD defaults to apcs-gnu, but can also use aapcs
24*67e74705SXin Li // RUN: %clang -target arm--netbsd- %s -### -o %t.o 2>&1 \
25*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-APCS-GNU %s
26*67e74705SXin Li // RUN: %clang -target arm--netbsd-eabi %s -### -o %t.o 2>&1 \
27*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
28*67e74705SXin Li // RUN: %clang -target arm--netbsd-eabihf %s -### -o %t.o 2>&1 \
29*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
30*67e74705SXin Li 
31*67e74705SXin Li // Otherwise, ABI is selected based on environment
32*67e74705SXin Li // RUN: %clang -target arm---android %s -### -o %t.o 2>&1 \
33*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
34*67e74705SXin Li // RUN: %clang -target arm---gnueabi %s -### -o %t.o 2>&1 \
35*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
36*67e74705SXin Li // RUN: %clang -target arm---gnueabihf %s -### -o %t.o 2>&1 \
37*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
38*67e74705SXin Li // RUN: %clang -target arm---musleabi %s -### -o %t.o 2>&1 \
39*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
40*67e74705SXin Li // RUN: %clang -target arm---musleabihf %s -### -o %t.o 2>&1 \
41*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
42*67e74705SXin Li // RUN: %clang -target arm---eabi %s -### -o %t.o 2>&1 \
43*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
44*67e74705SXin Li // RUN: %clang -target arm---eabihf %s -### -o %t.o 2>&1 \
45*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
46*67e74705SXin Li 
47*67e74705SXin Li // ABI can be overridden by the -mabi= option
48*67e74705SXin Li // RUN: %clang -target arm---eabi -mabi=apcs-gnu %s -### -o %t.o 2>&1 \
49*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-APCS-GNU %s
50*67e74705SXin Li // RUN: %clang -target arm---gnueabi -mabi=aapcs %s -### -o %t.o 2>&1 \
51*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS %s
52*67e74705SXin Li // RUN: %clang -target arm---eabi -mabi=aapcs-linux %s -### -o %t.o 2>&1 \
53*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
54*67e74705SXin Li 
55*67e74705SXin Li // CHECK-APCS-GNU: "-target-abi" "apcs-gnu"
56*67e74705SXin Li // CHECK-AAPCS: "-target-abi" "aapcs"
57*67e74705SXin Li // CHECK-AAPCS-LINUX: "-target-abi" "aapcs-linux"
58