| # Copyright 2020-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/>. |
| |
| # Testing for 'maint print xml-tdesc'. Check we can print out the |
| # current target description and load it back in again. |
| |
| if {[gdb_skip_xml_test]} { |
| unsupported "xml tests not being run" |
| return -1 |
| } |
| |
| standard_testfile |
| |
| if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} { |
| return -1 |
| } |
| |
| if ![runto_main] then { |
| return 0 |
| } |
| |
| # Three files we're going to write out to. |
| set xml_file_1 [standard_output_file outfile1.xml] |
| set xml_file_2 [standard_output_file outfile2.xml] |
| set xml_file_3 [standard_output_file outfile3.xml] |
| |
| # Write the current target description to a file. |
| gdb_test_no_output "pipe maint print xml-tdesc | cat > $xml_file_1" \ |
| "write current target description to file" |
| |
| # Read the target description back in to GDB, and the write it back |
| # out to a file. |
| gdb_test_no_output \ |
| "pipe maint print xml-tdesc $xml_file_1 | cat > $xml_file_2" \ |
| "read previous xml description, and write it out to a second file" |
| |
| # Check the two produced files are identical. |
| gdb_test "shell diff -s $xml_file_1 $xml_file_2" \ |
| "Files \[^\r\n\]* are identical" \ |
| "first two produced xml files are identical" |
| |
| # Restart GDB. |
| clean_restart |
| |
| # Change to use one of the target descriptions we wrote out earlier. |
| gdb_test_no_output "set tdesc filename $xml_file_1" \ |
| "set target description to use" |
| |
| # Load the executable. |
| gdb_load ${binfile} |
| |
| # Run to `main' where we begin our tests. |
| if ![runto_main] then { |
| return -1 |
| } |
| |
| # Run info registers just to check this appears to run fine with the |
| # new target description. |
| gdb_test_multiple "info all-registers" "Run info registers" -lbl { |
| -re -wrap "" { |
| pass $gdb_test_name |
| } |
| } |
| |
| # Write out the current target description. |
| gdb_test_no_output "pipe maint print xml-tdesc | cat > $xml_file_3" \ |
| "write third target description to file" |
| |
| # And check that it matches the original file we loaded. |
| gdb_test "shell diff -s $xml_file_1 $xml_file_3" \ |
| "Files \[^\r\n\]* are identical" \ |
| "first and third produced xml files are identical" |