~ubuntu-branches/ubuntu/karmic/insight/karmic

« back to all changes in this revision

Viewing changes to gdb/ia64-linux-tdep.c

  • Committer: Bazaar Package Importer
  • Author(s): Masayuki Hatta (mhatta)
  • Date: 2007-12-04 22:37:09 UTC
  • mfrom: (1.2.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20071204223709-jxj396d1ox92s8ox
Tags: 6.7.1.dfsg.1-1
* New upstream release.
* This typo has been fixed in the upstream - closes: #314037.
* Removed non-free documents (GFDL'd with Invariant Sections, etc.).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* Target-dependent code for the IA-64 for GDB, the GNU debugger.
2
2
 
3
 
   Copyright (C) 2000, 2004, 2005 Free Software Foundation, Inc.
 
3
   Copyright (C) 2000, 2004, 2005, 2007 Free Software Foundation, Inc.
4
4
 
5
5
   This file is part of GDB.
6
6
 
7
7
   This program is free software; you can redistribute it and/or modify
8
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
 
9
   the Free Software Foundation; either version 3 of the License, or
10
10
   (at your option) any later version.
11
11
 
12
12
   This program is distributed in the hope that it will be useful,
15
15
   GNU General Public License for more details.
16
16
 
17
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., 51 Franklin Street, Fifth Floor,
20
 
   Boston, MA 02110-1301, USA.  */
 
18
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
19
 
22
20
#include "defs.h"
23
21
#include "ia64-tdep.h"
26
24
#include "regcache.h"
27
25
#include "osabi.h"
28
26
#include "solib-svr4.h"
 
27
#include "symtab.h"
29
28
 
30
29
/* The sigtramp code is in a non-readable (executable-only) region
31
30
   of memory called the ``gate page''.  The addresses in question
38
37
/* Offset to sigcontext structure from frame of handler */
39
38
#define IA64_LINUX_SIGCONTEXT_OFFSET 192
40
39
 
41
 
int
42
 
ia64_linux_in_sigtramp (CORE_ADDR pc, char *func_name)
 
40
static int
 
41
ia64_linux_pc_in_sigtramp (CORE_ADDR pc)
43
42
{
44
43
  return (pc >= (CORE_ADDR) GATE_AREA_START && pc < (CORE_ADDR) GATE_AREA_END);
45
44
}
99
98
}
100
99
 
101
100
static void
102
 
ia64_linux_write_pc (CORE_ADDR pc, ptid_t ptid)
 
101
ia64_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
103
102
{
104
 
  ia64_write_pc (pc, ptid);
 
103
  ia64_write_pc (regcache, pc);
105
104
 
106
105
  /* We must be careful with modifying the instruction-pointer: if we
107
106
     just interrupt a system call, the kernel would ordinarily try to
112
111
 
113
112
     The clearing of r10 is safe as long as ia64_write_pc() is only
114
113
     called as part of setting up an inferior call.  */
115
 
  write_register_pid (IA64_GR10_REGNUM, 0, ptid);
 
114
  regcache_cooked_write_unsigned (regcache, IA64_GR10_REGNUM, 0);
116
115
}
117
116
 
118
117
static void
124
123
     registers are saved.  */
125
124
  tdep->sigcontext_register_address = ia64_linux_sigcontext_register_address;
126
125
 
 
126
  /* Set the pc_in_sigtramp method.  */
 
127
  tdep->pc_in_sigtramp = ia64_linux_pc_in_sigtramp;
 
128
 
127
129
  set_gdbarch_write_pc (gdbarch, ia64_linux_write_pc);
128
130
 
 
131
  set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
 
132
 
129
133
  /* Enable TLS support.  */
130
134
  set_gdbarch_fetch_tls_load_module_address (gdbarch,
131
135
                                             svr4_fetch_objfile_link_map);