Multi-target support
[deliverable/binutils-gdb.git] / gdb / sol2-tdep.c
CommitLineData
081bf9da
MK
1/* Target-dependent code for Solaris.
2
b811d2c2 3 Copyright (C) 2006-2020 Free Software Foundation, Inc.
081bf9da
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
081bf9da
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/>. */
081bf9da
MK
19
20#include "defs.h"
21#include "frame.h"
22#include "symtab.h"
28439f5e 23#include "inferior.h"
77e371c0 24#include "objfiles.h"
081bf9da
MK
25
26#include "sol2-tdep.h"
27
28CORE_ADDR
29sol2_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
30{
3b7344d5 31 struct bound_minimal_symbol msym;
081bf9da
MK
32
33 msym = lookup_minimal_symbol("elf_bndr", NULL, NULL);
77e371c0 34 if (msym.minsym && BMSYMBOL_VALUE_ADDRESS (msym) == pc)
c7ce8faa 35 return frame_unwind_caller_pc (get_current_frame ());
081bf9da
MK
36
37 return 0;
38}
28439f5e
PA
39
40/* This is how we want PTIDs from Solaris core files to be
41 printed. */
42
a068643d 43std::string
28439f5e
PA
44sol2_core_pid_to_str (struct gdbarch *gdbarch, ptid_t ptid)
45{
3e3420f6
PA
46 struct inferior *inf;
47 int pid;
28439f5e 48
3e3420f6
PA
49 /* Check whether we're printing an LWP (gdb thread) or a
50 process. */
e38504b3 51 pid = ptid.lwp ();
3e3420f6
PA
52 if (pid != 0)
53 {
54 /* A thread. */
a068643d 55 return string_printf ("LWP %ld", ptid.lwp ());
3e3420f6
PA
56 }
57
58 /* GDB didn't use to put a NT_PSTATUS note in Solaris cores. If
59 that's missing, then we're dealing with a fake PID corelow.c made
60 up. */
5b6d1e4f 61 inf = find_inferior_ptid (current_inferior ()->process_target (), ptid);
3e3420f6 62 if (inf == NULL || inf->fake_pid_p)
a068643d 63 return "<core>";
3e3420f6
PA
64
65 /* Not fake; print as usual. */
66 return normal_pid_to_str (ptid);
28439f5e 67}
This page took 1.410775 seconds and 4 git commands to generate.