unittest: Cleanup unit tests. Follow style. Garbage Collect.

--HG--
rename : src/unittest/rangemaptest2.cc => src/unittest/rangemultimaptest.cc
This commit is contained in:
Nathan Binkert 2008-10-02 11:26:59 -07:00
parent 67a2918abc
commit 52493b2720
13 changed files with 122 additions and 523 deletions

View file

@ -35,34 +35,34 @@
int
main()
{
vector<bool> v1(100);
vector<bool> v1(100);
v1[0] = true;
v1.resize(500);
v1[100] = true;
v1[499] = true;
v1.resize(10000);
v1[9999] = true;
v1[0] = true;
v1.resize(500);
v1[100] = true;
v1[499] = true;
v1.resize(10000);
v1[9999] = true;
cout << "v1.size() = " << v1.size() << "\n";
for (int i = 0; i < v1.size(); i++)
if (v1[i])
cout << "v1[" << i << "] = " << v1[i] << "\n";
cout << "v1.size() = " << v1.size() << "\n";
for (int i = 0; i < v1.size(); i++)
if (v1[i])
cout << "v1[" << i << "] = " << v1[i] << "\n";
cout << "\n";
cout << "\n";
vector<bool> v2 = v1;
vector<bool> v2 = v1;
for (int i = 0; i < v2.size(); i++)
if (v2[i])
cout << "v2[" << i << "] = " << v2[i] << "\n";
for (int i = 0; i < v2.size(); i++)
if (v2[i])
cout << "v2[" << i << "] = " << v2[i] << "\n";
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
v2[8583] = true;
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
v1[8583] = true;
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
v1.resize(100000);
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
cout << flush;
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
v2[8583] = true;
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
v1[8583] = true;
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
v1.resize(100000);
cout << "v1 " << ((v1 == v2) ? "==" : "!=") << " v2" << "\n";
cout << flush;
}

View file

@ -34,14 +34,15 @@
#include "base/circlebuf.hh"
char *strings[] =
{ "This is the first test\n",
"he went with his woman to the store\n",
"the man with the bat hit the woman with the hat\n",
"that that is is that that was\n",
"sue sells sea shells by the sea shore\n",
"go to the store and buy me some milk and bread\n",
"the friendly flight attendants spoke soothingly to the frightened passengers in their native languages\n"
char *strings[] = {
"This is the first test\n",
"he went with his woman to the store\n",
"the man with the bat hit the woman with the hat\n",
"that that is is that that was\n",
"sue sells sea shells by the sea shore\n",
"go to the store and buy me some milk and bread\n",
"the friendly flight attendants spoke soothingly to "
"the frightened passengers in their native languages\n"
};
const int num_strings = sizeof(strings) / sizeof(char *);
@ -49,26 +50,26 @@ const int num_strings = sizeof(strings) / sizeof(char *);
int
main()
{
CircleBuf buf(1024);
CircleBuf buf(1024);
for (int count = 0; count < 100; count++)
buf.write(strings[count % num_strings]);
buf.read(STDOUT_FILENO);
write(STDOUT_FILENO, "<\n", 2);
for (int count = 0; count < 100; count++)
buf.write(strings[count % num_strings]);
buf.read(STDOUT_FILENO);
write(STDOUT_FILENO, "<\n", 2);
for (int count = 0; count < 100; count++)
buf.write(strings[count % num_strings]);
buf.read(STDOUT_FILENO, 100);
write(STDOUT_FILENO, "<\n", 2);
for (int count = 0; count < 100; count++)
buf.write(strings[count % num_strings]);
buf.read(STDOUT_FILENO, 100);
write(STDOUT_FILENO, "<\n", 2);
buf.flush();
buf.write("asdfa asdf asd fasdf asdf\n");
buf.write("");
buf.write("");
buf.write("");
buf.write("");
buf.write("");
buf.write("");
buf.read(STDOUT_FILENO);
write(STDOUT_FILENO, "<\n", 2);
buf.flush();
buf.write("asdfa asdf asd fasdf asdf\n");
buf.write("");
buf.write("");
buf.write("");
buf.write("");
buf.write("");
buf.write("");
buf.read(STDOUT_FILENO);
write(STDOUT_FILENO, "<\n", 2);
}

View file

@ -1,4 +1,3 @@
#define JUNK
[Foo]
Foo1=89
Foo2=384

View file

@ -1,14 +0,0 @@
#define JUNK
// General stuff
#define FOO(X) BAR##X
[General]
Test1=FOO(asdf)
Test2=bar
#ifdef JUNK
[Junk] // This is the junk
Test3=yo
Test4=mama
#endif
#include "foo.ini"

View file

@ -1,85 +0,0 @@
/*
* Copyright (c) 2003-2005 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Dave Greene
* Nathan Binkert
*/
#include <iostream>
#include "bhgp.hh"
int main(void)
{
typedef AssociativeTable<unsigned int, unsigned int> tableType;
tableType table(10, 4); // 40 entry table
std::cout << "Initial state:" << std::endl;
table.dump();
std::cout << "Inserting (2, 1)" << std::endl;
table[2] = 1;
table.dump();
std::cout << "Inserting (5, 2)" << std::endl;
table[5] = 2;
table.dump();
std::cout << "Inserting (10 + 2, 3)" << std::endl;
table[10 + 2] = 3;
table.dump();
tableType::const_iterator i = table.find(2);
assert(i != table.end());
std::cout << "Accessed 2: " << *i << std::endl;
table.dump();
i = table.find(10 + 2);
assert(i != table.end());
std::cout << "Accessed 10 + 2: " << *i << std::endl;
table.dump();
i = table.find(34);
assert(i == table.end());
std::cout << "Inserting (2 * 10 + 2, 4)" << std::endl;
table[2 * 10 + 2] = 4;
table.dump();
std::cout << "Replacing (10 + 2) with 5" << std::endl;
table[10 + 2] = 5;
table.dump();
std::cout << "Inserting (3 * 10 + 2, 6)" << std::endl;
table[3 * 10 + 2] = 6;
table.dump();
std::cout << "Inserting (4 * 10 + 2, 7)" << std::endl;
table[4 * 10 + 2] = 7;
table.dump();
return(0);
}

View file

@ -1,72 +0,0 @@
/*
* Copyright (c) 2002-2005 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Nathan Binkert
*/
#include <sys/types.h>
#include <stddef.h>
#include <stdio.h>
#include "dev/pcireg.h"
int
main()
{
#define POFFSET(x) \
printf("offsetof(PCIConfig, hdr."#x") = %d\n", \
offsetof(PCIConfig, hdr.x))
POFFSET(vendor);
POFFSET(device);
POFFSET(command);
POFFSET(status);
POFFSET(revision);
POFFSET(progIF);
POFFSET(subClassCode);
POFFSET(classCode);
POFFSET(cacheLineSize);
POFFSET(latencyTimer);
POFFSET(headerType);
POFFSET(bist);
POFFSET(pci0.baseAddr0);
POFFSET(pci0.baseAddr1);
POFFSET(pci0.baseAddr2);
POFFSET(pci0.baseAddr3);
POFFSET(pci0.baseAddr4);
POFFSET(pci0.baseAddr5);
POFFSET(pci0.cardbusCIS);
POFFSET(pci0.subsystemVendorID);
POFFSET(pci0.expansionROM);
POFFSET(pci0.reserved0);
POFFSET(pci0.reserved1);
POFFSET(pci0.interruptLine);
POFFSET(pci0.interruptPin);
POFFSET(pci0.minimumGrant);
POFFSET(pci0.minimumLatency);
return 0;
}

View file

@ -1,107 +0,0 @@
/*
* Copyright (c) 2002-2005 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Nathan Binkert
*/
//
// This file is not part of the regular simulator. It is solely for
// testing the parameter code. Edit the Makefile to add param_test.cc
// to the sources list, then use configs/test.ini as the configuration
// file.
//
#include "sim/sim_object.hh"
#include "mem/cache/cache.hh"
class ParamTest : public SimObject
{
public:
ParamTest(string name)
: SimObject(name)
{
}
virtual ~ParamTest() {}
};
enum Enum1Type { Enum0 };
enum Enum2Type { Enum10 };
BEGIN_DECLARE_SIM_OBJECT_PARAMS(ParamTest)
Param<int> intparam;
VectorParam<int> vecint;
Param<string> stringparam;
VectorParam<string> vecstring;
Param<bool> boolparam;
VectorParam<bool> vecbool;
SimObjectParam<BaseMemory *> memobj;
SimObjectVectorParam<BaseMemory *> vecmemobj;
SimpleEnumParam<Enum1Type> enum1;
MappedEnumParam<Enum2Type> enum2;
SimpleEnumVectorParam<Enum1Type> vecenum1;
MappedEnumVectorParam<Enum2Type> vecenum2;
END_DECLARE_SIM_OBJECT_PARAMS(ParamTest)
const char *enum1_strings[] =
{
"zero", "one", "two", "three"
};
const EnumParamMap enum2_map[] =
{
{ "ten", 10 },
{ "twenty", 20 },
{ "thirty", 30 },
{ "forty", 40 }
};
BEGIN_INIT_SIM_OBJECT_PARAMS(ParamTest)
INIT_PARAM(intparam, "intparam"),
INIT_PARAM(vecint, "vecint"),
INIT_PARAM(stringparam, "stringparam"),
INIT_PARAM(vecstring, "vecstring"),
INIT_PARAM(boolparam, "boolparam"),
INIT_PARAM(vecbool, "vecbool"),
INIT_PARAM(memobj, "memobj"),
INIT_PARAM(vecmemobj, "vecmemobj"),
INIT_ENUM_PARAM(enum1, "enum1", enum1_strings),
INIT_ENUM_PARAM(enum2, "enum2", enum2_map),
INIT_ENUM_PARAM(vecenum1, "vecenum1", enum1_strings),
INIT_ENUM_PARAM(vecenum2, "vecenum2", enum2_map)
END_INIT_SIM_OBJECT_PARAMS(ParamTest)
CREATE_SIM_OBJECT(ParamTest)
{
return new ParamTest(getInstanceName());
}
REGISTER_SIM_OBJECT("ParamTest", ParamTest)

View file

@ -35,7 +35,8 @@
using namespace std;
int main()
int
main()
{
range_map<Addr,int> r;

View file

@ -28,20 +28,22 @@
* Authors: Ali Saidi
*/
#include <iostream>
#include <cassert>
#include <iostream>
#include "sim/host.hh"
#include "base/range_map.hh"
using namespace std;
int main()
int
main()
{
range_multimap<Addr,int> r;
typedef range_multimap<Addr, int> multimap_t;
range_multimap<Addr,int>::iterator i;
std::pair<range_multimap<Addr,int>::iterator,range_multimap<Addr,int>::iterator>
jk;
multimap_t r;
multimap_t::iterator i;
std::pair<multimap_t::iterator, multimap_t::iterator> jk;
i = r.insert(RangeIn<Addr>(10,40),5);
assert(i != r.end());

View file

@ -38,39 +38,40 @@ using namespace std;
int
main()
{
Range<int> r1(make_pair(9, 28));
Range<unsigned> r2("0x1000:+0x100");
Range<int> r1(make_pair(9, 28));
Range<unsigned> r2("0x1000:+0x100");
cout << r1 << "\n"
<< r2 << "\n";
cout << r1 << "\n"
<< r2 << "\n";
#define RANGETEST(X, C, Y) \
cout << X << " "#C" " << Y << " => " << ((X C Y) ? "true" : "false") << "\n"
#define RANGETEST(X, C, Y) \
cout << X << " "#C" " << Y << " => " << \
((X C Y) ? "true" : "false") << "\n"
#define TESTEM(X, Y) do { \
RANGETEST(X, < , Y); \
RANGETEST(X, <=, Y); \
RANGETEST(X, > , Y); \
RANGETEST(X, >=, Y); \
RANGETEST(X, ==, Y); \
RANGETEST(X, !=, Y); \
RANGETEST(Y, < , X); \
RANGETEST(Y, <=, X); \
RANGETEST(Y, > , X); \
RANGETEST(Y, >=, X); \
RANGETEST(Y, ==, X); \
RANGETEST(Y, !=, X); \
} while (0)
RANGETEST(X, < , Y); \
RANGETEST(X, <=, Y); \
RANGETEST(X, > , Y); \
RANGETEST(X, >=, Y); \
RANGETEST(X, ==, Y); \
RANGETEST(X, !=, Y); \
RANGETEST(Y, < , X); \
RANGETEST(Y, <=, X); \
RANGETEST(Y, > , X); \
RANGETEST(Y, >=, X); \
RANGETEST(Y, ==, X); \
RANGETEST(Y, !=, X); \
} while (0)
TESTEM(8, r1);
TESTEM(9, r1);
TESTEM(27, r1);
TESTEM(28, r1);
TESTEM(8, r1);
TESTEM(9, r1);
TESTEM(27, r1);
TESTEM(28, r1);
TESTEM(0x0fff, r2);
TESTEM(0x1000, r2);
TESTEM(0x10ff, r2);
TESTEM(0x1100, r2);
TESTEM(0x0fff, r2);
TESTEM(0x1000, r2);
TESTEM(0x10ff, r2);
TESTEM(0x1100, r2);
return 0;
return 0;
}

View file

@ -1,70 +0,0 @@
/*
* Copyright (c) 2002-2005 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Dave Greene
* Nathan Binkert
*/
#include <iostream>
#include <algorithm>
#include "sized.hh"
#include <queue>
#include <typeinfo>
template<typename C>
void print(C &cont)
{
std::cout << std::endl;
std::cout << "Printing " << typeid(cont).name() << std::endl;
while (!cont.empty()) {
std::cout << cont.front() << " ";
cont.pop();
}
std::cout << std::endl;
}
int main(void)
{
sized<std::queue<int>, sized_error_policy<std::queue<int> > >
error_queue(10);
sized<std::queue<int>, sized_drop_policy<std::queue<int> > >
drop_queue(5);
for (int i = 0; i < 10; ++i) {
error_queue.push(i);
}
for (int i = 0; i < 3; ++i) {
drop_queue.push(i);
}
print(error_queue);
print(drop_queue);
return(0);
}

View file

@ -28,8 +28,7 @@
* Authors: Nathan Binkert
*/
#include <iostream.h>
#include <iostream>
#include <string>
#include <vector>
@ -40,39 +39,39 @@ using namespace std;
int
main(int argc, char *argv[])
{
if (argc != 2) {
cout << "Usage: " << argv[0] << " <number>\n";
exit(1);
}
if (argc != 2) {
cout << "Usage: " << argv[0] << " <number>\n";
exit(1);
}
string s = argv[1];
string s = argv[1];
#define OUTVAL(valtype, type) do { \
valtype value; \
cout << "TYPE = " #valtype "\n"; \
if (to_number(s, value)) { \
cout << "Number(" << s << ") = " << dec \
<< (unsigned long long)(unsigned type)value << "\n" \
<< "Number(" << s << ") = " << dec \
<< (signed long long)(signed type)value << "\n" \
<< "Number(" << s << ") = 0x" << hex \
<< (unsigned long long)(unsigned type)value << "\n" \
<< "Number(" << s << ") = 0" << oct \
<< (unsigned long long)(unsigned type)value << "\n\n"; \
} else \
cout << "Number(" << s << ") is invalid\n\n"; \
} while (0)
valtype value; \
cout << "TYPE = " #valtype "\n"; \
if (to_number(s, value)) { \
cout << "Number(" << s << ") = " << dec \
<< (unsigned long long)(unsigned type)value << "\n" \
<< "Number(" << s << ") = " << dec \
<< (signed long long)(signed type)value << "\n" \
<< "Number(" << s << ") = 0x" << hex \
<< (unsigned long long)(unsigned type)value << "\n" \
<< "Number(" << s << ") = 0" << oct \
<< (unsigned long long)(unsigned type)value << "\n\n"; \
} else \
cout << "Number(" << s << ") is invalid\n\n"; \
} while (0)
OUTVAL(signed long long, long long);
OUTVAL(unsigned long long, long long);
OUTVAL(signed long, long);
OUTVAL(unsigned long, long);
OUTVAL(signed int, int);
OUTVAL(unsigned int, int);
OUTVAL(signed short, short);
OUTVAL(unsigned short, short);
OUTVAL(signed char, char);
OUTVAL(unsigned char, char);
OUTVAL(signed long long, long long);
OUTVAL(unsigned long long, long long);
OUTVAL(signed long, long);
OUTVAL(unsigned long, long);
OUTVAL(signed int, int);
OUTVAL(unsigned int, int);
OUTVAL(signed short, short);
OUTVAL(unsigned short, short);
OUTVAL(signed char, char);
OUTVAL(unsigned char, char);
return 0;
return 0;
}

View file

@ -1,56 +0,0 @@
/*
* Copyright (c) 2003-2005 The Regents of The University of Michigan
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Nathan Binkert
*/
#include "sim/host.hh"
#include "base/trace.hh"
using namespace std;
Tick curTick = 0;
struct foo
{
foo()
{
char foo[9] = "testing";
DPRINTF(Loader, "%s\n", foo);
}
};
int
main()
{
Trace::flags[Trace::Loader] = true;
Trace::dprintf_stream = &cout;
foo f;
return 0;
}