if { ![is_elf_format] && ![is_pecoff_format] } then {
    return
}

proc gas_x86_64_check { } {
    global NM
    global NMFLAGS

    set status [gas_host_run "$NM $NMFLAGS --help" ""]
    return [regexp "targets:.*x86-64" [lindex $status 1]];
}

proc gas_x86_32_check { } {
    global NM
    global NMFLAGS

    set status [gas_host_run "$NM $NMFLAGS --help" ""]
    return [regexp "targets:.*i386" [lindex $status 1]];
}

if  { [istarget "i*86-*-*"] || [istarget "x86_64-*-*"] } then {

    global ASFLAGS
    set old_ASFLAGS "$ASFLAGS"

    if { [gas_x86_64_check] } then {
	set ASFLAGS "$ASFLAGS --64"
	run_dump_test "cfi-x86_64"
	set ASFLAGS "$old_ASFLAGS"
    }

    if { [gas_x86_32_check] }  then {
	set ASFLAGS "$ASFLAGS --32"
	run_dump_test "cfi-i386"
	set ASFLAGS "$old_ASFLAGS"
    }

    if { [is_pecoff_format] } then {
	run_dump_test "reloc-pe-i386"
    }

} elseif { [istarget alpha*-*-*] } then {
    run_dump_test "cfi-alpha-1"
    run_dump_test "cfi-alpha-2"
    run_dump_test "cfi-alpha-3"

} elseif { [istarget ppc*-*-*] || [istarget powerpc*-*-*] } then {
    run_dump_test "cfi-ppc-1"

} elseif { [istarget s390*-*-*] } then {
    run_dump_test "cfi-s390-1"
    if { [istarget s390x*-*-*] } then {
	run_dump_test "cfi-s390x-1"
    }

} elseif { [istarget "m68*-*"] } then {
    run_dump_test "cfi-m68k"

} elseif { [istarget sparc*-*-*] } then {
    global NM
    global NMFLAGS

    set nm_status [gas_host_run "$NM $NMFLAGS --help" ""]
    run_dump_test "cfi-sparc-1"
    if { [regexp "elf64\[_-\]sparc" [lindex $nm_status 1]] } then {
	run_dump_test "cfi-sparc64-1"
    }

} elseif [istarget "sh*-*"] then {
    if { [istarget sh64*-*-*] || [istarget sh5*-*-*] } then {
    } else {
	run_dump_test "cfi-sh-1"
    }

} elseif { [istarget "arm*-*"] } then {
    # Only ELF based ARM targets support CFI.
    if { [is_pecoff_format] } then {
	return
    }
    run_dump_test "cfi-arm-1"

} elseif { [istarget "mips*-*"] } then {
    run_dump_test "cfi-mips-1"
} elseif { [istarget "hppa*-linux*"] } then {
    run_dump_test "cfi-hppa-1"
} else {
    return
}

run_list_test "cfi-diag-1" ""

# HPPA64 uses 64-bit relocations, which results in all of the dump
# offset numbers not matching up.
if { ![istarget "hppa64*-*"] } then {
  run_dump_test "cfi-common-1"
  run_dump_test "cfi-common-2"
  run_dump_test "cfi-common-3"
  run_dump_test "cfi-common-4"
  if { ![is_pecoff_format] } then {
    # This test uses .subsection/.previous which are elf-specific.
    run_dump_test "cfi-common-5"
  }
  # MIPS doesn't support PC relative cfi directives.
  if { ![istarget "mips*-*"] } then {
    run_dump_test "cfi-common-6"
  }
  run_dump_test "cfi-common-7"
}
