[Crash-utility] [PATCH v2 1/3] Improve search for __switch_to symbol
Dave Anderson
anderson at redhat.com
Thu Feb 20 20:00:05 UTC 2014
Committed to github:
https://github.com/crash-utility/crash/commit/51f0a176c46ab86eace7a6286331959814a4d489
Queued for crash-7.0.6.
Thanks,
Dave
----- Original Message -----
> For kernel versions without inlined context_switchm, the disassembly
> for the call to switch_to is "call " instead of "callq". This patch
> searches for both versions to support a wider range of kernels.
> ---
> x86_64.c | 20 ++++++++++++++------
> 1 file changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/x86_64.c b/x86_64.c
> index 8508e4f..b51e285 100644
> --- a/x86_64.c
> +++ b/x86_64.c
> @@ -5414,16 +5414,22 @@ search_for_switch_to(ulong start, ulong end)
> {
> ulong max_instructions, address;
> char buf1[BUFSIZE];
> - char buf2[BUFSIZE];
> + char search_string1[BUFSIZE];
> + char search_string2[BUFSIZE];
> int found;
>
> max_instructions = end - start;
> found = FALSE;
> sprintf(buf1, "x/%ldi 0x%lx", max_instructions, start);
> - if (symbol_exists("__switch_to"))
> - sprintf(buf2, "callq 0x%lx", symbol_value("__switch_to"));
> - else
> - buf2[0] = NULLCHAR;
> + if (symbol_exists("__switch_to")) {
> + sprintf(search_string1,
> + "callq 0x%lx", symbol_value("__switch_to"));
> + sprintf(search_string2,
> + "call 0x%lx", symbol_value("__switch_to"));
> + } else {
> + search_string1[0] = NULLCHAR;
> + search_string2[0] = NULLCHAR;
> + }
>
> open_tmpfile();
>
> @@ -5436,7 +5442,9 @@ search_for_switch_to(ulong start, ulong end)
> break;
> if (strstr(buf1, "<__switch_to>"))
> found = TRUE;
> - if (strlen(buf2) && strstr(buf1, buf2))
> + if (strlen(search_string1) && strstr(buf1, search_string1))
> + found = TRUE;
> + if (strlen(search_string2) && strstr(buf1, search_string2))
> found = TRUE;
> }
> close_tmpfile();
> --
> 1.9.0.rc1.175.g0b1dcb5
>
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
>
More information about the Crash-utility
mailing list