mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 01:12:59 +00:00
9a7bf438b5
and update ELF header e_flags. Currently gathering information such as symbol, section and data is done by collecting it in an MCAssembler object. From MCAssembler and MCAsmLayout objects ELFObjectWriter::WriteObject() forms and streams out the ELF object file. This patch just adds a few members to the MCAssember class to store and access the e_flag settings. It allows for runtime additions to the e_flag by assembler directives. The standalone assembler can get to MCAssembler from getParser().getStreamer().getAssembler(). This patch is the generic infrastructure and will be followed by patches for ARM and Mips for their target specific use. Contributer: Jack Carter git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173882 91177308-0d34-0410-b5e6-96231b3b80d8
52 lines
2.1 KiB
C++
52 lines
2.1 KiB
C++
//===-- MCELFObjectTargetWriter.cpp - ELF Target Writer Subclass ----------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/ADT/STLExtras.h"
|
|
#include "llvm/MC/MCELFObjectWriter.h"
|
|
#include "llvm/MC/MCExpr.h"
|
|
#include "llvm/MC/MCValue.h"
|
|
|
|
using namespace llvm;
|
|
|
|
MCELFObjectTargetWriter::MCELFObjectTargetWriter(bool Is64Bit_,
|
|
uint8_t OSABI_,
|
|
uint16_t EMachine_,
|
|
bool HasRelocationAddend_,
|
|
bool IsN64_)
|
|
: OSABI(OSABI_), EMachine(EMachine_),
|
|
HasRelocationAddend(HasRelocationAddend_), Is64Bit(Is64Bit_),
|
|
IsN64(IsN64_){
|
|
}
|
|
|
|
const MCSymbol *MCELFObjectTargetWriter::ExplicitRelSym(const MCAssembler &Asm,
|
|
const MCValue &Target,
|
|
const MCFragment &F,
|
|
const MCFixup &Fixup,
|
|
bool IsPCRel) const {
|
|
return NULL;
|
|
}
|
|
|
|
const MCSymbol *MCELFObjectTargetWriter::undefinedExplicitRelSym(const MCValue &Target,
|
|
const MCFixup &Fixup,
|
|
bool IsPCRel) const {
|
|
const MCSymbol &Symbol = Target.getSymA()->getSymbol();
|
|
return &Symbol.AliasedSymbol();
|
|
}
|
|
|
|
void MCELFObjectTargetWriter::adjustFixupOffset(const MCFixup &Fixup,
|
|
uint64_t &RelocOffset) {
|
|
}
|
|
|
|
void
|
|
MCELFObjectTargetWriter::sortRelocs(const MCAssembler &Asm,
|
|
std::vector<ELFRelocationEntry> &Relocs) {
|
|
// Sort by the r_offset, just like gnu as does.
|
|
array_pod_sort(Relocs.begin(), Relocs.end());
|
|
}
|