test suite fixlet for gdb.trace
[deliverable/binutils-gdb.git] / gdb / sparc-sol2-nat.c
CommitLineData
386c036b
MK
1/* Native-dependent code for Solaris SPARC.
2
28e7fd62 3 Copyright (C) 2003-2013 Free Software Foundation, Inc.
386c036b
MK
4
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
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
386c036b
MK
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
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
386c036b
MK
19
20#include "defs.h"
21#include "regcache.h"
22
23#include <sys/procfs.h>
24#include "gregset.h"
25
26#include "sparc-tdep.h"
d1a7880c
PA
27#include "target.h"
28#include "procfs.h"
386c036b
MK
29
30/* This file provids the (temporary) glue between the Solaris SPARC
31 target dependent code and the machine independent SVR4 /proc
32 support. */
33
34/* Solaris 7 (Solaris 2.7, SunOS 5.7) and up support two process data
35 models, the traditional 32-bit data model (ILP32) and the 64-bit
36 data model (LP64). The format of /proc depends on the data model
37 of the observer (the controlling process, GDB in our case). The
38 Solaris header files conveniently define PR_MODEL_NATIVE to the
39 data model of the controlling process. If its value is
40 PR_MODEL_LP64, we know that GDB is being compiled as a 64-bit
41 program.
42
43 GNU/Linux uses the same formats as Solaris for its core files (but
44 not for ptrace(2)). The GNU/Linux headers don't define
45 PR_MODEL_NATIVE though. Therefore we rely on the __arch64__ define
46 provided by GCC to determine the appropriate data model.
47
48 Note that a 32-bit GDB won't be able to debug a 64-bit target
49 process using /proc on Solaris. */
50
e226a4a0 51#if (defined (__arch64__) || \
fb316966 52 (defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)))
386c036b
MK
53
54#include "sparc64-tdep.h"
55
56#define sparc_supply_gregset sparc64_supply_gregset
57#define sparc_supply_fpregset sparc64_supply_fpregset
58#define sparc_collect_gregset sparc64_collect_gregset
59#define sparc_collect_fpregset sparc64_collect_fpregset
60
61#define sparc_sol2_gregset sparc64_sol2_gregset
62#define sparc_sol2_fpregset sparc64_sol2_fpregset
63
64#else
65
66#define sparc_supply_gregset sparc32_supply_gregset
67#define sparc_supply_fpregset sparc32_supply_fpregset
68#define sparc_collect_gregset sparc32_collect_gregset
69#define sparc_collect_fpregset sparc32_collect_fpregset
70
71#define sparc_sol2_gregset sparc32_sol2_gregset
72#define sparc_sol2_fpregset sparc32_sol2_fpregset
73
74#endif
75
76void
7f7fe91e 77supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
386c036b 78{
7f7fe91e 79 sparc_supply_gregset (&sparc_sol2_gregset, regcache, -1, gregs);
386c036b
MK
80}
81
82void
7f7fe91e 83supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
386c036b 84{
b8293cc8 85 sparc_supply_fpregset (&sparc_sol2_fpregset, regcache, -1, fpregs);
386c036b
MK
86}
87
88void
7f7fe91e 89fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
386c036b 90{
7f7fe91e 91 sparc_collect_gregset (&sparc_sol2_gregset, regcache, regnum, gregs);
386c036b
MK
92}
93
94void
c378eb4e
MS
95fill_fpregset (const struct regcache *regcache,
96 prfpregset_t *fpregs, int regnum)
386c036b 97{
b8293cc8 98 sparc_collect_fpregset (&sparc_sol2_fpregset, regcache, regnum, fpregs);
386c036b 99}
d1a7880c
PA
100
101/* Provide a prototype to silence -Wmissing-prototypes. */
102extern initialize_file_ftype _initialize_sparc_sol2_nat;
103
104void
105_initialize_sparc_sol2_nat (void)
106{
107 struct target_ops *t;
108
109 t = procfs_target ();
c378eb4e 110#ifdef NEW_PROC_API /* Solaris 6 and above can do HW watchpoints. */
d1a7880c
PA
111 procfs_use_watchpoints (t);
112#endif
113 add_target (t);
114}
This page took 1.095469 seconds and 4 git commands to generate.