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 <l...@redhat.com> > --- > 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@redhat.com https://listman.redhat.com/mailman/listinfo/crash-utility Contribution Guidelines: https://github.com/crash-utility/crash/wiki