summaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2013-12-18 19:20:29 +0000
committerOwen Anderson <resistor@mac.com>2013-12-18 19:20:29 +0000
commit04946d54db28d963a330f4d390c433069ac36da8 (patch)
tree9819fa2aa97994271278809537ed6dfb923883ef /unittests
parent2ceb6aeb6669cb9406f7326d80861d7f1c99330f (diff)
downloadllvm-04946d54db28d963a330f4d390c433069ac36da8.tar.gz
llvm-04946d54db28d963a330f4d390c433069ac36da8.tar.bz2
llvm-04946d54db28d963a330f4d390c433069ac36da8.tar.xz
Add a unit test for loading an object file via a file descriptor. Patch by Pete Cooper.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197600 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests')
-rw-r--r--unittests/ArchiveFileDescriptor/ArchiveFileDescriptor.cpp53
-rw-r--r--unittests/ArchiveFileDescriptor/CMakeLists.txt8
-rw-r--r--unittests/ArchiveFileDescriptor/Makefile15
-rw-r--r--unittests/CMakeLists.txt1
-rw-r--r--unittests/Makefile4
5 files changed, 79 insertions, 2 deletions
diff --git a/unittests/ArchiveFileDescriptor/ArchiveFileDescriptor.cpp b/unittests/ArchiveFileDescriptor/ArchiveFileDescriptor.cpp
new file mode 100644
index 0000000000..193e5710c3
--- /dev/null
+++ b/unittests/ArchiveFileDescriptor/ArchiveFileDescriptor.cpp
@@ -0,0 +1,53 @@
+//===- llvm/unittest/ArchiveFileDescriptor/ArchiveFileDescriptor.cpp ------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Object/Archive.h"
+#include "llvm/Object/ObjectFile.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "gtest/gtest.h"
+
+using namespace llvm;
+using namespace llvm::object;
+
+static void failIfError(error_code EC) {
+ if (!EC)
+ return;
+
+ errs() << "ERROR: " << EC.message() << "\n";
+ exit(1);
+}
+
+TEST(ArchiveFileDescriptor, Test1) {
+ int FD;
+
+ error_code EC = sys::fs::openFileForRead("ArchiveFileDescriptor", FD);
+ failIfError(EC);
+
+ OwningPtr<MemoryBuffer> MemoryBuffer;
+ EC = MemoryBuffer::getOpenFile(FD, "Dummy Filename",
+ MemoryBuffer,
+ /* FileSize */ -1,
+ /* RequiresNullTerminator */ false);
+ failIfError(EC);
+
+ // Attempt to open the binary.
+ OwningPtr<Binary> Binary;
+ EC = createBinary(MemoryBuffer.take(), Binary);
+ failIfError(EC);
+
+ if (Archive *Arc = dyn_cast<Archive>(Binary.get())) {
+ (void)Arc;
+ errs() << "ERROR: Loaded archive, was expecting object file\n";
+ } else if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get())) {
+ (void)Obj;
+ } else {
+ outs() << "ERROR: Unknown file type\n";
+ exit(1);
+ }
+}
diff --git a/unittests/ArchiveFileDescriptor/CMakeLists.txt b/unittests/ArchiveFileDescriptor/CMakeLists.txt
new file mode 100644
index 0000000000..c7e292ad64
--- /dev/null
+++ b/unittests/ArchiveFileDescriptor/CMakeLists.txt
@@ -0,0 +1,8 @@
+set(LLVM_LINK_COMPONENTS
+ Object
+ Support
+ )
+
+add_llvm_unittest(ArchiveFileDescriptor
+ ArchiveFileDescriptor.cpp
+ )
diff --git a/unittests/ArchiveFileDescriptor/Makefile b/unittests/ArchiveFileDescriptor/Makefile
new file mode 100644
index 0000000000..460b86c0a0
--- /dev/null
+++ b/unittests/ArchiveFileDescriptor/Makefile
@@ -0,0 +1,15 @@
+##===- unittests/ArchiveFileDescriptor/Makefile ------------*- Makefile -*-===##
+#
+# The LLVM Compiler Infrastructure
+#
+# This file is distributed under the University of Illinois Open Source
+# License. See LICENSE.TXT for details.
+#
+##===----------------------------------------------------------------------===##
+
+LEVEL = ../..
+TESTNAME = ArchiveFileDescriptor
+LINK_COMPONENTS := object
+
+include $(LEVEL)/Makefile.config
+include $(LLVM_SRC_ROOT)/unittests/Makefile.unittest
diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt
index 52702ba23a..9857e787ee 100644
--- a/unittests/CMakeLists.txt
+++ b/unittests/CMakeLists.txt
@@ -7,6 +7,7 @@ endfunction()
add_subdirectory(ADT)
add_subdirectory(Analysis)
+add_subdirectory(ArchiveFileDescriptor)
add_subdirectory(Bitcode)
add_subdirectory(CodeGen)
add_subdirectory(DebugInfo)
diff --git a/unittests/Makefile b/unittests/Makefile
index 06ba93243e..d80cab2621 100644
--- a/unittests/Makefile
+++ b/unittests/Makefile
@@ -9,8 +9,8 @@
LEVEL = ..
-PARALLEL_DIRS = ADT Analysis Bitcode CodeGen DebugInfo ExecutionEngine IR \
- MC Object Option Support Transforms
+PARALLEL_DIRS = ADT Analysis ArchiveFileDescriptor Bitcode CodeGen DebugInfo \
+ ExecutionEngine IR MC Object Option Support Transforms
include $(LEVEL)/Makefile.common