StaticResolverTest.cpp revision 5460a1f25d9ddecb5c70667267d66d51af177a99
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//===----------------------------------------------------------------------===// 95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/StaticResolver.h> 105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/ResolveInfo.h> 115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <mcld/LD/ResolveInfoFactory.h> 125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include "StaticResolverTest.h" 135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao#include <iostream> 155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace std; 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcldtest; 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Constructor can do set-up work for all test here. 215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoStaticResolverTest::StaticResolverTest() 225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // create testee. modify it if need 245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pResolver = new StaticResolver(); 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pFactory = new ResolveInfoFactory(); 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here. 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoStaticResolverTest::~StaticResolverTest() 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pResolver; 325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pFactory; 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// SetUp() will be called immediately before each test. 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid StaticResolverTest::SetUp() 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// TearDown() will be called immediately after each test. 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaovoid StaticResolverTest::TearDown() 425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================================================================// 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Testcases 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, MDEF ) { 495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, new_sym->desc()); 545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::define_flag == new_sym->info()); 565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::define_flag == old_sym->info()); 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = true; 585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Abort, result); 605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_STREQ( "multiple definitions of `abc'.", m_pResolver->mesg().c_str() ); 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynDefAfterDynUndef ) { 655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Undefined); 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, old_sym->binding()); 815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Undefined, new_sym->desc()); 825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynDefAfterDynDef ) { 925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, old_sym->binding()); 1085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, new_sym->desc()); 1095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 1125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 1135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 1145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynUndefAfterDynUndef ) { 1195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 1245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Undefined); 1255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Undefined); 1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, old_sym->binding()); 1355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Undefined, new_sym->desc()); 1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Undefined, old_sym->desc()); 1375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 1395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 1405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 1415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 1425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 1435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, OverrideWeakByGlobal ) 1465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 1475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 1525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Weak, old_sym->binding()); 1575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::global_flag == new_sym->info()); 1595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::weak_flag == old_sym->info()); 1605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 1615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 1625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( override ); 1645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(0, old_sym->size()); 1655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, DynWeakAfterDynDef ) { 1685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 1705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 1725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 1785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 1795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Weak, old_sym->binding()); 1855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Global, new_sym->binding()); 1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, old_sym->desc()); 1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Define, new_sym->desc()); 1885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 1905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 1915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(1, old_sym->size()); 1945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, MarkByBiggerCommon ) 1975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Common); 2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Common, new_sym->desc()); 2075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( mcld::ResolveInfo::Common, old_sym->desc()); 2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::common_flag == new_sym->info()); 2105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( mcld::ResolveInfo::common_flag == old_sym->info()); 2115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = true; 2125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( override ); 2155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(999, old_sym->size()); 2165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, OverrideByBiggerCommon ) 2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Common); 2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 2265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, new_sym->desc()); 2305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, old_sym->desc()); 2315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Weak, old_sym->binding()); 2325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( ResolveInfo::common_flag == new_sym->info()); 2345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( (ResolveInfo::weak_flag | ResolveInfo::common_flag) == old_sym->info()); 2355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 2375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( Resolver::Success, result); 2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( override ); 2405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(999, old_sym->size()); 2415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, OverrideCommonByDefine) 2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* old_sym = m_pFactory->produce("abc"); 2465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* new_sym = m_pFactory->produce("abc"); 2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Define, new_sym->desc()); 2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, old_sym->desc()); 2565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( ResolveInfo::define_flag == new_sym->info()); 2585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( ResolveInfo::common_flag == old_sym->info()); 2595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 2615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao unsigned int result = m_pResolver->resolve(*old_sym, *new_sym, override); 2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(Resolver::Warning, result); 2635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( override ); 2645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ(999, old_sym->size()); 2655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_STREQ("definition of 'abc' is overriding common.", m_pResolver->mesg().c_str() ); 2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, SetUpDesc) 2715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 2725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* sym = m_pFactory->produce("abc"); 2735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(true); 2755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_FALSE( sym->isSymbol() ); 2775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 2785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 2795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 2805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 2815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 2825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 2845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 2855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 2865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 2875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 2885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 2895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 2905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(false); 2925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 2935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_TRUE( sym->isSymbol() ); 2945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 2955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 2965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 2975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 3045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Define); 3085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_TRUE( sym->isSymbol() ); 3105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isDefine() ); 3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isUndef() ); 3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Define, sym->desc() ); 3205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Common); 3245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_TRUE( sym->isSymbol() ); 3265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isUndef() ); 3325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isCommon() ); 3335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Common, sym->desc() ); 3365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Indirect); 3405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isUndef() ); 3475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isIndirect() ); 3495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Indirect, sym->desc() ); 3515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3535460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3545460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Undefined); 3555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isSymbol() ); 3565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3595460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 3695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei LiaoTEST_F( StaticResolverTest, SetUpBinding) 3715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao{ 3725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ResolveInfo* sym = m_pFactory->produce("abc"); 3735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(true); 3755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// ASSERT_FALSE( sym->isSymbol() ); 3775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 3785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 3835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3845460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 3855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 3865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 3875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 3885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->binding() ); 3895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 3905460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3915460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Global); 3925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 3935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isGlobal() ); 3945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 3955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 3975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 3985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 3995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Global, sym->binding() ); 4045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4065460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Weak); 4075460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 4085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isGlobal() ); 4095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isWeak() ); 4105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isLocal() ); 4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 4125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 4135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 4145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Weak, sym->binding() ); 4195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Local); 4225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isSymbol() ); 4235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isGlobal() ); 4245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isWeak() ); 4255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isLocal() ); 4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDyn() ); 4275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isDefine() ); 4285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_TRUE( sym->isUndef() ); 4295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isCommon() ); 4305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_FALSE( sym->isIndirect() ); 4315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::NoType, sym->type()); 4325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->desc() ); 4335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( ResolveInfo::Local, sym->binding() ); 4345460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao ASSERT_EQ( 0, sym->other() ); 4355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 4365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 437