1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
4 for INTEL64(R), AMD64(R)
6 Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
11 1. Redistributions of source code must retain the above copyright notice,
12 this list of conditions and the following disclaimer.
13 2. Redistributions in binary form must reproduce the above copyright
14 notice, this list of conditions and the following disclaimer in the
15 documentation and/or other materials provided with the distribution.
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
31 /* File Info -----------------------------------------------------------
35 ----------------------------------------------------------------------*/
37 #ifndef DRD64_HEADER_LIBGOBLIN_TYPE
38 #define DRD64_HEADER_LIBGOBLIN_TYPE
40 #include"drd64_libgoblin.h"
43 #define LIBGOBLIN_BINFO_TYPE_NONE 0x00
44 #define LIBGOBLIN_BINFO_TYPE_ELF 0x01
45 #define LIBGOBLIN_BINFO_TYPE_ELF64 0x64
46 #define LIBGOBLIN_BINFO_TYPE_ELF32 0x32
49 ((LIBGOBLIN_BINFO_TYPE_ELF64==((n)->b_type)) ? 0x01 : 0x00)
51 ((LIBGOBLIN_BINFO_TYPE_ELF32==((n)->b_type)) ? 0x01 : 0x00)
52 #define IsBinfoType_Elf64(n) \
53 ((LIBGOBLIN_BINFO_TYPE_ELF64==((n)->b_type)) ? 0x01 : 0x00)
54 #define IsBinfoType_Elf32(n) \
55 ((LIBGOBLIN_BINFO_TYPE_ELF32==((n)->b_type)) ? 0x01 : 0x00)
57 #define LIBGOBLIN_BINFO_ENDIAN_NONE 0x00
58 #define LIBGOBLIN_BINFO_ENDIAN_LITTLE 0x01
59 #define LIBGOBLIN_BINFO_ENDIAN_BIG 0x02
61 #define LIBGOBLIN_BINFO_SECTION_TEXT 0x00
62 #define LIBGOBLIN_BINFO_SECTION_DATA 0x01
63 #define LIBGOBLIN_BINFO_SECTION_BSS 0x02
65 #define LIBGOBLIN_BINFO_PHASE_INIT 0x00
66 #define LIBGOBLIN_BINFO_PHASE_ALLOCED 0x01
67 #define LIBGOBLIN_BINFO_PHASE_BINREAD 0x02
68 #define LIBGOBLIN_BINFO_PHASE_ANALYZED 0x03
70 #define LIBGOBLIN_BINFO_MAXFILES 3
71 #define LIBGOBLIN_BINFO_FILE_EXEC 0
72 #define LIBGOBLIN_BINFO_FILE_CORE 1
73 #define LIBGOBLIN_BINFO_FILE_DEBUG 2
75 #define LIBGOBLIN_BINFO_FILE_MMAP (DWord)0x01
76 #define LIBGOBLIN_BINFO_FILE_EXTALLOC (DWord)0x02
77 #define LIBGOBLIN_BINFO_FILE_INTALLOC (DWord)0x04
79 #define LIBGOBLIN_ELF_SEC_ID_TEXT 0x00
80 #define LIBGOBLIN_ELF_SEC_ID_TEXT_INIT 0x01
81 #define LIBGOBLIN_ELF_SEC_ID_TEXT_FINI 0x02
82 #define LIBGOBLIN_ELF_SEC_ID_DATA 0x03
83 #define LIBGOBLIN_ELF_SEC_ID_BSS 0x04
84 #define LIBGOBLIN_ELF_SEC_ID_GOT 0x05
85 #define LIBGOBLIN_ELF_SEC_ID_GOT_PLT 0x06
86 #define LIBGOBLIN_ELF_SEC_ID_PLT 0x07
87 #define LIBGOBLIN_ELF_SEC_ID_REL_PLT 0x08
88 #define LIBGOBLIN_ELF_SEC_ID_RELA_PLT 0x09
89 #define LIBGOBLIN_ELF_SEC_ID_SHSTRTAB 0x0a
90 #define LIBGOBLIN_ELF_SEC_ID_STRTAB 0x0b
91 #define LIBGOBLIN_ELF_SEC_ID_SYMTAB 0x0c
92 #define LIBGOBLIN_ELF_SEC_ID_DTORS 0x0d
93 #define LIBGOBLIN_ELF_SEC_ID_CTORS 0x0e
94 #define LIBGOBLIN_ELF_SEC_ID_DYNAMIC 0x0f
95 #define LIBGOBLIN_ELF_SEC_ID_DYNSTR 0x10
96 #define LIBGOBLIN_ELF_SEC_ID_DYNSYM 0x11
97 #define LIBGOBLIN_ELF_SEC_ID_EH_FRAME 0x12
98 #define LIBGOBLIN_ELF_SEC_ID_EH_FRAME_HDR 0x13
99 #define LIBGOBLIN_ELF_SEC_ID_COMMENT 0x14
100 #define LIBGOBLIN_ELF_SEC_ID_GNU_VERSION 0x15
101 #define LIBGOBLIN_ELF_SEC_ID_GNU_VERSION_R 0x16
102 #define LIBGOBLIN_ELF_SEC_ID_RODATA 0x17
103 #define LIBGOBLIN_ELF_SEC_ID_NOTE_ABI_TAG 0x18
104 #define LIBGOBLIN_ELF_SEC_ID_HASH 0x19
105 #define LIBGOBLIN_ELF_SEC_ID_INTERP 0x1a
106 #define LIBGOBLIN_ELF_SEC_ID_JCR 0x1b
107 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_ABBREV 0x1c
108 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_INFO 0x1d
109 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_LINE 0x1e
110 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_ARANGES 0x1f
111 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_FRAME 0x20
112 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_LOC 0x21
113 #define LIBGOBLIN_ELF_SEC_ID_DEBUG_PUBNAMES 0x22
115 #define LIBGOBLIN_ELF_SEC_ID_DEFAULT_MAX 0x22
116 #define LIBGOBLIN_ELF_SEC_ID_MAX 0x3f
118 #define LIBGOBLIN_ELF_SEC_STR_TEXT ".text"
119 #define LIBGOBLIN_ELF_SEC_STR_TEXT_INIT ".init"
120 #define LIBGOBLIN_ELF_SEC_STR_TEXT_FINI ".fini"
121 #define LIBGOBLIN_ELF_SEC_STR_DATA ".data"
122 #define LIBGOBLIN_ELF_SEC_STR_BSS ".bss"
123 #define LIBGOBLIN_ELF_SEC_STR_GOT ".got"
124 #define LIBGOBLIN_ELF_SEC_STR_GOT_PLT ".got.plt"
125 #define LIBGOBLIN_ELF_SEC_STR_PLT ".plt"
126 #define LIBGOBLIN_ELF_SEC_STR_REL_PLT ".rel.plt"
127 #define LIBGOBLIN_ELF_SEC_STR_RELA_PLT ".rela.plt"
128 #define LIBGOBLIN_ELF_SEC_STR_SHSTRTAB ".shstrtab"
129 #define LIBGOBLIN_ELF_SEC_STR_STRTAB ".strtab"
130 #define LIBGOBLIN_ELF_SEC_STR_SYMTAB ".symtab"
131 #define LIBGOBLIN_ELF_SEC_STR_DTORS ".dtors"
132 #define LIBGOBLIN_ELF_SEC_STR_CTORS ".ctors"
133 #define LIBGOBLIN_ELF_SEC_STR_DYNAMIC ".dynamic"
134 #define LIBGOBLIN_ELF_SEC_STR_DYNSTR ".dynstr"
135 #define LIBGOBLIN_ELF_SEC_STR_DYNSYM ".dynsym"
136 #define LIBGOBLIN_ELF_SEC_STR_EH_FRAME ".eh_frame"
137 #define LIBGOBLIN_ELF_SEC_STR_EH_FRAME_HDR ".eh_frame_hdr"
138 #define LIBGOBLIN_ELF_SEC_STR_COMMENT ".comment"
139 #define LIBGOBLIN_ELF_SEC_STR_GNU_VERSION ".gnu.version"
140 #define LIBGOBLIN_ELF_SEC_STR_GNU_VERSION_R ".gnu.version_r"
141 #define LIBGOBLIN_ELF_SEC_STR_RODATA ".rodata"
142 #define LIBGOBLIN_ELF_SEC_STR_NOTE_ABI_TAG ".note.ABI-tag"
143 #define LIBGOBLIN_ELF_SEC_STR_HASH ".hash"
144 #define LIBGOBLIN_ELF_SEC_STR_INTERP ".interp"
145 #define LIBGOBLIN_ELF_SEC_STR_JCR ".jcr"
146 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_ABBREV ".debug_abbrev"
147 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_INFO ".debug_info"
148 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_LINE ".debug_line"
149 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_ARANGES ".debug_aranges"
150 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_FRAME ".debug_frame"
151 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_LOC ".debug_loc"
152 #define LIBGOBLIN_ELF_SEC_STR_DEBUG_PUBNAMES ".debug_pubnames"
155 /*=====================================================================*/
162 } LibGoblin_SectionInfo;
164 /*=====================================================================*/
166 /* Binary-File Info. */
169 char str_filepath[DRD64_MAX_PATH];
170 LibFileType_FileType t_ftype;
172 /* Binary-File Memory Image Access Info. */
176 /* Binary-Format Depending Info. (ELF)*/
179 LibGoblin_SectionInfo t_section[LIBGOBLIN_ELF_SEC_ID_MAX];
180 } LibGoblin_BinaryFile;
182 /*=====================================================================*/
184 /* BinaryInfo Struct ID */
188 /* BinaryInfo Common Info. */
193 /* Debug-Format Depending Info. (DWarf) */
196 /* Exec. File ===========================================*/
197 LibGoblin_BinaryFile t_binfile[3];
199 /* Binary-Format Depending Info. (ELF)*/
202 LibGoblin_SectionInfo t_section[LIBGOBLIN_ELF_SEC_ID_MAX];
204 } LibGoblin_BinaryInfo;
208 /*=====================================================================*/
218 } LibGoblin_SymbolInfo;
221 #endif /* DRD64_HEADER_LIBGOBLIN_SYMINFO*/
223 /* EOF of drd64_.h ----------------------------------- */