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//===----------------------------------------------------------------------===// 922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include "StaticResolverTest.h" 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/TargetSelect.h" 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/StaticResolver.h" 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LD/ResolveInfo.h" 1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LinkerConfig.h" 145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1537b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/FileSystem.h" 165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcld; 185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaousing namespace mcldtest; 195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2067e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao//===----------------------------------------------------------------------===// 2167e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao// StaticResolverTest 2267e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao//===----------------------------------------------------------------------===// 235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Constructor can do set-up work for all test here. 2437b74a387bb3993387029859c2d9d051c41c724eStephen HinesStaticResolverTest::StaticResolverTest() : m_pResolver(NULL), m_pConfig(NULL) { 255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao // create testee. modify it if need 265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao m_pResolver = new StaticResolver(); 2767e37f1be98c926645219cfb47fab9e90d8c725cShih-wei Liao 2822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao m_pConfig = new LinkerConfig("arm-none-linux-gnueabi"); 295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Destructor can do clean-up work that doesn't throw exceptions here. 3237b74a387bb3993387029859c2d9d051c41c724eStephen HinesStaticResolverTest::~StaticResolverTest() { 335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao delete m_pResolver; 3422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao delete m_pConfig; 355460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// SetUp() will be called immediately before each test. 3837b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid StaticResolverTest::SetUp() { 395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 405460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 415460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// TearDown() will be called immediately after each test. 4237b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid StaticResolverTest::TearDown() { 435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao//==========================================================================// 465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// Testcases 475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao// 4837b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, MDEF) { 4922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 5337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == new_sym->desc()); 5437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == old_sym->desc()); 5537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::define_flag == new_sym->info()); 5637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::define_flag == old_sym->info()); 575460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = true; 5887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 59affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 6037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(override); 615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 6337b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, DynDefAfterDynUndef) { 6422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 6522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 66551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Undefined); 705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 7837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == new_sym->binding()); 7937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == old_sym->binding()); 8037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Undefined == new_sym->desc()); 8137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == old_sym->desc()); 825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 8487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 85affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 8637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(override); 8722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(1 == old_sym->size()); 885460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 895460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 9037b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, DynDefAfterDynDef) { 9122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 9222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 93551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 945460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 955460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1035460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1045460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 10537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == new_sym->binding()); 10637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == old_sym->binding()); 10737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == new_sym->desc()); 10837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == old_sym->desc()); 1095460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1105460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 11187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 112affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 11337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(override); 11422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(1 == old_sym->size()); 1155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1165460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 11737b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, DynUndefAfterDynUndef) { 11822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 11922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 120551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 1215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Global); 1235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Undefined); 1245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Undefined); 1255460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1295460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 13237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == new_sym->binding()); 13337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == old_sym->binding()); 13437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Undefined == new_sym->desc()); 13537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Undefined == old_sym->desc()); 1365460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1375460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 13887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 139affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 14037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(override); 14122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(1 == old_sym->size()); 1425460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1435460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 14437b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, OverrideWeakByGlobal) { 14522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 14622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 147551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 1485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 1505460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1515460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 15337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == new_sym->binding()); 15437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Weak == old_sym->binding()); 1555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 15637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::global_flag == new_sym->info()); 15737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::weak_flag == old_sym->info()); 1585460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 15987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 160affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 16137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(override); 16222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(0 == old_sym->size()); 1635460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1645460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 16537b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, DynWeakAfterDynDef) { 16622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 16722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 168551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 1695460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 1705460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setBinding(ResolveInfo::Global); 1715460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSource(true); 1735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSource(true); 1745460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1755460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Define); 1765460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 1775460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1785460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(0); 1795460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1805460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(1); 1815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 18237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Weak == old_sym->binding()); 18337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Global == new_sym->binding()); 18437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == old_sym->desc()); 18537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Define == new_sym->desc()); 1865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 1875460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 18887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 189affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 19037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(override); 19122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(1 == old_sym->size()); 1925460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 1935460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 19437b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, MarkByBiggerCommon) { 19522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 19622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 197551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 1985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Common); 1995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2005460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2015460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2025460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 20337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Common == new_sym->desc()); 20437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::Common == old_sym->desc()); 2055460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 20637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::common_flag == new_sym->info()); 20737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(mcld::ResolveInfo::common_flag == old_sym->info()); 2085460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = true; 20987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 210affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 21137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(override); 21222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(999 == old_sym->size()); 2135460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 21537b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, OverrideByBiggerCommon) { 21622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 21722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 218551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 2195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Common); 2205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2215460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setBinding(ResolveInfo::Weak); 2225460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2235460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2245460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 22537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Common == new_sym->desc()); 22637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Common == old_sym->desc()); 22737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Weak == old_sym->binding()); 2285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 22937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::common_flag == new_sym->info()); 23037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE((ResolveInfo::weak_flag | ResolveInfo::common_flag) == 23137b74a387bb3993387029859c2d9d051c41c724eStephen Hines old_sym->info()); 2325460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2335460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 23487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 235affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 23637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(override); 23722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(999 == old_sym->size()); 2385460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2395460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 24037b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, OverrideCommonByDefine) { 24122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* old_sym = ResolveInfo::Create("abc"); 24222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* new_sym = ResolveInfo::Create("abc"); 243551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 2445460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setDesc(ResolveInfo::Common); 2455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao old_sym->setSize(0); 2465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2475460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setDesc(ResolveInfo::Define); 2485460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao new_sym->setSize(999); 2495460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 25037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Define == new_sym->desc()); 25137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Common == old_sym->desc()); 2525460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 25337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::define_flag == new_sym->info()); 25437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::common_flag == old_sym->info()); 2555460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2565460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao bool override = false; 25787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines bool result = m_pResolver->resolve(*old_sym, *new_sym, override, 0x0); 258affc150dc44fab1911775a49636d0ce85333b634Zonr Chang ASSERT_TRUE(result); 25937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(override); 26022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ASSERT_TRUE(999 == old_sym->size()); 2615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 2625460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 26337b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, SetUpDesc) { 26422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* sym = ResolveInfo::Create("abc"); 265551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 2665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(true); 2675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 26837b74a387bb3993387029859c2d9d051c41c724eStephen Hines // ASSERT_FALSE( sym->isSymbol() ); 26937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isSymbol()); 27037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 27137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 27237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 27337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 27437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 27537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 27637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 27737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 27837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 27937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 28037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 28137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 2825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2835460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(false); 28437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isSymbol()); 28537b74a387bb3993387029859c2d9d051c41c724eStephen Hines // ASSERT_TRUE( sym->isSymbol() ); 28637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 28737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 28837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 28937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 29037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 29137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 29237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 29337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 29437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 29537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 29637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 29737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 2985460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 2995460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Define); 30037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isSymbol()); 30137b74a387bb3993387029859c2d9d051c41c724eStephen Hines // ASSERT_TRUE( sym->isSymbol() ); 30237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 30337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 30437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 30537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isDefine()); 30637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isUndef()); 30737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 30837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 30937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 31037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 31137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Define == sym->desc()); 31237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 31337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 3145460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3155460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Common); 31637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isSymbol()); 31737b74a387bb3993387029859c2d9d051c41c724eStephen Hines // ASSERT_TRUE( sym->isSymbol() ); 31837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 31937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 32037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 32137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 32237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 32337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isUndef()); 32437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isCommon()); 32537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 32637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 32737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Common == sym->desc()); 32837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 32937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 3305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Indirect); 33237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isSymbol()); 33337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 33437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 33537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 33637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 33737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 33837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isUndef()); 33937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 34037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isIndirect()); 34137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 34237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Indirect == sym->desc()); 34337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 34437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 3455460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3465460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setDesc(ResolveInfo::Undefined); 34737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isSymbol()); 34837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 34937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 35037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 35137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 35237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 35337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 35437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 35537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 35637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 35737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 35837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 35937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 3605460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 3615460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 36237b74a387bb3993387029859c2d9d051c41c724eStephen HinesTEST_F(StaticResolverTest, SetUpBinding) { 36322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao ResolveInfo* sym = ResolveInfo::Create("abc"); 364551ae4ebd3e9d137ea668fb83ae4a55b8cfba451Stephen Hines 3655460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setIsSymbol(true); 3665460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 36737b74a387bb3993387029859c2d9d051c41c724eStephen Hines // ASSERT_FALSE( sym->isSymbol() ); 36837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isSymbol()); 36937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 37037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 37137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 37237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 37337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 37437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 37537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 37637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 37737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 37837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 37937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->binding()); 38037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 3815460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3825460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Global); 38337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isSymbol()); 38437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isGlobal()); 38537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 38637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 38737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 38837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 38937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 39037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 39137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 39237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 39337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 39437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Global == sym->binding()); 39537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 3965460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 3975460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Weak); 39837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isSymbol()); 39937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isGlobal()); 40037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isWeak()); 40137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isLocal()); 40237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 40337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 40437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 40537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 40637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 40737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 40837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 40937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Weak == sym->binding()); 41037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 4115460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao 4125460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao sym->setBinding(ResolveInfo::Local); 41337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isSymbol()); 41437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isGlobal()); 41537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isWeak()); 41637b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isLocal()); 41737b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDyn()); 41837b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isDefine()); 41937b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(sym->isUndef()); 42037b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isCommon()); 42137b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_FALSE(sym->isIndirect()); 42237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::NoType == sym->type()); 42337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->desc()); 42437b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(ResolveInfo::Local == sym->binding()); 42537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT_TRUE(0 == sym->other()); 4265460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao} 427