scripts/gdb: fix 'lx-current' for x86

Message ID 20230204090139.1789264-1-xiehuan09@gmail.com
State New
Headers
Series scripts/gdb: fix 'lx-current' for x86 |

Commit Message

Jeff Xie Feb. 4, 2023, 9:01 a.m. UTC
  When printing the name of the current process, it will report an error:
(gdb) p $lx_current().comm
Python Exception <class 'gdb.error'> No symbol "current_task" in current context.: 
Error occurred in Python: No symbol "current_task" in current context.

Because the commit <e57ef2ed97c1> ("x86: Put hot per CPU variables into a struct") 
changed it.

Signed-off-by: Jeff Xie <xiehuan09@gmail.com>
---
 scripts/gdb/linux/cpus.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Jeff Xie Feb. 7, 2023, 3:48 p.m. UTC | #1
Andrew was added.

Hi Andrew,

I found the patches for the ./scripts/gdb/*  were merged by you before,
but the "./scripts/get_maintainer.pl ./scripts/gdb/linux/cpus.py"
can't find your name,  so added you.

Can you review this patch ;-)

On Sat, Feb 4, 2023 at 5:02 PM Jeff Xie <xiehuan09@gmail.com> wrote:
>
> When printing the name of the current process, it will report an error:
> (gdb) p $lx_current().comm
> Python Exception <class 'gdb.error'> No symbol "current_task" in current context.:
> Error occurred in Python: No symbol "current_task" in current context.
>
> Because the commit <e57ef2ed97c1> ("x86: Put hot per CPU variables into a struct")
> changed it.
>
> Signed-off-by: Jeff Xie <xiehuan09@gmail.com>
> ---
>  scripts/gdb/linux/cpus.py | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/gdb/linux/cpus.py b/scripts/gdb/linux/cpus.py
> index 15fc4626d236..9ee99f9fae8d 100644
> --- a/scripts/gdb/linux/cpus.py
> +++ b/scripts/gdb/linux/cpus.py
> @@ -163,7 +163,7 @@ def get_current_task(cpu):
>      task_ptr_type = task_type.get_type().pointer()
>
>      if utils.is_target_arch("x86"):
> -         var_ptr = gdb.parse_and_eval("&current_task")
> +         var_ptr = gdb.parse_and_eval("&pcpu_hot.current_task")
>           return per_cpu(var_ptr, cpu).dereference()
>      elif utils.is_target_arch("aarch64"):
>           current_task_addr = gdb.parse_and_eval("$SP_EL0")
> --
> 2.25.1
>
  
Jan Kiszka Feb. 7, 2023, 4:32 p.m. UTC | #2
On 07.02.23 16:48, Jeff Xie wrote:
> Andrew was added.
> 
> Hi Andrew,
> 
> I found the patches for the ./scripts/gdb/*  were merged by you before,
> but the "./scripts/get_maintainer.pl ./scripts/gdb/linux/cpus.py"
> can't find your name,  so added you.
> 

Yes, Andrew is merging scripts/gdb stuff.

> Can you review this patch ;-)
> 
> On Sat, Feb 4, 2023 at 5:02 PM Jeff Xie <xiehuan09@gmail.com> wrote:
>>
>> When printing the name of the current process, it will report an error:
>> (gdb) p $lx_current().comm
>> Python Exception <class 'gdb.error'> No symbol "current_task" in current context.:
>> Error occurred in Python: No symbol "current_task" in current context.
>>
>> Because the commit <e57ef2ed97c1> ("x86: Put hot per CPU variables into a struct")
>> changed it.
>>
>> Signed-off-by: Jeff Xie <xiehuan09@gmail.com>
>> ---
>>  scripts/gdb/linux/cpus.py | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/scripts/gdb/linux/cpus.py b/scripts/gdb/linux/cpus.py
>> index 15fc4626d236..9ee99f9fae8d 100644
>> --- a/scripts/gdb/linux/cpus.py
>> +++ b/scripts/gdb/linux/cpus.py
>> @@ -163,7 +163,7 @@ def get_current_task(cpu):
>>      task_ptr_type = task_type.get_type().pointer()
>>
>>      if utils.is_target_arch("x86"):
>> -         var_ptr = gdb.parse_and_eval("&current_task")
>> +         var_ptr = gdb.parse_and_eval("&pcpu_hot.current_task")
>>           return per_cpu(var_ptr, cpu).dereference()
>>      elif utils.is_target_arch("aarch64"):
>>           current_task_addr = gdb.parse_and_eval("$SP_EL0")
>> --
>> 2.25.1
>>
> 

FWIW:

Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>

Should go into 6.2 if possible.

Thanks
Jan
  

Patch

diff --git a/scripts/gdb/linux/cpus.py b/scripts/gdb/linux/cpus.py
index 15fc4626d236..9ee99f9fae8d 100644
--- a/scripts/gdb/linux/cpus.py
+++ b/scripts/gdb/linux/cpus.py
@@ -163,7 +163,7 @@  def get_current_task(cpu):
     task_ptr_type = task_type.get_type().pointer()
 
     if utils.is_target_arch("x86"):
-         var_ptr = gdb.parse_and_eval("&current_task")
+         var_ptr = gdb.parse_and_eval("&pcpu_hot.current_task")
          return per_cpu(var_ptr, cpu).dereference()
     elif utils.is_target_arch("aarch64"):
          current_task_addr = gdb.parse_and_eval("$SP_EL0")