mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-22 19:49:49 +00:00
Add a way of printing out an arbitrary label name for a section
given the section. llvm-svn: 170087
This commit is contained in:
parent
c1bdef1400
commit
325c9ba723
@ -14,6 +14,7 @@
|
||||
#ifndef LLVM_MC_MCSECTION_H
|
||||
#define LLVM_MC_MCSECTION_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/MC/SectionKind.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
|
||||
@ -49,6 +50,11 @@ namespace llvm {
|
||||
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
|
||||
raw_ostream &OS) const = 0;
|
||||
|
||||
// Convenience routines to get label names for the beginning/end of a
|
||||
// section.
|
||||
virtual std::string getLabelBeginName() const = 0;
|
||||
virtual std::string getLabelEndName() const = 0;
|
||||
|
||||
/// isBaseAddressKnownZero - Return true if we know that this section will
|
||||
/// get a base address of zero. In cases where we know that this is true we
|
||||
/// can emit section offsets as direct references to avoid a subtraction
|
||||
|
@ -50,6 +50,12 @@ namespace llvm {
|
||||
bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const;
|
||||
|
||||
StringRef getSectionName() const { return SectionName; }
|
||||
virtual std::string getLabelBeginName() const {
|
||||
return SectionName.str() + "_begin";
|
||||
}
|
||||
virtual std::string getLabelEndName() const {
|
||||
return SectionName.str() + "_end";
|
||||
}
|
||||
unsigned getCharacteristics() const { return Characteristics; }
|
||||
int getSelection () const { return Selection; }
|
||||
|
||||
|
@ -17,6 +17,8 @@
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/MC/MCSection.h"
|
||||
#include "llvm/Support/ELF.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
@ -57,6 +59,13 @@ public:
|
||||
bool ShouldOmitSectionDirective(StringRef Name, const MCAsmInfo &MAI) const;
|
||||
|
||||
StringRef getSectionName() const { return SectionName; }
|
||||
virtual std::string getLabelBeginName() const {
|
||||
dbgs() << SectionName.data();
|
||||
dbgs() << "_begin" << "\n";
|
||||
return SectionName.str() + "_begin"; }
|
||||
virtual std::string getLabelEndName() const {
|
||||
return SectionName.str() + "_end";
|
||||
}
|
||||
unsigned getType() const { return Type; }
|
||||
unsigned getFlags() const { return Flags; }
|
||||
unsigned getEntrySize() const { return EntrySize; }
|
||||
|
@ -145,6 +145,14 @@ public:
|
||||
return StringRef(SectionName);
|
||||
}
|
||||
|
||||
virtual std::string getLabelBeginName() const {
|
||||
return StringRef(getSegmentName().str() + getSectionName().str() + "_begin");
|
||||
}
|
||||
|
||||
virtual std::string getLabelEndName() const {
|
||||
return StringRef(getSegmentName().str() + getSectionName().str() + "_end");
|
||||
}
|
||||
|
||||
unsigned getTypeAndAttributes() const { return TypeAndAttributes; }
|
||||
unsigned getStubSize() const { return Reserved2; }
|
||||
|
||||
|
@ -38,6 +38,8 @@ public:
|
||||
virtual bool isBaseAddressKnownZero() const { return true; }
|
||||
virtual bool UseCodeAlign() const { return false; }
|
||||
virtual bool isVirtualSection() const { return false; }
|
||||
virtual std::string getLabelBeginName() const { return ""; }
|
||||
virtual std::string getLabelEndName() const { return ""; }
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
Loading…
Reference in New Issue
Block a user