summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorNick Kledzik <kledzik@apple.com>2014-09-17 00:25:22 +0000
committerNick Kledzik <kledzik@apple.com>2014-09-17 00:25:22 +0000
commit3006130a8e64fdaf45fe6e40c5401cadb0e0cd4c (patch)
tree0892cf6646a0ffe4f4601f04b19b96fe4105bcf5 /llvm
parent6466f43688ffc28bcdc82bb2a197bb1332f51d52 (diff)
downloadbcm5719-llvm-3006130a8e64fdaf45fe6e40c5401cadb0e0cd4c.tar.gz
bcm5719-llvm-3006130a8e64fdaf45fe6e40c5401cadb0e0cd4c.zip
[llvm-objdump] properly use c_str() with format("%s"). Improve getLibraryShortNameByIndex() error handling.
llvm-svn: 217930
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp15
-rw-r--r--llvm/test/tools/llvm-objdump/macho-bind.test6
-rw-r--r--llvm/test/tools/llvm-objdump/macho-lazy-bind.test6
-rw-r--r--llvm/tools/llvm-objdump/MachODump.cpp4
4 files changed, 13 insertions, 18 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index bb973b41db2..94fa94cfc25 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -1184,27 +1184,22 @@ std::error_code MachOObjectFile::getLibraryShortNameByIndex(unsigned Index,
if (Index >= Libraries.size())
return object_error::parse_failed;
- MachO::dylib_command D =
- getStruct<MachO::dylib_command>(this, Libraries[Index]);
- if (D.dylib.name >= D.cmdsize)
- return object_error::parse_failed;
-
// If the cache of LibrariesShortNames is not built up do that first for
// all the Libraries.
if (LibrariesShortNames.size() == 0) {
for (unsigned i = 0; i < Libraries.size(); i++) {
MachO::dylib_command D =
getStruct<MachO::dylib_command>(this, Libraries[i]);
- if (D.dylib.name >= D.cmdsize) {
- LibrariesShortNames.push_back(StringRef());
- continue;
- }
+ if (D.dylib.name >= D.cmdsize)
+ return object_error::parse_failed;
const char *P = (const char *)(Libraries[i]) + D.dylib.name;
StringRef Name = StringRef(P);
+ if (D.dylib.name+Name.size() >= D.cmdsize)
+ return object_error::parse_failed;
StringRef Suffix;
bool isFramework;
StringRef shortName = guessLibraryShortName(Name, isFramework, Suffix);
- if (shortName == StringRef())
+ if (shortName.empty())
LibrariesShortNames.push_back(Name);
else
LibrariesShortNames.push_back(shortName);
diff --git a/llvm/test/tools/llvm-objdump/macho-bind.test b/llvm/test/tools/llvm-objdump/macho-bind.test
index 8865a9e98e5..19944652d78 100644
--- a/llvm/test/tools/llvm-objdump/macho-bind.test
+++ b/llvm/test/tools/llvm-objdump/macho-bind.test
@@ -6,6 +6,6 @@
# CHECK:__DATA __data 0x00001028 pointer 0 flat-namespace _any
# CHECK:__DATA __data 0x00001020 pointer 0 main-executable _fromApp
# CHECK:__DATA __data 0x00001018 pointer 0 this-image _myfunc
-# CHECK:__DATA __data 0x00001000 pointer 0 libfoo.dylib _foo
-# CHECK:__DATA __data 0x00001008 pointer 0 libbar.dylib _bar
-# CHECK:__DATA __data 0x00001010 pointer 0 libSystem.B.dylib _malloc
+# CHECK:__DATA __data 0x00001000 pointer 0 libfoo _foo
+# CHECK:__DATA __data 0x00001008 pointer 0 libbar _bar
+# CHECK:__DATA __data 0x00001010 pointer 0 libSystem _malloc
diff --git a/llvm/test/tools/llvm-objdump/macho-lazy-bind.test b/llvm/test/tools/llvm-objdump/macho-lazy-bind.test
index ffb4e5dc4f1..6f9ef222a91 100644
--- a/llvm/test/tools/llvm-objdump/macho-lazy-bind.test
+++ b/llvm/test/tools/llvm-objdump/macho-lazy-bind.test
@@ -3,6 +3,6 @@
# RUN: && FileCheck %s < %t || cat %t
-# CHECK: __DATA __la_symbol_ptr 0x100001010 libfoo.dylib _foo
-# CHECK: __DATA __la_symbol_ptr 0x100001018 libbar.dylib _bar
-# CHECK: __DATA __la_symbol_ptr 0x100001020 libSystem.B.dylib _malloc
+# CHECK: __DATA __la_symbol_ptr 0x100001010 libfoo _foo
+# CHECK: __DATA __la_symbol_ptr 0x100001018 libbar _bar
+# CHECK: __DATA __la_symbol_ptr 0x100001020 libSystem _malloc
diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp
index 602e8002800..378eacb256a 100644
--- a/llvm/tools/llvm-objdump/MachODump.cpp
+++ b/llvm/tools/llvm-objdump/MachODump.cpp
@@ -2482,7 +2482,7 @@ void llvm::printMachOBindTable(const object::MachOObjectFile *Obj) {
Address,
Entry.typeName().str().c_str(),
Entry.addend(),
- ordinalName(Obj, Entry.ordinal()))
+ ordinalName(Obj, Entry.ordinal()).str().c_str())
<< Entry.symbolName();
if (Entry.flags() & MachO::BIND_SYMBOL_FLAGS_WEAK_IMPORT)
outs() << " (weak_import)\n";
@@ -2514,7 +2514,7 @@ void llvm::printMachOLazyBindTable(const object::MachOObjectFile *Obj) {
SegmentName.str().c_str(),
SectionName.str().c_str(),
Address,
- ordinalName(Obj, Entry.ordinal()))
+ ordinalName(Obj, Entry.ordinal()).str().c_str())
<< Entry.symbolName() << "\n";
}
}
OpenPOWER on IntegriCloud