1# REQUIRES: mips
2#
3# Check warning and errors in case of input
4# files with incompatible floating point ABI flags.
5
6# RUN: yaml2obj --docnum=1 %s -o %t-dbl.o
7# RUN: yaml2obj --docnum=2 %s -o %t-sgl.o
8# RUN: yaml2obj --docnum=3 %s -o %t-soft.o
9# RUN: yaml2obj --docnum=4 %s -o %t-fp64.o
10# RUN: yaml2obj --docnum=5 %s -o %t-fp64old.o
11# RUN: yaml2obj --docnum=6 %s -o %t-fp64a.o
12# RUN: yaml2obj --docnum=7 %s -o %t-fpxx.o
13
14# RUN: not ld.lld %t-dbl.o %t-fp64.o -shared -o /dev/null 2>&1 \
15# RUN:   | FileCheck -check-prefixes=DBLFP64 %s
16
17# RUN: not ld.lld %t-sgl.o %t-fp64old.o -shared -o /dev/null 2>&1 \
18# RUN:   | FileCheck -check-prefixes=SGLFP64OLD %s
19
20# RUN: not ld.lld %t-soft.o %t-fp64a.o -shared -o /dev/null 2>&1 \
21# RUN:   | FileCheck -check-prefixes=SOFTFP64A %s
22
23# RUN: not ld.lld %t-sgl.o %t-fpxx.o -shared -o /dev/null 2>&1 \
24# RUN:   | FileCheck -check-prefixes=SGLFPXX %s
25
26# DBLFP64: {{.*}}fp64.o: floating point ABI '-mgp32 -mfp64' is incompatible with target floating point ABI '-mdouble-float'
27# SGLFP64OLD: {{.*}}fp64old.o: floating point ABI '-mgp32 -mfp64 (old)' is incompatible with target floating point ABI '-msingle-float'
28# SOFTFP64A: {{.*}}fp64a.o: floating point ABI '-mgp32 -mfp64  -mno-odd-spreg' is incompatible with target floating point ABI '-msoft-float'
29# SGLFPXX: {{.*}}fpxx.o: floating point ABI '-mfpxx' is incompatible with target floating point ABI '-msingle-float'
30
31# dbl.o
32--- !ELF
33FileHeader:
34  Class:    ELFCLASS64
35  Data:     ELFDATA2MSB
36  Type:     ET_REL
37  Machine:  EM_MIPS
38  Flags:    [ EF_MIPS_ARCH_64 ]
39
40Sections:
41- Name: .MIPS.abiflags
42  Type: SHT_MIPS_ABIFLAGS
43  ISA:          MIPS64
44  ASEs:         []
45  FpABI:        FP_DOUBLE
46  GPRSize:      REG_64
47  CPR1Size:     REG_64
48  CPR2Size:     REG_NONE
49
50# sgl.o
51--- !ELF
52FileHeader:
53  Class:    ELFCLASS64
54  Data:     ELFDATA2MSB
55  Type:     ET_REL
56  Machine:  EM_MIPS
57  Flags:    [ EF_MIPS_ARCH_64 ]
58
59Sections:
60- Name: .MIPS.abiflags
61  Type: SHT_MIPS_ABIFLAGS
62  ISA:          MIPS64
63  ASEs:         []
64  FpABI:        FP_SINGLE
65  GPRSize:      REG_64
66  CPR1Size:     REG_64
67  CPR2Size:     REG_NONE
68
69# soft.o
70--- !ELF
71FileHeader:
72  Class:    ELFCLASS64
73  Data:     ELFDATA2MSB
74  Type:     ET_REL
75  Machine:  EM_MIPS
76  Flags:    [ EF_MIPS_ARCH_64 ]
77
78Sections:
79- Name: .MIPS.abiflags
80  Type: SHT_MIPS_ABIFLAGS
81  ISA:          MIPS64
82  ASEs:         []
83  FpABI:        FP_SOFT
84  GPRSize:      REG_64
85  CPR1Size:     REG_64
86  CPR2Size:     REG_NONE
87
88# fp64.o
89--- !ELF
90FileHeader:
91  Class:    ELFCLASS64
92  Data:     ELFDATA2MSB
93  Type:     ET_REL
94  Machine:  EM_MIPS
95  Flags:    [ EF_MIPS_ARCH_64 ]
96
97Sections:
98- Name: .MIPS.abiflags
99  Type: SHT_MIPS_ABIFLAGS
100  ISA:          MIPS64
101  ASEs:         []
102  FpABI:        FP_64
103  GPRSize:      REG_64
104  CPR1Size:     REG_64
105  CPR2Size:     REG_NONE
106
107# fp64old.o
108--- !ELF
109FileHeader:
110  Class:    ELFCLASS64
111  Data:     ELFDATA2MSB
112  Type:     ET_REL
113  Machine:  EM_MIPS
114  Flags:    [ EF_MIPS_ARCH_64 ]
115
116Sections:
117- Name: .MIPS.abiflags
118  Type: SHT_MIPS_ABIFLAGS
119  ISA:          MIPS64
120  ASEs:         []
121  FpABI:        FP_OLD_64
122  GPRSize:      REG_64
123  CPR1Size:     REG_64
124  CPR2Size:     REG_NONE
125
126# fp64a.o
127--- !ELF
128FileHeader:
129  Class:    ELFCLASS64
130  Data:     ELFDATA2MSB
131  Type:     ET_REL
132  Machine:  EM_MIPS
133  Flags:    [ EF_MIPS_ARCH_64 ]
134
135Sections:
136- Name: .MIPS.abiflags
137  Type: SHT_MIPS_ABIFLAGS
138  ISA:          MIPS64
139  ASEs:         []
140  FpABI:        FP_64A
141  GPRSize:      REG_64
142  CPR1Size:     REG_64
143  CPR2Size:     REG_NONE
144
145# fpxx.o
146--- !ELF
147FileHeader:
148  Class:    ELFCLASS64
149  Data:     ELFDATA2MSB
150  Type:     ET_REL
151  Machine:  EM_MIPS
152  Flags:    [ EF_MIPS_ARCH_64 ]
153
154Sections:
155- Name: .MIPS.abiflags
156  Type: SHT_MIPS_ABIFLAGS
157  ISA:          MIPS64
158  ASEs:         []
159  FpABI:        FP_XX
160  GPRSize:      REG_64
161  CPR1Size:     REG_64
162  CPR2Size:     REG_NONE
163