//===- TestLinkerTest.cpp -------------------------------------------------===// // // The MCLinker Project // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Linker/TestLinker.h" #include "TestLinkerTest.h" #include <mcld/Support/Path.h> #include <mcld/MC/MCLDDirectory.h> using namespace mcld; using namespace mcld::test; using namespace mcld::sys::fs; using namespace mcldtest; // Constructor can do set-up work for all test here. TestLinkerTest::TestLinkerTest() : m_pLinker(NULL) { } // Destructor can do clean-up work that doesn't throw exceptions here. TestLinkerTest::~TestLinkerTest() { } // SetUp() will be called immediately before each test. void TestLinkerTest::SetUp() { m_pLinker = new mcld::test::TestLinker(); m_pLinker->initialize("arm-none-linux-gnueabi"); // set up target-dependent constraints of attributes m_pLinker->config()->attrFactory().constraint().enableWholeArchive(); m_pLinker->config()->attrFactory().constraint().disableAsNeeded(); m_pLinker->config()->attrFactory().constraint().setSharedSystem(); // set up the predefined attributes m_pLinker->config()->attrFactory().predefined().setWholeArchive(); m_pLinker->config()->attrFactory().predefined().setDynamic(); // set up target dependent options mcld::sys::fs::Path path = TOPDIR; path.append("test/libs/ARM/Android/android-14"); m_pLinker->setSysRoot(path); m_pLinker->addSearchDir("=/"); m_pLinker->config()->options().setDyld("/usr/lib/ld.so.1"); m_pLinker->config()->options().setBsymbolic(true); } // TearDown() will be called immediately after each test. void TestLinkerTest::TearDown() { delete m_pLinker; } //===----------------------------------------------------------------------===// // Testcases //===----------------------------------------------------------------------===// TEST_F( TestLinkerTest, test) { m_pLinker->config()->options().setVerbose(3); mcld::sys::fs::Path top_level = TOPDIR; m_pLinker->addObject(top_level + "test/libs/ARM/Android/android-14/crtbegin_so.o"); m_pLinker->addObject(top_level + "test/Android/Plasma/ARM/plasma.o"); m_pLinker->addNameSpec("m"); m_pLinker->addNameSpec("log"); m_pLinker->addNameSpec("jnigraphics"); m_pLinker->addNameSpec("c"); m_pLinker->addObject(top_level + "test/libs/ARM/Android/android-14/crtend_so.o"); }