EOF
}
-#
-# The .h file
-#
-
-exec > new-gdbarch.h
-copyright | sed 1,3d | grep -v 'was created'
-cat <<EOF
-#ifndef GDBARCH_H
-#define GDBARCH_H
-
-#include <vector>
-#include "frame.h"
-#include "dis-asm.h"
-#include "gdb_obstack.h"
-#include "infrun.h"
-#include "osabi.h"
-#include "displaced-stepping.h"
-
-struct floatformat;
-struct ui_file;
-struct value;
-struct objfile;
-struct obj_section;
-struct minimal_symbol;
-struct regcache;
-struct reggroup;
-struct regset;
-struct disassemble_info;
-struct target_ops;
-struct obstack;
-struct bp_target_info;
-struct target_desc;
-struct symbol;
-struct syscall;
-struct agent_expr;
-struct axs_value;
-struct stap_parse_info;
-struct expr_builder;
-struct ravenscar_arch_ops;
-struct mem_range;
-struct syscalls_info;
-struct thread_info;
-struct ui_out;
-struct inferior;
-
-#include "regcache.h"
-
-struct gdbarch_tdep {};
-
-/* The architecture associated with the inferior through the
- connection to the target.
-
- The architecture vector provides some information that is really a
- property of the inferior, accessed through a particular target:
- ptrace operations; the layout of certain RSP packets; the solib_ops
- vector; etc. To differentiate architecture accesses to
- per-inferior/target properties from
- per-thread/per-frame/per-objfile properties, accesses to
- per-inferior/target properties should be made through this
- gdbarch. */
-
-/* This is a convenience wrapper for 'current_inferior ()->gdbarch'. */
-extern struct gdbarch *target_gdbarch (void);
-
-/* Callback type for the 'iterate_over_objfiles_in_search_order'
- gdbarch method. */
-
-typedef int (iterate_over_objfiles_in_search_order_cb_ftype)
- (struct objfile *objfile, void *cb_data);
-
-/* Callback type for regset section iterators. The callback usually
- invokes the REGSET's supply or collect method, to which it must
- pass a buffer - for collects this buffer will need to be created using
- COLLECT_SIZE, for supply the existing buffer being read from should
- be at least SUPPLY_SIZE. SECT_NAME is a BFD section name, and HUMAN_NAME
- is used for diagnostic messages. CB_DATA should have been passed
- unchanged through the iterator. */
-
-typedef void (iterate_over_regset_sections_cb)
- (const char *sect_name, int supply_size, int collect_size,
- const struct regset *regset, const char *human_name, void *cb_data);
-
-/* For a function call, does the function return a value using a
- normal value return or a structure return - passing a hidden
- argument pointing to storage. For the latter, there are two
- cases: language-mandated structure return and target ABI
- structure return. */
-
-enum function_call_return_method
-{
- /* Standard value return. */
- return_method_normal = 0,
-
- /* Language ABI structure return. This is handled
- by passing the return location as the first parameter to
- the function, even preceding "this". */
- return_method_hidden_param,
-
- /* Target ABI struct return. This is target-specific; for instance,
- on ia64 the first argument is passed in out0 but the hidden
- structure return pointer would normally be passed in r8. */
- return_method_struct,
-};
-
-enum class memtag_type
-{
- /* Logical tag, the tag that is stored in unused bits of a pointer to a
- virtual address. */
- logical = 0,
-
- /* Allocation tag, the tag that is associated with every granule of memory in
- the physical address space. Allocation tags are used to validate memory
- accesses via pointers containing logical tags. */
- allocation,
-};
-
-/* Callback types for 'read_core_file_mappings' gdbarch method. */
-
-using read_core_file_mappings_pre_loop_ftype =
- gdb::function_view<void (ULONGEST count)>;
-
-using read_core_file_mappings_loop_ftype =
- gdb::function_view<void (int num,
- ULONGEST start,
- ULONGEST end,
- ULONGEST file_ofs,
- const char *filename,
- const bfd_build_id *build_id)>;
-EOF
-# close it off
-cat <<EOF
-
-#include "gdbarch-gen.h"
-
-extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
-
-
-/* Mechanism for co-ordinating the selection of a specific
- architecture.
-
- GDB targets (*-tdep.c) can register an interest in a specific
- architecture. Other GDB components can register a need to maintain
- per-architecture data.
-
- The mechanisms below ensures that there is only a loose connection
- between the set-architecture command and the various GDB
- components. Each component can independently register their need
- to maintain architecture specific data with gdbarch.
-
- Pragmatics:
-
- Previously, a single TARGET_ARCHITECTURE_HOOK was provided. It
- didn't scale.
-
- The more traditional mega-struct containing architecture specific
- data for all the various GDB components was also considered. Since
- GDB is built from a variable number of (fairly independent)
- components it was determined that the global aproach was not
- applicable. */
-
-
-/* Register a new architectural family with GDB.
-
- Register support for the specified ARCHITECTURE with GDB. When
- gdbarch determines that the specified architecture has been
- selected, the corresponding INIT function is called.
-
- --
-
- The INIT function takes two parameters: INFO which contains the
- information available to gdbarch about the (possibly new)
- architecture; ARCHES which is a list of the previously created
- \`\`struct gdbarch'' for this architecture.
-
- The INFO parameter is, as far as possible, be pre-initialized with
- information obtained from INFO.ABFD or the global defaults.
-
- The ARCHES parameter is a linked list (sorted most recently used)
- of all the previously created architures for this architecture
- family. The (possibly NULL) ARCHES->gdbarch can used to access
- values from the previously selected architecture for this
- architecture family.
-
- The INIT function shall return any of: NULL - indicating that it
- doesn't recognize the selected architecture; an existing \`\`struct
- gdbarch'' from the ARCHES list - indicating that the new
- architecture is just a synonym for an earlier architecture (see
- gdbarch_list_lookup_by_info()); a newly created \`\`struct gdbarch''
- - that describes the selected architecture (see gdbarch_alloc()).
-
- The DUMP_TDEP function shall print out all target specific values.
- Care should be taken to ensure that the function works in both the
- multi-arch and non- multi-arch cases. */
-
-struct gdbarch_list
-{
- struct gdbarch *gdbarch;
- struct gdbarch_list *next;
-};
-
-struct gdbarch_info
-{
- gdbarch_info ()
- /* Ensure the union is zero-initialized. Relies on the fact that there's
- no member larger than TDESC_DATA. */
- : tdesc_data ()
- {}
-
- const struct bfd_arch_info *bfd_arch_info = nullptr;
-
- enum bfd_endian byte_order = BFD_ENDIAN_UNKNOWN;
-
- enum bfd_endian byte_order_for_code = BFD_ENDIAN_UNKNOWN;
-
- bfd *abfd = nullptr;
-
- union
- {
- /* Architecture-specific target description data. Numerous targets
- need only this, so give them an easy way to hold it. */
- struct tdesc_arch_data *tdesc_data;
-
- /* SPU file system ID. This is a single integer, so using the
- generic form would only complicate code. Other targets may
- reuse this member if suitable. */
- int *id;
- };
-
- enum gdb_osabi osabi = GDB_OSABI_UNKNOWN;
-
- const struct target_desc *target_desc = nullptr;
-};
-
-typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
-typedef void (gdbarch_dump_tdep_ftype) (struct gdbarch *gdbarch, struct ui_file *file);
-
-/* DEPRECATED - use gdbarch_register() */
-extern void register_gdbarch_init (enum bfd_architecture architecture, gdbarch_init_ftype *);
-
-extern void gdbarch_register (enum bfd_architecture architecture,
- gdbarch_init_ftype *,
- gdbarch_dump_tdep_ftype *);
-
-
-/* Return a vector of the valid architecture names. Since architectures are
- registered during the _initialize phase this function only returns useful
- information once initialization has been completed. */
-
-extern std::vector<const char *> gdbarch_printable_names ();
-
-
-/* Helper function. Search the list of ARCHES for a GDBARCH that
- matches the information provided by INFO. */
-
-extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *arches, const struct gdbarch_info *info);
-
-
-/* Helper function. Create a preliminary \`\`struct gdbarch''. Perform
- basic initialization using values obtained from the INFO and TDEP
- parameters. set_gdbarch_*() functions are called to complete the
- initialization of the object. */
-
-extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep);
-
-
-/* Helper function. Free a partially-constructed \`\`struct gdbarch''.
- It is assumed that the caller freeds the \`\`struct
- gdbarch_tdep''. */
-
-extern void gdbarch_free (struct gdbarch *);
-
-/* Get the obstack owned by ARCH. */
-
-extern obstack *gdbarch_obstack (gdbarch *arch);
-
-/* Helper function. Allocate memory from the \`\`struct gdbarch''
- obstack. The memory is freed when the corresponding architecture
- is also freed. */
-
-#define GDBARCH_OBSTACK_CALLOC(GDBARCH, NR, TYPE) \
- obstack_calloc<TYPE> (gdbarch_obstack ((GDBARCH)), (NR))
-
-#define GDBARCH_OBSTACK_ZALLOC(GDBARCH, TYPE) \
- obstack_zalloc<TYPE> (gdbarch_obstack ((GDBARCH)))
-
-/* Duplicate STRING, returning an equivalent string that's allocated on the
- obstack associated with GDBARCH. The string is freed when the corresponding
- architecture is also freed. */
-
-extern char *gdbarch_obstack_strdup (struct gdbarch *arch, const char *string);
-
-/* Helper function. Force an update of the current architecture.
-
- The actual architecture selected is determined by INFO, \`\`(gdb) set
- architecture'' et.al., the existing architecture and BFD's default
- architecture. INFO should be initialized to zero and then selected
- fields should be updated.
-
- Returns non-zero if the update succeeds. */
-
-extern int gdbarch_update_p (struct gdbarch_info info);
-
-
-/* Helper function. Find an architecture matching info.
-
- INFO should have relevant fields set, and then finished using
- gdbarch_info_fill.
-
- Returns the corresponding architecture, or NULL if no matching
- architecture was found. */
-
-extern struct gdbarch *gdbarch_find_by_info (struct gdbarch_info info);
-
-
-/* Helper function. Set the target gdbarch to "gdbarch". */
-
-extern void set_target_gdbarch (struct gdbarch *gdbarch);
-
-
-/* Register per-architecture data-pointer.
-
- Reserve space for a per-architecture data-pointer. An identifier
- for the reserved data-pointer is returned. That identifer should
- be saved in a local static variable.
-
- Memory for the per-architecture data shall be allocated using
- gdbarch_obstack_zalloc. That memory will be deleted when the
- corresponding architecture object is deleted.
-
- When a previously created architecture is re-selected, the
- per-architecture data-pointer for that previous architecture is
- restored. INIT() is not re-called.
-
- Multiple registrarants for any architecture are allowed (and
- strongly encouraged). */
-
-struct gdbarch_data;
-
-typedef void *(gdbarch_data_pre_init_ftype) (struct obstack *obstack);
-extern struct gdbarch_data *gdbarch_data_register_pre_init (gdbarch_data_pre_init_ftype *init);
-typedef void *(gdbarch_data_post_init_ftype) (struct gdbarch *gdbarch);
-extern struct gdbarch_data *gdbarch_data_register_post_init (gdbarch_data_post_init_ftype *init);
-
-extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
-
-
-/* Set the dynamic target-system-dependent parameters (architecture,
- byte-order, ...) using information found in the BFD. */
-
-extern void set_gdbarch_from_file (bfd *);
-
-
-/* Initialize the current architecture to the "first" one we find on
- our list. */
-
-extern void initialize_current_architecture (void);
-
-/* gdbarch trace variable */
-extern unsigned int gdbarch_debug;
-
-extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
-
-/* Return the number of cooked registers (raw + pseudo) for ARCH. */
-
-static inline int
-gdbarch_num_cooked_regs (gdbarch *arch)
-{
- return gdbarch_num_regs (arch) + gdbarch_num_pseudo_regs (arch);
-}
-
-#endif
-EOF
-
-exec 1>&2
-../move-if-change new-gdbarch.h gdbarch.h
-rm -f new-gdbarch.h
-
exec > new-gdbarch-gen.h
copyright