[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