Add a new top-level MachO.h file for manifest constants, fixing

a layering violation from MC -> Target.

llvm-svn: 95113
This commit is contained in:
Chris Lattner 2010-02-02 19:38:14 +00:00
parent 8487d65ea2
commit 809ae81ff9
2 changed files with 59 additions and 3 deletions

View File

@ -0,0 +1,56 @@
//===-- llvm/Support/MachO.h - The MachO file format ------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines manifest constants for the MachO object file format.
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_SUPPORT_MACHO_H
#define LLVM_SUPPORT_MACHO_H
// NOTE: The enums in this file are intentially named to be different than those
// in the headers in /usr/include/mach (on darwin systems) to avoid conflicts
// with those macros.
namespace llvm {
namespace MachO {
// Enums from <mach/machine.h>
enum {
// Capability bits used in the definition of cpu_type.
CPUArchMask = 0xff000000, // Mask for architecture bits
CPUArchABI64 = 0x01000000, // 64 bit ABI
// Constants for the cputype field.
CPUTypeI386 = 7,
CPUTypeX86_64 = CPUTypeI386 | CPUArchABI64,
CPUTypeARM = 12,
CPUTypeSPARC = 14,
CPUTypePowerPC = 18,
CPUTypePowerPC64 = CPUTypePowerPC | CPUArchABI64,
// Constants for the cpusubtype field.
// X86
CPUSubType_I386_ALL = 3,
CPUSubType_X86_64_ALL = 3,
// ARM
CPUSubType_ARM_ALL = 0,
CPUSubType_ARM_V4T = 5,
CPUSubType_ARM_V6 = 6,
// PowerPC
CPUSubType_POWERPC_ALL = 0,
CPUSubType_SPARC_ALL = 0
};
} // end namespace MachO
} // end namespace llvm
#endif

View File

@ -13,13 +13,13 @@
#include "llvm/MC/MCSectionMachO.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/MCValue.h"
#include "llvm/Target/TargetMachOWriterInfo.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachO.h"
#include "llvm/Support/raw_ostream.h"
#include <vector>
using namespace llvm;
@ -203,9 +203,9 @@ public:
Write32(Header_Magic32);
// FIXME: Support cputype.
Write32(TargetMachOWriterInfo::HDR_CPU_TYPE_I386);
Write32(MachO::CPUTypeI386);
// FIXME: Support cpusubtype.
Write32(TargetMachOWriterInfo::HDR_CPU_SUBTYPE_I386_ALL);
Write32(MachO::CPUSubType_I386_ALL);
Write32(HFT_Object);
Write32(NumLoadCommands); // Object files have a single load command, the
// segment.