1affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===- NamePoolTest.cpp ---------------------------------------------------===//
2affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
3affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//                     The MCLinker Project
4affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
5affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// This file is distributed under the University of Illinois Open Source
6affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// License. See LICENSE.TXT for details.
7affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
8affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//===----------------------------------------------------------------------===//
9affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include "NamePoolTest.h"
10affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/NamePool.h>
11affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/Resolver.h>
12affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/StaticResolver.h>
13affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/ResolveInfo.h>
14affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <mcld/LD/LDSymbol.h>
15affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <llvm/ADT/StringRef.h>
16affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <string>
17affc150dc44fab1911775a49636d0ce85333b634Zonr Chang#include <cstdio>
18affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
19affc150dc44fab1911775a49636d0ce85333b634Zonr Changusing namespace mcld;
20affc150dc44fab1911775a49636d0ce85333b634Zonr Changusing namespace mcldtest;
21affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
22affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
23affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// Constructor can do set-up work for all test here.
24affc150dc44fab1911775a49636d0ce85333b634Zonr ChangNamePoolTest::NamePoolTest()
25affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
26affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  // create testee. modify it if need
27affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  StaticResolver resolver;
28affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  m_pTestee = new NamePool(resolver, 10);
29affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
30affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
31affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// Destructor can do clean-up work that doesn't throw exceptions here.
32affc150dc44fab1911775a49636d0ce85333b634Zonr ChangNamePoolTest::~NamePoolTest()
33affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
34affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  delete m_pTestee;
35affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
36affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
37affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// SetUp() will be called immediately before each test.
38affc150dc44fab1911775a49636d0ce85333b634Zonr Changvoid NamePoolTest::SetUp()
39affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
40affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
41affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
42affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// TearDown() will be called immediately after each test.
43affc150dc44fab1911775a49636d0ce85333b634Zonr Changvoid NamePoolTest::TearDown()
44affc150dc44fab1911775a49636d0ce85333b634Zonr Chang{
45affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
46affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
47affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//==========================================================================//
48affc150dc44fab1911775a49636d0ce85333b634Zonr Chang// Testcases
49affc150dc44fab1911775a49636d0ce85333b634Zonr Chang//
50affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
51affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
52affc150dc44fab1911775a49636d0ce85333b634Zonr ChangTEST_F( NamePoolTest, insertString ) {
53affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *s1 = "Hello MCLinker";
54affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  llvm::StringRef result1 = m_pTestee->insertString(s1);
55affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_NE(s1, result1.data());
56affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(s1, result1.data());
57affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
58affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
59affc150dc44fab1911775a49636d0ce85333b634Zonr ChangTEST_F( NamePoolTest, insertSameString ) {
60affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *s1 = "Hello MCLinker";
61affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  std::string s2(s1);
62affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  llvm::StringRef result1 = m_pTestee->insertString(s1);
63affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  llvm::StringRef result2 = m_pTestee->insertString(s2.c_str());
64affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(s1, result1.data());
65affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(s2.c_str(), result2.data());
66affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(result1.data(), result2.data());
67affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
68affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
69affc150dc44fab1911775a49636d0ce85333b634Zonr ChangTEST_F( NamePoolTest, insert_local_defined_Symbol ) {
70affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *name = "Hello MCLinker";
71affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  bool isDyn = false;
72affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Type type = ResolveInfo::Function;
73affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Desc desc = ResolveInfo::Define;
74affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Binding binding = ResolveInfo::Local;
75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t value = 0;
76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t size = 0;
77affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Visibility other = ResolveInfo::Default;
78affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Resolver::Result result1;
79affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  m_pTestee->insertSymbol(name,
80affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          isDyn,
81affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          type,
82affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          desc,
83affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          binding,
84affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          size,
85affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          other,
86affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          NULL,
87affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          result1);
88affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
89affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_NE(name, result1.info->name());
90affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(name, result1.info->name());
91affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(isDyn, result1.info->isDyn());
92affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(type, result1.info->type());
93affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(desc, result1.info->desc());
94affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(binding, result1.info->binding());
95affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(size, result1.info->size());
96affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(other, result1.info->visibility());
97affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
98affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Resolver::Result result2;
99affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  m_pTestee->insertSymbol(name,
100affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          isDyn,
101affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          type,
102affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          desc,
103affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          binding,
104affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          size,
105affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          other,
106affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          NULL,
107affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          result2);
108affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
109affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_NE(name, result1.info->name());
110affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(name, result1.info->name());
111affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(isDyn, result1.info->isDyn());
112affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(type, result1.info->type());
113affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(desc, result1.info->desc());
114affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(binding, result1.info->binding());
115affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(size, result1.info->size());
116affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(other, result1.info->visibility());
117affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
118affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_NE(result1.existent, result2.existent);
119affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
120affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
121affc150dc44fab1911775a49636d0ce85333b634Zonr ChangTEST_F( NamePoolTest, insert_global_reference_Symbol ) {
122affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *name = "Hello MCLinker";
123affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  bool isDyn = false;
124affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Type type = ResolveInfo::NoType;
125affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Desc desc = ResolveInfo::Undefined;
126affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Binding binding = ResolveInfo::Global;
127affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t size = 0;
128affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  ResolveInfo::Visibility other = ResolveInfo::Default;
129affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Resolver::Result result1;
130affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  m_pTestee->insertSymbol(name,
131affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          isDyn,
132affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          type,
133affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          desc,
134affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          binding,
135affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          size,
136affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          other,
137affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          NULL,
138affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          result1);
139affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
140affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_NE(name, result1.info->name());
141affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(name, result1.info->name());
142affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(isDyn, result1.info->isDyn());
143affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(type, result1.info->type());
144affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(desc, result1.info->desc());
145affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(binding, result1.info->binding());
146affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(size, result1.info->size());
147affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(other, result1.info->visibility());
148affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
149affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Resolver::Result result2;
150affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  m_pTestee->insertSymbol(name,
151affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          isDyn,
152affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          type,
153affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          desc,
154affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          binding,
155affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          size,
156affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          other,
157affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          NULL,
158affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          result2);
159affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
160affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(result1.info, result2.info);
161affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
162affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  Resolver::Result result3;
163affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  m_pTestee->insertSymbol("Different Symbol",
164affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          isDyn,
165affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          type,
166affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          desc,
167affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          binding,
168affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          size,
169affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          other,
170affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          NULL,
171affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                          result3);
172affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
173affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
174affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_NE(result1.info, result3.info);
175affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
176affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
177affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
178affc150dc44fab1911775a49636d0ce85333b634Zonr ChangTEST_F( NamePoolTest, insertSymbol_after_insert_same_string ) {
179affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *name = "Hello MCLinker";
180affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  bool isDyn = false;
181affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSymbol::Type type = LDSymbol::Defined;
182affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSymbol::Binding binding = LDSymbol::Global;
183affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const llvm::MCSectionData *section = 0;
184affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t value = 0;
185affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t size = 0;
186affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint8_t other = 0;
187affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
188affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *result1 =  m_pTestee->insertString(name);
189affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSymbol *sym =  m_pTestee->insertSymbol(name,
190affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           isDyn,
191affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           type,
192affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           binding,
193affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           section,
194affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           value,
195affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           size,
196affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                           other);
197affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
198affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_STREQ(name, sym->name());
199affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(result1, sym->name());
200affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
201affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  char s[16];
202affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  strcpy(s, result1);
203affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *result2 = m_pTestee->insertString(result1);
204affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const char *result3 = m_pTestee->insertString(s);
205affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
206affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(result1, result2);
207affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  EXPECT_EQ(result1, result3);
208affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
209affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
210affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
211affc150dc44fab1911775a49636d0ce85333b634Zonr ChangTEST_F( NamePoolTest, insert_16384_weak_reference_symbols ) {
212affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  char name[16];
213affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  bool isDyn = false;
214affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSymbol::Type type = LDSymbol::Reference;
215affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSymbol::Binding binding = LDSymbol::Weak;
216affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  const llvm::MCSectionData *section = 0;
217affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t value = 0;
218affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint64_t size = 0;
219affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  uint8_t other = 0;
220affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  strcpy(name, "Hello MCLinker");
221affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  LDSymbol *syms[128][128];
222affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  for(int i=0; i<128 ;++i) {
223affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    name[0] = i;
224affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    for(int j=0; j<128 ;++j) {
225affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      name[1] = j;
226affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      syms[i][j] =  m_pTestee->insertSymbol(name,
227affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            isDyn,
228affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            type,
229affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            binding,
230affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            section,
231affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            value,
232affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            size,
233affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                            other);
234affc150dc44fab1911775a49636d0ce85333b634Zonr Chang
235affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      ASSERT_STREQ(name, syms[i][j]->name());
236affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    }
237affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
238affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  for(int i=127; i>=0 ;--i) {
239affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    name[0] = i;
240affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    for(int j=0; j<128 ;++j) {
241affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      name[1] = j;
242affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      LDSymbol *sym =  m_pTestee->insertSymbol(name,
243affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               isDyn,
244affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               type,
245affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               binding,
246affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               section,
247affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               value,
248affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               size,
249affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               other);
250affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      ASSERT_EQ(sym, syms[i][j]);
251affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    }
252affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
253affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  for(int i=0; i<128 ;++i) {
254affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    name[0] = i;
255affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    for(int j=0; j<128 ;++j) {
256affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      name[1] = j;
257affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      LDSymbol *sym =  m_pTestee->insertSymbol(name,
258affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               isDyn,
259affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               type,
260affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               binding,
261affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               section,
262affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               value,
263affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               size,
264affc150dc44fab1911775a49636d0ce85333b634Zonr Chang                                               other);
265affc150dc44fab1911775a49636d0ce85333b634Zonr Chang      ASSERT_EQ(sym, syms[i][j]);
266affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    }
267affc150dc44fab1911775a49636d0ce85333b634Zonr Chang  }
268affc150dc44fab1911775a49636d0ce85333b634Zonr Chang}
269