/* Parameters for target execution on an RS6000, for GDB, the GNU debugger.
- Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1997
+ Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
+ 1998, 1999, 2000
Free Software Foundation, Inc.
Contributed by IBM Corporation.
#define TEXT_SEGMENT_BASE 0x10000000
-/* Load segment of a given pc value. */
+/* Return whether PC in function NAME is in code that should be skipped when
+ single-stepping. */
-#define PC_LOAD_SEGMENT(PC) pc_load_segment_name(PC)
-extern char *pc_load_segment_name (CORE_ADDR);
-
-/* AIX's assembler doesn't grok dollar signs in identifiers.
- So we use dots instead. This item must be coordinated with G++. */
-#undef CPLUS_MARKER
-#define CPLUS_MARKER '.'
+#define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) \
+ rs6000_in_solib_return_trampoline (pc, name)
+extern int rs6000_in_solib_return_trampoline (CORE_ADDR, char *);
/* If PC is in some function-call trampoline code, return the PC
where the function itself actually starts. If not, return NULL. */
#define FP0_REGNUM 32 /* Floating point register 0 */
#define FPLAST_REGNUM 63 /* Last floating point register */
-/* These #defines are used to parse core files and talk to ptrace, so they
- must remain fixed. */
-#define FIRST_UISA_SP_REGNUM 64 /* first special register number */
-#define LAST_UISA_SP_REGNUM 70 /* last special register number */
-
-/* convert a dbx stab register number (from `r' declaration) to a gdb REGNUM */
-
-#define STAB_REG_TO_REGNUM(value) (value)
-
/* Define other aspects of the stack frame. */
-#define INIT_FRAME_PC_FIRST(fromleaf, prev) \
- prev->pc = (fromleaf ? SAVED_PC_AFTER_CALL (prev->next) : \
- prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ());
-#define INIT_FRAME_PC(fromleaf, prev) /* nothing */
-
-/* Usually a function pointer's representation is simply the address
- of the function. On the RS/6000 however, a function pointer is
- represented by a pointer to a TOC entry. This TOC entry contains
- three words, the first word is the address of the function, the
- second word is the TOC pointer (r2), and the third word is the
- static chain value. Throughout GDB it is currently assumed that a
- function pointer contains the address of the function, which is not
- easy to fix. In addition, the conversion of a function address to
- a function pointer would require allocation of a TOC entry in the
- inferior's memory space, with all its drawbacks. To be able to
- call C++ virtual methods in the inferior (which are called via
- function pointers), find_function_addr uses this macro to get the
- function address from a function pointer. */
-
-#define CONVERT_FROM_FUNC_PTR_ADDR rs6000_convert_from_func_ptr_addr
-extern CORE_ADDR rs6000_convert_from_func_ptr_addr (CORE_ADDR);
+#define DEPRECATED_INIT_FRAME_PC_FIRST(fromleaf, prev) \
+ (fromleaf ? SAVED_PC_AFTER_CALL (prev->next) : \
+ prev->next ? FRAME_SAVED_PC (prev->next) : read_pc ())
+#define INIT_FRAME_PC(fromleaf, prev) (init_frame_pc_noop (fromleaf, prev))
/* Flag for machine-specific stuff in shared files. FIXME */
#define IBM6000_TARGET
/* RS6000/AIX does not support PT_STEP. Has to be simulated. */
-#define SOFTWARE_SINGLE_STEP_P 1
-extern void rs6000_software_single_step (unsigned int, int);
+#define SOFTWARE_SINGLE_STEP_P() 1
+extern void rs6000_software_single_step (enum target_signal, int);
#define SOFTWARE_SINGLE_STEP(sig,bp_p) rs6000_software_single_step (sig, bp_p)
/* Notice when a new child process is started. */
child process. */
extern void (*rs6000_set_host_arch_hook) (int);
+
+/* We need solib.h for building cross debuggers. However, we don't want
+ to clobber any special solib support required by native debuggers, so
+ only include solib.h if SOLIB_ADD is not defined. */
+#ifndef SOLIB_ADD
+#include "solib.h"
+#endif