Home | History | Annotate | Download | only in llvm-readobj

Lines Matching refs:COFF

1 //===-- COFFDumper.cpp - COFF-specific dumper -------------------*- C++ -*-===//
11 /// \brief This file implements the COFF-specific dumper for llvm-readobj.
23 #include "llvm/Object/COFF.h"
225 static const EnumEntry<COFF::MachineTypes> ImageFileMachineType[] = {
226 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_UNKNOWN ),
227 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_AM33 ),
228 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_AMD64 ),
229 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_ARM ),
230 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_ARMV7 ),
231 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_EBC ),
232 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_I386 ),
233 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_IA64 ),
234 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_M32R ),
235 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_MIPS16 ),
236 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_MIPSFPU ),
237 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_MIPSFPU16),
238 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_POWERPC ),
239 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_POWERPCFP),
240 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_R4000 ),
241 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_SH3 ),
242 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_SH3DSP ),
243 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_SH4 ),
244 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_SH5 ),
245 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_THUMB ),
246 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_MACHINE_WCEMIPSV2)
249 static const EnumEntry<COFF::Characteristics> ImageFileCharacteristics[] = {
250 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_RELOCS_STRIPPED ),
251 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_EXECUTABLE_IMAGE ),
252 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_LINE_NUMS_STRIPPED ),
253 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_LOCAL_SYMS_STRIPPED ),
254 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_AGGRESSIVE_WS_TRIM ),
255 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_LARGE_ADDRESS_AWARE ),
256 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_BYTES_REVERSED_LO ),
257 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_32BIT_MACHINE ),
258 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_DEBUG_STRIPPED ),
259 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP),
260 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_NET_RUN_FROM_SWAP ),
261 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_SYSTEM ),
262 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_DLL ),
263 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_UP_SYSTEM_ONLY ),
264 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_FILE_BYTES_REVERSED_HI )
267 static const EnumEntry<COFF::WindowsSubsystem> PEWindowsSubsystem[] = {
268 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_UNKNOWN ),
269 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_NATIVE ),
270 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_WINDOWS_GUI ),
271 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_WINDOWS_CUI ),
272 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_POSIX_CUI ),
273 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_WINDOWS_CE_GUI ),
274 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_EFI_APPLICATION ),
275 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER),
276 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER ),
277 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_EFI_ROM ),
278 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SUBSYSTEM_XBOX ),
281 static const EnumEntry<COFF::DLLCharacteristics> PEDLLCharacteristics[] = {
282 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE ),
283 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY ),
284 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_NX_COMPAT ),
285 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION ),
286 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_NO_SEH ),
287 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_NO_BIND ),
288 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_WDM_DRIVER ),
289 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE),
292 static const EnumEntry<COFF::SectionCharacteristics>
294 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_TYPE_NO_PAD ),
295 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_CNT_CODE ),
296 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_CNT_INITIALIZED_DATA ),
297 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_CNT_UNINITIALIZED_DATA),
298 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_LNK_OTHER ),
299 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_LNK_INFO ),
300 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_LNK_REMOVE ),
301 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_LNK_COMDAT ),
302 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_GPREL ),
303 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_PURGEABLE ),
304 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_16BIT ),
305 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_LOCKED ),
306 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_PRELOAD ),
307 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1BYTES ),
308 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2BYTES ),
309 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4BYTES ),
310 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8BYTES ),
311 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_16BYTES ),
312 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_32BYTES ),
313 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_64BYTES ),
314 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_128BYTES ),
315 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_256BYTES ),
316 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_512BYTES ),
317 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_1024BYTES ),
318 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_2048BYTES ),
319 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_4096BYTES ),
320 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_ALIGN_8192BYTES ),
321 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_LNK_NRELOC_OVFL ),
322 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_DISCARDABLE ),
323 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_CACHED ),
324 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_NOT_PAGED ),
325 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_SHARED ),
326 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_EXECUTE ),
327 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_READ ),
328 LLVM_READOBJ_ENUM_ENT(COFF, IMAGE_SCN_MEM_WRITE )
331 static const EnumEntry<COFF::SymbolBaseType> ImageSymType[] = {
332 { "Null" , COFF::IMAGE_SYM_TYPE_NULL },
333 { "Void" , COFF::IMAGE_SYM_TYPE_VOID },
334 { "Char" , COFF::IMAGE_SYM_TYPE_CHAR },
335 { "Short" , COFF::IMAGE_SYM_TYPE_SHORT },
336 { "Int" , COFF::IMAGE_SYM_TYPE_INT },
337 { "Long" , COFF::IMAGE_SYM_TYPE_LONG },
338 { "Float" , COFF::IMAGE_SYM_TYPE_FLOAT },
339 { "Double", COFF::IMAGE_SYM_TYPE_DOUBLE },
340 { "Struct", COFF::IMAGE_SYM_TYPE_STRUCT },
341 { "Union" , COFF::IMAGE_SYM_TYPE_UNION },
342 { "Enum" , COFF::IMAGE_SYM_TYPE_ENUM },
343 { "MOE" , COFF::IMAGE_SYM_TYPE_MOE },
344 { "Byte" , COFF::IMAGE_SYM_TYPE_BYTE },
345 { "Word" , COFF::IMAGE_SYM_TYPE_WORD },
346 { "UInt" , COFF::IMAGE_SYM_TYPE_UINT },
347 { "DWord" , COFF::IMAGE_SYM_TYPE_DWORD }
350 static const EnumEntry<COFF::SymbolComplexType> ImageSymDType[] = {
351 { "Null" , COFF::IMAGE_SYM_DTYPE_NULL },
352 { "Pointer" , COFF::IMAGE_SYM_DTYPE_POINTER },
353 { "Function", COFF::IMAGE_SYM_DTYPE_FUNCTION },
354 { "Array" , COFF::IMAGE_SYM_DTYPE_ARRAY }
357 static const EnumEntry<COFF::SymbolStorageClass> ImageSymClass[] = {
358 { "EndOfFunction" , COFF::IMAGE_SYM_CLASS_END_OF_FUNCTION },
359 { "Null" , COFF::IMAGE_SYM_CLASS_NULL },
360 { "Automatic" , COFF::IMAGE_SYM_CLASS_AUTOMATIC },
361 { "External" , COFF::IMAGE_SYM_CLASS_EXTERNAL },
362 { "Static" , COFF::IMAGE_SYM_CLASS_STATIC },
363 { "Register" , COFF::IMAGE_SYM_CLASS_REGISTER },
364 { "ExternalDef" , COFF::IMAGE_SYM_CLASS_EXTERNAL_DEF },
365 { "Label" , COFF::IMAGE_SYM_CLASS_LABEL },
366 { "UndefinedLabel" , COFF::IMAGE_SYM_CLASS_UNDEFINED_LABEL },
367 { "MemberOfStruct" , COFF::IMAGE_SYM_CLASS_MEMBER_OF_STRUCT },
368 { "Argument" , COFF::IMAGE_SYM_CLASS_ARGUMENT },
369 { "StructTag" , COFF::IMAGE_SYM_CLASS_STRUCT_TAG },
370 { "MemberOfUnion" , COFF::IMAGE_SYM_CLASS_MEMBER_OF_UNION },
371 { "UnionTag" , COFF::IMAGE_SYM_CLASS_UNION_TAG },
372 { "TypeDefinition" , COFF::IMAGE_SYM_CLASS_TYPE_DEFINITION },
373 { "UndefinedStatic", COFF::IMAGE_SYM_CLASS_UNDEFINED_STATIC },
374 { "EnumTag" , COFF::IMAGE_SYM_CLASS_ENUM_TAG },
375 { "MemberOfEnum" , COFF::IMAGE_SYM_CLASS_MEMBER_OF_ENUM },
376 { "RegisterParam" , COFF::IMAGE_SYM_CLASS_REGISTER_PARAM },
377 { "BitField" , COFF::IMAGE_SYM_CLASS_BIT_FIELD },
378 { "Block" , COFF::IMAGE_SYM_CLASS_BLOCK },
379 { "Function" , COFF::IMAGE_SYM_CLASS_FUNCTION },
380 { "EndOfStruct" , COFF::IMAGE_SYM_CLASS_END_OF_STRUCT },
381 { "File" , COFF::IMAGE_SYM_CLASS_FILE },
382 { "Section" , COFF::IMAGE_SYM_CLASS_SECTION },
383 { "WeakExternal" , COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL },
384 { "CLRToken" , COFF::IMAGE_SYM_CLASS_CLR_TOKEN }
387 static const EnumEntry<COFF::COMDATType> ImageCOMDATSelect[] = {
388 { "NoDuplicates", COFF::IMAGE_COMDAT_SELECT_NODUPLICATES },
389 { "Any" , COFF::IMAGE_COMDAT_SELECT_ANY },
390 { "SameSize" , COFF::IMAGE_COMDAT_SELECT_SAME_SIZE },
391 { "ExactMatch" , COFF::IMAGE_COMDAT_SELECT_EXACT_MATCH },
392 { "Associative" , COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE },
393 COFF::IMAGE_COMDAT_SELECT_LARGEST },
394 { "Newest" , COFF::IMAGE_COMDAT_SELECT_NEWEST }
397 static const EnumEntry<COFF::WeakExternalCharacteristics>
399 { "NoLibrary", COFF::IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY },
400 { "Library" , COFF::IMAGE_WEAK_EXTERN_SEARCH_LIBRARY },
401 { "Alias" , COFF::IMAGE_WEAK_EXTERN_SEARCH_ALIAS }
429 // Some additional COFF structures not defined by llvm::object.
574 // Print COFF header
682 COFF::SectionCharacteristics(0x00F00000));
832 if (Symbol->StorageClass == COFF::IMAGE_SYM_CLASS_EXTERNAL &&
833 Symbol->getBaseType() == COFF::IMAGE_SYM_TYPE_NULL &&
834 Symbol->getComplexType() == COFF::IMAGE_SYM_DTYPE_FUNCTION &&
848 Symbol->StorageClass == COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL ||
849 (Symbol->StorageClass == COFF::IMAGE_SYM_CLASS_EXTERNAL &&
871 } else if (Symbol->StorageClass == COFF::IMAGE_SYM_CLASS_FILE) {
879 } else if (Symbol->StorageClass == COFF::IMAGE_SYM_CLASS_STATIC ||
880 COFF::IMAGE_SYM_CLASS_EXTERNAL &&
881 Symbol->SectionNumber != COFF::IMAGE_SYM_UNDEFINED)) {
895 if (Section && Section->Characteristics & COFF::IMAGE_SCN_LNK_COMDAT
896 && Aux->Selection == COFF::IMAGE_COMDAT_SELECT_ASSOCIATIVE) {
908 } else if (Symbol->StorageClass == COFF::IMAGE_SYM_CLASS_CLR_TOKEN) {
931 if (Header->Machine != COFF::IMAGE_FILE_MACHINE_AMD64) {