MC/Mach-O: Add MCSectionMachO::getType()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98582 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2010-03-15 21:56:38 +00:00
parent 689fac0226
commit 99d22adcad
2 changed files with 10 additions and 15 deletions

View File

@ -151,10 +151,12 @@ public:
return StringRef(SectionName, 16);
return StringRef(SectionName);
}
unsigned getTypeAndAttributes() const { return TypeAndAttributes; }
unsigned getStubSize() const { return Reserved2; }
unsigned getType() const { return TypeAndAttributes & SECTION_TYPE; }
/// ParseSectionSpecifier - Parse the section specifier indicated by "Spec".
/// This is a string that can appear after a .section directive in a mach-o
/// flavored .s file. If successful, this fills in the specified Out
@ -165,7 +167,7 @@ public:
StringRef &Section, // Out.
unsigned &TAA, // Out.
unsigned &StubSize); // Out.
virtual void PrintSwitchToSection(const MCAsmInfo &MAI,
raw_ostream &OS) const;
};

View File

@ -52,8 +52,7 @@ static uint64_t WriteNopData(uint64_t Count, MachObjectWriter &MOW);
static bool isVirtualSection(const MCSection &Section) {
// FIXME: Lame.
const MCSectionMachO &SMO = static_cast<const MCSectionMachO&>(Section);
unsigned Type = SMO.getTypeAndAttributes() & MCSectionMachO::SECTION_TYPE;
return (Type == MCSectionMachO::S_ZEROFILL);
return (SMO.getType() == MCSectionMachO::S_ZEROFILL);
}
static unsigned getFixupKindLog2Size(unsigned Kind) {
@ -615,9 +614,7 @@ public:
const MCSectionMachO &Section =
static_cast<const MCSectionMachO&>(it->SectionData->getSection());
unsigned Type =
Section.getTypeAndAttributes() & MCSectionMachO::SECTION_TYPE;
if (Type != MCSectionMachO::S_NON_LAZY_SYMBOL_POINTERS)
if (Section.getType() != MCSectionMachO::S_NON_LAZY_SYMBOL_POINTERS)
continue;
Asm.getOrCreateSymbolData(*it->Symbol);
@ -630,10 +627,8 @@ public:
const MCSectionMachO &Section =
static_cast<const MCSectionMachO&>(it->SectionData->getSection());
unsigned Type =
Section.getTypeAndAttributes() & MCSectionMachO::SECTION_TYPE;
if (Type != MCSectionMachO::S_LAZY_SYMBOL_POINTERS &&
Type != MCSectionMachO::S_SYMBOL_STUBS)
if (Section.getType() != MCSectionMachO::S_LAZY_SYMBOL_POINTERS &&
Section.getType() != MCSectionMachO::S_SYMBOL_STUBS)
continue;
// Set the symbol type to undefined lazy, but only on construction.
@ -911,9 +906,7 @@ public:
// special handling.
const MCSectionMachO &Section =
static_cast<const MCSectionMachO&>(it->SectionData->getSection());
unsigned Type =
Section.getTypeAndAttributes() & MCSectionMachO::SECTION_TYPE;
if (Type == MCSectionMachO::S_NON_LAZY_SYMBOL_POINTERS) {
if (Section.getType() == MCSectionMachO::S_NON_LAZY_SYMBOL_POINTERS) {
// If this symbol is defined and internal, mark it as such.
if (it->Symbol->isDefined() &&
!Asm.getSymbolData(*it->Symbol).isExternal()) {