diff options
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/NEWS | 3 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 14 | ||||
-rw-r--r-- | gdb/features/Makefile | 3 | ||||
-rw-r--r-- | gdb/target-descriptions.c | 25 |
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. @@ -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 == '.') |