1 //===-- llvm/MC/WinCOFFObjectWriter.cpp -------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains an implementation of a Win32 COFF object file writer.
12 //===----------------------------------------------------------------------===//
14 #define DEBUG_TYPE "WinCOFFObjectWriter"
15 #include "llvm/MC/MCObjectWriter.h"
16 #include "llvm/MC/MCValue.h"
17 #include "llvm/MC/MCAssembler.h"
18 #include "llvm/MC/MCAsmLayout.h"
23 class WinCOFFObjectWriter : public MCObjectWriter {
25 WinCOFFObjectWriter(raw_ostream &OS);
27 // MCObjectWriter interface implementation.
29 void ExecutePostLayoutBinding(MCAssembler &Asm);
31 void RecordRelocation(const MCAssembler &Asm,
32 const MCAsmLayout &Layout,
33 const MCFragment *Fragment,
36 uint64_t &FixedValue);
38 void WriteObject(const MCAssembler &Asm, const MCAsmLayout &Layout);
42 WinCOFFObjectWriter::WinCOFFObjectWriter(raw_ostream &OS)
43 : MCObjectWriter(OS, true) {
46 ////////////////////////////////////////////////////////////////////////////////
47 // MCObjectWriter interface implementations
49 void WinCOFFObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm) {
52 void WinCOFFObjectWriter::RecordRelocation(const MCAssembler &Asm,
53 const MCAsmLayout &Layout,
54 const MCFragment *Fragment,
57 uint64_t &FixedValue) {
60 void WinCOFFObjectWriter::WriteObject(const MCAssembler &Asm,
61 const MCAsmLayout &Layout) {
64 //------------------------------------------------------------------------------
65 // WinCOFFObjectWriter factory function
68 MCObjectWriter *createWinCOFFObjectWriter(raw_ostream &OS) {
69 return new WinCOFFObjectWriter(OS);