summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@apple.com>2014-12-19 02:31:01 +0000
committerJuergen Ributzka <juergen@apple.com>2014-12-19 02:31:01 +0000
commit4d7f70d47e027f5ba6d532cd4bd4f53014b9bd7a (patch)
tree4aaa49f05dbac902b5b374e2f61a5190a6698a43
parentce1d30142c19a05e45f4e73e7dae689ceb6ba26e (diff)
downloadbcm5719-llvm-4d7f70d47e027f5ba6d532cd4bd4f53014b9bd7a.tar.gz
bcm5719-llvm-4d7f70d47e027f5ba6d532cd4bd4f53014b9bd7a.zip
[Object] Don't crash on empty export lists.
Summary: This fixes the exports iterator if the export list is empty. Reviewers: Bigcheese, kledzik Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D6732 llvm-svn: 224563
-rw-r--r--llvm/lib/Object/MachOObjectFile.cpp5
-rwxr-xr-xllvm/test/Object/Inputs/macho-no-exports.dylibbin0 -> 4208 bytes
-rw-r--r--llvm/test/Object/objdump-export-list.test4
3 files changed, 8 insertions, 1 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index fd086af6d52..92981fe6b7e 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -1640,7 +1640,10 @@ void ExportEntry::moveNext() {
iterator_range<export_iterator>
MachOObjectFile::exports(ArrayRef<uint8_t> Trie) {
ExportEntry Start(Trie);
- Start.moveToFirst();
+ if (Trie.size() == 0)
+ Start.moveToEnd();
+ else
+ Start.moveToFirst();
ExportEntry Finish(Trie);
Finish.moveToEnd();
diff --git a/llvm/test/Object/Inputs/macho-no-exports.dylib b/llvm/test/Object/Inputs/macho-no-exports.dylib
new file mode 100755
index 00000000000..6e1be6ca97e
--- /dev/null
+++ b/llvm/test/Object/Inputs/macho-no-exports.dylib
Binary files differ
diff --git a/llvm/test/Object/objdump-export-list.test b/llvm/test/Object/objdump-export-list.test
new file mode 100644
index 00000000000..74344c1c2e2
--- /dev/null
+++ b/llvm/test/Object/objdump-export-list.test
@@ -0,0 +1,4 @@
+RUN: llvm-objdump -exports-trie %p/Inputs/macho-no-exports.dylib | FileCheck %s
+
+; Test that we don't crash with an empty export list.
+CHECK: macho-no-exports.dylib: file format Mach-O 64-bit x86-64
OpenPOWER on IntegriCloud