]> git.saurik.com Git - apple/dyld.git/blame - include/mach-o/dyld_gdb.h
dyld-353.2.3.tar.gz
[apple/dyld.git] / include / mach-o / dyld_gdb.h
CommitLineData
0959b6d4
A
1/*
2 * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23#ifndef _DYLD_GDB_
24#define _DYLD_GDB_
bac542e6 25
0959b6d4 26/*
bac542e6 27 * For Mac OS X 10.4 or later, use the interface in mach-o/dylib_images.h
0959b6d4 28 */
bac542e6 29#include <mach-o/dyld_images.h>
0959b6d4
A
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
bac542e6
A
35/*
36 * Prior to Mac OS 10.4, this is the interface gdb used to discover the mach-o images loaded in a process
37 */
832b6fce 38#if __i386__
0959b6d4
A
39/*
40 * gdb_dyld_version is the version of gdb interface that dyld is currently
41 * exporting. For the interface described in this header file gdb_dyld_version
42 * is 2. As the gdb/dyld interface changes this number will be incremented and
43 * comments will be added as to what are the are changes for the various
44 * versions.
45 */
46extern unsigned int gdb_dyld_version;
47
48/*
49 * gdb_dyld_state_changed is the internal dyld routine called by dyld to notify
50 * gdb that the state of the data structures has changed. gdb is expected to
51 * put a break point on this routine and re-read the internal dyld data
52 * structures below when this break point is hit.
53 */
54extern void gdb_dyld_state_changed(void);
55
56/*
57 * gdb looks directly at parts of two of dyld's internal data structures. The
58 * list of object file images and the list of library images. The parts of
59 * these structures that gdb looks at will not change unless the value of
60 * gdb_dyld_version changes. The size of these structures and the other fields
61 * that gdb does not look at may change.
62 *
63 * struct object_images {
64 * struct object_image images[NOBJECT_IMAGES];
65 * unsigned long nimages;
66 * struct object_images *next_images;
67 * ...
68 * };
69 *
70 * struct library_images {
71 * struct library_image images[NLIBRARY_IMAGES];
72 * unsigned long nimages;
73 * struct library_images *next_images;
74 * ...
75 * };
76 *
77 * Both the object_image structure and the library_image structure
78 * start with a structure containing the following fields:
79 *
80 * struct image {
81 * char *physical_name; physical image name (file name)
82 * unsigned long vmaddr_slide; the slide from the staticly linked address
83 * struct mach_header *mh; address of the mach header of the image
84 * unsigned long valid; TRUE if this is struct is valid
85 * char *name; image name for reporting errors
86 * ...
87 * };
88 *
89 * In gdb_dyld_version 1 the first field was "name". In gdb_dyld_version 2 the
90 * first field was changed to "physical_name" and a new fifth field "name" was
91 * added. These two fields are set to the same values except in the case of
92 * zero-link. In zero-link the NSLinkModule() option
93 * NSLINKMODULE_OPTION_TRAILING_PHYS_NAME is used and then the physical_name is
94 * the file name of the module zero-link loaded that is part of the logical
95 * image "name".
96 */
97
98/* object_images is the global object_images structure */
99
100/* the number of gdb_object_image structures present per bucket */
101extern unsigned int gdb_nobject_images;
102
103/* the size of each gdb_object_image structure */
104extern unsigned int gdb_object_image_size;
105
106/* library_images is the global library_images structure */
107
108/* the number of gdb_library_image structures present per bucket */
109extern unsigned int gdb_nlibrary_images;
110
111/* the size of each gdb_library_image structure */
112extern unsigned int gdb_library_image_size;
113
bac542e6 114#endif
0959b6d4
A
115
116
117
118#ifdef __cplusplus
119}
120#endif
121
122#endif /* _DYLD_GDB_ */