From 2e04b65212709def01f2b8401be70fe07957d4af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Oct 2008 18:12:20 +0000 Subject: [PATCH] * Added test application for the GCC2 demangler. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28384 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/add-ons/kernel/Jamfile | 1 + src/tests/add-ons/kernel/debugger/Jamfile | 9 +++++ .../kernel/debugger/gcc2_demangle_test.cpp | 38 +++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 src/tests/add-ons/kernel/debugger/Jamfile create mode 100644 src/tests/add-ons/kernel/debugger/gcc2_demangle_test.cpp diff --git a/src/tests/add-ons/kernel/Jamfile b/src/tests/add-ons/kernel/Jamfile index b39cd74a86..c824d92ce9 100644 --- a/src/tests/add-ons/kernel/Jamfile +++ b/src/tests/add-ons/kernel/Jamfile @@ -25,6 +25,7 @@ SEARCH on [ FGristFiles SubInclude HAIKU_TOP src tests add-ons kernel bus_managers ; SubInclude HAIKU_TOP src tests add-ons kernel busses ; +SubInclude HAIKU_TOP src tests add-ons kernel debugger ; # SubInclude HAIKU_TOP src tests add-ons kernel disk_scanner ; SubInclude HAIKU_TOP src tests add-ons kernel drivers ; SubInclude HAIKU_TOP src tests add-ons kernel file_systems ; diff --git a/src/tests/add-ons/kernel/debugger/Jamfile b/src/tests/add-ons/kernel/debugger/Jamfile new file mode 100644 index 0000000000..dd81cd2f43 --- /dev/null +++ b/src/tests/add-ons/kernel/debugger/Jamfile @@ -0,0 +1,9 @@ +SubDir HAIKU_TOP src tests add-ons kernel debugger ; + +UsePrivateKernelHeaders ; +UsePrivateHeaders shared ; + +SubDirHdrs $(HAIKU_TOP) src add-ons kernel debugger demangle ; + +SimpleTest gcc2_demangle_test : gcc2_demangle_test.cpp ; + diff --git a/src/tests/add-ons/kernel/debugger/gcc2_demangle_test.cpp b/src/tests/add-ons/kernel/debugger/gcc2_demangle_test.cpp new file mode 100644 index 0000000000..4956f4f444 --- /dev/null +++ b/src/tests/add-ons/kernel/debugger/gcc2_demangle_test.cpp @@ -0,0 +1,38 @@ +/* + * Copyright 2008, Axel Dörfler, axeld@pinc-software.de. + * This file may be used under the terms of the MIT License. + */ + + +#define kprintf printf + +#include "gcc2.cpp" + + +int +main(int argc, char** argv) +{ + for (int i = 1; i < argc; i++) { + bool isObjectMethod; + char name[64]; + const char* symbol = demangle_symbol(argv[i], name, sizeof(name), + &isObjectMethod); + if (symbol == NULL) { + printf("%s: cannot be parsed\n", argv[i]); + continue; + } + + printf("%s (%s method)\n", symbol, isObjectMethod ? "object" : "class"); + + uint32 cookie = 0; + int32 type; + size_t length; + while (get_next_argument(&cookie, argv[i], name, sizeof(name), &type, + &length) == B_OK) { + printf("name \"%s\", type %.4s, length %lu\n", name, (char*)&type, + length); + } + } + + return 0; +}