# This testcase is part of GDB, the GNU debugger.

# Copyright 1997-2013 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/>.  */

# long_long.exp   Test printing of 64-bit things in 32-bit gdb.
#                 Also test differnet kinds of formats.
#
if [target_info exists no_long_long] {
    return 0
}

standard_testfile .c

# What compiler are we using?
#
if [get_compiler_info] {
    return -1
}

if {$hp_cc_compiler} {
    set flag "+e"
} else {
    set flag ""
}

if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [concat debug additional_flags=$flag nowarnings]] != "" } {
     untested long_long.exp
     return -1
}

# use this to debug:
#log_user 1

clean_restart ${binfile}

if { ![runto known_types] } then { 
   fail "run to known_types" 
   return 
}

# Detect the size of the target's basic types.

set sizeof_char [get_sizeof "char" 1]
set sizeof_short [get_sizeof "short" 2]
set sizeof_int [get_sizeof "int" 4]
set sizeof_long [get_sizeof "long" 4]
set sizeof_long_long [get_sizeof "long long" 8]
set sizeof_data_ptr [get_sizeof "void *" 4]
set sizeof_double [get_sizeof "double" 8]
set sizeof_long_double [get_sizeof "long double" 8]

# Tests to handle ISA/ABI variants

proc pat2 { n pats } {
    set i 0
    while { $n > 1 } {
	set n [expr $n / 2]
	incr i
    }
    return [lindex $pats $i]
}

proc gdb_test_xxx { test pat name } {
    if { $pat == "" } {
	setup_kfail gdb/1672 *-*-*
	gdb_test $test "xxx" $name
    } else {
	gdb_test $test $pat $name
    }
}

proc gdb_test_ptr { test args } {
    global sizeof_data_ptr

    gdb_test_xxx $test [pat2 $sizeof_data_ptr $args] $test
}

proc gdb_test_xptr { examine args } {
    global sizeof_data_ptr
    set x [pat2 $sizeof_data_ptr $args]
    # X is of the form { VARIABLE PATTERN }
    gdb_test_xxx "$examine [lindex $x 0]" [lindex $x 1] "$examine"
}

proc gdb_test_char { test args } {
    global sizeof_char
    gdb_test_xxx $test [pat2 $sizeof_char $args] $test
}

proc gdb_test_short { test args } {
    global sizeof_short
    gdb_test_xxx $test [pat2 $sizeof_short $args] $test
}

proc gdb_test_int { test args } {
    global sizeof_int
    gdb_test_xxx $test [pat2 $sizeof_int $args] $test
}

proc gdb_test_long { test args } {
    global sizeof_long
    gdb_test_xxx $test [pat2 $sizeof_long $args] $test
}

proc gdb_test_long_long { test args } {
    global sizeof_long_long
    gdb_test_xxx $test [pat2 $sizeof_long_long $args] $test
}

gdb_breakpoint [gdb_get_line_number "Stop here and look"]
gdb_continue_to_breakpoint "Stop here and look"

# Check the hack for long long prints.
#
gdb_test "p/x val.hex" "0x0*0" "hex print p/x"
gdb_test "p/x val.dec" "0xab54a98ceb1f0ad2" "decimal print p/x"
# see if 'p/<code>' is handled same as 'p /<code>'
#
gdb_test "p /x val.dec" "0xab54a98ceb1f0ad2" "default print val.dec"
gdb_test "p /x val.bin" "0x123456789abcdef" "default print val.bin"
gdb_test "p /x val.oct" "0xa72ee53977053977" "default print val.oct"
gdb_test "p val.hex" "= 0" "default print hex"

gdb_test "p/u val.dec" "12345678901234567890" "decimal print p/u"
gdb_test "p/t val.bin" "100100011010001010110011110001001101010111100110111101111" "binary print"
gdb_test "p/o val.oct" "01234567123456701234567" "octal print"
gdb_test "p /d val.bin" "81985529216486895" "print +ve long long"
gdb_test "p/d val.dec" "-6101065172474983726" "decimal print p/d"

# Try all the combinations to bump up coverage.
#
gdb_test "p/d val.oct" "-6399925985474168457"
gdb_test "p/u val.oct" "12046818088235383159"
gdb_test "p/o val.oct" ".*"
gdb_test "p/t val.oct" "1010011100101110111001010011100101110111000001010011100101110111"
gdb_test_ptr "p/a val.oct" "" "" "0x77053977" "0xa72ee53977053977"
gdb_test "p/c val.oct" "'w'"

if { $sizeof_double == 8 || $sizeof_long_double == 8 } {
    # ARM FPA floating point numbers are not strictly little endian or big
    # endian, but a hybrid.  They are in little endian format with the two
    # words swapped in big endian format.
    # EABI targets default to natural-endian VFP format.

    if { ([istarget "arm*-*-*"]) \
	 && !([istarget "*-*-*eabi*"] || \
	      [istarget "*-*-mingw32ce*"] || \
	      [istarget "*-*-openbsd*"] || \
	      [istarget "*-*-symbianelf"]) } then {
	# assume the long long represents a floating point double in ARM format
	gdb_test "p/f val.oct" "2.1386676354387559e\\+265"
    } else {
	# assume the long long represents a floating point double in little
	# endian format
	gdb_test "p/f val.oct" "-5.9822653797615723e-120"
    }
} else {
    gdb_test "p/f val.oct" "-2.42716126e-15"
}

gdb_test_char "p/x *(char *)c" "0x1"
gdb_test_char "p/d *(char *)c" "1"
gdb_test_char "p/u *(char *)c" "1"
gdb_test_char "p/o *(char *)c" "01"
gdb_test_char "p/t *(char *)c" "1"
gdb_test_char "p/a *(char *)c" "0x1( <.*>)?"
gdb_test_char "p/f *(char *)c" "1"
gdb_test_char "p/c *(char *)c" "1 '.001'"

gdb_test_short "p/x *(short *)s" "" "0x123" ""
gdb_test_short "p/d *(short *)s" "" "291" ""
gdb_test_short "p/u *(short *)s" "" "291" ""
gdb_test_short "p/o *(short *)s" "" "0443" ""
gdb_test_short "p/t *(short *)s" "" "100100011" ""
gdb_test_short "p/a *(short *)s" "" "0x123( <.*>)?" ""
gdb_test_short "p/f *(short *)s" "" "291" ""
gdb_test_short "p/c *(short *)s" "" "35 '.'" ""

gdb_test_int "p/x *(int *)i" "" "0x123" "0x1234567" ""
gdb_test_int "p/d *(int *)i" "" "291" "19088743" ""
gdb_test_int "p/u *(int *)i" "" "291" "19088743" ""
gdb_test_int "p/o *(int *)i" "" "0443" "0110642547" ""
gdb_test_int "p/t *(int *)i" "" "100100011" "1001000110100010101100111" ""
gdb_test_int "p/a *(int *)i" "" "" "0x1234567" ""
gdb_test_int "p/f *(int *)i" "" "291" "2.99881655e-0?38" ""
gdb_test_int "p/c *(int *)i" "" "35 '.'" "103 'g'" ""

gdb_test_long "p/x *(long *)l" "" "0x123" "0x1234567" "0x123456789abcdef"
gdb_test_long "p/d *(long *)l" "" "291" "19088743" "81985529216486895"
gdb_test_long "p/u *(long *)l" "" "291" "19088743" "81985529216486895"
gdb_test_long "p/o *(long *)l" "" "0443" "0110642547" "04432126361152746757"
gdb_test_long "p/t *(long *)l" "" "100100011" "1001000110100010101100111" "100100011010001010110011110001001101010111100110111101111"
gdb_test_ptr "p/a *(long *)l" "" "" "0x1234567" "0x123456789abcdef"
gdb_test_long "p/f *(long *)l" "" "291" "2.99881655e-0?38" "3.5127005640885037e-303"
gdb_test_long "p/c *(long *)l" "" "35 '.'" "103 'g'" "-17 '.*'"

gdb_test_long_long "p/x *(long long *)ll" "" "" "" "0x123456789abcdef"
gdb_test_long_long "p/d *(long long *)ll" "" "" "" "81985529216486895"
gdb_test_long_long "p/u *(long long *)ll" "" "" "" "81985529216486895"
gdb_test_long_long "p/o *(long long *)ll" "" "" "" "04432126361152746757"
gdb_test_long_long "p/t *(long long *)ll" "" "" "" "100100011010001010110011110001001101010111100110111101111"
gdb_test_ptr "p/a *(long long *)ll" "" "" "0x89abcdef" "0x123456789abcdef"
gdb_test_long_long "p/f *(long long *)ll" "" "" "" "3.5127005640885037e-303"
gdb_test_long_long "p/c *(long long *)ll" "" "" "" "-17 '.*'"

# Implict Word size (except for a, c, and f)

gdb_test "x/w w" ".*" "set examine size to w"
gdb_test "x/x w" "0x01234567"
gdb_test "x/d w" "19088743"
gdb_test "x/u w" "19088743"
gdb_test "x/o w" "0110642547"
gdb_test "x/t w" "00000001001000110100010101100111"
gdb_test_xptr "x/a" { b "" } { h "" } { w "0x1234567" } { g "0x123456789abcdef" }
gdb_test "x/c b" "1 '.001'"
if { $sizeof_double == 8 || $sizeof_long_double == 8 } {
    gdb_test "x/f &val.oct" "-5.9822653797615723e-120"
} else {
    gdb_test "x/f &val.oct" "-2.42716126e-15"
}

# Implict Giant size (except for a, c, and f)

gdb_test "x/g g" ".*" "set examine size to g"
gdb_test "x/2x g" "0x0123456789abcdef.*0xa72ee53977053977"
gdb_test "x/2d g" "81985529216486895.*-6399925985474168457"
gdb_test "x/2u g" "81985529216486895.*12046818088235383159"
gdb_test "x/2o g" "04432126361152746757.*01234567123456701234567"
gdb_test "x/2t g" "0000000100100011010001010110011110001001101010111100110111101111.*1010011100101110111001010011100101110111000001010011100101110111"
gdb_test_xptr "x/2a" { b "" } { h "" } { w "0x1234567.*0xa72ee539" } { g "0x123456789abcdef.*0xa72ee53977053977" }
gdb_test "x/2c b" "1 '.001'.*-89 '.\[0-9\]*'"
if { $sizeof_double == 8 || $sizeof_long_double == 8 } {
    gdb_test "x/2f &val.oct" "-5.9822653797615723e-120.*-5.9041889495880968e-100"
} else {
    gdb_test "x/2f &val.oct" "-2.42716126e-15"
}

# Explicit sizes, and two memory locations ...

gdb_test "x/2bx b" "0x01.*0xa7"
gdb_test "x/2bd b" "1.*-89"
gdb_test "x/2bu b" "1.*167"
gdb_test "x/2bo b" "01.*0247"
gdb_test "x/2bt b" "00000001.*10100111"
gdb_test_ptr "x/2ba b" "" "" "0x1.*0xffffffa7" "0x1.*0xffffffffffffffa7"
gdb_test "x/2bc b" "1 '.001'.*-89 '.\[0-9\]*'"
gdb_test "x/2bf b" "1.*-89"

gdb_test "x/2hx h" "0x0123.*0xa72e"
gdb_test "x/2hd h" "291.*-22738"
gdb_test "x/2hu h" "291.*42798"
gdb_test "x/2ho h" "0443.*0123456"
gdb_test "x/2ht h" "0000000100100011.*1010011100101110"
gdb_test_ptr "x/2ha h" "" ""  "0x123.*0xffffa72e" "0x123.*0xffffffffffffa72e"
gdb_test "x/2hc h" "35 '.'.*46 '.'"
gdb_test "x/2hf h" "291.*-22738"

gdb_test "x/2wx w" "0x01234567.*0xa72ee539"
gdb_test "x/2wd w" "19088743.*-1490098887"
gdb_test "x/2wu w" "19088743.*2804868409"
gdb_test "x/2wo w" "0110642547.*024713562471"
gdb_test "x/2wt w" "00000001001000110100010101100111.*10100111001011101110010100111001"
gdb_test_ptr "x/2wa w" "" ""  "0x1234567.*0xa72ee539" "0x1234567.*0xffffffffa72ee539"
gdb_test "x/2wc w" "103 'g'.*57 '9'"
gdb_test "x/2wf w" "2.99881655e-0?38.*-2.42716126e-0?15"

gdb_test "x/2gx g" "0x0123456789abcdef.*0xa72ee53977053977"
gdb_test "x/2gd g" "81985529216486895.*-6399925985474168457"
gdb_test "x/2gu g" "81985529216486895.*12046818088235383159"
gdb_test "x/2go g" "04432126361152746757.*01234567123456701234567"
gdb_test "x/2gt g" "0000000100100011010001010110011110001001101010111100110111101111.*1010011100101110111001010011100101110111000001010011100101110111"
gdb_test_ptr "x/2ga g" "" "" "0x89abcdef.*0x77053977" "0x123456789abcdef.*0xa72ee53977053977"
gdb_test "x/2gc g" "-17 '.\[0-9\]*'.*119 'w'"
gdb_test "x/2gf g" "3.5127005640885037e-303.*-5.9822653797615723e-120"

gdb_exit
return 0
