aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/NEWS3
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdb.texinfo14
-rw-r--r--gdb/features/Makefile3
-rw-r--r--gdb/target-descriptions.c25
6 files changed, 44 insertions, 14 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index be39af6..05072ce 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,13 @@
2017-07-26 Yao Qi <yao.qi@linaro.org>
+ * NEWS: Mention it.
+ * features/Makefile (%.c: %.xml): Pass the xml file name to
+ command "maint print c-tdesc".
+ * target-descriptions.c (maint_print_c_tdesc_cmd): Get file
+ name from 'arg'.
+
+2017-07-26 Yao Qi <yao.qi@linaro.org>
+
* target-descriptions.c (target_desc): Add ctor and dtor. Do
in-class initialization.
(tdesc_create_feature): Call new instead of XCNEW.
diff --git a/gdb/NEWS b/gdb/NEWS
index 7c8a8f6..9cd1df1 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -17,6 +17,9 @@
QStartupWithShell
Indicates whether the inferior must be started with a shell or not.
+* The "maintenance print c-tdesc" command now takes an optional
+ argument which is the file name of XML target description.
+
* New commands
set debug separate-debug-file
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 2a4330b..e3a68d3 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@
+2017-07-26 Yao Qi <yao.qi@linaro.org>
+
+ * gdb.texinfo (Maintenance Commands): Document optional
+ argument of "maint print c-tdesc".
+
2017-07-18 Yao Qi <yao.qi@linaro.org>
* gdb.texinfo (Maintenance Commands): Improve the doc to
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 5f55a67..08a7681 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -34687,12 +34687,16 @@ checksum.
Print the entire architecture configuration. The optional argument
@var{file} names the file where the output goes.
-@kindex maint print c-tdesc
+@kindex maint print c-tdesc @r{[}@var{file}@r{]}
@item maint print c-tdesc
-Print the current target description (@pxref{Target Descriptions}) as
-a C source file. 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.
+Print the target description (@pxref{Target Descriptions}) as
+a C source file. By default, the target description is for the current
+target, but if the optional argument @var{file} is provided, that file
+is used to produce the description. The @var{file} should be an XML
+document, of the form described in @ref{Target Description Format}.
+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 dummy-frames
@item maint print dummy-frames
diff --git a/gdb/features/Makefile b/gdb/features/Makefile
index 75741ac..7ddb578 100644
--- a/gdb/features/Makefile
+++ b/gdb/features/Makefile
@@ -254,8 +254,7 @@ $(outdir)/%.dat: %.xml number-regs.xsl sort-regs.xsl gdbserver-regs.xsl
cfiles: $(CFILES)
%.c: %.xml
- $(GDB) -nx -q -batch \
- -ex "set tdesc filename $<" -ex 'maint print c-tdesc' > $@.tmp
+ $(GDB) -nx -q -batch -ex 'maint print c-tdesc $<' > $@.tmp
sh ../../move-if-change $@.tmp $@
# Other dependencies.
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 9484f01..4129486 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -1729,18 +1729,29 @@ maint_print_c_tdesc_cmd (char *args, int from_tty)
int ix, ix2, ix3;
int printed_field_type = 0;
- /* Use the global target-supplied description, not the current
- architecture's. This lets a GDB for one architecture generate C
- for another architecture's description, even though the gdbarch
- initialization code will reject the new description. */
- tdesc = current_target_desc;
+ if (args == NULL)
+ {
+ /* Use the global target-supplied description, not the current
+ architecture's. This lets a GDB for one architecture generate C
+ for another architecture's description, even though the gdbarch
+ initialization code will reject the new description. */
+ tdesc = current_target_desc;
+ filename = target_description_filename;
+ }
+ else
+ {
+ /* Use the target description from the XML file. */
+ filename = args;
+ tdesc = file_read_description_xml (filename);
+ }
+
if (tdesc == NULL)
error (_("There is no target description to print."));
- if (target_description_filename == NULL)
+ if (filename == NULL)
error (_("The current target description did not come from an XML file."));
- filename = lbasename (target_description_filename);
+ filename = lbasename (filename);
function = (char *) alloca (strlen (filename) + 1);
for (inp = filename, outp = function; *inp != '\0'; inp++)
if (*inp == '.')