Skip to content

Commit

Permalink
MC/ELF: Allow targets to set ABI version
Browse files Browse the repository at this point in the history
Tests are in the follow up change

Differential Revision: https://reviews.llvm.org/D57810

llvm-svn: 354072
  • Loading branch information
kzhuravl committed Feb 14, 2019
1 parent 530d05e commit e0484eb
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 4 deletions.
4 changes: 3 additions & 1 deletion llvm/include/llvm/MC/MCELFObjectWriter.h
Expand Up @@ -53,13 +53,14 @@ struct ELFRelocationEntry {

class MCELFObjectTargetWriter : public MCObjectTargetWriter {
const uint8_t OSABI;
const uint8_t ABIVersion;
const uint16_t EMachine;
const unsigned HasRelocationAddend : 1;
const unsigned Is64Bit : 1;

protected:
MCELFObjectTargetWriter(bool Is64Bit_, uint8_t OSABI_, uint16_t EMachine_,
bool HasRelocationAddend);
bool HasRelocationAddend_, uint8_t ABIVersion_ = 0);

public:
virtual ~MCELFObjectTargetWriter() = default;
Expand Down Expand Up @@ -97,6 +98,7 @@ class MCELFObjectTargetWriter : public MCObjectTargetWriter {
/// \name Accessors
/// @{
uint8_t getOSABI() const { return OSABI; }
uint8_t getABIVersion() const { return ABIVersion; }
uint16_t getEMachine() const { return EMachine; }
bool hasRelocationAddend() const { return HasRelocationAddend; }
bool is64Bit() const { return Is64Bit; }
Expand Down
3 changes: 2 additions & 1 deletion llvm/lib/MC/ELFObjectWriter.cpp
Expand Up @@ -425,7 +425,8 @@ void ELFWriter::writeHeader(const MCAssembler &Asm) {
W.OS << char(ELF::EV_CURRENT); // e_ident[EI_VERSION]
// e_ident[EI_OSABI]
W.OS << char(OWriter.TargetObjectWriter->getOSABI());
W.OS << char(0); // e_ident[EI_ABIVERSION]
// e_ident[EI_ABIVERSION]
W.OS << char(OWriter.TargetObjectWriter->getABIVersion());

W.OS.write_zeros(ELF::EI_NIDENT - ELF::EI_PAD);

Expand Down
5 changes: 3 additions & 2 deletions llvm/lib/MC/MCELFObjectTargetWriter.cpp
Expand Up @@ -12,8 +12,9 @@ using namespace llvm;

MCELFObjectTargetWriter::MCELFObjectTargetWriter(bool Is64Bit_, uint8_t OSABI_,
uint16_t EMachine_,
bool HasRelocationAddend_)
: OSABI(OSABI_), EMachine(EMachine_),
bool HasRelocationAddend_,
uint8_t ABIVersion_)
: OSABI(OSABI_), ABIVersion(ABIVersion_), EMachine(EMachine_),
HasRelocationAddend(HasRelocationAddend_), Is64Bit(Is64Bit_) {}

bool MCELFObjectTargetWriter::needsRelocateWithSymbol(const MCSymbol &Sym,
Expand Down

0 comments on commit e0484eb

Please sign in to comment.