1 //===- MCMachOSymbolFlags.h - MachO Symbol Flags ----------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file declares the SymbolFlags used for the MachO target. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_MC_MCMACHOSYMBOLFLAGS_H 15 #define LLVM_MC_MCMACHOSYMBOLFLAGS_H 16 17 // These flags are mostly used in MCMachOStreamer.cpp but also needed in 18 // MachObjectWriter.cpp to test for Weak Definitions of symbols to emit 19 // the correct relocation information. 20 21 namespace llvm { 22 /// SymbolFlags - We store the value for the 'desc' symbol field in the lowest 23 /// 16 bits of the implementation defined flags. 24 enum SymbolFlags { // See <mach-o/nlist.h>. 25 SF_DescFlagsMask = 0xFFFF, 26 27 // Reference type flags. 28 SF_ReferenceTypeMask = 0x0007, 29 SF_ReferenceTypeUndefinedNonLazy = 0x0000, 30 SF_ReferenceTypeUndefinedLazy = 0x0001, 31 SF_ReferenceTypeDefined = 0x0002, 32 SF_ReferenceTypePrivateDefined = 0x0003, 33 SF_ReferenceTypePrivateUndefinedNonLazy = 0x0004, 34 SF_ReferenceTypePrivateUndefinedLazy = 0x0005, 35 36 // Other 'desc' flags. 37 SF_ThumbFunc = 0x0008, 38 SF_NoDeadStrip = 0x0020, 39 SF_WeakReference = 0x0040, 40 SF_WeakDefinition = 0x0080, 41 SF_SymbolResolver = 0x0100 42 }; 43 44 } // end namespace llvm 45 46 #endif 47