From 33af2372201df515ee54119078adea8865baa5fc Mon Sep 17 00:00:00 2001 From: Karel Klic Date: Mon, 31 Jan 2011 19:15:56 +0100 Subject: New supported format of thread header "Thread 8 (Thread 0xb07fdb70 (LWP 6357)):" --- src/btparser/thread.c | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'src/btparser') diff --git a/src/btparser/thread.c b/src/btparser/thread.c index af480eb3..4d52a9d4 100644 --- a/src/btparser/thread.c +++ b/src/btparser/thread.c @@ -313,8 +313,15 @@ btp_thread_parse(char **input, return NULL; } - /* Read the thread identification number. */ - digits = btp_skip_unsigned_integer(&local_input); + /* Read the thread identification number. It can be either in + * decimal or hexadecimal form. + * Examples: + * "Thread 10 (Thread 2476):" + * "Thread 8 (Thread 0xb07fdb70 (LWP 6357)):" + */ + digits = btp_skip_hexadecimal_number(&local_input); + if (0 == digits) + digits = btp_skip_unsigned_integer(&local_input); location->column += digits; if (0 == digits) { @@ -323,6 +330,28 @@ btp_thread_parse(char **input, return NULL; } + /* Handle the optional " (LWP [0-9]+)" section. */ + chars = btp_skip_string(&local_input, " (LWP "); + if (0 < chars) + { + location->column += chars; + digits = btp_skip_unsigned_integer(&local_input); + if (0 == digits) + { + location->message = "The LWP number expected."; + btp_thread_free(imthread); + return NULL; + } + location->column += digits; + if (!btp_skip_char(&local_input, ')')) + { + location->message = "Closing parenthesis for LWP expected."; + btp_thread_free(imthread); + return NULL; + } + location->column += 1; + } + /* Read the end of the parenthesis. */ chars = btp_skip_string(&local_input, "):\n"); if (0 == chars) -- cgit