+/* Copy inferior target description data. Used for example when
+ handling (v)forks, where child's description is the same as the
+ parent's, since the child really is a copy of the parent. */
+
+void copy_inferior_target_desc_info (struct inferior *destinf,
+ struct inferior *srcinf);
+
+/* Free a target_desc_info object. */
+
+void target_desc_info_free (struct target_desc_info *tdesc_info);
+
+/* Returns true if INFO indicates the target description had been
+ supplied by the user. */
+
+int target_desc_info_from_user_p (struct target_desc_info *info);
+
+/* Record architecture-specific functions to call for pseudo-register
+ support. If tdesc_use_registers is called and gdbarch_num_pseudo_regs
+ is greater than zero, then these should be called as well.
+ They are equivalent to the gdbarch methods with similar names,
+ except that they will only be called for pseudo registers. */
+
+void set_tdesc_pseudo_register_name
+ (struct gdbarch *gdbarch, gdbarch_register_name_ftype *pseudo_name);
+
+void set_tdesc_pseudo_register_type
+ (struct gdbarch *gdbarch, gdbarch_register_type_ftype *pseudo_type);
+
+void set_tdesc_pseudo_register_reggroup_p
+ (struct gdbarch *gdbarch,
+ gdbarch_register_reggroup_p_ftype *pseudo_reggroup_p);
+
+/* Update GDBARCH to use the TARGET_DESC for registers. TARGET_DESC
+ may be GDBARCH's target description or (if GDBARCH does not have
+ one which describes registers) another target description
+ constructed by the gdbarch initialization routine.
+
+ Fixed register assignments are taken from EARLY_DATA, which is freed.
+ All registers which have not been assigned fixed numbers are given
+ numbers above the current value of gdbarch_num_regs.
+ gdbarch_num_regs and various register-related predicates are updated to
+ refer to the target description. This function should only be called from
+ the architecture's gdbarch initialization routine, and only after
+ successfully validating the required registers. */
+
+void tdesc_use_registers (struct gdbarch *gdbarch,
+ const struct target_desc *target_desc,
+ struct tdesc_arch_data *early_data);
+
+/* Allocate initial data for validation of a target description during
+ gdbarch initialization. */
+
+struct tdesc_arch_data *tdesc_data_alloc (void);
+
+/* Clean up data allocated by tdesc_data_alloc. This should only
+ be called to discard the data; tdesc_use_registers takes ownership
+ of its EARLY_DATA argument. */
+
+void tdesc_data_cleanup (void *data_untyped);
+
+/* Search FEATURE for a register named NAME. Record REGNO and the
+ register in DATA; when tdesc_use_registers is called, REGNO will be
+ assigned to the register. 1 is returned if the register was found,
+ 0 if it was not. */
+
+int tdesc_numbered_register (const struct tdesc_feature *feature,
+ struct tdesc_arch_data *data,
+ int regno, const char *name);
+
+/* Search FEATURE for a register named NAME, but do not assign a fixed
+ register number to it. */
+
+int tdesc_unnumbered_register (const struct tdesc_feature *feature,
+ const char *name);
+
+/* Search FEATURE for a register named NAME, and return its size in
+ bits. The register must exist. */
+
+int tdesc_register_size (const struct tdesc_feature *feature,
+ const char *name);
+
+/* Search FEATURE for a register with any of the names from NAMES
+ (NULL-terminated). Record REGNO and the register in DATA; when
+ tdesc_use_registers is called, REGNO will be assigned to the
+ register. 1 is returned if the register was found, 0 if it was
+ not. */
+
+int tdesc_numbered_register_choices (const struct tdesc_feature *feature,
+ struct tdesc_arch_data *data,
+ int regno, const char *const names[]);
+
+