# Copyright 1992-2020 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# This file was adapted from bitfields.exp by Paul Hilfinger 
# (Hilfinger@gnat.com)

#
# Tests for bit-fields that do not fit in type (unsigned) int, but do fit 
# in type (unsigned) long long.  We perform essentially the same tests as
# in bitfields.c, which considers only bit-fields that are <= 9 bits long.
#


standard_testfile .c

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
    untested "failed to compile"
    return -1
}

set has_signed_bitfields 1

#
# Continue to expected breakpoint at FUNCTION.  Append TAG to make pass/fail 
# messages (to make them unique).  Suppress tests on failure.
#
proc continue_test { function tag } {
    global decimal
    global srcfile

    if [gdb_test "cont" "Break.*$function \\(\\) at .*$srcfile:$decimal.*" "continuing to $function $tag"] {
	gdb_suppress_tests
    }
}

#
# Start next test by running to tester and then to FUNCTION.   Suppresses
# tests on failure.
#
proc start_test { function } {
    delete_breakpoints
    if [gdb_test "break tester" ".*" "break tester prior to $function"] {
	gdb_suppress_tests
    }
    continue_test "tester" "prior to $function"
    if ![gdb_breakpoint $function] {
	gdb_suppress_tests
    }
    continue_test $function "#0"
}
    

#
# Test bitfield locating and uniqueness.
# For each member, set that member to 1 and verify that the member (and only
# that member) is 1, then reset it back to 0.
#

proc bitfield_uniqueness {} {
    global decimal
    global hex
    global gdb_prompt
    global srcfile

    start_test break1
	
    if [gdb_test "print flags" ".*u1 = 0, u2 = 0, u3 = 0, s1 = 1, s2 = 0, s3 = 0.*" "bitfield uniqueness; flags.s1 = 1"] {
	gdb_suppress_tests
    }
    continue_test break1 "#1"
    if [gdb_test "print flags" ".*u1 = 1, u2 = 0, u3 = 0, s1 = 0, s2 = 0, s3 = 0.*" "bitfield uniqueness; flags.u1 = 1"] {
	gdb_suppress_tests
    }
    continue_test break1 "#2"
    if [gdb_test "print flags" ".*u1 = 0, u2 = 0, u3 = 0, s1 = 0, s2 = 1, s3 = 0.*" "bitfield uniqueness; flags.s2 = 1"] {
	gdb_suppress_tests
    }
    continue_test break1 "#3"
    if [gdb_test "print flags" ".*u1 = 0, u2 = 1, u3 = 0, s1 = 0, s2 = 0, s3 = 0.*" "bitfield uniqueness; flags.u2 = 1"] {
	gdb_suppress_tests
    }
    continue_test break1 "#4"
    if [gdb_test "print flags" ".*u1 = 0, u2 = 0, u3 = 0, s1 = 0, s2 = 0, s3 = 1.*" "bitfield uniqueness; flags.s3 = 1"] {
	gdb_suppress_tests
    }
    continue_test break1 "#5"
    if [gdb_test "print flags" ".*u1 = 0, u2 = 0, u3 = 1, s1 = 0, s2 = 0, s3 = 0.*" "bitfield uniqueness; flags.u3 = 1"] {
	gdb_suppress_tests
    }
    gdb_stop_suppressing_tests
}


#
# Test bitfield containment.
# Fill alternating fields with all 1's and verify that none of the bits
# "bleed over" to the other fields.
#

proc bitfield_containment {} {
    global decimal
    global hex
    global gdb_prompt
    global srcfile

    start_test break2

    # If program is compiled with Sun CC, signed fields print out as their
    # actual sizes; if compiled with gcc, they print out as 0xffffffff.
    if [gdb_test "print/x flags" "= {u1 = 0x7fff, u2 = 0x0, u3 = 0xffff, s1 = 0x0, s2 = 0x(1ffffffff|f*), s3 = 0x0}" "bitfield containment; flags.u1, flags.u3, and flags.s3 to all 1s"] {
	gdb_suppress_tests
    }

    continue_test break2 "#1"

    if [gdb_test "print/x flags" "= {u1 = 0x0, u2 = 0x1ffffffff, u3 = 0x0, s1 = 0x(7fff|f*), s2 = 0x0, s3 = 0xf*}" "bitfield containment; flags.u2, flags.s1, flags.s2 to all 1s"] {
	gdb_suppress_tests
    }
    gdb_stop_suppressing_tests
}

# Test unsigned bitfields for unsignedness and range.
# Fill the unsigned fields with the maximum positive value and verify that
# the values are printed correctly.

proc bitfield_unsignedness {} {
    global decimal
    global hex
    global gdb_prompt
    global srcfile

    start_test break3

    if [gdb_test "print flags" ".*u1 = 32767, u2 = 8589934591, u3 = 65535, s1 = 0, s2 = 0, s3 = 0.*" "maximum unsigned bitfield values"] {
	gdb_suppress_tests
    }
    gdb_stop_suppressing_tests
}

#
# Test signed bitfields for signedness and range.
# Fill the signed fields with the maximum positive value, then the maximally
# negative value, then -1, and verify in each case that the values are
# printed correctly.
#

proc bitfield_signedness {} {
    global decimal
    global hex
    global gdb_prompt
    global srcfile
    global has_signed_bitfields

    start_test break4

    if [gdb_test "print flags" "= {.*u1 = 0, u2 = 0, u3 = 0, s1 = 16383, s2 = 4294967295, s3 = 32767.*}" "maximum signed bitfield values"] {
	gdb_suppress_tests
    }

    continue_test break4 "#1"

    # Determine if the target has signed bitfields so we can skip
    # the signed bitfield tests if it doesn't.
    set test "determining signed-ness of bitfields"
    set has_signed_bitfields 0
    gdb_test_multiple "print i" $test {
	-re ".* = -32768.*$gdb_prompt $" {
	    set has_signed_bitfields 1
	    pass "determining signed-ness of bitfields"
	}
	-re ".* = 32768.*$gdb_prompt $" {
	    pass "determining signed-ness of bitfields"
	}
	-re ".*$gdb_prompt $" {
	    fail "determining signed-ness of bitfields"
	    gdb_suppress_tests
	}
    }

    set test "most negative signed bitfield values"
    if $has_signed_bitfields then {
        if [gdb_test "print flags" "u1 = 0, u2 = 0, u3 = 0, s1 = -16384, s2 = -4294967296, s3 = -32768.*" $test ] {
            gdb_suppress_tests
        }
    } else {
	unsupported $test
    }

    continue_test break4 "#2"

    set test "signed bitfields containing -1"
    if $has_signed_bitfields then {
	if [gdb_test "print flags" "u1 = 0, u2 = 0, u3 = 0, s1 = -1, s2 = -1, s3 = -1.*" $test ] {
	    gdb_suppress_tests
	}
    } else {
	unsupported $test
    }

    gdb_stop_suppressing_tests
}


# Test setting of long long bit fields from within GDB.

proc bitfield_set {} {
    global decimal
    global hex
    global gdb_prompt
    global srcfile
    global has_signed_bitfields

    start_test break5

    set big_set_failed 0
    set test "set long long unsigned bitfield"
    gdb_test_multiple "print flags.u2 = 0x100000000" $test {
	-re "warning: Value does not fit.*$gdb_prompt $" {
	    fail "$test"
	    gdb_suppress_tests
	}
	-re "= 4294967296.*$gdb_prompt $" {
	    pass "$test"
	}
    }

    set test "set long long signed bitfield positive"
    gdb_test_multiple "print flags.s2 = 0x80000000" $test {
	-re "warning: Value does not fit.*$gdb_prompt $" {
	    fail "$test"
	    gdb_suppress_tests
	}
	-re "= 2147483648.*$gdb_prompt $" {
	    pass "$test"
	}
    }

    if [gdb_test "print flags" "u1 = 0, u2 = 4294967296, u3 = 0, s1 = 0, s2 = 2147483648, s3 = 0.*" "long long bitfield values after set"] {
	gdb_suppress_tests
    }

    set test "set long long signed bitfield negative"
    if $has_signed_bitfields then {
	gdb_test_multiple "print flags.s2 = -1" $test {
	    -re "warning: Value does not fit.*$gdb_prompt $" {
		fail "$test"
		gdb_suppress_tests
	    }
	    -re "= -1.*$gdb_prompt $" {
		pass "$test"
	    }
	}
    } else {
	unsupported $test
    }

    set test  "long long bitfield values after set negative"
    if $has_signed_bitfields then {
	if [gdb_test "print flags" "u1 = 0, u2 = 4294967296, u3 = 0, s1 = 0, s2 = -1, s3 = 0.*" $test] {
	    gdb_suppress_tests
	}
    } else {
	unsupported $test
    }

    gdb_stop_suppressing_tests
}

clean_restart ${binfile}

gdb_test_no_output "set print sevenbit-strings"
runto_main

bitfield_uniqueness
bitfield_containment
bitfield_unsignedness
bitfield_signedness
bitfield_set

