#
# vtable tests
#
proc run_list_test { name opts } {
    global srcdir subdir
    set testname "vtable $name"
    set file $srcdir/$subdir/$name
    gas_run ${name}.s $opts ">&dump.out"
    if { [regexp_diff "dump.out" "${file}.l"] } then {
	fail $testname
	verbose "output is [file_contents "dump.out"]" 2
	return
    }
    pass $testname
}

# Vtable bits are only supported by ELF targets.
if { (   [istarget "*-*-elf*"] || [istarget "*-*-linux*"])
     && ![istarget *-*-linux*aout*]
     && ![istarget *-*-linux*oldld*] } then {
	 
    # These tests are not (yet) supported on some targets.
    if {   [istarget "ia64-*"]
        || [istarget "hppa*64*-*-*"]
	|| [istarget "i960-*-*"]
	|| [istarget "arc*-*-*"]
	|| [istarget "alpha*-*-*"]
	|| [istarget "d30v-*-*"] } then {
        return
    }

    # not yet supported by ARC
    if {[istarget "arc*-*-*"]} {
      return
    }

    run_dump_test "inherit0" 
    run_list_test "inherit1" "-al"

    # The vtable entry results are different on Rel and Rela targets.
    if {[istarget "i*86-*-*"] 
	|| [istarget "d10v-*-*"] 
	|| [istarget "mips*-*-*"] 
	|| [istarget "strongarm*-*-*"] 
	|| [istarget "xscale*-*-*"] 
	|| [istarget "arm*-*-*"] } then {

	run_dump_test "entry0"

    } else {

	run_dump_test "entry1"

    }
}
