* Makefile.in (XMLFILES): Add library-list.dtd.

(ALLDEPFILES): Add solib-target.o.
	(solib-target.o): New rule.
	* remote.c (PACKET_qXfer_libraries): New constant.
	(remote_protocol_features): Add qXfer:libraries:read.
	(remote_wait): Recognize library stop replies.
	(remote_async_wait): Likewise.  Fix typo.
	(remote_xfer_partial): Handle TARGET_OBJECT_LIBRARIES.
	(init_remote_async_ops): Fix typo.
	(_initialize_remote): Register "set remote library-info-packet".
	* solib-som.c (som_current_sos): Set addr_low and addr_high.
	* solib-target.c: New file.
	* solib.c (solib_map_sections): Use addr_low and addr_high instead
	of textsection.
	(info_sharedlibrary_command): Likewise.
	(solib_add_library, solib_remove_library): New.
	* solist.h (struct so_list): Replace textsection with addr_low and
	addr_high.
	* target.h (enum target_object): Add TARGET_OBJECT_LIBRARIES.
	* NEWS: Describe new qXfer:libraries:read and shared library
	event support.
	* features/library-list.dtd: New.

	* gdb.texinfo (Remote Configuration): Document library-info-packet.
	Add other missing entries.  Adjust the table size to fit.
	(Stop Reply Packets): Use @itemize instead of @enumerate.  Document
	stop reasons including the new "library" event.
	(General Query Packets): Adjust table widths for qSupported.  Mention
	qXfer:libraries:read reply to qSupported and document the new packet.
	(Library List Format): New section.
This commit is contained in:
Daniel Jacobowitz
2007-07-02 22:01:09 +00:00
parent b0f4b84b5c
commit cfa9d6d991
12 changed files with 657 additions and 37 deletions

View File

@ -316,9 +316,15 @@ solib_map_sections (void *arg)
object's file by the base address to which the object was actually
mapped. */
ops->relocate_section_addresses (so, p);
if (strcmp (p->the_bfd_section->name, ".text") == 0)
/* If the target didn't provide information about the address
range of the shared object, assume we want the location of
the .text section. */
if (so->addr_low == 0 && so->addr_high == 0
&& strcmp (p->the_bfd_section->name, ".text") == 0)
{
so->textsection = p;
so->addr_low = p->addr;
so->addr_high = p->endaddr;
}
}
@ -742,15 +748,15 @@ info_sharedlibrary_command (char *ignore, int from_tty)
}
printf_unfiltered ("%-*s", addr_width,
so->textsection != NULL
so->addr_high != 0
? hex_string_custom (
(LONGEST) so->textsection->addr,
(LONGEST) so->addr_low,
addr_width - 4)
: "");
printf_unfiltered ("%-*s", addr_width,
so->textsection != NULL
so->addr_high != 0
? hex_string_custom (
(LONGEST) so->textsection->endaddr,
(LONGEST) so->addr_high,
addr_width - 4)
: "");
printf_unfiltered ("%-12s", so->symbols_loaded ? "Yes" : "No");