SafeMachO.h revision 360660
1//===-- SafeMachO.h -----------------------------------*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8#ifndef liblldb_SafeMachO_h_ 9#define liblldb_SafeMachO_h_ 10 11// This header file is required to work around collisions between the defines 12// in mach/machine.h, and enum members of the same name in llvm's MachO.h. If 13// you want to use llvm/Support/MachO.h, use this file instead. The caveats 14// are: 1) You can only use the MachO.h enums, you can't use the defines. That 15// won't make a difference since the values 16// are the same. 17// 2) If you need any header file that relies on mach/machine.h, you must 18// include that first. 3) This isn't a total solution, it doesn't undef every 19// define that MachO.h has borrowed from various system headers, 20// only the ones that come from mach/machine.h because that is the one we 21// ended up pulling in from various places. 22// 23 24#undef CPU_ARCH_MASK 25#undef CPU_ARCH_ABI64 26 27#undef CPU_TYPE_ANY 28#undef CPU_TYPE_X86 29#undef CPU_TYPE_I386 30#undef CPU_TYPE_X86_64 31#undef CPU_TYPE_MC98000 32#undef CPU_TYPE_ARM 33#undef CPU_TYPE_ARM64 34#undef CPU_TYPE_SPARC 35#undef CPU_TYPE_POWERPC 36#undef CPU_TYPE_POWERPC64 37 38#undef CPU_SUB_TYPE_MASK 39#undef CPU_SUB_TYPE_LIB64 40 41#undef CPU_SUBTYPE_MULTIPLE 42 43#undef CPU_SUBTYPE_I386_ALL 44#undef CPU_SUBTYPE_386 45#undef CPU_SUBTYPE_486 46#undef CPU_SUBTYPE_486SX 47#undef CPU_SUBTYPE_586 48#undef CPU_SUBTYPE_PENT 49#undef CPU_SUBTYPE_PENTPRO 50#undef CPU_SUBTYPE_PENTII_M3 51#undef CPU_SUBTYPE_PENTII_M5 52#undef CPU_SUBTYPE_CELERON 53#undef CPU_SUBTYPE_CELERON_MOBILE 54#undef CPU_SUBTYPE_PENTIUM_3 55#undef CPU_SUBTYPE_PENTIUM_3_M 56#undef CPU_SUBTYPE_PENTIUM_3_XEON 57#undef CPU_SUBTYPE_PENTIUM_M 58#undef CPU_SUBTYPE_PENTIUM_4 59#undef CPU_SUBTYPE_PENTIUM_4_M 60#undef CPU_SUBTYPE_ITANIUM 61#undef CPU_SUBTYPE_ITANIUM_2 62#undef CPU_SUBTYPE_XEON 63#undef CPU_SUBTYPE_XEON_MP 64 65#undef CPU_SUBTYPE_X86_ALL 66#undef CPU_SUBTYPE_X86_64_ALL 67#undef CPU_SUBTYPE_X86_ARCH1 68#undef CPU_SUBTYPE_X86_64_H 69 70#undef CPU_SUBTYPE_INTEL 71#undef CPU_SUBTYPE_INTEL_FAMILY 72#undef CPU_SUBTYPE_INTEL_FAMILY_MAX 73#undef CPU_SUBTYPE_INTEL_MODEL 74#undef CPU_SUBTYPE_INTEL_MODEL_ALL 75 76#undef CPU_SUBTYPE_ARM 77#undef CPU_SUBTYPE_ARM_ALL 78#undef CPU_SUBTYPE_ARM_V4T 79#undef CPU_SUBTYPE_ARM_V6 80#undef CPU_SUBTYPE_ARM_V5 81#undef CPU_SUBTYPE_ARM_V5TEJ 82#undef CPU_SUBTYPE_ARM_XSCALE 83#undef CPU_SUBTYPE_ARM_V7 84 85#undef CPU_SUBTYPE_ARM_V7S 86#undef CPU_SUBTYPE_ARM_V7K 87#undef CPU_SUBTYPE_ARM_V6M 88#undef CPU_SUBTYPE_ARM_V7M 89#undef CPU_SUBTYPE_ARM_V7EM 90 91#undef CPU_SUBTYPE_ARM64_ALL 92 93#undef CPU_SUBTYPE_SPARC_ALL 94 95#undef CPU_SUBTYPE_POWERPC 96#undef CPU_SUBTYPE_POWERPC_ALL 97#undef CPU_SUBTYPE_POWERPC_601 98#undef CPU_SUBTYPE_POWERPC_602 99#undef CPU_SUBTYPE_POWERPC_603 100#undef CPU_SUBTYPE_POWERPC_603e 101#undef CPU_SUBTYPE_POWERPC_603ev 102#undef CPU_SUBTYPE_POWERPC_604 103#undef CPU_SUBTYPE_POWERPC_604e 104#undef CPU_SUBTYPE_POWERPC_620 105#undef CPU_SUBTYPE_POWERPC_750 106#undef CPU_SUBTYPE_POWERPC_7400 107#undef CPU_SUBTYPE_POWERPC_7450 108#undef CPU_SUBTYPE_POWERPC_970 109 110#undef CPU_SUBTYPE_MC980000_ALL 111#undef CPU_SUBTYPE_MC98601 112 113#include "llvm/BinaryFormat/MachO.h" 114 115#endif // liblldb_SafeMachO_h_ 116