if ![is_elf_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"
    }

} 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*-*"] || [istarget "xscale*-*"] } then {
    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"
  run_dump_test "cfi-common-5"
}

# MIPS doesn't support PC relative cfi directives.
if { ![istarget "mips*-*"] } then {
    run_dump_test "cfi-common-6"
}
