Commit | Line | Data |
---|---|---|
6f2750fe | 1 | # Copyright (C) 2012-2016 Free Software Foundation, Inc. |
5bf135a7 NC |
2 | |
3 | # This program is free software; you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation; either version 3 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program; if not, write to the Free Software | |
15 | # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. | |
16 | ||
3251495b | 17 | if { ![is_elf_format] && ![is_pecoff_format] } then { |
d04428bd AM |
18 | return |
19 | } | |
fa87b337 | 20 | |
b6460688 L |
21 | proc gas_x86_64_check { } { |
22 | global NM | |
23 | global NMFLAGS | |
2ebaa23b | 24 | |
b6460688 L |
25 | set status [gas_host_run "$NM $NMFLAGS --help" ""] |
26 | return [regexp "targets:.*x86-64" [lindex $status 1]]; | |
27 | } | |
28 | ||
29 | proc gas_x86_32_check { } { | |
30 | global NM | |
31 | global NMFLAGS | |
32 | ||
33 | set status [gas_host_run "$NM $NMFLAGS --help" ""] | |
34 | return [regexp "targets:.*i386" [lindex $status 1]]; | |
35 | } | |
36 | ||
37 | if { [istarget "i*86-*-*"] || [istarget "x86_64-*-*"] } then { | |
38 | ||
39 | global ASFLAGS | |
40 | set old_ASFLAGS "$ASFLAGS" | |
41 | ||
42 | if { [gas_x86_64_check] } then { | |
43 | set ASFLAGS "$ASFLAGS --64" | |
44 | run_dump_test "cfi-x86_64" | |
45 | set ASFLAGS "$old_ASFLAGS" | |
46 | } | |
47 | ||
48 | if { [gas_x86_32_check] } then { | |
49 | set ASFLAGS "$ASFLAGS --32" | |
50 | run_dump_test "cfi-i386" | |
51 | set ASFLAGS "$old_ASFLAGS" | |
52 | } | |
f37f01cf | 53 | |
69602580 JB |
54 | if { [is_elf_format] } then { |
55 | run_dump_test "cfi-label" | |
56 | } | |
57 | ||
3251495b RH |
58 | if { [is_pecoff_format] } then { |
59 | run_dump_test "reloc-pe-i386" | |
60 | } | |
61 | ||
d04428bd AM |
62 | } elseif { [istarget alpha*-*-*] } then { |
63 | run_dump_test "cfi-alpha-1" | |
64 | run_dump_test "cfi-alpha-2" | |
65 | run_dump_test "cfi-alpha-3" | |
f37f01cf | 66 | |
ab1f5dd1 | 67 | } elseif { [istarget powerpc*-*-*] } then { |
75e21f08 JJ |
68 | run_dump_test "cfi-ppc-1" |
69 | ||
70 | } elseif { [istarget s390*-*-*] } then { | |
71 | run_dump_test "cfi-s390-1" | |
72 | if { [istarget s390x*-*-*] } then { | |
73 | run_dump_test "cfi-s390x-1" | |
74 | } | |
75 | ||
b3066ae8 | 76 | } elseif { [istarget "m68*-*"] && ![istarget "m68hc1*-*"] } then { |
c04898f8 AS |
77 | run_dump_test "cfi-m68k" |
78 | ||
364b6d8b JJ |
79 | } elseif { [istarget sparc*-*-*] } then { |
80 | global NM | |
81 | global NMFLAGS | |
364b6d8b | 82 | |
7f6a71ff | 83 | set nm_status [gas_host_run "$NM $NMFLAGS --help" ""] |
364b6d8b | 84 | run_dump_test "cfi-sparc-1" |
7f6a71ff | 85 | if { [regexp "elf64\[_-\]sparc" [lindex $nm_status 1]] } then { |
364b6d8b JJ |
86 | run_dump_test "cfi-sparc64-1" |
87 | } | |
2ce4cc60 KK |
88 | |
89 | } elseif [istarget "sh*-*"] then { | |
90 | if { [istarget sh64*-*-*] || [istarget sh5*-*-*] } then { | |
91 | } else { | |
92 | run_dump_test "cfi-sh-1" | |
93 | } | |
726c18e1 CZ |
94 | } elseif { [istarget "arc*-*-*"] } then { |
95 | run_dump_test "cfi-arc-1" | |
8c5fc800 | 96 | } elseif { [istarget "arm*-*"] } then { |
87c119b0 NC |
97 | # Only ELF based ARM targets support CFI. |
98 | if { [is_pecoff_format] } then { | |
99 | return | |
100 | } | |
a394c00f NC |
101 | run_dump_test "cfi-arm-1" |
102 | ||
5862107c EC |
103 | } elseif { [istarget "mips*-*"] } then { |
104 | run_dump_test "cfi-mips-1" | |
406601a1 RC |
105 | } elseif { [istarget "hppa*-linux*"] } then { |
106 | run_dump_test "cfi-hppa-1" | |
d04428bd AM |
107 | } else { |
108 | return | |
f37f01cf | 109 | } |
fa87b337 | 110 | |
d04428bd | 111 | run_list_test "cfi-diag-1" "" |
f3a503f6 | 112 | |
aa8d5e45 RH |
113 | # HPPA64 uses 64-bit relocations, which results in all of the dump |
114 | # offset numbers not matching up. | |
115 | if { ![istarget "hppa64*-*"] } then { | |
116 | run_dump_test "cfi-common-1" | |
117 | run_dump_test "cfi-common-2" | |
118 | run_dump_test "cfi-common-3" | |
119 | run_dump_test "cfi-common-4" | |
3251495b RH |
120 | if { ![is_pecoff_format] } then { |
121 | # This test uses .subsection/.previous which are elf-specific. | |
122 | run_dump_test "cfi-common-5" | |
123 | } | |
ab1f5dd1 AM |
124 | # Some targets don't support PC relative cfi directives |
125 | if { ![istarget "mips*-*"] && | |
126 | !([istarget powerpc*-*-*] && [is_pecoff_format]) } then { | |
f3a503f6 | 127 | run_dump_test "cfi-common-6" |
40a41a9a DA |
128 | } |
129 | run_dump_test "cfi-common-7" | |
f3a503f6 | 130 | } |