aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCSectionMachO.cpp
diff options
context:
space:
mode:
authorStuart Hastings <stuart@apple.com>2011-02-21 17:27:17 +0000
committerStuart Hastings <stuart@apple.com>2011-02-21 17:27:17 +0000
commitb4863a41e9b2b8a2d75b7d04a5f3671b29337e90 (patch)
treecef6783c746954fd60821f6aebbe1f3d1a6dabb5 /llvm/lib/MC/MCSectionMachO.cpp
parent5237febf0c4321f7c952224814c138ebfb0a46c6 (diff)
downloadllvm-b4863a41e9b2b8a2d75b7d04a5f3671b29337e90.zip
llvm-b4863a41e9b2b8a2d75b7d04a5f3671b29337e90.tar.gz
llvm-b4863a41e9b2b8a2d75b7d04a5f3671b29337e90.tar.bz2
Fix to correctly support attribute((section("__DATA, __common"))).
Radar 9012638. llvm-svn: 126127
Diffstat (limited to 'llvm/lib/MC/MCSectionMachO.cpp')
-rw-r--r--llvm/lib/MC/MCSectionMachO.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/MC/MCSectionMachO.cpp b/llvm/lib/MC/MCSectionMachO.cpp
index b897c0b..2cfecb2 100644
--- a/llvm/lib/MC/MCSectionMachO.cpp
+++ b/llvm/lib/MC/MCSectionMachO.cpp
@@ -101,16 +101,16 @@ void MCSectionMachO::PrintSwitchToSection(const MCAsmInfo &MAI,
return;
}
- OS << ',';
-
unsigned SectionType = TAA & MCSectionMachO::SECTION_TYPE;
assert(SectionType <= MCSectionMachO::LAST_KNOWN_SECTION_TYPE &&
"Invalid SectionType specified!");
- if (SectionTypeDescriptors[SectionType].AssemblerName)
+ if (SectionTypeDescriptors[SectionType].AssemblerName) {
+ OS << ',';
OS << SectionTypeDescriptors[SectionType].AssemblerName;
- else
- OS << "<<" << SectionTypeDescriptors[SectionType].EnumName << ">>";
+ } else
+ // If we have no name for the attribute, stop here.
+ return;
// If we don't have any attributes, we're done.
unsigned SectionAttrs = TAA & MCSectionMachO::SECTION_ATTRIBUTES;
@@ -125,7 +125,9 @@ void MCSectionMachO::PrintSwitchToSection(const MCAsmInfo &MAI,
// Check each attribute to see if we have it.
char Separator = ',';
- for (unsigned i = 0; SectionAttrDescriptors[i].AttrFlag; ++i) {
+ for (unsigned i = 0;
+ SectionAttrs != 0 && SectionAttrDescriptors[i].AttrFlag;
+ ++i) {
// Check to see if we have this attribute.
if ((SectionAttrDescriptors[i].AttrFlag & SectionAttrs) == 0)
continue;
@@ -207,7 +209,6 @@ std::string MCSectionMachO::ParseSectionSpecifier(StringRef Spec, // In.
"between 1 and 16 characters";
// If there is no comma after the section, we're done.
- TAA = 0;
StubSize = 0;
if (Comma.second.empty())
return "";