# Copyright (C) 2009, 2010 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 is part of the GDB testsuite.  It tests the mechanism
# exposing inferiors to Python.

if $tracelevel then {
    strace $tracelevel
}

# Run a command in GDB, and report a failure if a Python exception is thrown.
# If report_pass is true, report a pass if no exception is thrown.
proc gdb_py_test_silent_cmd {cmd name report_pass} {
    global gdb_prompt

  gdb_test_multiple $cmd $name {
      -re "Traceback.*$gdb_prompt $"  { fail $name }
      -re "$gdb_prompt $"	      { if $report_pass { pass $name } }
  }
}

set testfile "py-inferior"
set srcfile ${testfile}.c
if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } {
    return -1
}

# Start with a fresh gdb.
clean_restart ${testfile}

# Skip all tests if Python scripting is not enabled.
if { [skip_python_tests] } { continue }

# The following tests require execution.

if ![runto_main] then {
    fail "Can't run to main"
    return 0
}

runto [gdb_get_line_number "Break here."]

# Test basic gdb.Inferior attributes and methods.

gdb_py_test_silent_cmd "python inferiors = gdb.inferiors ()" "get inferiors list" 1
gdb_test "python print inferiors" "\\(<gdb.Inferior object at 0x\[\[:xdigit:\]\]+>,\\)" "verify inferiors list"
gdb_py_test_silent_cmd "python i0 = inferiors\[0\]" "get first inferior" 0

gdb_test "python print 'result =', i0 == inferiors\[0\]" " = True" "test equality comparison (true)"
gdb_test "python print 'result =', i0.num" " = \[0-9\]+" "test Inferior.num"
gdb_test "python print 'result =', i0.pid" " = \[0-9\]+" "test Inferior.pid"
gdb_test "python print 'result =', i0.was_attached" " = False" "test Inferior.was_attached"
gdb_test "python print i0.threads ()" "\\(<gdb.InferiorThread object at 0x\[\[:xdigit:\]\]+>,\\)" "test Inferior.threads"

# Test memory read and write operations.

gdb_py_test_silent_cmd "python addr = gdb.selected_frame ().read_var ('str')" \
  "read str address" 0
gdb_py_test_silent_cmd "python str = gdb.inferiors()\[0\].read_memory (addr, 5)" \
  "read str contents" 1
gdb_py_test_silent_cmd "python str\[1\] = 'a'" "change str" 0
gdb_py_test_silent_cmd "python gdb.inferiors()\[0\].write_memory (addr, str)" \
  "write str" 1
gdb_test "print str" " = 0x\[\[:xdigit:\]\]+ \"hallo, testsuite\"" \
  "ensure str was changed in the inferior"

# Test memory search.

set hex_number {0x[0-9a-fA-F][0-9a-fA-F]*}
set dec_number {[0-9]+}
set history_prefix {[$][0-9]* = }
set newline {[\r\n]+}
set pattern_not_found "${newline}.None"
set one_pattern_found "${newline}.${dec_number}"

# Test string pattern.

gdb_test "set *(int32_t*) &int8_search_buf\[10\] = 0x61616161" "" ""
gdb_test "py search_buf = gdb.selected_frame ().read_var ('int8_search_buf')" "" ""
gdb_test "py start_addr = search_buf.address" "" ""
gdb_test "py length = search_buf.type.sizeof" "" ""

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, 'aaa')" \
  "${one_pattern_found}" "find string pattern"

# Test not finding pattern because search range too small, with
# potential find at the edge of the range.

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 10+3, 'aaaa')" \
  "${pattern_not_found}" "pattern not found at end of range"

# Increase the search range by 1 and we should find the pattern.

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 10+3+1, 'aaa')" \
  "${one_pattern_found}" "pattern found at end of range"

# Import struct to pack the following patterns.
gdb_test "py from struct import *" "" ""

# Test 16-bit pattern.

gdb_test "set int16_search_buf\[10\] = 0x1234" "" ""
gdb_test "py search_buf = gdb.selected_frame ().read_var ('int16_search_buf')" "" ""
gdb_test "py start_addr = search_buf.address" "" ""
gdb_test "py length = search_buf.type.sizeof" "" ""
gdb_test "py pattern = pack('H',0x1234)" "" \

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
  "${one_pattern_found}" "find 16-bit pattern, with value pattern"

# Test 32-bit pattern.

gdb_test "set int32_search_buf\[10\] = 0x12345678" "" ""
gdb_test "py search_buf = gdb.selected_frame ().read_var ('int32_search_buf')" "" ""
gdb_test "py start_addr = search_buf.address" "" ""
gdb_test "py length = search_buf.type.sizeof" "" ""
gdb_test "py pattern = pack('I',0x12345678)" "" \

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
  "${one_pattern_found}" "find 32-bit pattern, with python pattern"

# Test 64-bit pattern.

gdb_test "set int64_search_buf\[10\] = 0xfedcba9876543210LL" "" ""
gdb_test "py search_buf = gdb.selected_frame ().read_var ('int64_search_buf')" "" ""
gdb_test "py start_addr = search_buf.address" "" ""
gdb_test "py length = search_buf.type.sizeof" "" ""
gdb_test "py pattern = pack('Q', 0xfedcba9876543210)" "" ""

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
  "${one_pattern_found}" "find 64-bit pattern, with value pattern"

# Test mixed-sized patterns.

gdb_test "set *(int8_t*) &search_buf\[10\] = 0x62" "" ""
gdb_test "set *(int16_t*) &search_buf\[11\] = 0x6363" "" ""
gdb_test "set *(int32_t*) &search_buf\[13\] = 0x64646464" "" ""
gdb_test "py search_buf = gdb.selected_frame ().read_var ('search_buf')" "" ""
gdb_test "py start_addr = search_buf\[0\].address" "" ""
gdb_test "py pattern1 = pack('B', 0x62)" "" ""
gdb_test "py pattern2 = pack('H', 0x6363)" "" ""
gdb_test "py pattern3 = pack('I', 0x64646464)" "" ""

gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern1)" \
    "${one_pattern_found}" "find mixed-sized pattern"
gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern2)" \
    "${one_pattern_found}" "find mixed-sized pattern"
gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, 100, pattern3)" \
    "${one_pattern_found}" "find mixed-sized pattern"

# Test search spanning a large range, in the particular case of native
# targets, test the search spanning multiple chunks.
# Remote targets may implement the search differently.

set CHUNK_SIZE 16000 ;

gdb_test "set *(int32_t*) &search_buf\[0*${CHUNK_SIZE}+100\] = 0x12345678" "" ""
gdb_test "set *(int32_t*) &search_buf\[1*${CHUNK_SIZE}+100\] = 0x12345678" "" ""
gdb_test "py start_addr = gdb.selected_frame ().read_var ('search_buf')" "" ""
gdb_test "py length = gdb.selected_frame ().read_var ('search_buf_size')" "" ""
gdb_test "py pattern = pack('I', 0x12345678)" "" ""
gdb_test "py first = gdb.inferiors()\[0\].search_memory (start_addr,length, pattern)" "" ""
gdb_test "py print first" "${one_pattern_found}" "search spanning large range 1st result"
gdb_test "py start_addr = first + 1"
gdb_test "py second = gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" "" ""
gdb_test "py print second" "${one_pattern_found}" "search spanning large range 2nd result"
gdb_test "py start_addr = second + 1"
gdb_test "py third = gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" "" ""
gdb_test "py print third" "${pattern_not_found}" "search spanning large range 3rd result"

# For native targets, test a pattern straddling a chunk boundary.

if [isnative] {
    gdb_test "set *(int32_t*) &search_buf\[${CHUNK_SIZE}-1\] = 0xfdb97531" "" ""
    gdb_test "py pattern = pack('I', 0xfdb97531)" "" ""
    gdb_test "py start_addr = gdb.selected_frame ().read_var ('search_buf')" "" ""
    gdb_test "py print gdb.inferiors()\[0\].search_memory (start_addr, length, pattern)" \
      "${one_pattern_found}" "find pattern straddling chunk boundary"
}
