Commit | Line | Data |
---|---|---|
ed9a39eb | 1 | /* Target definitions for GNU/Linux on ARM, for GDB. |
ef57c069 | 2 | Copyright 1999, 2000 Free Software Foundation, Inc. |
ed9a39eb JM |
3 | |
4 | This file is part of GDB. | |
5 | ||
6 | This program is free software; you can redistribute it and/or modify | |
7 | it under the terms of the GNU General Public License as published by | |
8 | the Free Software Foundation; either version 2 of the License, or | |
9 | (at your option) any later version. | |
10 | ||
11 | This program is distributed in the hope that it will be useful, | |
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | GNU General Public License for more details. | |
15 | ||
16 | You should have received a copy of the GNU General Public License | |
17 | along with this program; if not, write to the Free Software | |
18 | Foundation, Inc., 59 Temple Place - Suite 330, | |
19 | Boston, MA 02111-1307, USA. */ | |
20 | ||
21 | #ifndef TM_ARMLINUX_H | |
22 | #define TM_ARMLINUX_H | |
23 | ||
24 | /* Include the common ARM target definitions. */ | |
25 | #include "arm/tm-arm.h" | |
26 | ||
4f2e4a4f | 27 | #include "config/tm-linux.h" |
ed9a39eb | 28 | |
ed9a39eb JM |
29 | /* Offset to saved PC in sigcontext structure, from <asm/sigcontext.h> */ |
30 | #define SIGCONTEXT_PC_OFFSET (sizeof(unsigned long) * 18) | |
31 | ||
0e18d038 RE |
32 | /* We've multi-arched this. */ |
33 | #undef IN_SOLIB_CALL_TRAMPOLINE | |
ed9a39eb | 34 | |
fdf39c9a RE |
35 | /* On ARM GNU/Linux, a call to a library routine does not have to go |
36 | through any trampoline code. */ | |
ed9a39eb JM |
37 | #define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) 0 |
38 | ||
0e18d038 RE |
39 | /* We've multi-arched this. */ |
40 | #undef SKIP_TRAMPOLINE_CODE | |
ed9a39eb | 41 | |
ed9a39eb JM |
42 | /* When we call a function in a shared library, and the PLT sends us |
43 | into the dynamic linker to find the function's real address, we | |
44 | need to skip over the dynamic linker call. This function decides | |
45 | when to skip, and where to skip to. See the comments for | |
46 | SKIP_SOLIB_RESOLVER at the top of infrun.c. */ | |
47 | #if 0 | |
48 | #undef IN_SOLIB_DYNSYM_RESOLVE_CODE | |
49 | extern CORE_ADDR arm_in_solib_dynsym_resolve_code (CORE_ADDR pc, char *name); | |
50 | #define IN_SOLIB_DYNSYM_RESOLVE_CODE arm_in_solib_dynsym_resolve_code | |
51 | /* ScottB: Current definition is | |
52 | extern CORE_ADDR in_svr4_dynsym_resolve_code (CORE_ADDR pc, char *name); | |
53 | #define IN_SOLIB_DYNSYM_RESOLVE_CODE in_svr4_dynsym_resolve_code */ | |
54 | #endif | |
55 | ||
2a451106 KB |
56 | /* When the ARM Linux kernel invokes a signal handler, the return |
57 | address points at a special instruction which'll trap back into | |
58 | the kernel. These definitions are used to identify this bit of | |
59 | code as a signal trampoline in order to support backtracing | |
60 | through calls to signal handlers. */ | |
61 | ||
62 | int arm_linux_in_sigtramp (CORE_ADDR pc, char *name); | |
63 | #define IN_SIGTRAMP(pc, name) arm_linux_in_sigtramp (pc, name) | |
64 | ||
65 | /* Each OS has different mechanisms for accessing the various | |
66 | registers stored in the sigcontext structure. These definitions | |
67 | provide a mechanism by which the generic code in arm-tdep.c can | |
68 | find the addresses at which various registers are saved at in the | |
69 | sigcontext structure. If SIGCONTEXT_REGISTER_ADDRESS is not | |
70 | defined, arm-tdep.c will define it to be 0. (See ia64-tdep.c and | |
71 | ia64-linux-tdep.c to see what a similar mechanism looks like when | |
72 | multi-arched.) */ | |
73 | ||
74 | extern CORE_ADDR arm_linux_sigcontext_register_address (CORE_ADDR, CORE_ADDR, | |
75 | int); | |
76 | #define SIGCONTEXT_REGISTER_ADDRESS arm_linux_sigcontext_register_address | |
77 | ||
ed9a39eb | 78 | #endif /* TM_ARMLINUX_H */ |