]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/sparc-sol2-nat.c
Remove old lint code
[thirdparty/binutils-gdb.git] / gdb / sparc-sol2-nat.c
CommitLineData
386c036b
MK
1/* Native-dependent code for Solaris SPARC.
2
e2882c85 3 Copyright (C) 2003-2018 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
b4fd25c9
AA
61#define sparc_sol2_gregmap sparc64_sol2_gregmap
62#define sparc_sol2_fpregmap sparc64_sol2_fpregmap
386c036b
MK
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
b4fd25c9
AA
71#define sparc_sol2_gregmap sparc32_sol2_gregmap
72#define sparc_sol2_fpregmap sparc32_sol2_fpregmap
386c036b
MK
73
74#endif
75
76void
7f7fe91e 77supply_gregset (struct regcache *regcache, const prgregset_t *gregs)
386c036b 78{
b4fd25c9 79 sparc_supply_gregset (&sparc_sol2_gregmap, regcache, -1, gregs);
386c036b
MK
80}
81
82void
7f7fe91e 83supply_fpregset (struct regcache *regcache, const prfpregset_t *fpregs)
386c036b 84{
b4fd25c9 85 sparc_supply_fpregset (&sparc_sol2_fpregmap, regcache, -1, fpregs);
386c036b
MK
86}
87
88void
7f7fe91e 89fill_gregset (const struct regcache *regcache, prgregset_t *gregs, int regnum)
386c036b 90{
b4fd25c9 91 sparc_collect_gregset (&sparc_sol2_gregmap, regcache, regnum, gregs);
386c036b
MK
92}
93
94void
c378eb4e
MS
95fill_fpregset (const struct regcache *regcache,
96 prfpregset_t *fpregs, int regnum)
386c036b 97{
b4fd25c9 98 sparc_collect_fpregset (&sparc_sol2_fpregmap, regcache, regnum, fpregs);
386c036b 99}