summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2018-03-08 15:41:13 +0000
committerPavel Labath <labath@google.com>2018-03-08 15:41:13 +0000
commitb9923f049e3641ab57cd29ce90a31916740c1534 (patch)
treede1f8018fd0bd0ccdd7d34c5b5b1d3f00b2fb5eb /lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
parenta87b74f72b5985d2d6fdc4fb22b69b6a88f2de02 (diff)
downloadbcm5719-llvm-b9923f049e3641ab57cd29ce90a31916740c1534.tar.gz
bcm5719-llvm-b9923f049e3641ab57cd29ce90a31916740c1534.zip
[LLDB][PPC64] Fix single step and LldbGdbServer tests
Summary: On PPC64, the tested functions were being entered through their local entry point, while the tests expected the program to stop at the function start address, that, for PPC64, corresponds to the global entry point. To fix the issue, the test program was modified to call the functions to be tested through function pointers, which, on PPC64, force the calls through the global entry point, while not affecting the test on other platforms. Reviewers: clayborg, labath Reviewed By: labath Subscribers: alexandreyy, lbianc Differential Revision: https://reviews.llvm.org/D43768 Patch by Leandro Lupori <leandro.lupori@gmail.com>. llvm-svn: 327013
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp')
-rw-r--r--lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
index a574b41abf6..399c1d35ae6 100644
--- a/lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/tools/lldb-server/main.cpp
@@ -303,18 +303,22 @@ int main(int argc, char **argv) {
printf("code address: %p\n", func_p);
pthread_mutex_unlock(&g_print_mutex);
} else if (std::strstr(argv[i], CALL_FUNCTION_PREFIX)) {
+ void (*func_p)() = nullptr;
+
// Defaut to providing the address of main.
if (std::strcmp(argv[i] + strlen(CALL_FUNCTION_PREFIX), "hello") == 0)
- hello();
+ func_p = hello;
else if (std::strcmp(argv[i] + strlen(CALL_FUNCTION_PREFIX),
"swap_chars") == 0)
- swap_chars();
+ func_p = swap_chars;
else {
pthread_mutex_lock(&g_print_mutex);
printf("unknown function: %s\n",
argv[i] + strlen(CALL_FUNCTION_PREFIX));
pthread_mutex_unlock(&g_print_mutex);
}
+ if (func_p)
+ func_p();
} else if (std::strstr(argv[i], THREAD_PREFIX)) {
// Check if we're creating a new thread.
if (std::strstr(argv[i] + strlen(THREAD_PREFIX), THREAD_COMMAND_NEW)) {
OpenPOWER on IntegriCloud