15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===- implTest.cpp -------------------------------------------------------===// 25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// The MCLinker Project 45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// This file is distributed under the University of Illinois Open Source 65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// License. See LICENSE.TXT for details. 75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//===----------------------------------------------------------------------===// 9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/TargetSelect.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/StaticResolver.h> 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/ResolveInfo.h> 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/ResolveInfoFactory.h> 13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticPrinter.h> 14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticLineInfo.h> 15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/TextDiagnosticPrinter.h> 16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/MsgHandling.h> 17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/MC/MCLDInfo.h> 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "StaticResolverTest.h" 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <iostream> 21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/MsgHandling.h> 22affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/Support/FileSystem.h> 23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/DiagnosticLineInfo.h> 24affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/TextDiagnosticPrinter.h> 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace std; 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcldtest; 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao//===----------------------------------------------------------------------===// 3167e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao// StaticResolverTest 3267e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao//===----------------------------------------------------------------------===// 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Constructor can do set-up work for all test here. 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoStaticResolverTest::StaticResolverTest() 3567e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao : m_pResolver(NULL), m_pFactory(NULL), m_pLDInfo(NULL), m_pLineInfo(NULL) { 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // create testee. modify it if need 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pResolver = new StaticResolver(); 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pFactory = new ResolveInfoFactory(); 3967e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao 40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang mcld::InitializeAllDiagnostics(); 41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang 42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pLDInfo = new MCLDInfo("arm-none-linux-gnueabi", 10, 10); 43affc150dc44fab1911775a49636d0ce85333b634Zonr Chang m_pLineInfo = new DiagnosticLineInfo(); 4467e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao mcld::InitializeDiagnosticEngine(*m_pLDInfo, m_pLineInfo, NULL); 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here. 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoStaticResolverTest::~StaticResolverTest() 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pResolver; 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pFactory; 52affc150dc44fab1911775a49636d0ce85333b634Zonr Chang delete m_pLDInfo; 53cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao delete m_pLineInfo; 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// SetUp() will be called immediately before each test. 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid StaticResolverTest::SetUp() 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// TearDown() will be called immediately after each test. 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid StaticResolverTest::TearDown() 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================================================================// 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Testcases 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, MDEF ) { 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, new_sym->desc()); 755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::define_flag == new_sym->info()); 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::define_flag == old_sym->info()); 785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = true; 79affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 80affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynDefAfterDynUndef ) { 855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Undefined); 915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, old_sym->binding()); 1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Undefined, new_sym->desc()); 1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 105affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 106affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 1075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 1085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 1095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynDefAfterDynDef ) { 1125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 1175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 1185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 1195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, old_sym->binding()); 1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, new_sym->desc()); 1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 132affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 133affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 1345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 1355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynUndefAfterDynUndef ) { 1395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 1445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Undefined); 1455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Undefined); 1465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, old_sym->binding()); 1555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Undefined, new_sym->desc()); 1565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Undefined, old_sym->desc()); 1575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 159affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 160affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 1615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 1625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, OverrideWeakByGlobal ) 1665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 1675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 1725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Weak, old_sym->binding()); 1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::global_flag == new_sym->info()); 1795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::weak_flag == old_sym->info()); 1805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 181affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 182affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( override ); 1845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(0, old_sym->size()); 1855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynWeakAfterDynDef ) { 1885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 2035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Weak, old_sym->binding()); 2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 2065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 2075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, new_sym->desc()); 2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 210affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 211affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, MarkByBiggerCommon ) 2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Common); 2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Common, new_sym->desc()); 2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Common, old_sym->desc()); 2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::common_flag == new_sym->info()); 2305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::common_flag == old_sym->info()); 2315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = true; 232affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 233affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 2345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 2355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(999, old_sym->size()); 2365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, OverrideByBiggerCommon ) 2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 2415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 2425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Common); 2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 2465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, new_sym->desc()); 2505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, old_sym->desc()); 2515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Weak, old_sym->binding()); 2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( ResolveInfo::common_flag == new_sym->info()); 2545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( (ResolveInfo::weak_flag | ResolveInfo::common_flag) == old_sym->info()); 2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 257affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 258affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 2595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( override ); 2605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(999, old_sym->size()); 2615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, OverrideCommonByDefine) 2645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 2665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 2725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Define, new_sym->desc()); 2755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, old_sym->desc()); 2765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( ResolveInfo::define_flag == new_sym->info()); 2785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( ResolveInfo::common_flag == old_sym->info()); 2795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 281affc150dc44fab1911775a49636d0ce85333b634Zonr Chang bool result = m_pResolver->resolve(*old_sym, *new_sym, override); 282affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( override ); 2845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(999, old_sym->size()); 2855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, SetUpDesc) 2885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* sym = m_pFactory->produce("abc"); 2905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(true); 2925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_FALSE( sym->isSymbol() ); 2945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 2955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 2965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 2975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 3005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 3055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(false); 3095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_TRUE( sym->isSymbol() ); 3115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 3165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 3215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Define); 3255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_TRUE( sym->isSymbol() ); 3275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isDefine() ); 3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isUndef() ); 3325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Define, sym->desc() ); 3375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Common); 3415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_TRUE( sym->isSymbol() ); 3435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isUndef() ); 3495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isCommon() ); 3505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, sym->desc() ); 3535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Indirect); 3575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isUndef() ); 3645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isIndirect() ); 3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Indirect, sym->desc() ); 3685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Undefined); 3725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 3785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 3835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 3865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, SetUpBinding) 3885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 3895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* sym = m_pFactory->produce("abc"); 3905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(true); 3925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_FALSE( sym->isSymbol() ); 3945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 3955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 4005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 4015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 4065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Global); 4095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 4105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 4125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 4135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 4145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 4155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 4165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Global, sym->binding() ); 4215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Weak); 4245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 4255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isGlobal() ); 4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isWeak() ); 4275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 4285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 4295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 4305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 4315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Weak, sym->binding() ); 4365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Local); 4395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 4405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isGlobal() ); 4415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 4425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isLocal() ); 4435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 4445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 4455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 4465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Local, sym->binding() ); 4515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 4535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 454