# Copyright 2021 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/>.

# The purpose of this test-case is to dump /proc/cpuinfo and similar system
# info into gdb.log.


proc dump_info {cmd {what ""}} {

  if {$what == ""} {
    set what $cmd
  }

  set res [remote_exec target $cmd]
  set status [lindex $res 0]
  set output [lindex $res 1]

  if { $status == 0 } {
    verbose -log "$what available, dumping:\n$output"
  } else {
    verbose -log "$what not available"
  }
}

dump_info "cat /proc/cpuinfo" "Cpuinfo"
dump_info "uname -a"
dump_info "lsb_release -a"
