Re: [PATCH v2 2/2] x86_64: Correct the identifier when locating the call instruction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022/08/29 22:45, Tao Liu wrote:
> The previous implementation to locate the call instruction is
> to strstr "call", then check whether the previous char is ' '
> or '\t'. The implementation is problematic. For example it
> cannot resolve the following disassembly string:
> 
> "0xffffffffc06e6399 <nfs_callback_up+118>:\tcall   0xffffffff9ac8792f <printk>"
> 
> strstr will locate the "_call" and char check fails,
> as a result, extract_hex fail to get the calling address.
> 
> This patch fix the issue by strstr "\tcall" and " call", to
> locate the correct call instruction.

Is it possible to add an example failure output of any command and
fixed one?

Thanks,
Kazu

> 
> Signed-off-by: Tao Liu <ltao@xxxxxxxxxx>
> ---
> v1 -> v2: No modification, sent together with patch1
> ---
>   x86_64.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/x86_64.c b/x86_64.c
> index dfada48..74bd1bb 100644
> --- a/x86_64.c
> +++ b/x86_64.c
> @@ -4432,8 +4432,7 @@ x86_64_function_called_by(ulong rip)
>   	if (gdb_pass_through(buf, pc->tmpfile2, GNU_RETURN_ON_ERROR)) {
>   	        rewind(pc->tmpfile2);
>   	        while (fgets(buf, BUFSIZE, pc->tmpfile2)) {
> -			if ((p1 = strstr(buf, "call")) &&
> -			    whitespace(*(p1-1))) {
> +			if ((p1 = strstr(buf, " call")) || (p1 = strstr(buf, "\tcall"))) {
>   				if (extract_hex(p1, &value, NULLCHAR, TRUE))
>   					break;
>   			}
--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux