PR ld/3249
* scripttempl/elf.sc: Don't combine .gnu.linkonce.d.*personality*
and .gnu.linkonce.wi.* sections with .data and .debug_info for
relocatable link.
vFlashWrite and vFlashDone packets.
(General Query Packets): Document qXfer:memory-map:read.
Add a new feature for qXfer:memory-map:read.
(Memory map format): New section.
(Target Commands): Mention that gdb can write flash.
(COMMON_OBS): Add target-memory.o.
* memattr.c (lookup_mem_region): Adjust handling for
the top of memory. Improve comments.
* remote.c (packet_check_result): New function, split out
from packet_ok. Recognize "E." as an error prefix.
(packet_ok): Use it.
(remote_write_bytes_aux): New function, renamed from
remote_write_bytes. Take packet header, packet format,
and length flag as arguments.
(remote_write_bytes): Rewrite to use remote_write_bytes_aux.
(remote_send_printf, restore_remote_timeout)
(remote_flash_timeout, remote_flash_erase, remote_flash_write)
(remote_flash_done): New.
(remote_xfer_partial): Handle flash writes.
(init_remote_ops, init_remote_async_ops): Set to_flash_erase
and to_flash_done.
* symfile.c (struct load_section_data): Include a pointer to
the cumulative stats and a request queue. Move most members
to other types.
(struct load_progress_data, struct load_progress_section_data): New
types.
(load_progress): Handle a NULL baton and zero bytes. Update for
type changes.
(load_section_callback): Create memory write requests instead of
writing to memory. Don't print the progress message here.
(clear_memory_write_data): New function.
(generic_load): Use target_write_memory_blocks.
* target-memory.c: New file.
* target.c (update_current_target): Mention new uninherited methods.
(memory_xfer_partial): Issue an error for flash writes.
(target_flash_erase, target_flash_done): New functions.
(target_write_with_progress): Call the progress callback at the
start also.
* target.h (enum target_object): Add TARGET_OBJECT_FLASH.
(target_write_with_progress): Update comment.
(struct target_ops): Add to_flash_erase and to_flash_done.
(target_flash_erase, target_flash_done, struct memory_write_request)
(memory_write_request_s, enum flash_preserve_mode)
(target_write_memory_blocks): New, including a vector type
for memory_write_request_s.
(strtoulst): Moved to ...
* utils.c (HIGH_BYTE_POSN, is_digit_in_base, digit_to_int)
(strtoulst): ... here. Enhanced to behave more similarly
to strtoul.
* defs.h (strtoulst): New prototype.
* memattr.h: Include "vec.h".
(struct mem_region): Remove linked list pointer.
(mem_region_s): New typedef and corresponding vector.
* memattr.c: Include "vec.h".
(mem_region_chain): Delete.
(mem_region_list): New vector pointer.
(mem_region_lessthan): New function.
(create_mem_region): Remove unused return value. Use vector
operations. Remove linear search.
(delete_mem_region): Delete.
(lookup_mem_region): Use vector operations. Add a FIXME.
(mem_info_command): Update to work with vectors.
(mem_enable, mem_enable_command, mem_disable, mem_disable_command)
(mem_free, mem_delete): Likewise.
* remote.c (remote_thread_alive): Remove local buf.
(remote_get_threadinfo): Remove local threadinfo_pkt.
(remote_get_threadlist): Remove unused threadlist_packet.
(remote_current_thread): Remove local buf.
(remote_threads_info): Set bufp after getpkt.
(remote_threads_extra_info): Remove local bufp.
(get_offsets): Set buf after getpkt.
(remote_check_symbols): Set reply after getpkt.
(remote_vcont_probe): Set buf after getpkt.
(remote_resume): Set buf after set_thread.
(remote_wait, remote_async_wait): Set buf after getpkt.
(fetch_register_using_p): Set buf after remote_send.
(remote_fetch_registers): Likewise.
(store_register_using_P): Don't use buf after remote_send.
(check_binary_download, remote_write_bytes)
(remote_read_bytes, remote_rcmd): Remove local buf.