diff options
author | Kevin Enderby <enderby@apple.com> | 2016-12-16 22:54:02 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2016-12-16 22:54:02 +0000 |
commit | 59343a9429f67617e6a601767eda98dfc41e46bf (patch) | |
tree | a835619c7daf9fa49f700d6b2221bf517ac2ec44 /llvm/tools/llvm-size | |
parent | 46225b193fd956545be97a83cecb4a3b6d3d6f17 (diff) | |
download | bcm5719-llvm-59343a9429f67617e6a601767eda98dfc41e46bf.tar.gz bcm5719-llvm-59343a9429f67617e6a601767eda98dfc41e46bf.zip |
Fix a bugs with using some Mach-O command line flags like "-arch armv7m".
The Mach-O command line flag like "-arch armv7m" does not match the
arch name part of its llvm Triple which is "thumbv7m-apple-darwin”.
I think the best way to fix this is to have
llvm::object::MachOObjectFile::getArchTriple() optionally return the
name of the Mach-O arch flag that would be used with -arch that
matches the CPUType and CPUSubType. Then change
llvm::object::MachOUniversalBinary::ObjectForArch::getArchTypeName()
to use that and change it to getArchFlagName() as the type name is
really part of the Triple and the -arch flag name is a Mach-O thing
for a specific Triple with a specific Mcpu value.
rdar://29663637
llvm-svn: 290001
Diffstat (limited to 'llvm/tools/llvm-size')
-rw-r--r-- | llvm/tools/llvm-size/llvm-size.cpp | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp index 903e950bc73..e47cfca8c81 100644 --- a/llvm/tools/llvm-size/llvm-size.cpp +++ b/llvm/tools/llvm-size/llvm-size.cpp @@ -580,7 +580,7 @@ static void printFileSectionSizes(StringRef file) { for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { - if (ArchFlags[i] == I->getArchTypeName()) { + if (ArchFlags[i] == I->getArchFlagName()) { ArchFound = true; Expected<std::unique_ptr<ObjectFile>> UO = I->getAsObjectFile(); if (UO) { @@ -591,20 +591,20 @@ static void printFileSectionSizes(StringRef file) { else if (MachO && OutputFormat == darwin) { if (MoreThanOneFile || ArchFlags.size() > 1) outs() << o->getFileName() << " (for architecture " - << I->getArchTypeName() << "): \n"; + << I->getArchFlagName() << "): \n"; } printObjectSectionSizes(o); if (OutputFormat == berkeley) { if (!MachO || MoreThanOneFile || ArchFlags.size() > 1) outs() << o->getFileName() << " (for architecture " - << I->getArchTypeName() << ")"; + << I->getArchFlagName() << ")"; outs() << "\n"; } } } else if (auto E = isNotObjectErrorInvalidFileType( UO.takeError())) { error(std::move(E), file, ArchFlags.size() > 1 ? - StringRef(I->getArchTypeName()) : StringRef()); + StringRef(I->getArchFlagName()) : StringRef()); return; } else if (Expected<std::unique_ptr<Archive>> AOrErr = I->getAsArchive()) { @@ -619,7 +619,7 @@ static void printFileSectionSizes(StringRef file) { ChildOrErr.takeError())) error(std::move(E), UA->getFileName(), C, ArchFlags.size() > 1 ? - StringRef(I->getArchTypeName()) : StringRef()); + StringRef(I->getArchFlagName()) : StringRef()); continue; } if (ObjectFile *o = dyn_cast<ObjectFile>(&*ChildOrErr.get())) { @@ -630,7 +630,7 @@ static void printFileSectionSizes(StringRef file) { else if (MachO && OutputFormat == darwin) outs() << UA->getFileName() << "(" << o->getFileName() << ")" - << " (for architecture " << I->getArchTypeName() + << " (for architecture " << I->getArchFlagName() << "):\n"; printObjectSectionSizes(o); if (OutputFormat == berkeley) { @@ -638,7 +638,7 @@ static void printFileSectionSizes(StringRef file) { outs() << UA->getFileName() << "(" << o->getFileName() << ")"; if (ArchFlags.size() > 1) - outs() << " (for architecture " << I->getArchTypeName() + outs() << " (for architecture " << I->getArchFlagName() << ")"; outs() << "\n"; } else @@ -652,7 +652,7 @@ static void printFileSectionSizes(StringRef file) { } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + file + " for architecture " + - StringRef(I->getArchTypeName()) + + StringRef(I->getArchFlagName()) + " is not a Mach-O file or an archive file"); } } @@ -672,7 +672,7 @@ static void printFileSectionSizes(StringRef file) { for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { - if (HostArchName == I->getArchTypeName()) { + if (HostArchName == I->getArchFlagName()) { Expected<std::unique_ptr<ObjectFile>> UO = I->getAsObjectFile(); if (UO) { if (ObjectFile *o = dyn_cast<ObjectFile>(&*UO.get())) { @@ -682,13 +682,13 @@ static void printFileSectionSizes(StringRef file) { else if (MachO && OutputFormat == darwin) { if (MoreThanOneFile) outs() << o->getFileName() << " (for architecture " - << I->getArchTypeName() << "):\n"; + << I->getArchFlagName() << "):\n"; } printObjectSectionSizes(o); if (OutputFormat == berkeley) { if (!MachO || MoreThanOneFile) outs() << o->getFileName() << " (for architecture " - << I->getArchTypeName() << ")"; + << I->getArchFlagName() << ")"; outs() << "\n"; } } @@ -716,7 +716,7 @@ static void printFileSectionSizes(StringRef file) { << "):\n"; else if (MachO && OutputFormat == darwin) outs() << UA->getFileName() << "(" << o->getFileName() << ")" - << " (for architecture " << I->getArchTypeName() + << " (for architecture " << I->getArchFlagName() << "):\n"; printObjectSectionSizes(o); if (OutputFormat == berkeley) { @@ -734,7 +734,7 @@ static void printFileSectionSizes(StringRef file) { } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + file + " for architecture " + - StringRef(I->getArchTypeName()) + + StringRef(I->getArchFlagName()) + " is not a Mach-O file or an archive file"); } return; @@ -756,20 +756,20 @@ static void printFileSectionSizes(StringRef file) { else if (MachO && OutputFormat == darwin) { if (MoreThanOneFile || MoreThanOneArch) outs() << o->getFileName() << " (for architecture " - << I->getArchTypeName() << "):"; + << I->getArchFlagName() << "):"; outs() << "\n"; } printObjectSectionSizes(o); if (OutputFormat == berkeley) { if (!MachO || MoreThanOneFile || MoreThanOneArch) outs() << o->getFileName() << " (for architecture " - << I->getArchTypeName() << ")"; + << I->getArchFlagName() << ")"; outs() << "\n"; } } } else if (auto E = isNotObjectErrorInvalidFileType(UO.takeError())) { error(std::move(E), file, MoreThanOneArch ? - StringRef(I->getArchTypeName()) : StringRef()); + StringRef(I->getArchFlagName()) : StringRef()); return; } else if (Expected<std::unique_ptr<Archive>> AOrErr = I->getAsArchive()) { @@ -782,7 +782,7 @@ static void printFileSectionSizes(StringRef file) { if (auto E = isNotObjectErrorInvalidFileType( ChildOrErr.takeError())) error(std::move(E), UA->getFileName(), C, MoreThanOneArch ? - StringRef(I->getArchTypeName()) : StringRef()); + StringRef(I->getArchFlagName()) : StringRef()); continue; } if (ObjectFile *o = dyn_cast<ObjectFile>(&*ChildOrErr.get())) { @@ -792,12 +792,12 @@ static void printFileSectionSizes(StringRef file) { << "):\n"; else if (MachO && OutputFormat == darwin) outs() << UA->getFileName() << "(" << o->getFileName() << ")" - << " (for architecture " << I->getArchTypeName() << "):\n"; + << " (for architecture " << I->getArchFlagName() << "):\n"; printObjectSectionSizes(o); if (OutputFormat == berkeley) { if (MachO) outs() << UA->getFileName() << "(" << o->getFileName() << ")" - << " (for architecture " << I->getArchTypeName() + << " (for architecture " << I->getArchFlagName() << ")\n"; else outs() << o->getFileName() << " (ex " << UA->getFileName() @@ -810,7 +810,7 @@ static void printFileSectionSizes(StringRef file) { } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + file + " for architecture " + - StringRef(I->getArchTypeName()) + + StringRef(I->getArchFlagName()) + " is not a Mach-O file or an archive file"); } } |