//===- lib/MC/MachObjectWriter.cpp - Mach-O File Writer -------------------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===//#include"llvm/MC/MachObjectWriter.h"#include"llvm/ADT/StringMap.h"#include"llvm/ADT/Twine.h"#include"llvm/MC/MCAssembler.h"#include"llvm/MC/MCAsmLayout.h"#include"llvm/MC/MCExpr.h"#include"llvm/MC/MCObjectWriter.h"#include"llvm/MC/MCSectionMachO.h"#include"llvm/MC/MCSymbol.h"#include"llvm/MC/MCMachOSymbolFlags.h"#include"llvm/MC/MCValue.h"#include"llvm/Support/ErrorHandling.h"#include"llvm/Support/MachO.h"#include"llvm/Target/TargetAsmBackend.h"// FIXME: Gross.#include"../Target/X86/X86FixupKinds.h"#include<vector>usingnamespacellvm;// FIXME: this has been copied from (or to) X86AsmBackend.cppstaticunsignedgetFixupKindLog2Size(unsignedKind){switch(Kind){default:llvm_unreachable("invalid fixup kind!");caseX86::reloc_pcrel_1byte:caseFK_Data_1:return0;caseX86::reloc_pcrel_2byte:caseFK_Data_2:return1;caseX86::reloc_pcrel_4byte:caseX86::reloc_riprel_4byte:caseX86::reloc_riprel_4byte_movq_load:caseX86::reloc_signed_4byte:caseFK_Data_4:return2;caseFK_Data_8:return3;}}staticboolisFixupKindPCRel(unsignedKind){switch(Kind){default:returnfalse;caseX86::reloc_pcrel_1byte:caseX86::reloc_pcrel_2byte:caseX86::reloc_pcrel_4byte:caseX86::reloc_riprel_4byte:caseX86::reloc_riprel_4byte_movq_load:returntrue;}}staticboolisFixupKindRIPRel(unsignedKind){returnKind==X86::reloc_riprel_4byte