middle of porting; unstable, don't checkout, added xml check output; refs #1
This commit is contained in:
		@@ -88,22 +88,22 @@ namespace mrw {
 | 
			
		||||
//----------------------------------------------------------------------------
 | 
			
		||||
mrw::StackTrace::StackTrace() throw(std::bad_exception) {
 | 
			
		||||
  // maximum trace level is limited here to 50, see below why
 | 
			
		||||
#   if defined(__GNUG__)
 | 
			
		||||
  {
 | 
			
		||||
#     define PUSH(i)                                                    \
 | 
			
		||||
    (__builtin_frame_address(i)!=0 ?                                   \
 | 
			
		||||
     (_trace.push_back(__builtin_return_address(i)), true) : false)
 | 
			
		||||
    PUSH(0) && PUSH(1) && PUSH(2) && PUSH(3) && PUSH(4) && PUSH(5) &&
 | 
			
		||||
      PUSH(6) && PUSH(7) && PUSH(8) && PUSH(9) && PUSH(10) && PUSH(11) &&
 | 
			
		||||
      PUSH(12) && PUSH(13) && PUSH(14) && PUSH(15) && PUSH(16) && PUSH(17)
 | 
			
		||||
      && PUSH(18) && PUSH(19) && PUSH(20) && PUSH(21) && PUSH(22) &&
 | 
			
		||||
      PUSH(23) && PUSH(24) && PUSH(25) && PUSH(26) && PUSH(27) && PUSH(28)
 | 
			
		||||
      && PUSH(29) && PUSH(30) && PUSH(31) && PUSH(32) && PUSH(33) &&
 | 
			
		||||
      PUSH(34) && PUSH(35) && PUSH(36) && PUSH(37) && PUSH(38) && PUSH(39)
 | 
			
		||||
      && PUSH(40) && PUSH(41) && PUSH(42) && PUSH(43) && PUSH(44) &&
 | 
			
		||||
      PUSH(45) && PUSH(46) && PUSH(47) && PUSH(48) && PUSH(49);
 | 
			
		||||
#     undef PUSH
 | 
			
		||||
  }
 | 
			
		||||
 #   if defined(__GNUG__)
 | 
			
		||||
   {
 | 
			
		||||
 #   define PUSH(i)                                                       \
 | 
			
		||||
     (__builtin_frame_address(i)!=0 ?                                   \
 | 
			
		||||
      (_trace.push_back(__builtin_return_address(i)), true) : false)
 | 
			
		||||
     PUSH(0) && PUSH(1) && PUSH(2) && PUSH(3) && PUSH(4) && PUSH(5) &&
 | 
			
		||||
       PUSH(6) && PUSH(7) && PUSH(8) && PUSH(9) && PUSH(10) && PUSH(11) &&
 | 
			
		||||
       PUSH(12) && PUSH(13) && PUSH(14) && PUSH(15) && PUSH(16) && PUSH(17)
 | 
			
		||||
       && PUSH(18) && PUSH(19) && PUSH(20) && PUSH(21) && PUSH(22) &&
 | 
			
		||||
       PUSH(23) && PUSH(24) && PUSH(25) && PUSH(26) && PUSH(27) && PUSH(28)
 | 
			
		||||
       && PUSH(29) && PUSH(30) && PUSH(31) && PUSH(32) && PUSH(33) &&
 | 
			
		||||
       PUSH(34) && PUSH(35) && PUSH(36) && PUSH(37) && PUSH(38) && PUSH(39)
 | 
			
		||||
       && PUSH(40) && PUSH(41) && PUSH(42) && PUSH(43) && PUSH(44) &&
 | 
			
		||||
       PUSH(45) && PUSH(46) && PUSH(47) && PUSH(48) && PUSH(49);
 | 
			
		||||
 #     undef PUSH
 | 
			
		||||
   }
 | 
			
		||||
#   elif defined(__GLIBC__)
 | 
			
		||||
  {
 | 
			
		||||
    const int TRACE_LEVEL(50);
 | 
			
		||||
@@ -332,15 +332,18 @@ mrw::StackTrace::BinFiles mrw::StackTrace::filename()
 | 
			
		||||
    std::string range, perm, x1, x2, size, lib;
 | 
			
		||||
    while (getline(is, s)) try {
 | 
			
		||||
      range = perm = x1 = x2 = size = lib = "????";
 | 
			
		||||
      s>>range>>perm>>x1>>x2>>size>>lib;
 | 
			
		||||
      range.resize(range.find_first_not_of("0123456789abcdefABCDEF"));
 | 
			
		||||
      void* addr(0);
 | 
			
		||||
      range>>addr;
 | 
			
		||||
      // added check: no names in brackets: [lib], because there are
 | 
			
		||||
      // [heap], [stack] and [vdso] that cannot be loaded
 | 
			
		||||
      // question: should only files with ending '.so' be loaded?
 | 
			
		||||
      if (lib.size() && lib[0]!='[' && lib[lib.size()-1]!=']' && addr>0)
 | 
			
		||||
        res<<BinFiles::value_type(lib, addr);
 | 
			
		||||
      s>>range>>perm>>x1>>x2>>size;
 | 
			
		||||
      if (mrw::to<int>(size)>0) {
 | 
			
		||||
        s>>lib;
 | 
			
		||||
        range.resize(range.find_first_not_of("0123456789abcdefABCDEF"));
 | 
			
		||||
        void* addr(0);
 | 
			
		||||
        range>>addr;
 | 
			
		||||
        // added check: no names in brackets: [lib], because there are
 | 
			
		||||
        // [heap], [stack] and [vdso] that cannot be loaded
 | 
			
		||||
        // question: should only files with ending '.so' be loaded?
 | 
			
		||||
        if (lib.size() && lib[0]!='[' && lib[lib.size()-1]!=']' && addr>0)
 | 
			
		||||
          res<<BinFiles::value_type(lib, addr);
 | 
			
		||||
      }
 | 
			
		||||
    } catch (...) {} // ignore non matching lines
 | 
			
		||||
    return res;
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -85,8 +85,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(AutoTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -65,8 +65,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(ConfigFileTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -40,8 +40,13 @@ class DynamicLibraryTest: public CppUnit::TestFixture {
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(DynamicLibraryTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -127,8 +127,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(ExecTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -126,8 +126,13 @@ class FunctionTraceTest: public CppUnit::TestFixture {
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(FunctionTraceTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -237,8 +237,13 @@ namespace mrw {
 | 
			
		||||
  CPPUNIT_TEST_SUITE_REGISTRATION(AutoFunctionTraceLog4CxxTest);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -85,9 +85,13 @@ namespace mrw {
 | 
			
		||||
  CPPUNIT_TEST_SUITE_REGISTRATION(AutoExcLog4CxxTest);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
  log4cxx::BasicConfigurator::configure();
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -84,8 +84,13 @@ namespace mrw {
 | 
			
		||||
  CPPUNIT_TEST_SUITE_REGISTRATION(AutoExcStderrTest);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -56,8 +56,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(RegExpTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -155,8 +155,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(SmartPointerTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -76,8 +76,13 @@ namespace mrw {
 | 
			
		||||
  CPPUNIT_TEST_SUITE_REGISTRATION(StackTraceTest);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -259,8 +259,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(StdExtTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -42,8 +42,13 @@ class StringTest: public CppUnit::TestFixture {
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(StringTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -67,8 +67,13 @@ public:
 | 
			
		||||
};
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION(TokenizerTest);
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
int main(int argc, char** argv) try {
 | 
			
		||||
  std::ofstream ofs((*argv+std::string(".xml")).c_str());
 | 
			
		||||
  CppUnit::TextUi::TestRunner runner;
 | 
			
		||||
  runner.setOutputter(new CppUnit::XmlOutputter(&runner.result(), ofs));
 | 
			
		||||
  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
 | 
			
		||||
  return runner.run() ? 0 : 1;
 | 
			
		||||
}
 | 
			
		||||
 } catch (std::exception& e) {
 | 
			
		||||
  std::cerr<<"***Exception: "<<e.what()<<std::endl;
 | 
			
		||||
  return 1;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user