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


GDB Internals

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

11.6 Native Conditionals

When GDB is configured and compiled, various macros are defined or left undefined, to control compilation when the host and target systems are the same. These macros should be defined (or left undefined) in `nm-system.h'.

ATTACH_DETACH
If defined, then GDB will include support for the attach and detach commands.

CHILD_PREPARE_TO_STORE
If the machine stores all registers at once in the child process, then define this to ensure that all values are correct. This usually entails a read from the child.

[Note that this is incorrectly defined in `xm-system.h' files currently.]

FETCH_INFERIOR_REGISTERS
Define this if the native-dependent code will provide its own routines fetch_inferior_registers and store_inferior_registers in `host-nat.c'. If this symbol is not defined, and `infptrace.c' is included in this configuration, the default routines in `infptrace.c' are used for these functions.

FILES_INFO_HOOK
(Only defined for Convex.)

FP0_REGNUM
This macro is normally defined to be the number of the first floating point register, if the machine has such registers. As such, it would appear only in target-specific code. However, `/proc' support uses this to decide whether floats are in use on this target.

GET_LONGJMP_TARGET
For most machines, this is a target-dependent parameter. On the DECstation and the Iris, this is a native-dependent parameter, since `setjmp.h' is needed to define it.

This macro determines the target PC address that longjmp will jump to, assuming that we have just stopped at a longjmp breakpoint. It takes a CORE_ADDR * as argument, and stores the target PC value through this pointer. It examines the current state of the machine as needed.

I386_USE_GENERIC_WATCHPOINTS
An x86-based machine can define this to use the generic x86 watchpoint support; see I386_USE_GENERIC_WATCHPOINTS.

KERNEL_U_ADDR
Define this to the address of the u structure (the "user struct", also known as the "u-page") in kernel virtual memory. GDB needs to know this so that it can subtract this address from absolute addresses in the upage, that are obtained via ptrace or from core files. On systems that don't need this value, set it to zero.

KERNEL_U_ADDR_BSD
Define this to cause GDB to determine the address of u at runtime, by using Berkeley-style nlist on the kernel's image in the root directory.

KERNEL_U_ADDR_HPUX
Define this to cause GDB to determine the address of u at runtime, by using HP-style nlist on the kernel's image in the root directory.

ONE_PROCESS_WRITETEXT
Define this to be able to, when a breakpoint insertion fails, warn the user that another process may be running with the same executable.

PREPARE_TO_PROCEED (select_it)
This (ugly) macro allows a native configuration to customize the way the proceed function in `infrun.c' deals with switching between threads.

In a multi-threaded task we may select another thread and then continue or step. But if the old thread was stopped at a breakpoint, it will immediately cause another breakpoint stop without any execution (i.e. it will report a breakpoint hit incorrectly). So GDB must step over it first.

If defined, PREPARE_TO_PROCEED should check the current thread against the thread that reported the most recent event. If a step-over is required, it returns TRUE. If select_it is non-zero, it should reselect the old thread.

PROC_NAME_FMT
Defines the format for the name of a `/proc' device. Should be defined in `nm.h' only in order to override the default definition in `procfs.c'.

PTRACE_FP_BUG
See `mach386-xdep.c'.

PTRACE_ARG3_TYPE
The type of the third argument to the ptrace system call, if it exists and is different from int.

REGISTER_U_ADDR
Defines the offset of the registers in the "u area".

SHELL_COMMAND_CONCAT
If defined, is a string to prefix on the shell command used to start the inferior.

SHELL_FILE
If defined, this is the name of the shell to use to run the inferior. Defaults to "/bin/sh".

SOLIB_ADD (filename, from_tty, targ, readsyms)
Define this to expand into an expression that will cause the symbols in filename to be added to GDB's symbol table. If readsyms is zero symbols are not read but any necessary low level processing for filename is still done.

SOLIB_CREATE_INFERIOR_HOOK
Define this to expand into any shared-library-relocation code that you want to be run just after the child process has been forked.

START_INFERIOR_TRAPS_EXPECTED
When starting an inferior, GDB normally expects to trap twice; once when the shell execs, and once when the program itself execs. If the actual number of traps is something other than 2, then define this macro to expand into the number expected.

SVR4_SHARED_LIBS
Define this to indicate that SVR4-style shared libraries are in use.

USE_PROC_FS
This determines whether small routines in `*-tdep.c', which translate register values between GDB's internal representation and the `/proc' representation, are compiled.

U_REGS_OFFSET
This is the offset of the registers in the upage. It need only be defined if the generic ptrace register access routines in `infptrace.c' are being used (that is, `infptrace.c' is configured in, and FETCH_INFERIOR_REGISTERS is not defined). If the default value from `infptrace.c' is good enough, leave it undefined.

The default value means that u.u_ar0 points to the location of the registers. I'm guessing that #define U_REGS_OFFSET 0 means that u.u_ar0 is the location of the registers.

CLEAR_SOLIB
See `objfiles.c'.

DEBUG_PTRACE
Define this to debug ptrace calls.


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

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

Please take a moment to fill out this visitor survey
You can help support this site by visiting the advertisers that sponsor it! (only once each, though)