diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-11-10 19:20:37 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-11-10 19:20:37 +0000 |
commit | 7a10774786f11bc9608da206f79d7d546d5685bb (patch) | |
tree | e7e1cb91283664c7d25a8add96ff9381b967343a /gdb/doc/gdbint.texinfo | |
parent | d8295fe954b3f129fe3439aa17bb2c2be45d264c (diff) | |
download | gdb-7a10774786f11bc9608da206f79d7d546d5685bb.zip gdb-7a10774786f11bc9608da206f79d7d546d5685bb.tar.gz gdb-7a10774786f11bc9608da206f79d7d546d5685bb.tar.bz2 |
gdb/
* arch-utils.c (target_byte_order_user): Renamed from
target_byte_order.
(target_byte_order_auto, selected_byte_order): Removed.
(show_endian): Check target_byte_order_user.
(set_endian): Always update the architecture. Set
target_byte_order_user after success.
(target_architecture_auto): Removed.
(target_architecture_user): New.
(selected_architecture_name, show_architecture): Check it.
(set_architecture): Set target_architecture_user after success.
(gdbarch_from_bfd): Check the argument.
(default_byte_order): New.
(initialize_current_architecture): Set the global default
architecture and endianness.
(gdbarch_info_fill): Remove GDBARCH argument. Do not check the
previous architecture. Use exec_bfd, global selected architecture
and endianness, and global defaults.
* arch-utils.h (selected_byte_order): Remove prototype.
(gdbarch_info_fill): Update.
* exec.c (exec_file_attach): Update the architecture after removing
the current file.
* gdbarch.sh: Update comments.
(find_arch_by_info): Remove OLD_GDBARCH argument. Update call to
gdbarch_info_fill.
(gdbarch_find_by_info): Update call to find_arch_by_info.
* gdbarch.h, gdbarch.c: Regenerated.
* remote-sim.c (gdbsim_open): Use TARGET_BYTE_ORDER.
gdb/doc/
* gdbint.texinfo (Target Architecture Definition): Add new
Initializing a New Architecture section.
Diffstat (limited to 'gdb/doc/gdbint.texinfo')
-rw-r--r-- | gdb/doc/gdbint.texinfo | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo index cb77108..229fb62 100644 --- a/gdb/doc/gdbint.texinfo +++ b/gdb/doc/gdbint.texinfo @@ -2722,6 +2722,41 @@ architecture, a warning will be issued and the debugging session will continue with the defaults already established for @var{gdbarch}. @end deftypefun +@section Initializing a New Architecture + +Each @code{gdbarch} is associated with a single @sc{bfd} architecture, +via a @code{bfd_arch_@var{arch}} constant. The @code{gdbarch} is +registered by a call to @code{register_gdbarch_init}, usually from +the file's @code{_initialize_@var{filename}} routine, which will +be automatically called during @value{GDBN} startup. The arguments +are a @sc{bfd} architecture constant and an initialization function. + +The initialization function has this type: + +@smallexample +static struct gdbarch * +@var{arch}_gdbarch_init (struct gdbarch_info @var{info}, + struct gdbarch_list *@var{arches}) +@end smallexample + +The @var{info} argument contains parameters used to select the correct +architecture, and @var{arches} is a list of architectures which +have already been created with the same @code{bfd_arch_@var{arch}} +value. + +The initialization function should first make sure that @var{info} +is acceptable, and return @code{NULL} if it is not. Then, it should +search through @var{arches} for an exact match to @var{info}, and +return one if found. Lastly, if no exact match was found, it should +create a new architecture based on @var{info} and return it. + +Only information in @var{info} should be used to choose the new +architecture. Historically, @var{info} could be sparse, and +defaults would be collected from the first element on @var{arches}. +However, @value{GDBN} now fills in @var{info} more thoroughly, +so new @code{gdbarch} initialization functions should not take +defaults from @var{arches}. + @section Registers and Memory @value{GDBN}'s model of the target machine is rather simple. |