[index] Enhance c-index-test tool and have it link and test the clangIndex library directly.
llvm-svn: 260842
diff --git a/clang/tools/c-index-test/c-index-test.c b/clang/tools/c-index-test/c-index-test.c
index b2f9120..a67afb7 100644
--- a/clang/tools/c-index-test/c-index-test.c
+++ b/clang/tools/c-index-test/c-index-test.c
@@ -23,6 +23,8 @@
# include <unistd.h>
#endif
+extern int indextest_core_main(int argc, const char **argv);
+
/******************************************************************************/
/* Utility functions. */
/******************************************************************************/
@@ -4410,13 +4412,15 @@
* size). */
typedef struct thread_info {
+ int (*main_func)(int argc, const char **argv);
int argc;
const char **argv;
int result;
} thread_info;
void thread_runner(void *client_data_v) {
thread_info *client_data = client_data_v;
- client_data->result = cindextest_main(client_data->argc, client_data->argv);
+ client_data->result = client_data->main_func(client_data->argc,
+ client_data->argv);
}
static void flush_atexit(void) {
@@ -4435,11 +4439,19 @@
LIBXML_TEST_VERSION
#endif
- if (getenv("CINDEXTEST_NOTHREADS"))
- return cindextest_main(argc, argv);
-
+ client_data.main_func = cindextest_main;
client_data.argc = argc;
client_data.argv = argv;
+
+ if (argc > 1 && strcmp(argv[1], "core") == 0) {
+ client_data.main_func = indextest_core_main;
+ --client_data.argc;
+ ++client_data.argv;
+ }
+
+ if (getenv("CINDEXTEST_NOTHREADS"))
+ return client_data.main_func(client_data.argc, client_data.argv);
+
clang_executeOnThread(thread_runner, &client_data, 0);
return client_data.result;
}