
libmudflap-init c++

dg-init

global srcdir subdir

foreach flags [list {} {-static} {-O2} {-O3}] {
    set l1 [libmudflap_target_compile "$srcdir/$subdir/ctors-1.cxx" "ctors-1.o" object {additional_flags=-fmudflap}]
    set test "ctors-1 compilation ${flags}"
    if [string match "*mudflap cannot track unknown size extern *k*" $l1] { pass $test } { fail $test }

    set l2 [libmudflap_target_compile "$srcdir/$subdir/ctors-2.cxx" "ctors-2.o" object {additional_flags=-fmudflap}]
    set test "ctors-2 compilation ${flags}"
    if [string match "" $l2]  { pass $test } { fail $test }

    set l3 [libmudflap_target_compile "ctors-1.o ctors-2.o" "ctors-12.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap additional_flags=-lstdc++}]
    set test "ctors-12 linkage ${flags}"
    if [string match "" $l3]  { pass $test } { fail $test }

    set l4 [libmudflap_target_compile "ctors-2.o ctors-1.o" "ctors-21.exe" executable {additional_flags=-fmudflap additional_flags=-lmudflap additional_flags=-lstdc++}]
    set test "ctors-21 linkage ${flags}"
    if [string match "" $l3]  { pass $test } { fail $test }

    setenv MUDFLAP_OPTIONS "-viol-segv"

    remote_spawn host "./ctors-12.exe"
    set l5 [remote_wait host 10]
    set test "ctors-12 execution ${flags}"
    if {[lindex $l5 0] == 0}  { pass $test } { fail $test }

    remote_spawn host "./ctors-21.exe"
    set l6 [remote_wait host 10]
    set test "ctors-21 execution ${flags}"
    if {[lindex $l6 0] == 0}  { pass $test } { fail $test }

    foreach f [glob -nocomplain "ctors-*"] {
       remote_file build delete $f
    }
}

dg-finish
