annotate boot/getsect.h @ 12:19d073459374

add mach-o header
author taiki
date Mon, 21 Jan 2013 23:29:01 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
19d073459374 add mach-o header
taiki
parents:
diff changeset
1 /*
19d073459374 add mach-o header
taiki
parents:
diff changeset
2 * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
19d073459374 add mach-o header
taiki
parents:
diff changeset
3 *
19d073459374 add mach-o header
taiki
parents:
diff changeset
4 * @APPLE_LICENSE_HEADER_START@
19d073459374 add mach-o header
taiki
parents:
diff changeset
5 *
19d073459374 add mach-o header
taiki
parents:
diff changeset
6 * This file contains Original Code and/or Modifications of Original Code
19d073459374 add mach-o header
taiki
parents:
diff changeset
7 * as defined in and that are subject to the Apple Public Source License
19d073459374 add mach-o header
taiki
parents:
diff changeset
8 * Version 2.0 (the 'License'). You may not use this file except in
19d073459374 add mach-o header
taiki
parents:
diff changeset
9 * compliance with the License. Please obtain a copy of the License at
19d073459374 add mach-o header
taiki
parents:
diff changeset
10 * http://www.opensource.apple.com/apsl/ and read it before using this
19d073459374 add mach-o header
taiki
parents:
diff changeset
11 * file.
19d073459374 add mach-o header
taiki
parents:
diff changeset
12 *
19d073459374 add mach-o header
taiki
parents:
diff changeset
13 * The Original Code and all software distributed under the License are
19d073459374 add mach-o header
taiki
parents:
diff changeset
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
19d073459374 add mach-o header
taiki
parents:
diff changeset
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
19d073459374 add mach-o header
taiki
parents:
diff changeset
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
19d073459374 add mach-o header
taiki
parents:
diff changeset
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
19d073459374 add mach-o header
taiki
parents:
diff changeset
18 * Please see the License for the specific language governing rights and
19d073459374 add mach-o header
taiki
parents:
diff changeset
19 * limitations under the License.
19d073459374 add mach-o header
taiki
parents:
diff changeset
20 *
19d073459374 add mach-o header
taiki
parents:
diff changeset
21 * @APPLE_LICENSE_HEADER_END@
19d073459374 add mach-o header
taiki
parents:
diff changeset
22 */
19d073459374 add mach-o header
taiki
parents:
diff changeset
23 #ifndef _MACH_O_GETSECT_H_
19d073459374 add mach-o header
taiki
parents:
diff changeset
24 #define _MACH_O_GETSECT_H_
19d073459374 add mach-o header
taiki
parents:
diff changeset
25
19d073459374 add mach-o header
taiki
parents:
diff changeset
26 #include <stdint.h>
19d073459374 add mach-o header
taiki
parents:
diff changeset
27 #include <mach-o/loader.h>
19d073459374 add mach-o header
taiki
parents:
diff changeset
28
19d073459374 add mach-o header
taiki
parents:
diff changeset
29 #if __cplusplus
19d073459374 add mach-o header
taiki
parents:
diff changeset
30 extern "C" {
19d073459374 add mach-o header
taiki
parents:
diff changeset
31 #endif /* __cplusplus */
19d073459374 add mach-o header
taiki
parents:
diff changeset
32
19d073459374 add mach-o header
taiki
parents:
diff changeset
33 /*
19d073459374 add mach-o header
taiki
parents:
diff changeset
34 * Runtime interfaces for Mach-O programs. For both 32-bit and 64-bit programs,
19d073459374 add mach-o header
taiki
parents:
diff changeset
35 * where the sizes returned will be 32-bit or 64-bit based on the size of
19d073459374 add mach-o header
taiki
parents:
diff changeset
36 * 'unsigned long'.
19d073459374 add mach-o header
taiki
parents:
diff changeset
37 */
19d073459374 add mach-o header
taiki
parents:
diff changeset
38 extern char *getsectdata(
19d073459374 add mach-o header
taiki
parents:
diff changeset
39 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
40 const char *sectname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
41 unsigned long *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
42
19d073459374 add mach-o header
taiki
parents:
diff changeset
43 extern char *getsectdatafromFramework(
19d073459374 add mach-o header
taiki
parents:
diff changeset
44 const char *FrameworkName,
19d073459374 add mach-o header
taiki
parents:
diff changeset
45 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
46 const char *sectname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
47 unsigned long *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
48
19d073459374 add mach-o header
taiki
parents:
diff changeset
49 extern unsigned long get_end(void);
19d073459374 add mach-o header
taiki
parents:
diff changeset
50 extern unsigned long get_etext(void);
19d073459374 add mach-o header
taiki
parents:
diff changeset
51 extern unsigned long get_edata(void);
19d073459374 add mach-o header
taiki
parents:
diff changeset
52
19d073459374 add mach-o header
taiki
parents:
diff changeset
53 #ifndef __LP64__
19d073459374 add mach-o header
taiki
parents:
diff changeset
54 /*
19d073459374 add mach-o header
taiki
parents:
diff changeset
55 * Runtime interfaces for 32-bit Mach-O programs.
19d073459374 add mach-o header
taiki
parents:
diff changeset
56 */
19d073459374 add mach-o header
taiki
parents:
diff changeset
57 extern const struct section *getsectbyname(
19d073459374 add mach-o header
taiki
parents:
diff changeset
58 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
59 const char *sectname);
19d073459374 add mach-o header
taiki
parents:
diff changeset
60
19d073459374 add mach-o header
taiki
parents:
diff changeset
61 extern uint8_t *getsectiondata(
19d073459374 add mach-o header
taiki
parents:
diff changeset
62 const struct mach_header *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
63 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
64 const char *sectname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
65 unsigned long *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
66
19d073459374 add mach-o header
taiki
parents:
diff changeset
67 extern const struct segment_command *getsegbyname(
19d073459374 add mach-o header
taiki
parents:
diff changeset
68 const char *segname);
19d073459374 add mach-o header
taiki
parents:
diff changeset
69
19d073459374 add mach-o header
taiki
parents:
diff changeset
70 extern uint8_t *getsegmentdata(
19d073459374 add mach-o header
taiki
parents:
diff changeset
71 const struct mach_header *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
72 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
73 unsigned long *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
74
19d073459374 add mach-o header
taiki
parents:
diff changeset
75 #else /* defined(__LP64__) */
19d073459374 add mach-o header
taiki
parents:
diff changeset
76 /*
19d073459374 add mach-o header
taiki
parents:
diff changeset
77 * Runtime interfaces for 64-bit Mach-O programs.
19d073459374 add mach-o header
taiki
parents:
diff changeset
78 */
19d073459374 add mach-o header
taiki
parents:
diff changeset
79 extern const struct section_64 *getsectbyname(
19d073459374 add mach-o header
taiki
parents:
diff changeset
80 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
81 const char *sectname);
19d073459374 add mach-o header
taiki
parents:
diff changeset
82
19d073459374 add mach-o header
taiki
parents:
diff changeset
83 extern uint8_t *getsectiondata(
19d073459374 add mach-o header
taiki
parents:
diff changeset
84 const struct mach_header_64 *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
85 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
86 const char *sectname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
87 unsigned long *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
88
19d073459374 add mach-o header
taiki
parents:
diff changeset
89 extern const struct segment_command_64 *getsegbyname(
19d073459374 add mach-o header
taiki
parents:
diff changeset
90 const char *segname);
19d073459374 add mach-o header
taiki
parents:
diff changeset
91
19d073459374 add mach-o header
taiki
parents:
diff changeset
92 extern uint8_t *getsegmentdata(
19d073459374 add mach-o header
taiki
parents:
diff changeset
93 const struct mach_header_64 *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
94 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
95 unsigned long *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
96
19d073459374 add mach-o header
taiki
parents:
diff changeset
97 #endif /* defined(__LP64__) */
19d073459374 add mach-o header
taiki
parents:
diff changeset
98
19d073459374 add mach-o header
taiki
parents:
diff changeset
99 /*
19d073459374 add mach-o header
taiki
parents:
diff changeset
100 * Interfaces for tools working with 32-bit Mach-O files.
19d073459374 add mach-o header
taiki
parents:
diff changeset
101 */
19d073459374 add mach-o header
taiki
parents:
diff changeset
102 extern char *getsectdatafromheader(
19d073459374 add mach-o header
taiki
parents:
diff changeset
103 const struct mach_header *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
104 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
105 const char *sectname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
106 uint32_t *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
107
19d073459374 add mach-o header
taiki
parents:
diff changeset
108 extern const struct section *getsectbynamefromheader(
19d073459374 add mach-o header
taiki
parents:
diff changeset
109 const struct mach_header *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
110 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
111 const char *sectname);
19d073459374 add mach-o header
taiki
parents:
diff changeset
112
19d073459374 add mach-o header
taiki
parents:
diff changeset
113 /*
19d073459374 add mach-o header
taiki
parents:
diff changeset
114 * Interfaces for tools working with 64-bit Mach-O files.
19d073459374 add mach-o header
taiki
parents:
diff changeset
115 */
19d073459374 add mach-o header
taiki
parents:
diff changeset
116 extern char *getsectdatafromheader_64(
19d073459374 add mach-o header
taiki
parents:
diff changeset
117 const struct mach_header_64 *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
118 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
119 const char *sectname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
120 uint64_t *size);
19d073459374 add mach-o header
taiki
parents:
diff changeset
121
19d073459374 add mach-o header
taiki
parents:
diff changeset
122 extern const struct section_64 *getsectbynamefromheader_64(
19d073459374 add mach-o header
taiki
parents:
diff changeset
123 const struct mach_header_64 *mhp,
19d073459374 add mach-o header
taiki
parents:
diff changeset
124 const char *segname,
19d073459374 add mach-o header
taiki
parents:
diff changeset
125 const char *sectname);
19d073459374 add mach-o header
taiki
parents:
diff changeset
126
19d073459374 add mach-o header
taiki
parents:
diff changeset
127 #if __cplusplus
19d073459374 add mach-o header
taiki
parents:
diff changeset
128 }
19d073459374 add mach-o header
taiki
parents:
diff changeset
129 #endif /* __cplusplus */
19d073459374 add mach-o header
taiki
parents:
diff changeset
130
19d073459374 add mach-o header
taiki
parents:
diff changeset
131 #endif /* _MACH_O_GETSECT_H_ */