aboutsummaryrefslogtreecommitdiff
path: root/gold/testsuite/object_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gold/testsuite/object_unittest.cc')
-rw-r--r--gold/testsuite/object_unittest.cc44
1 files changed, 41 insertions, 3 deletions
diff --git a/gold/testsuite/object_unittest.cc b/gold/testsuite/object_unittest.cc
index e95ea32..9b03425 100644
--- a/gold/testsuite/object_unittest.cc
+++ b/gold/testsuite/object_unittest.cc
@@ -34,12 +34,14 @@ using namespace gold;
// Test basic Object functionality.
+template<int size, bool big_endian>
bool
-Object_test(Test_report*)
+Sized_object_test(const unsigned char* test_file, unsigned int test_file_size,
+ Target* target_test_pointer)
{
- Input_file input_file("test.o", test_file_1, test_file_1_size);
+ Input_file input_file("test.o", test_file, test_file_size);
Object* object = make_elf_object("test.o", &input_file, 0,
- test_file_1, test_file_1_size);
+ test_file, test_file_size);
CHECK(object->name() == "test.o");
CHECK(!object->is_dynamic());
CHECK(object->target() == target_test_pointer);
@@ -56,6 +58,42 @@ Object_test(Test_report*)
return true;
}
+bool
+Object_test(Test_report*)
+{
+ int fail = 0;
+
+#ifdef HAVE_TARGET_32_LITTLE
+ if (!Sized_object_test<32, false>(test_file_1_32_little,
+ test_file_1_size_32_little,
+ target_test_pointer_32_little))
+ ++fail;
+#endif
+
+#ifdef HAVE_TARGET_32_BIG
+ if (!Sized_object_test<32, true>(test_file_1_32_big,
+ test_file_1_size_32_big,
+ target_test_pointer_32_big))
+ ++fail;
+#endif
+
+#ifdef HAVE_TARGET_64_LITTLE
+ if (!Sized_object_test<64, false>(test_file_1_64_little,
+ test_file_1_size_64_little,
+ target_test_pointer_64_little))
+ ++fail;
+#endif
+
+#ifdef HAVE_TARGET_64_BIG
+ if (!Sized_object_test<64, true>(test_file_1_64_big,
+ test_file_1_size_64_big,
+ target_test_pointer_64_big))
+ ++fail;
+#endif
+
+ return fail == 0;
+}
+
Register_test object_register("Object", Object_test);
} // End namespace gold_testsuite.