[binutils-gdb] gdb: New maintenance command to print XML target description

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

[binutils-gdb] gdb: New maintenance command to print XML target description

Sourceware - gdb-testers mailing list
*** TEST RESULTS FOR COMMIT caa7fd04f652c00caf5c84d486c622cb1ffaf6c9 ***

commit caa7fd04f652c00caf5c84d486c622cb1ffaf6c9
Author:     Andrew Burgess <[hidden email]>
AuthorDate: Tue Jun 9 23:08:54 2020 +0100
Commit:     Andrew Burgess <[hidden email]>
CommitDate: Tue Jun 23 22:17:20 2020 +0100

    gdb: New maintenance command to print XML target description
   
    This commit adds a new maintenance command that dumps the current
    target description as an XML document.  This is a maintenance command
    as I currently only see this being useful for GDB developers, or for
    people debugging a new remote target.
   
    By default the command will print whatever the current target
    description is, whether this was delivered by the remote, loaded by
    the user from a file, or if it is a built in target within GDB.
   
    The command can also take an optional filename argument.  In this case
    GDB loads a target description from the file, and then reprints it.
    This could be useful for testing GDB's parsing of target descriptions,
    or to check that GDB can successfully parse a particular XML
    description.
   
    It is worth noting that the XML description printed will not be an
    exact copy of the document fed into GDB.  For example this minimal
    input file:
   
      <target>
        <feature name="abc">
          <reg name="r1" bitsize="32"/>
        </feature>
      </target>
   
    Will produce this output:
   
      (gdb) maint print xml-tdesc path/to/file.xml
      <?xml version="1.0"?>
      <!DOCTYPE target SYSTEM "gdb-target.dtd">
      <target>
        <feature name="abc">
          <reg name="r1" bitsize="32" type="int" regnum="0"/>
        </feature>
      </target>
   
    Notice that GDB filled in both the 'type' and 'regnum' fields of the
    <reg>.  I think this is actually a positive as it means we get to
    really understand how GDB processed the document, if GDB made some
    assumptions that differ to those the user expected then hopefully this
    will bring those issues to the users attention.
   
    To implement this I have tweaked the output produced by the
    print_xml_feature which is defined within the gdbsupport/ directory.
    The changes I have made to this class are:
   
      1. The <architecture>...</architecture> tags are now not produced if
      the architecture name is NULL.
   
      2. The <osabi>...</osabi> tags get a newline at the end.
   
      3. And, the whole XML document is indented using white space in a
      nested fashion (as in the example output above).
   
    I think that these changes should be fine, the print_xml_feature class
    is used:
   
      1. In gdbserver to generate an XML document to send as the target
      description to GDB.
   
      2. In GDB as part of a self-check function, a target_desc is
      converted to XML then parsed back into a target_desc.  We then check
      the before and after target_desc objects are the same.
   
      3. In the new 'maint print xml-tdesc' command.
   
    In all of these use cases adding the extra white space should be fine.
   
    gdbsupport/ChangeLog:
   
            * tdesc.cc (print_xml_feature::visit_pre): Use add_line to add
            output content, and call indent as needed in all overloaded
            variants.
            (print_xml_feature::visit_post): Likewise.
            (print_xml_feature::visit): Likewise.
            (print_xml_feature::add_line): Two new overloaded functions.
            * tdesc.h (print_xml_feature::indent): New member function.
            (print_xml_feature::add_line): Two new overloaded member
            functions.
            (print_xml_feature::m_depth): New member variable.
   
    gdb/ChangeLog:
   
            * target-descriptions.c (tdesc_architecture_name): Protect against
            NULL pointer dereference.
            (maint_print_xml_tdesc_cmd): New function.
            (_initialize_target_descriptions): Register new 'maint print
            xml-tdesc' command and give it the filename completer.
            * NEWS: Mention new 'maint print xml-tdesc' command.
   
    gdb/testsuite/ChangeLog:
   
            * gdb.xml/tdesc-reload.c: New file.
            * gdb.xml/tdesc-reload.exp: New file.
            * gdb.xml/maint-xml-dump-01.xml: New file.
            * gdb.xml/maint-xml-dump-02.xml: New file.
            * gdb.xml/maint-xml-dump.exp: New file.
   
    gdb/doc/ChangeLog:
   
            * gdb.texinfo (Maintenance Commands): Document new 'maint print
            xml-desc' command.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0784e823e2..57bd32397d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2020-06-23  Andrew Burgess  <[hidden email]>
+
+ * target-descriptions.c (tdesc_architecture_name): Protect against
+ NULL pointer dereference.
+ (maint_print_xml_tdesc_cmd): New function.
+ (_initialize_target_descriptions): Register new 'maint print
+ xml-tdesc' command and give it the filename completer.
+ * NEWS: Mention new 'maint print xml-tdesc' command.
+
 2020-06-23  Andrew Burgess  <[hidden email]>
 
  * target-descriptions.c (class tdesc_compatible_info): New class.
diff --git a/gdb/NEWS b/gdb/NEWS
index f7585133c5..a116d62bca 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -79,6 +79,12 @@ tui new-layout NAME WINDOW WEIGHT [WINDOW WEIGHT]...
   Define a new TUI layout, specifying its name and the windows that
   will be displayed.
 
+maintenance print xml-tdesc [FILE]
+  Prints the current target description as an XML document.  If the
+  optional FILE is provided (which is an XML target description) then
+  the target description is read from FILE into GDB, and then
+  reprinted.
+
 * Changed commands
 
 alias [-a] [--] ALIAS = COMMAND [DEFAULT-ARGS...]
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index fe6bfe7452..4b1a4c01f9 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-23  Andrew Burgess  <[hidden email]>
+
+ * gdb.texinfo (Maintenance Commands): Document new 'maint print
+ xml-desc' command.
+
 2020-06-22  Philippe Waroquiers  <[hidden email]>
 
  * gdb.texinfo (Command aliases default args): New node documenting
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 7f572c37c5..7f8c77a77f 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -38501,6 +38501,15 @@ The created source file is built into @value{GDBN} when @value{GDBN} is
 built again.  This command is used by developers after they add or
 modify XML target descriptions.
 
+@kindex maint print xml-tdesc
+@item maint print xml-tdesc  @r{[}@var{file}@r{]}
+Print the target description (@pxref{Target Descriptions}) as an XML
+file.  By default print the target description for the current target,
+but if the optional argument @var{file} is provided, then that file is
+read in by GDB and then used to produce the description.  The
+@var{file} should be an XML document, of the form described in
+@ref{Target Description Format}.
+
 @kindex maint check xml-descriptions
 @item maint check xml-descriptions @var{dir}
 Check that the target descriptions dynamically created by @value{GDBN}
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 1937e7ca4a..1abdf51ec7 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -662,7 +662,9 @@ tdesc_architecture (const struct target_desc *target_desc)
 const char *
 tdesc_architecture_name (const struct target_desc *target_desc)
 {
-  return target_desc->arch->printable_name;
+  if (target_desc->arch != NULL)
+    return target_desc->arch->printable_name;
+  return NULL;
 }
 
 /* See gdbsupport/tdesc.h.  */
@@ -1755,6 +1757,36 @@ maint_print_c_tdesc_cmd (const char *args, int from_tty)
     }
 }
 
+/* Implement the maintenance print xml-tdesc command.  */
+
+static void
+maint_print_xml_tdesc_cmd (const char *args, int from_tty)
+{
+  const struct target_desc *tdesc;
+
+  if (args == NULL)
+    {
+      /* Use the global target-supplied description, not the current
+ architecture's.  This lets a GDB for one architecture generate XML
+ for another architecture's description, even though the gdbarch
+ initialization code will reject the new description.  */
+      tdesc = current_target_desc;
+    }
+  else
+    {
+      /* Use the target description from the XML file.  */
+      tdesc = file_read_description_xml (args);
+    }
+
+  if (tdesc == NULL)
+    error (_("There is no target description to print."));
+
+  std::string buf;
+  print_xml_feature v (&buf);
+  tdesc->accept (v);
+  puts_unfiltered (buf.c_str ());
+}
+
 namespace selftests {
 
 /* A reference target description, used for testing (see record_xml_tdesc).  */
@@ -1892,6 +1924,11 @@ Print the current target description as a C source file."),
    &maintenanceprintlist);
   set_cmd_completer (cmd, filename_completer);
 
+  cmd = add_cmd ("xml-tdesc", class_maintenance, maint_print_xml_tdesc_cmd, _("\
+Print the current target description as an XML file."),
+ &maintenanceprintlist);
+  set_cmd_completer (cmd, filename_completer);
+
   cmd = add_cmd ("xml-descriptions", class_maintenance,
  maintenance_check_xml_descriptions, _("\
 Check equality of GDB target descriptions and XML created descriptions.\n\
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 0864d7522a..26284dabb2 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2020-06-23  Andrew Burgess  <[hidden email]>
+
+ * gdb.xml/tdesc-reload.c: New file.
+ * gdb.xml/tdesc-reload.exp: New file.
+ * gdb.xml/maint-xml-dump-01.xml: New file.
+ * gdb.xml/maint-xml-dump-02.xml: New file.
+ * gdb.xml/maint-xml-dump.exp: New file.
+
 2020-06-23  Sandra Loosemore  <[hidden email]>
 
  * lib/completion-support.exp (test_gdb_completion_offers_commands):
diff --git a/gdb/testsuite/gdb.xml/maint-xml-dump-01.xml b/gdb/testsuite/gdb.xml/maint-xml-dump-01.xml
new file mode 100644
index 0000000000..dd4f925167
--- /dev/null
+++ b/gdb/testsuite/gdb.xml/maint-xml-dump-01.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!-- This is a comment before DOCTYPE -->
+<!DOCTYPE target SYSTEM "gdb-target.dtd">
+<!-- This is a comment after DOCTYPE -->
+<target>
+  <feature name="abc">
+    <!-- The following is a register. -->
+    <reg name="r1" bitsize="32"/> <!-- <reg name="r1" bitsize="32" type="int" regnum="0"/> -->
+  </feature>
+</target>
diff --git a/gdb/testsuite/gdb.xml/maint-xml-dump-02.xml b/gdb/testsuite/gdb.xml/maint-xml-dump-02.xml
new file mode 100644
index 0000000000..c192294ca1
--- /dev/null
+++ b/gdb/testsuite/gdb.xml/maint-xml-dump-02.xml
@@ -0,0 +1,27 @@
+<target>
+  <osabi>Solaris</osabi>
+  <feature name="abc">
+    <vector id="foo" type="int32" count="4"/>
+    <reg name="foo" bitsize="16" /> <!-- <reg name="foo" bitsize="16" type="int" regnum="0"/> -->
+  </feature>
+  <feature name="def.xyz">
+    <struct id="my_struct">
+      <field name="field1" type="int8"/>
+      <field name="field2" type="int16"/>
+      <field name="field3" type="int8"/>
+    </struct>
+    <struct id="bit_field" size="8">
+      <field name="bits1" start="0" end="3" type="int8"/>
+      <field name="bits2" start="4" end="6" type="int8"/>
+      <field name="bits3" start="7" end="7"/> <!-- <field name="bits3" start="7" end="7" type="bool"/> -->
+    </struct>
+    <flags id="my_flags" size="8">
+      <field name="flg1" start="0" end="0"/> <!-- <field name="flg1" start="0" end="0" type="bool"/> -->
+      <field name="flg2" start="1" end="1"/> <!-- <field name="flg2" start="1" end="1" type="bool"/> -->
+      <field name="flg3" start="2" end="6"/> <!-- <field name="flg3" start="2" end="6" type="uint64"/> -->
+      <field name="flg4" start="7" end="7"/> <!-- <field name="flg4" start="7" end="7" type="bool"/> -->
+    </flags>
+    <reg name="r1" bitsize="8" type="my_flags"/> <!-- <reg name="r1" bitsize="8" type="my_flags" regnum="1"/> -->
+    <reg name="r2" bitsize="8" type="bit_field"/> <!-- <reg name="r2" bitsize="8" type="bit_field" regnum="2"/> -->
+  </feature>
+</target>
diff --git a/gdb/testsuite/gdb.xml/maint-xml-dump.exp b/gdb/testsuite/gdb.xml/maint-xml-dump.exp
new file mode 100644
index 0000000000..8ccfbb5e68
--- /dev/null
+++ b/gdb/testsuite/gdb.xml/maint-xml-dump.exp
@@ -0,0 +1,124 @@
+# Copyright 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/>.
+
+# Test the 'maint print xml-tdesc' command.  This file picks up every
+# XML file matching the pattern maint-xml-dump-*.xml (in the same
+# directory as this script) and passes each in turn to the command
+# 'maint print xml-tdesc'.
+#
+# The expected output is generated by parsing the input XML file.  The
+# rules for changing an XML file into the expected output are:
+#
+# 1. Blank lines, and lines starting with a comment are stripped from
+#    the expected output.
+#
+# 2. The <?xml ... ?> and <!DOCTYPE ...> entities are optional,
+#    suitable defaults will be added if these lines are missing from
+#    the input file.
+#
+# 3. A trailing comment on a line will replace the expected output for
+#    that line but with the indentation of the line preserved.  So
+#    this (The '|' marks the start of the line):
+#    |    <reg name="r1" bitsize="32"/>  <!-- <reg name="r1" bitsize="32" type="int" regnum="0"/> -->
+#    Will actually look for the following output:
+#    |    <reg name="r1" bitsize="32" type="int" regnum="0"/>
+#
+# 4. Indentation of lines will be preserved so your input file needs
+#    to follow the expected indentation.
+if {[gdb_skip_xml_test]} {
+    unsupported "xml tests not being run"
+    return -1
+}
+
+gdb_start
+
+# Read the XML file FILENAME and produce an output pattern that should
+# match what GDB produces with the 'maint print xml-desc' command.
+proc build_pattern { filename } {
+    set pattern {}
+
+    set xml_version_line {<?xml version="1.0"?>}
+    set doc_type_line {<!DOCTYPE target SYSTEM "gdb-target.dtd">}
+
+    set linenum 0
+    set ifd [open "$filename" r]
+    while {[gets $ifd line] >= 0} {
+ incr linenum
+
+ # The <?xml .... ?> tag can only appear as the first line in
+ # the file.  If it is not present then add one to the expected
+ # output now.
+ if {$linenum == 1} {
+    if {![regexp {^<\?xml} $line]} {
+ set pattern [string_to_regexp $xml_version_line]
+ set xml_version_line ""
+    }
+ }
+
+ # If we have not yet seen a DOCTYPE line, then maybe we should
+ # be adding one?  If we find <target> then add a default
+ # DOCTYPE line, otherwise, if the XML file includes a DOCTYPE
+ # line, use that.
+ if {$doc_type_line != "" } {
+    if {[regexp {^[ \t]*<target>} $line]} {
+ set pattern [multi_line $pattern \
+ [string_to_regexp $doc_type_line]]
+ set doc_type_line ""
+    } elseif {[regexp {^[ \t]*<!DOCTYPE } $line]} {
+ set doc_type_line ""
+    }
+ }
+
+ if {[regexp {^[ \t]*<!--} $line]} {
+    # Comment line, ignore it.
+ } elseif {[regexp {^[ \t]+$} $line]} {
+    # Blank line, ignore it.
+ } elseif {[regexp {^([ \t]*).*<!-- (.*) -->$} $line \
+       matches grp1 grp2]} {
+    set pattern [multi_line \
+     $pattern \
+     [string_to_regexp "$grp1$grp2"]]
+ } else {
+    set pattern [multi_line \
+     $pattern \
+     [string_to_regexp $line]]
+ }
+    }
+    close $ifd
+
+    # Due to handling the <?xml ...?> tags we can end up with a stray
+    # '\r\n' at the start of the output pattern.  Remove it here.
+    if {[string range $pattern 0 1] == "\r\n"} {
+ set pattern [string range $pattern 2 end]
+    }
+
+    return $pattern
+}
+
+# Run over every test XML file and check the output.
+foreach filename [lsort [glob $srcdir/$subdir/maint-xml-dump-*.xml]] {
+    set pattern [build_pattern $filename]
+
+    if {[is_remote host]} {
+ set test_path [remote_download host $filename]
+    } else {
+ set test_path $filename
+    }
+
+    verbose -log "Looking for:\n$pattern"
+
+    gdb_test "maint print xml-tdesc $test_path" \
+ "$pattern" "check [file tail $filename]"
+}
diff --git a/gdb/testsuite/gdb.xml/tdesc-reload.c b/gdb/testsuite/gdb.xml/tdesc-reload.c
new file mode 100644
index 0000000000..f4825c8a7c
--- /dev/null
+++ b/gdb/testsuite/gdb.xml/tdesc-reload.c
@@ -0,0 +1,22 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 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/>.  */
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gdb/testsuite/gdb.xml/tdesc-reload.exp b/gdb/testsuite/gdb.xml/tdesc-reload.exp
new file mode 100644
index 0000000000..a671297f82
--- /dev/null
+++ b/gdb/testsuite/gdb.xml/tdesc-reload.exp
@@ -0,0 +1,83 @@
+# Copyright 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/>.
+
+# 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 {
+    fail "can't run to main"
+    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 {
+    untested "could not run to main"
+    return -1
+}
+
+# Run info registers just to check this appears to run fine with the
+# new target description.
+gdb_test "info all-registers" ".*" \
+    "Run info registers"
+
+# 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"
diff --git a/gdbsupport/ChangeLog b/gdbsupport/ChangeLog
index 2e5cbba01c..b2fbc56b1b 100644
--- a/gdbsupport/ChangeLog
+++ b/gdbsupport/ChangeLog
@@ -1,3 +1,16 @@
+2020-06-23  Andrew Burgess  <[hidden email]>
+
+ * tdesc.cc (print_xml_feature::visit_pre): Use add_line to add
+ output content, and call indent as needed in all overloaded
+ variants.
+ (print_xml_feature::visit_post): Likewise.
+ (print_xml_feature::visit): Likewise.
+ (print_xml_feature::add_line): Two new overloaded functions.
+ * tdesc.h (print_xml_feature::indent): New member function.
+ (print_xml_feature::add_line): Two new overloaded member
+ functions.
+ (print_xml_feature::m_depth): New member variable.
+
 2020-06-23  Andrew Burgess  <[hidden email]>
 
  * tdesc.cc (print_xml_feature::visit_pre): Print compatible
diff --git a/gdbsupport/tdesc.cc b/gdbsupport/tdesc.cc
index 63f41cbf67..624588b656 100644
--- a/gdbsupport/tdesc.cc
+++ b/gdbsupport/tdesc.cc
@@ -294,12 +294,14 @@ tdesc_add_enum_value (tdesc_type_with_fields *type, int value,
 
 void print_xml_feature::visit_pre (const tdesc_feature *e)
 {
-  string_appendf (*m_buffer, "<feature name=\"%s\">\n", e->name.c_str ());
+  add_line ("<feature name=\"%s\">", e->name.c_str ());
+  indent (1);
 }
 
 void print_xml_feature::visit_post (const tdesc_feature *e)
 {
-  string_appendf (*m_buffer, "</feature>\n");
+  indent (-1);
+  add_line ("</feature>");
 }
 
 void print_xml_feature::visit (const tdesc_type_builtin *t)
@@ -309,8 +311,8 @@ void print_xml_feature::visit (const tdesc_type_builtin *t)
 
 void print_xml_feature::visit (const tdesc_type_vector *t)
 {
-  string_appendf (*m_buffer, "<vector id=\"%s\" type=\"%s\" count=\"%d\"/>\n",
-  t->name.c_str (), t->element_type->name.c_str (), t->count);
+  add_line ("<vector id=\"%s\" type=\"%s\" count=\"%d\"/>",
+    t->name.c_str (), t->element_type->name.c_str (), t->count);
 }
 
 void print_xml_feature::visit (const tdesc_type_with_fields *t)
@@ -319,7 +321,9 @@ void print_xml_feature::visit (const tdesc_type_with_fields *t)
 
   gdb_assert (t->kind >= TDESC_TYPE_STRUCT && t->kind <= TDESC_TYPE_ENUM);
 
-  string_appendf (*m_buffer,
+  std::string tmp;
+
+  string_appendf (tmp,
   "<%s id=\"%s\"", types[t->kind - TDESC_TYPE_STRUCT],
   t->name.c_str ());
 
@@ -328,33 +332,37 @@ void print_xml_feature::visit (const tdesc_type_with_fields *t)
     case TDESC_TYPE_STRUCT:
     case TDESC_TYPE_FLAGS:
       if (t->size > 0)
- string_appendf (*m_buffer, " size=\"%d\"", t->size);
-      string_appendf (*m_buffer, ">\n");
+ string_appendf (tmp, " size=\"%d\"", t->size);
+      string_appendf (tmp, ">");
+      add_line (tmp);
 
       for (const tdesc_type_field &f : t->fields)
  {
-  string_appendf (*m_buffer, "  <field name=\"%s\" ", f.name.c_str ());
-  if (f.start == -1)
-    string_appendf (*m_buffer, "type=\"%s\"/>\n",
-    f.type->name.c_str ());
-  else
-    string_appendf (*m_buffer, "start=\"%d\" end=\"%d\"/>\n", f.start,
+  tmp.clear ();
+  string_appendf (tmp, "  <field name=\"%s\"", f.name.c_str ());
+  if (f.start != -1)
+    string_appendf (tmp, " start=\"%d\" end=\"%d\"", f.start,
     f.end);
+  string_appendf (tmp, " type=\"%s\"/>",
+  f.type->name.c_str ());
+  add_line (tmp);
  }
       break;
 
     case TDESC_TYPE_ENUM:
-      string_appendf (*m_buffer, ">\n");
+      string_appendf (tmp, ">");
+      add_line (tmp);
       for (const tdesc_type_field &f : t->fields)
- string_appendf (*m_buffer, "  <field name=\"%s\" start=\"%d\"/>\n",
- f.name.c_str (), f.start);
+ add_line ("  <field name=\"%s\" start=\"%d\"/>",
+  f.name.c_str (), f.start);
       break;
 
     case TDESC_TYPE_UNION:
-      string_appendf (*m_buffer, ">\n");
+      string_appendf (tmp, ">");
+      add_line (tmp);
       for (const tdesc_type_field &f : t->fields)
- string_appendf (*m_buffer, "  <field name=\"%s\" type=\"%s\"/>\n",
- f.name.c_str (), f.type->name.c_str ());
+ add_line ("  <field name=\"%s\" type=\"%s\"/>",
+  f.name.c_str (), f.type->name.c_str ());
       break;
 
     default:
@@ -362,46 +370,78 @@ void print_xml_feature::visit (const tdesc_type_with_fields *t)
      t->name.c_str ());
     }
 
-  string_appendf (*m_buffer, "</%s>\n", types[t->kind - TDESC_TYPE_STRUCT]);
+  add_line ("</%s>", types[t->kind - TDESC_TYPE_STRUCT]);
 }
 
 void print_xml_feature::visit (const tdesc_reg *r)
 {
-  string_appendf (*m_buffer,
+  std::string tmp;
+
+  string_appendf (tmp,
   "<reg name=\"%s\" bitsize=\"%d\" type=\"%s\" regnum=\"%ld\"",
   r->name.c_str (), r->bitsize, r->type.c_str (),
   r->target_regnum);
 
   if (r->group.length () > 0)
-    string_appendf (*m_buffer, " group=\"%s\"", r->group.c_str ());
+    string_appendf (tmp, " group=\"%s\"", r->group.c_str ());
 
   if (r->save_restore == 0)
-    string_appendf (*m_buffer, " save-restore=\"no\"");
+    string_appendf (tmp, " save-restore=\"no\"");
 
-  string_appendf (*m_buffer, "/>\n");
+  string_appendf (tmp, "/>");
+
+  add_line (tmp);
 }
 
 void print_xml_feature::visit_pre (const target_desc *e)
 {
 #ifndef IN_PROCESS_AGENT
-  string_appendf (*m_buffer, "<?xml version=\"1.0\"?>\n");
-  string_appendf (*m_buffer, "<!DOCTYPE target SYSTEM \"gdb-target.dtd\">\n");
-  string_appendf (*m_buffer, "<target>\n<architecture>%s</architecture>\n",
-  tdesc_architecture_name (e));
+  add_line ("<?xml version=\"1.0\"?>");
+  add_line ("<!DOCTYPE target SYSTEM \"gdb-target.dtd\">");
+  add_line ("<target>");
+  indent (1);
+  if (tdesc_architecture_name (e))
+    add_line ("<architecture>%s</architecture>",
+      tdesc_architecture_name (e));
 
   const char *osabi = tdesc_osabi_name (e);
   if (osabi != nullptr)
-    string_appendf (*m_buffer, "<osabi>%s</osabi>", osabi);
+    add_line ("<osabi>%s</osabi>", osabi);
 
   const std::vector<tdesc_compatible_info_up> &compatible_list
     = tdesc_compatible_info_list (e);
   for (const auto &c : compatible_list)
-    string_appendf (*m_buffer, "<compatible>%s</compatible>\n",
-    tdesc_compatible_info_arch_name (c));
+    add_line ("<compatible>%s</compatible>",
+      tdesc_compatible_info_arch_name (c));
 #endif
 }
 
 void print_xml_feature::visit_post (const target_desc *e)
 {
-  string_appendf (*m_buffer, "</target>\n");
+  indent (-1);
+  add_line ("</target>");
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+void
+print_xml_feature::add_line (const std::string &str)
+{
+  string_appendf (*m_buffer, "%*s", m_depth, "");
+  string_appendf (*m_buffer, "%s", str.c_str ());
+  string_appendf (*m_buffer, "\n");
+}
+
+/* See gdbsupport/tdesc.h.  */
+
+void
+print_xml_feature::add_line (const char *fmt, ...)
+{
+  std::string tmp;
+
+  va_list ap;
+  va_start (ap, fmt);
+  string_vappendf (tmp, fmt, ap);
+  va_end (ap);
+  add_line (tmp);
 }
diff --git a/gdbsupport/tdesc.h b/gdbsupport/tdesc.h
index 0cdcf56346..73caf24536 100644
--- a/gdbsupport/tdesc.h
+++ b/gdbsupport/tdesc.h
@@ -410,7 +410,8 @@ class print_xml_feature : public tdesc_element_visitor
 {
 public:
   print_xml_feature (std::string *buffer_)
-    : m_buffer (buffer_)
+    : m_buffer (buffer_),
+      m_depth (0)
   {}
 
   void visit_pre (const target_desc *e) override;
@@ -423,7 +424,27 @@ public:
   void visit (const tdesc_reg *reg) override;
 
 private:
+
+  /* Called with a positive value of ADJUST when we move inside an element,
+     for example inside <target>, and with a negative value when we leave
+     the element.  In this class this function does nothing, but a
+     sub-class can override this to track the current level of nesting.  */
+  void indent (int adjust)
+  {
+    m_depth += (adjust * 2);
+  }
+
+  /* Functions to add lines to the output buffer M_BUFFER.  Each of these
+     functions appends a newline, so don't include one in the strings being
+     passed.  */
+  void add_line (const std::string &str);
+  void add_line (const char *fmt, ...);
+
+  /* The buffer we are writing too.  */
   std::string *m_buffer;
+
+  /* The current indentation depth.  */
+  int m_depth;
 };
 
 #endif /* COMMON_TDESC_H */
Reply | Threaded
Open this post in threaded view
|

Failures on Ubuntu-Aarch64-native-extended-gdbserver-m64, branch master

Sourceware - gdb-testers mailing list
Buildername:
        Ubuntu-Aarch64-native-extended-gdbserver-m64

Worker:
        ubuntu-aarch64

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/5/builds/3152

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Ubuntu-Aarch64-native-extended-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> UNRESOLVED: gdb.arch/aarch64-brk-patterns.exp: brk instruction 0 causes SIGTRAP
PASS -> KFAIL: gdb.threads/process-dies-while-handling-bp.exp: non_stop=on: cond_bp_target=1: inferior 1 exited
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Ubuntu-Aarch64-native-extended-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Ubuntu-Aarch64-native-extended-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Ubuntu-Aarch64-native-gdbserver-m64, branch master

Sourceware - gdb-testers mailing list
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Ubuntu-Aarch64-native-gdbserver-m64

Worker:
        ubuntu-aarch64

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/19/builds/3193

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Ubuntu-Aarch64-native-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> KFAIL: gdb.threads/process-dies-while-handling-bp.exp: non_stop=off: cond_bp_target=0: inferior 1 exited
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Ubuntu-Aarch64-native-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Ubuntu-Aarch64-native-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

*** COMPILATION FAILED *** Failures on Fedora-i686, branch master *** BREAKAGE ***

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-i686

Worker:
        fedora-x86-64-4

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/18/builds/3557

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

*** FAILED to build GDB -- compile gdb ***
==============================================

+++ The full log is too big to be posted here.
+++ These are the last 100 lines of it.

  CXX    user-regs.o
  CXX    utils.o
  CXX    v850-tdep.o
  CXX    valarith.o
  CXX    valops.o
  CXX    valprint.o
  CXX    value.o
  CXX    varobj.o
  CXX    vax-nbsd-tdep.o
  CXX    vax-tdep.o
  GEN    stamp-version
  CXX    windows-tdep.o
  CXX    x86-linux-nat.o
  CXX    x86-nat.o
  CXX    x86-tdep.o
  CXX    xcoffread.o
  GEN    xml-builtin.c
  CXX    xml-support.o
  CXX    xml-syscall.o
  CXX    xml-tdesc.o
  CXX    xstormy16-tdep.o
  CXX    xtensa-config.o
  CXX    xtensa-linux-tdep.o
  CXX    xtensa-tdep.o
  CXX    gdb.o
  CXX    aarch32-tdep.o
  CXX    ada-exp.o
  CXX    ada-lang.o
  CXX    ada-tasks.o
  CXX    ada-typeprint.o
  CXX    ada-valprint.o
  CXX    ada-varobj.o
  CXX    addrmap.o
  CXX    agent.o
  CXX    alloc.o
  CXX    annotate.o
  CXX    arc-tdep.o
  CXX    arch-utils.o
  CXX    arch/aarch32.o
  CXX    arch/arc.o
  CXX    arch/arm-get-next-pcs.o
  CXX    arch/arm-linux.o
  CXX    arch/arm.o
  CXX    arch/i386.o
  CXX    arch/ppc-linux-common.o
  CXX    arch/riscv.o
  CXX    arm-bsd-tdep.o
  CXX    arm-fbsd-tdep.o
  CXX    arm-linux-tdep.o
  CXX    arm-nbsd-tdep.o
  CXX    arm-obsd-tdep.o
  CXX    arm-pikeos-tdep.o
  CXX    arm-symbian-tdep.o
  CXX    arm-tdep.o
  CXX    arm-wince-tdep.o
  CXX    async-event.o
  CXX    auto-load.o
  CXX    auxv.o
  CXX    avr-tdep.o
  CXX    ax-gdb.o
  CXX    ax-general.o
  CXX    bcache.o
  CXX    bfd-target.o
  CXX    bfin-linux-tdep.o
  CXX    bfin-tdep.o
  CXX    block.o
  CXX    blockframe.o
  CXX    break-catch-sig.o
  CXX    break-catch-syscall.o
  CXX    break-catch-throw.o
  CXX    breakpoint.o
  CXX    bsd-uthread.o
  CXX    btrace.o
  CXX    build-id.o
  CXX    buildsym-legacy.o
  CXX    buildsym.o
  CXX    c-exp.o
  CXX    cp-name-parser.o
  CXX    d-exp.o
  CXX    f-exp.o
  CXX    go-exp.o
  CXX    m2-exp.o
  CXX    p-exp.o
  CXX    rust-exp.o
  CXX    version.o
  CXX    xml-builtin.o
  GEN    init.c
  CXX    init.o
  CXXLD  gdb
/usr/bin/ld: ../opcodes/libopcodes.a(riscv-dis.o): in function `parse_riscv_dis_option':
/home/gdb-buildbot-2/fedora-x86-64-4/fedora-i686/build/opcodes/../../binutils-gdb/opcodes/riscv-dis.c:102: undefined reference to `riscv_get_priv_spec_class'
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:1861: gdb] Error 1
make[2]: Leaving directory '/home/gdb-buildbot-2/fedora-x86-64-4/fedora-i686/build/gdb'
make[1]: *** [Makefile:10066: all-gdb] Error 2
make[1]: Leaving directory '/home/gdb-buildbot-2/fedora-x86-64-4/fedora-i686/build'
make: *** [Makefile:854: all] Error 2
program finished with exit code 2
elapsedTime=470.628332
==============================================

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-cc-with-index, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-cc-with-index

Worker:
        fedora-x86-64-4

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/20/builds/3505

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-cc-with-index/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> FAIL: gdb.base/step-over-syscall.exp: clone: displaced=off: single step over clone
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print i
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print j
PASS -> FAIL: gdb.threads/signal-while-stepping-over-bp-other-thread.exp: step
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-cc-with-index/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-cc-with-index/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-m32, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-m32

Worker:
        fedora-x86-64-3

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/17/builds/3551

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
new FAIL: gdb.base/coredump-filter.exp: disassembling function main for non-Private-Anonymous: no binary: loading /home/gdb-buildbot/fedora-x86-64-3/fedora-x86-64-m32/build/gdb/testsuite/outputs/gdb.base/coredump-filter/non-private-anon.gcore
new FAIL: gdb.base/coredump-filter.exp: loading and testing corefile for non-Shared-Anonymous: loading /home/gdb-buildbot/fedora-x86-64-3/fedora-x86-64-m32/build/gdb/testsuite/outputs/gdb.base/coredump-filter/non-shared-anon.gcore
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-m64, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-m64

Worker:
        fedora-x86-64-4

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/3/builds/3614

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 1st thread: print k
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 1st thread: print r
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_func: 1st call: 1st thread: print z
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print i
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print j
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-native-extended-gdbserver-m32, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-native-extended-gdbserver-m32

Worker:
        fedora-x86-64-3

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/4/builds/3447

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-extended-gdbserver-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> FAIL: gdb.fortran/vla-ptype.exp: ptype vla1
PASS -> FAIL: gdb.fortran/vla-value.exp: print member in non-allocated vla1
PASS -> FAIL: gdb.fortran/vla-value.exp: set member in non-allocated vla1
PASS -> FAIL: gdb.multi/multi-re-run.exp: re_run_inf=1: iter=2: continue until exit
PASS -> FAIL: gdb.multi/multi-re-run.exp: re_run_inf=1: iter=2: print re_run_var_1
PASS -> UNRESOLVED: gdb.threads/attach-into-signal.exp: threaded: attach
new FAIL: gdb.threads/attach-into-signal.exp: threaded: thread apply 2 print $_siginfo.si_signo
PASS -> FAIL: gdb.trace/mi-tsv-changed.exp: create delete modify: tvariable $tvar3 modified
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-extended-gdbserver-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-extended-gdbserver-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-native-extended-gdbserver-m64, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-native-extended-gdbserver-m64

Worker:
        fedora-x86-64-4

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/2/builds/3448

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-extended-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> FAIL: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=1: continue until exit
PASS -> FAIL: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=1: print re_run_var_2
new UNRESOLVED: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=2: delete all breakpoints in delete_breakpoints
PASS -> UNRESOLVED: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=2: setting breakpoint at all_started
UNRESOLVED -> FAIL: gdb.threads/fork-plus-threads.exp: detach-on-fork=off: only inferior 1 left
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: single_scope: second thread: print i3
PASS -> KFAIL: gdb.threads/process-dies-while-handling-bp.exp: non_stop=on: cond_bp_target=1: inferior 1 exited
PASS -> FAIL: gdb.threads/thread-unwindonsignal.exp: continue until exit
new KFAIL: gdb.threads/watchthreads2.exp: gdb can drop watchpoints in multithreaded app
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-extended-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-extended-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-native-gdbserver-m32, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-native-gdbserver-m32

Worker:
        fedora-x86-64-3

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/24/builds/3460

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-gdbserver-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> KFAIL: gdb.threads/process-dies-while-handling-bp.exp: non_stop=on: cond_bp_target=1: inferior 1 exited
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-gdbserver-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-gdbserver-m32/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>

Reply | Threaded
Open this post in threaded view
|

Failures on Fedora-x86_64-native-gdbserver-m64, branch master

gdb-buildbot-2
In reply to this post by Sourceware - gdb-testers mailing list
Buildername:
        Fedora-x86_64-native-gdbserver-m64

Worker:
        fedora-x86-64-4

Full Build URL:
        https://gdb-buildbot.osci.io/#builders/22/builds/3459

Author:
        Andrew Burgess <[hidden email]>

Commit tested:
        caa7fd04f652c00caf5c84d486c622cb1ffaf6c9

Subject of commit:
        gdb: New maintenance command to print XML target description

Testsuite logs (gdb.sum, gdb.log and others):
        https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9/

*** Diff to previous build ***
==============================================
PASS -> FAIL: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=1: continue until exit
PASS -> FAIL: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=1: print re_run_var_2
new UNRESOLVED: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=2: delete all breakpoints in delete_breakpoints
PASS -> UNRESOLVED: gdb.multi/multi-re-run.exp: re_run_inf=2: iter=2: setting breakpoint at all_started
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print k
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print r
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_func: 2nd call: 2nd thread: print z
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print i
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: inner_threads: 2nd stop: print j
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: outer stop: print i
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: outer stop: print j
PASS -> KFAIL: gdb.threads/omp-par-scope.exp: single_scope: second thread: print i3
PASS -> FAIL: gdb.threads/thread-unwindonsignal.exp: continue until exit
==============================================

*** Complete list of XFAILs for this builder ***

To obtain the list of XFAIL tests for this builder, go to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.gz>

You can also see a pretty-printed version of the list, with more information
about each XFAIL, by going to:

        <https://gdb-buildbot.osci.io/results/Fedora-x86_64-native-gdbserver-m64/ca/caa7fd04f652c00caf5c84d486c622cb1ffaf6c9//xfail.table.gz>