2007-10-08 Markus Deuling <deuling@de.ibm.com>
[deliverable/binutils-gdb.git] / gdb / solib-svr4.h
CommitLineData
13437d4b 1/* Handle shared libraries for GDB, the GNU Debugger.
e4bbbda8 2
6aba47ca 3 Copyright (C) 2000, 2004, 2006, 2007 Free Software Foundation, Inc.
13437d4b
KB
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
13437d4b
KB
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/>. */
13437d4b 19
82b38f72
MK
20#ifndef SOLIB_SVR4_H
21#define SOLIB_SVR4_H
db1ea9ba 22
da3331ec 23struct objfile;
7d522c90
DJ
24struct target_so_ops;
25
26extern struct target_so_ops svr4_so_ops;
da3331ec 27
13437d4b
KB
28/* Critical offsets and sizes which describe struct r_debug and
29 struct link_map on SVR4-like targets. All offsets and sizes are
30 in bytes unless otherwise specified. */
31
32struct link_map_offsets
33 {
e4cd0d6a
MK
34 /* Offset and size of r_debug.r_version. */
35 int r_version_offset, r_version_size;
13437d4b 36
e4cd0d6a 37 /* Offset of r_debug.r_map. */
13437d4b
KB
38 int r_map_offset;
39
e4cd0d6a
MK
40 /* Offset of r_debug.r_ldsomap. */
41 int r_ldsomap_offset;
13437d4b
KB
42
43 /* Size of struct link_map (or equivalent), or at least enough of it
44 to be able to obtain the fields below. */
45 int link_map_size;
46
47 /* Offset to l_addr field in struct link_map. */
48 int l_addr_offset;
49
cc10cae3
AO
50 /* Offset to l_ld field in struct link_map. */
51 int l_ld_offset;
52
13437d4b
KB
53 /* Offset to l_next field in struct link_map. */
54 int l_next_offset;
55
13437d4b
KB
56 /* Offset to l_prev field in struct link_map. */
57 int l_prev_offset;
58
13437d4b
KB
59 /* Offset to l_name field in struct link_map. */
60 int l_name_offset;
13437d4b
KB
61 };
62
e5e2b9ff
KB
63/* set_solib_svr4_fetch_link_map_offsets() is intended to be called by
64 a <arch>_gdbarch_init() function. It is used to establish an
65 architecture specific link_map_offsets fetcher for the architecture
66 being defined. */
67
68extern void set_solib_svr4_fetch_link_map_offsets
69 (struct gdbarch *gdbarch, struct link_map_offsets *(*func) (void));
21479ded 70
550633cb
EZ
71/* This function is called by thread_db.c. Return the address of the
72 link map for the given objfile. */
73extern CORE_ADDR svr4_fetch_objfile_link_map (struct objfile *objfile);
74
21479ded
KB
75/* legacy_svr4_fetch_link_map_offsets_hook is a pointer to a function
76 which is used to fetch link map offsets. It will only be set
7095b863
MS
77 by solib-legacy.c, if at all. */
78extern struct link_map_offsets *(*legacy_svr4_fetch_link_map_offsets_hook) (void);
e4bbbda8
MK
79
80/* Fetch (and possibly build) an appropriate `struct link_map_offsets'
81 for ILP32 and LP64 SVR4 systems. */
82extern struct link_map_offsets *svr4_ilp32_fetch_link_map_offsets (void);
83extern struct link_map_offsets *svr4_lp64_fetch_link_map_offsets (void);
db1ea9ba 84
7d522c90
DJ
85/* Return 1 if PC lies in the dynamic symbol resolution code of the
86 SVR4 run time loader. */
87int svr4_in_dynsym_resolve_code (CORE_ADDR pc);
88
82b38f72 89#endif /* solib-svr4.h */
This page took 0.934587 seconds and 4 git commands to generate.