mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-14 17:34:41 +00:00
resolved or not. Different object files have different restrictions and different native assemblers have different idiosyncrasies we want to emulate for now. Move the existing MachO logic to the new place and implement an ELF one that gets fixups to globals right. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115131 91177308-0d34-0410-b5e6-96231b3b80d8
50 lines
1.5 KiB
C++
50 lines
1.5 KiB
C++
//===-- llvm/MC/MachObjectWriter.h - Mach-O File Writer ---------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_MC_MACHOBJECTWRITER_H
|
|
#define LLVM_MC_MACHOBJECTWRITER_H
|
|
|
|
#include "llvm/MC/MCObjectWriter.h"
|
|
#include "llvm/Support/raw_ostream.h"
|
|
#include <cassert>
|
|
|
|
namespace llvm {
|
|
class MCAssembler;
|
|
class MCFragment;
|
|
class MCFixup;
|
|
class MCValue;
|
|
class raw_ostream;
|
|
|
|
class MachObjectWriter : public MCObjectWriter {
|
|
void *Impl;
|
|
|
|
public:
|
|
MachObjectWriter(raw_ostream &OS, bool Is64Bit, bool IsLittleEndian = true);
|
|
virtual ~MachObjectWriter();
|
|
|
|
virtual void ExecutePostLayoutBinding(MCAssembler &Asm);
|
|
|
|
virtual void RecordRelocation(const MCAssembler &Asm,
|
|
const MCAsmLayout &Layout,
|
|
const MCFragment *Fragment,
|
|
const MCFixup &Fixup, MCValue Target,
|
|
uint64_t &FixedValue);
|
|
|
|
virtual bool IsFixupFullyResolved(const MCAssembler &Asm,
|
|
const MCValue Target,
|
|
bool IsPCRel,
|
|
const MCFragment *DF) const;
|
|
|
|
virtual void WriteObject(const MCAssembler &Asm, const MCAsmLayout &Layout);
|
|
};
|
|
|
|
} // End llvm namespace
|
|
|
|
#endif
|