mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-21 09:25:07 +00:00
MC/ObjectWriter: Add a new IsSymbolRefDifferenceFullyResolved target format specific hook.
- Currently just has stub implementations for Mach-O, ELF, and COFF. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122037 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ff2e9b4225
commit
1f3662abba
@ -20,6 +20,7 @@ class MCAsmLayout;
|
||||
class MCAssembler;
|
||||
class MCFixup;
|
||||
class MCFragment;
|
||||
class MCSymbolRefExpr;
|
||||
class MCValue;
|
||||
class raw_ostream;
|
||||
|
||||
@ -77,6 +78,16 @@ public:
|
||||
const MCFixup &Fixup, MCValue Target,
|
||||
uint64_t &FixedValue) = 0;
|
||||
|
||||
/// \brief Check whether the difference (A - B) between two symbol
|
||||
/// references is fully resolved.
|
||||
///
|
||||
/// Clients are not required to answer precisely and may conservatively return
|
||||
/// false, even when a difference is fully resolved.
|
||||
virtual bool
|
||||
IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm,
|
||||
const MCSymbolRefExpr *A,
|
||||
const MCSymbolRefExpr *B) const = 0;
|
||||
|
||||
/// Check if a fixup is fully resolved.
|
||||
///
|
||||
/// This routine is used by the assembler to let the file format decide
|
||||
|
@ -333,8 +333,17 @@ namespace {
|
||||
uint64_t Size, uint32_t Link, uint32_t Info,
|
||||
uint64_t Alignment, uint64_t EntrySize);
|
||||
|
||||
virtual void WriteRelocationsFragment(const MCAssembler &Asm, MCDataFragment *F,
|
||||
const MCSectionData *SD);
|
||||
virtual void WriteRelocationsFragment(const MCAssembler &Asm,
|
||||
MCDataFragment *F,
|
||||
const MCSectionData *SD);
|
||||
|
||||
virtual bool
|
||||
IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm,
|
||||
const MCSymbolRefExpr *A,
|
||||
const MCSymbolRefExpr *B) const {
|
||||
// FIXME: Implement this!
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool IsFixupFullyResolved(const MCAssembler &Asm,
|
||||
const MCValue Target,
|
||||
|
@ -1123,6 +1123,12 @@ public:
|
||||
UndefinedSymbolData);
|
||||
}
|
||||
|
||||
bool IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm,
|
||||
const MCSymbolRefExpr *A,
|
||||
const MCSymbolRefExpr *B) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsFixupFullyResolved(const MCAssembler &Asm,
|
||||
const MCValue Target,
|
||||
bool IsPCRel,
|
||||
|
@ -179,6 +179,14 @@ public:
|
||||
MCValue Target,
|
||||
uint64_t &FixedValue);
|
||||
|
||||
virtual bool
|
||||
IsSymbolRefDifferenceFullyResolved(const MCAssembler &Asm,
|
||||
const MCSymbolRefExpr *A,
|
||||
const MCSymbolRefExpr *B) const {
|
||||
// FIXME: Implement this!
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool IsFixupFullyResolved(const MCAssembler &Asm,
|
||||
const MCValue Target,
|
||||
bool IsPCRel,
|
||||
|
Loading…
x
Reference in New Issue
Block a user