5b886ab Dynamically composite xml in reply to GDB

Authored and Committed by Yao Qi 6 years ago
    Dynamically composite xml in reply to GDB
    
    GDBserver still uses pre-generated target descriptions in order to
    reply to GDB's query on target description (see xml-builtin-generated.c
    in GDBserver build directory).  This patch teaches GDBserver to
    create XML contents according to the target descriptions rather than
    using pre-generated ones.
    
    First, change target feature c files to pass the feature xml file
    name to tdesc_create_feature, so that target description in GDBserver
    can record them, and create XML contents from these features in
    buffer, like
    
      ...
      <xi:include href="$FEATURE1_XML_NAME"/>
      <xi:include href="$FEATURE2_XML_NAME"/>
      ...
    
    and send this buffer back to GDB.
    
    Note that this patch reuses target_desc.xmltarget a little bit, which is
    to hold the XML contents dynamically generated in tdesc_get_features_xml.
    However, it is not xfree'ed in ~target_desc, because we can't tell it is
    from xstrdup or a literal string.  Since we don't delete target_desc,
    there is no memory leak yet.  After we change all target descriptions to
    the new style, target_desc.xmltarget is from xstrdup, then, we can safely
    xfree it in ~target_desc.
    
    gdb:
    
    2017-07-07  Yao Qi  <yao.qi@linaro.org>
    
    	* arch/tdesc.h (tdesc_create_feature): Add an argument xml.
    	* target-descriptions.c (tdesc_create_feature): Likewise, and
    	adjust code.
    	* features/i386/32bit-avx.c: Re-generated.
    	* features/i386/32bit-avx512.c: Re-generated.
    	* features/i386/32bit-core.c: Re-generated.
    	* features/i386/32bit-linux.c: Re-generated.
    	* features/i386/32bit-mpx.c: Re-generated.
    	* features/i386/32bit-pkeys.c: Re-generated.
    	* features/i386/32bit-sse.c: Re-generated.
    
    gdb/gdbserver:
    
    2017-07-03  Yao Qi  <yao.qi@linaro.org>
    
    	* linux-x86-tdesc.c: Don't include <inttypes.h>.
    	(i386_linux_read_description) [!IN_PROCESS_AGENT]: Call
    	set_tdesc_architecture and set_tdesc_osabi.  Remove code setting
    	.xmltarget.
    	* server.c (get_features_xml): Call tdesc_get_features_xml.
    	* tdesc.c (set_tdesc_architecture): New function.
    	(set_tdesc_osabi): New function.
    	(tdesc_get_features_xml): New function.
    	(tdesc_create_feature): Add an argument.
    	* tdesc.h (struct target_desc) <features>: New field.
    	<arch, osabi>: New field.
    	(~target_desc): xfree features, arch, and osabi.
    	(target_desc::oerator==): Don't compare .xmltarget.
    	[!IN_PROCESS_AGENT] (set_tdesc_architecture): Declare.
    	(set_tdesc_osabi): Likewise.
    	(tdesc_get_features_xml): Likewise.
    
        
file modified
+3 -1
file modified
+6 -4
file modified
+61 -1
file modified
+30 -4
file modified
+6 -3