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