LLVM API Documentation

MCMachOSymbolFlags.h
Go to the documentation of this file.
00001 //===- MCMachOSymbolFlags.h - MachO Symbol Flags ----------------*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 //
00010 // This file declares the SymbolFlags used for the MachO target.
00011 //
00012 //===----------------------------------------------------------------------===//
00013 
00014 #ifndef LLVM_MC_MCMACHOSYMBOLFLAGS_H
00015 #define LLVM_MC_MCMACHOSYMBOLFLAGS_H
00016 
00017 // These flags are mostly used in MCMachOStreamer.cpp but also needed in
00018 // MachObjectWriter.cpp to test for Weak Definitions of symbols to emit
00019 // the correct relocation information.
00020 
00021 namespace llvm {
00022   /// MachOSymbolFlags - We store the value for the 'desc' symbol field in the
00023   /// lowest 16 bits of the implementation defined flags.
00024   enum MachOSymbolFlags { // See <mach-o/nlist.h>.
00025     SF_DescFlagsMask                        = 0xFFFF,
00026 
00027     // Reference type flags.
00028     SF_ReferenceTypeMask                    = 0x0007,
00029     SF_ReferenceTypeUndefinedNonLazy        = 0x0000,
00030     SF_ReferenceTypeUndefinedLazy           = 0x0001,
00031     SF_ReferenceTypeDefined                 = 0x0002,
00032     SF_ReferenceTypePrivateDefined          = 0x0003,
00033     SF_ReferenceTypePrivateUndefinedNonLazy = 0x0004,
00034     SF_ReferenceTypePrivateUndefinedLazy    = 0x0005,
00035 
00036     // Other 'desc' flags.
00037     SF_ThumbFunc                            = 0x0008,
00038     SF_NoDeadStrip                          = 0x0020,
00039     SF_WeakReference                        = 0x0040,
00040     SF_WeakDefinition                       = 0x0080,
00041     SF_SymbolResolver                       = 0x0100
00042   };
00043 
00044 } // end namespace llvm
00045 
00046 #endif