Commit | Line | Data |
---|---|---|
c906108c | 1 | /* IBM RS/6000 native-dependent macros for GDB, the GNU debugger. |
6aba47ca | 2 | Copyright 1986, 1987, 1989, 1991, 1992, 1994, 1996, 1999, 2000, 2001, 2007 |
a8079a9b | 3 | Free Software Foundation, Inc. |
c906108c | 4 | |
c5aa993b JM |
5 | This file is part of GDB. |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 2 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program; if not, write to the Free Software | |
19 | Foundation, Inc., 59 Temple Place - Suite 330, | |
20 | Boston, MA 02111-1307, USA. */ | |
c906108c | 21 | |
c906108c SS |
22 | /* When a child process is just starting, we sneak in and relocate |
23 | the symbol table (and other stuff) after the dynamic linker has | |
24 | figured out where they go. */ | |
25 | ||
26 | #define SOLIB_CREATE_INFERIOR_HOOK(PID) \ | |
27 | do { \ | |
28 | xcoff_relocate_symtab (PID); \ | |
29 | } while (0) | |
30 | ||
31 | /* When a target process or core-file has been attached, we sneak in | |
32 | and figure out where the shared libraries have got to. */ | |
33 | ||
990f9fe3 | 34 | #define SOLIB_ADD(a, b, c, d) \ |
39f77062 | 35 | if (PIDGET (inferior_ptid)) \ |
c906108c | 36 | /* Attach to process. */ \ |
39f77062 | 37 | xcoff_relocate_symtab (PIDGET (inferior_ptid)); \ |
c906108c SS |
38 | else \ |
39 | /* Core file. */ \ | |
40 | xcoff_relocate_core (c); | |
41 | ||
a14ed312 | 42 | extern void xcoff_relocate_symtab (unsigned int); |
c906108c | 43 | struct target_ops; |
a14ed312 | 44 | extern void xcoff_relocate_core (struct target_ops *); |
c906108c | 45 | |
a8079a9b | 46 | /* If ADDR lies in a shared library, return its name. */ |
63f58cc5 | 47 | |
a8079a9b PS |
48 | #define PC_SOLIB(PC) xcoff_solib_address(PC) |
49 | extern char *xcoff_solib_address (CORE_ADDR); | |
63f58cc5 | 50 | |
52d16ba8 AC |
51 | /* Flag for machine-specific stuff in shared files. FIXME */ |
52 | #define DEPRECATED_IBM6000_TARGET | |
6f7f3f0d UW |
53 | |
54 | /* AIX has a couple of strange returns from wait(). */ | |
55 | ||
56 | #define CHILD_SPECIAL_WAITSTATUS(ourstatus, hoststatus) ( \ | |
57 | /* "stop after load" status. */ \ | |
58 | (hoststatus) == 0x57c ? (ourstatus)->kind = TARGET_WAITKIND_LOADED, 1 : \ | |
59 | \ | |
60 | /* signal 0. I have no idea why wait(2) returns with this status word. */ \ | |
61 | /* It looks harmless. */ \ | |
62 | (hoststatus) == 0x7f ? (ourstatus)->kind = TARGET_WAITKIND_SPURIOUS, 1 : \ | |
63 | \ | |
64 | /* A normal waitstatus. Let the usual macros deal with it. */ \ | |
65 | 0) | |
66 | ||
67 | /* Notice when a new child process is started. */ | |
68 | ||
69 | #define TARGET_CREATE_INFERIOR_HOOK rs6000_create_inferior | |
70 | extern void rs6000_create_inferior (int); | |
71 |