template<int size, bool big_endian>
bool
-Sized_binary_test(Target* target)
+Sized_binary_test()
{
+ parameters_clear_target();
// We need a pretend Task.
const Task* task = reinterpret_cast<const Task*>(-1);
binary.converted_size());
Object* object = make_elf_object("test.o", &input_file, 0,
binary.converted_data(),
- binary.converted_size());
+ binary.converted_size(), NULL);
CHECK(object != NULL);
if (object == NULL)
return false;
CHECK(!object->is_dynamic());
- CHECK(object->target() == target);
CHECK(object->shnum() == 5);
CHECK(object->section_name(1) == ".data");
CHECK(object->section_flags(1) == (elfcpp::SHF_ALLOC | elfcpp::SHF_WRITE));
Read_symbols_data sd;
object->read_symbols(&sd);
delete sd.section_headers;
+ sd.section_headers = NULL;
delete sd.section_names;
+ sd.section_names = NULL;
delete sd.symbols;
+ sd.symbols = NULL;
delete sd.symbol_names;
-
- Sized_relobj<size, big_endian>* relobj =
- static_cast<Sized_relobj<size, big_endian>*>(object);
- typename Sized_relobj<size, big_endian>::Address value;
- CHECK(relobj->symbol_section_and_value(0, &value) == 0);
+ sd.symbol_names = NULL;
+
+ Sized_relobj_file<size, big_endian>* relobj =
+ static_cast<Sized_relobj_file<size, big_endian>*>(object);
+ typename Sized_relobj_file<size, big_endian>::Address value;
+ bool is_ordinary;
+ CHECK(relobj->symbol_section_and_value(0, &value, &is_ordinary) == 0);
+ CHECK(is_ordinary);
CHECK(value == 0);
- CHECK(relobj->symbol_section_and_value(1, &value) == 1);
+ CHECK(relobj->symbol_section_and_value(1, &value, &is_ordinary) == 1);
+ CHECK(is_ordinary);
CHECK(value == 0);
- CHECK(relobj->symbol_section_and_value(2, &value) == 1);
+ CHECK(relobj->symbol_section_and_value(2, &value, &is_ordinary) == 1);
+ CHECK(is_ordinary);
CHECK(static_cast<off_t>(value) == st.st_size);
- CHECK(relobj->symbol_section_and_value(3, &value) == elfcpp::SHN_ABS);
+ CHECK(relobj->symbol_section_and_value(3, &value, &is_ordinary)
+ == elfcpp::SHN_ABS);
+ CHECK(!is_ordinary);
CHECK(static_cast<off_t>(value) == st.st_size);
object->unlock(task);
int fail = 0;
#ifdef HAVE_TARGET_32_LITTLE
- if (!Sized_binary_test<32, false>(target_test_pointer_32_little))
+ if (!Sized_binary_test<32, false>())
++fail;
+ CHECK(¶meters->target() == target_test_pointer_32_little);
#endif
#ifdef HAVE_TARGET_32_BIG
- if (!Sized_binary_test<32, true>(target_test_pointer_32_big))
+ if (!Sized_binary_test<32, true>())
++fail;
+ CHECK(¶meters->target() == target_test_pointer_32_big);
#endif
#ifdef HAVE_TARGET_64_LITTLE
- if (!Sized_binary_test<64, false>(target_test_pointer_64_little))
+ if (!Sized_binary_test<64, false>())
++fail;
+ CHECK(¶meters->target() == target_test_pointer_64_little);
#endif
#ifdef HAVE_TARGET_64_BIG
- if (!Sized_binary_test<64, true>(target_test_pointer_64_big))
+ if (!Sized_binary_test<64, true>())
++fail;
+ CHECK(¶meters->target() == target_test_pointer_64_big);
#endif
return fail == 0;