www.delorie.com/gnu/docs/gdb/gdbint_63.html   search  
 
Buy the book!


GDB Internals

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

9.1 Operating System ABI Variant Handling

GDB provides a mechanism for handling variations in OS ABIs. An OS ABI variant may have influence over any number of variables in the target architecture definition. There are two major components in the OS ABI mechanism: sniffers and handlers.

A sniffer examines a file matching a BFD architecture/flavour pair (the architecture may be wildcarded) in an attempt to determine the OS ABI of that file. Sniffers with a wildcarded architecture are considered to be generic, while sniffers for a specific architecture are considered to be specific. A match from a specific sniffer overrides a match from a generic sniffer. Multiple sniffers for an architecture/flavour may exist, in order to differentiate between two different operating systems which use the same basic file format. The OS ABI framework provides a generic sniffer for ELF-format files which examines the EI_OSABI field of the ELF header, as well as note sections known to be used by several operating systems.

A handler is used to fine-tune the gdbarch structure for the selected OS ABI. There may be only one handler for a given OS ABI for each BFD architecture.

The following OS ABI variants are defined in `osabi.h':

GDB_OSABI_UNKNOWN
The ABI of the inferior is unknown. The default gdbarch settings for the architecture will be used.

GDB_OSABI_SVR4
UNIX System V Release 4

GDB_OSABI_HURD
GNU using the Hurd kernel

GDB_OSABI_SOLARIS
Sun Solaris

GDB_OSABI_OSF1
OSF/1, including Digital UNIX and Compaq Tru64 UNIX

GDB_OSABI_LINUX
GNU using the Linux kernel

GDB_OSABI_FREEBSD_AOUT
FreeBSD using the a.out executable format

GDB_OSABI_FREEBSD_ELF
FreeBSD using the ELF executable format

GDB_OSABI_NETBSD_AOUT
NetBSD using the a.out executable format

GDB_OSABI_NETBSD_ELF
NetBSD using the ELF executable format

GDB_OSABI_WINCE
Windows CE

GDB_OSABI_GO32
DJGPP

GDB_OSABI_NETWARE
Novell NetWare

GDB_OSABI_ARM_EABI_V1
ARM Embedded ABI version 1

GDB_OSABI_ARM_EABI_V2
ARM Embedded ABI version 2

GDB_OSABI_ARM_APCS
Generic ARM Procedure Call Standard

Here are the functions that make up the OS ABI framework:

Function: const char *gdbarch_osabi_name (enum gdb_osabi osabi)
Return the name of the OS ABI corresponding to osabi.

Function: void gdbarch_register_osabi (enum bfd_architecture arch, enum gdb_osabi osabi, void (*init_osabi)(struct gdbarch_info info, struct gdbarch *gdbarch))
Register the OS ABI handler specified by init_osabi for the architecture/OS ABI pair specified by arch and osabi.

Function: void gdbarch_register_osabi_sniffer (enum bfd_architecture arch, enum bfd_flavour flavour, enum gdb_osabi (*sniffer)(bfd *abfd))
Register the OS ABI file sniffer specified by sniffer for the BFD architecture/flavour pair specified by arch and flavour. If arch is bfd_arch_unknown, the sniffer is considered to be generic, and is allowed to examine flavour-flavoured files for any architecture.

Function: enum gdb_osabi gdbarch_lookup_osabi (bfd *abfd)
Examine the file described by abfd to determine its OS ABI. The value GDB_OSABI_UNKNOWN is returned if the OS ABI cannot be determined.

Function: void gdbarch_init_osabi (struct gdbarch info info, struct gdbarch *gdbarch, enum gdb_osabi osabi)
Invoke the OS ABI handler corresponding to osabi to fine-tune the gdbarch structure specified by gdbarch. If a handler corresponding to osabi has not been registered for gdbarch's architecture, a warning will be issued and the debugging session will continue with the defaults already established for gdbarch.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster   donations   bookstore     delorie software   privacy  
  Copyright © 2003   by The Free Software Foundation     Updated Jun 2003