11#include "llvm/Config/llvm-config.h" 
   22    : Begin(Begin), HasInstructions(
false), IsRegistered(
false), IsText(IsText),
 
   24  DummyFragment.setParent(
this);
 
 
   29    End = Ctx.createTempSymbol(
"sec_end");
 
 
   35#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) 
   41  OS << 
"MCSection Name:" << 
getName();
 
   44  for (
auto &
F : *
this) {
 
   49    auto It = FragToSyms->find(&
F);
 
   50    if (It == FragToSyms->end())
 
   52    for (
auto *Sym : It->second) {
 
   53      OS << 
"\n  Symbol @" << Sym->getOffset() << 
' ' << Sym->getName();
 
   54      if (Sym->isTemporary())
 
 
   63  if (VarContentStart + Contents.
size() > VarContentEnd) {
 
   64    VarContentStart = S.size();
 
   65    S.resize_for_overwrite(S.size() + Contents.
size());
 
   67  VarContentEnd = VarContentStart + Contents.
size();
 
 
   78    auto Size = FixupEnd - FixupStart;
 
   79    auto I = std::exchange(FixupStart, S.size());
 
   80    S.reserve(S.size() + 
Size);
 
   81    S.append(S.begin() + 
I, S.begin() + 
I + 
Size);
 
   83  S.append(Fixups.begin(), Fixups.end());
 
 
   88  assert(Fixups.size() < 256 &&
 
   89         "variable-size tail cannot have more than 256 fixups");
 
   91  if (Fixups.size() > VarFixupSize) {
 
   92    VarFixupStart = S.size();
 
   93    S.resize_for_overwrite(S.size() + Fixups.size());
 
   95  VarFixupSize = Fixups.size();
 
   98  std::transform(Fixups.begin(), Fixups.end(), S.begin() + VarFixupStart,
 
  100                   F.setOffset(
Fixed + 
F.getOffset());
 
 
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
#define LLVM_UNLIKELY(EXPR)
#define LLVM_DUMP_METHOD
Mark debug helper function definitions like dump() that should not be stripped from debug builds.
PowerPC TLS Dynamic Call Fixup
This file defines the SmallVector class.
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
size_t size() const
size - Get the array size.
Context object for machine code objects.
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
LLVM_ABI void appendFixups(ArrayRef< MCFixup > Fixups)
MCSection * getParent() const
LLVM_ABI void setVarFixups(ArrayRef< MCFixup > Fixups)
LLVM_ABI void addFixup(MCFixup Fixup)
size_t getFixedSize() const
LLVM_ABI void setVarContents(ArrayRef< char > Contents)
MCSymbol * getEndSymbol(MCContext &Ctx)
bool isLinkerRelaxable() const
void dump(DenseMap< const MCFragment *, SmallVector< const MCSymbol *, 0 > > *FragToSyms=nullptr) const
StringRef getName() const
unsigned firstLinkerRelaxable() const
MCSection(StringRef Name, bool IsText, bool IsBss, MCSymbol *Begin)
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI raw_fd_ostream & errs()
This returns a reference to a raw_ostream for standard error.
OutputIt copy(R &&Range, OutputIt Out)