+
+ /* Returns the memory map for the target. A return value of NULL
+ means that no memory map is available. If a memory address
+ does not fall within any returned regions, it's assumed to be
+ RAM. The returned memory regions should not overlap.
+
+ The order of regions does not matter; target_memory_map will
+ sort regions by starting address. For that reason, this
+ function should not be called directly except via
+ target_memory_map.
+
+ This method should not cache data; if the memory map could
+ change unexpectedly, it should be invalidated, and higher
+ layers will re-fetch it. */
+ VEC(mem_region_s) *(*to_memory_map) (struct target_ops *);
+
+ /* Erases the region of flash memory starting at ADDRESS, of
+ length LENGTH.
+
+ Precondition: both ADDRESS and ADDRESS+LENGTH should be aligned
+ on flash block boundaries, as reported by 'to_memory_map'. */
+ void (*to_flash_erase) (struct target_ops *,
+ ULONGEST address, LONGEST length);
+
+ /* Finishes a flash memory write sequence. After this operation
+ all flash memory should be available for writing and the result
+ of reading from areas written by 'to_flash_write' should be
+ equal to what was written. */
+ void (*to_flash_done) (struct target_ops *);
+
+ /* Describe the architecture-specific features of this target.
+ Returns the description found, or NULL if no description
+ was available. */
+ const struct target_desc *(*to_read_description) (struct target_ops *ops);
+
+ /* Build the PTID of the thread on which a given task is running,
+ based on LWP and THREAD. These values are extracted from the
+ task Private_Data section of the Ada Task Control Block, and
+ their interpretation depends on the target. */
+ ptid_t (*to_get_ada_task_ptid) (long lwp, long thread);
+
+ /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
+ Return 0 if *READPTR is already at the end of the buffer.
+ Return -1 if there is insufficient buffer for a whole entry.
+ Return 1 if an entry was read into *TYPEP and *VALP. */
+ int (*to_auxv_parse) (struct target_ops *ops, gdb_byte **readptr,
+ gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp);
+
+ /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
+ sequence of bytes in PATTERN with length PATTERN_LEN.
+
+ The result is 1 if found, 0 if not found, and -1 if there was an error
+ requiring halting of the search (e.g. memory read error).
+ If the pattern is found the address is recorded in FOUND_ADDRP. */
+ int (*to_search_memory) (struct target_ops *ops,
+ CORE_ADDR start_addr, ULONGEST search_space_len,
+ const gdb_byte *pattern, ULONGEST pattern_len,
+ CORE_ADDR *found_addrp);
+
+ /* Can target execute in reverse? */
+ int (*to_can_execute_reverse) ();
+
+ /* Does this target support debugging multiple processes
+ simultaneously? */
+ int (*to_supports_multi_process) (void);