Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1416647 > unrolled thread

[PATCH] scripts/gdb: Add automatic path expansion when loading modules

Started byNikolay Borisov <n.borisov.lkml@gmail.com>
First post2016-06-07 23:30 +0200
Last post2016-06-08 18:30 +0200
Articles 5 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] scripts/gdb: Add automatic path expansion when loading modules Nikolay Borisov <n.borisov.lkml@gmail.com> - 2016-06-07 23:30 +0200
    Re: [PATCH] scripts/gdb: Add automatic path expansion when loading  modules Jan Kiszka <jan.kiszka@siemens.com> - 2016-06-08 11:40 +0200
      Re: [PATCH] scripts/gdb: Add automatic path expansion when loading  modules Nikolay Borisov <n.borisov.lkml@gmail.com> - 2016-06-08 12:10 +0200
        Re: [PATCH] scripts/gdb: Add automatic path expansion when loading  modules Jan Kiszka <jan.kiszka@siemens.com> - 2016-06-08 12:30 +0200
          [PATCH] scripts/gdb: Perform path expansion to lx-symbol's arguments Nikolay Borisov <n.borisov.lkml@gmail.com> - 2016-06-08 18:30 +0200

#1416647 — [PATCH] scripts/gdb: Add automatic path expansion when loading modules

FromNikolay Borisov <n.borisov.lkml@gmail.com>
Date2016-06-07 23:30 +0200
Subject[PATCH] scripts/gdb: Add automatic path expansion when loading modules
Message-ID<rHwJs-7Uj-9@gated-at.bofh.it>
Python doesn't do automatic expansion of paths. In case one passes
path of the from ~/foo/bar the gdb scripts won't automatically expand
that and as a result the symbols files won't be loaded. Fix this
by explicitly expanding all paths which begin with "~"

Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
---
 scripts/gdb/linux/symbols.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py
index 9a0f8923f67c..2f5b2bee8c34 100644
--- a/scripts/gdb/linux/symbols.py
+++ b/scripts/gdb/linux/symbols.py
@@ -81,6 +81,12 @@ lx-symbols command."""
                         self.module_files.append(root + "/" + name)
         self.module_files_updated = True
 
+    def __expand_homedir(self):
+        for index, path in enumerate(self.module_paths):
+            if path.startswith("~"):
+                self.module_paths[index] = os.path.expanduser(path)
+
+
     def _get_module_file(self, module_name):
         module_pattern = ".*/{0}\.ko$".format(
             module_name.replace("_", r"[_\-]"))
@@ -160,6 +166,7 @@ lx-symbols command."""
         self.module_files = []
         self.module_files_updated = False
 
+        self.__expand_homedir()
         self.load_all_symbols()
 
         if hasattr(gdb, 'Breakpoint'):
-- 
2.7.4

[toc] | [next] | [standalone]


#1417180 — Re: [PATCH] scripts/gdb: Add automatic path expansion when loading modules

FromJan Kiszka <jan.kiszka@siemens.com>
Date2016-06-08 11:40 +0200
SubjectRe: [PATCH] scripts/gdb: Add automatic path expansion when loading modules
Message-ID<rHI7U-6Pu-41@gated-at.bofh.it>
In reply to#1416647
On 2016-06-07 23:26, Nikolay Borisov wrote:
> Python doesn't do automatic expansion of paths. In case one passes
> path of the from ~/foo/bar the gdb scripts won't automatically expand
> that and as a result the symbols files won't be loaded. Fix this
> by explicitly expanding all paths which begin with "~"
> 
> Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
> ---
>  scripts/gdb/linux/symbols.py | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py
> index 9a0f8923f67c..2f5b2bee8c34 100644
> --- a/scripts/gdb/linux/symbols.py
> +++ b/scripts/gdb/linux/symbols.py
> @@ -81,6 +81,12 @@ lx-symbols command."""
>                          self.module_files.append(root + "/" + name)
>          self.module_files_updated = True
>  
> +    def __expand_homedir(self):
> +        for index, path in enumerate(self.module_paths):
> +            if path.startswith("~"):
> +                self.module_paths[index] = os.path.expanduser(path)
> +
> +
>      def _get_module_file(self, module_name):
>          module_pattern = ".*/{0}\.ko$".format(
>              module_name.replace("_", r"[_\-]"))
> @@ -160,6 +166,7 @@ lx-symbols command."""
>          self.module_files = []
>          self.module_files_updated = False
>  
> +        self.__expand_homedir()
>          self.load_all_symbols()
>  
>          if hasattr(gdb, 'Breakpoint'):
> 

Valid point, but let's expand unconditionally in invoke when building
self.module_paths.

I'm no Python expert, but my feeling tells me that there is even a more
compact way to do loop. Does this work?

module_paths = [expanduser(p) for p in arg.spilt()]

Jan

-- 
Siemens AG, Corporate Technology, CT RDA ITP SES-DE
Corporate Competence Center Embedded Linux

[toc] | [prev] | [next] | [standalone]


#1417237 — Re: [PATCH] scripts/gdb: Add automatic path expansion when loading modules

FromNikolay Borisov <n.borisov.lkml@gmail.com>
Date2016-06-08 12:10 +0200
SubjectRe: [PATCH] scripts/gdb: Add automatic path expansion when loading modules
Message-ID<rHIAV-7fu-19@gated-at.bofh.it>
In reply to#1417180

On 06/08/2016 12:35 PM, Jan Kiszka wrote:
> On 2016-06-07 23:26, Nikolay Borisov wrote:
>> Python doesn't do automatic expansion of paths. In case one passes
>> path of the from ~/foo/bar the gdb scripts won't automatically expand
>> that and as a result the symbols files won't be loaded. Fix this
>> by explicitly expanding all paths which begin with "~"
>>
>> Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
>> ---
>>  scripts/gdb/linux/symbols.py | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py
>> index 9a0f8923f67c..2f5b2bee8c34 100644
>> --- a/scripts/gdb/linux/symbols.py
>> +++ b/scripts/gdb/linux/symbols.py
>> @@ -81,6 +81,12 @@ lx-symbols command."""
>>                          self.module_files.append(root + "/" + name)
>>          self.module_files_updated = True
>>  
>> +    def __expand_homedir(self):
>> +        for index, path in enumerate(self.module_paths):
>> +            if path.startswith("~"):
>> +                self.module_paths[index] = os.path.expanduser(path)
>> +
>> +
>>      def _get_module_file(self, module_name):
>>          module_pattern = ".*/{0}\.ko$".format(
>>              module_name.replace("_", r"[_\-]"))
>> @@ -160,6 +166,7 @@ lx-symbols command."""
>>          self.module_files = []
>>          self.module_files_updated = False
>>  
>> +        self.__expand_homedir()
>>          self.load_all_symbols()
>>  
>>          if hasattr(gdb, 'Breakpoint'):
>>
> 
> Valid point, but let's expand unconditionally in invoke when building
> self.module_paths.
> 
> I'm no Python expert, but my feeling tells me that there is even a more
> compact way to do loop. Does this work?
> 
> module_paths = [expanduser(p) for p in arg.spilt()]

module_paths = [os.path.expanduser(p) for p in arg.spilt()] does work.

I'm no python expert either, but list comprehensions is more idiomatic
indeed. I will cook up a patch tonight and resend, unless you want to do
it.

> 
> Jan
> 

[toc] | [prev] | [next] | [standalone]


#1417258 — Re: [PATCH] scripts/gdb: Add automatic path expansion when loading modules

FromJan Kiszka <jan.kiszka@siemens.com>
Date2016-06-08 12:30 +0200
SubjectRe: [PATCH] scripts/gdb: Add automatic path expansion when loading modules
Message-ID<rHIUi-7mg-15@gated-at.bofh.it>
In reply to#1417237
On 2016-06-08 12:09, Nikolay Borisov wrote:
> 
> 
> On 06/08/2016 12:35 PM, Jan Kiszka wrote:
>> On 2016-06-07 23:26, Nikolay Borisov wrote:
>>> Python doesn't do automatic expansion of paths. In case one passes
>>> path of the from ~/foo/bar the gdb scripts won't automatically expand
>>> that and as a result the symbols files won't be loaded. Fix this
>>> by explicitly expanding all paths which begin with "~"
>>>
>>> Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
>>> ---
>>>  scripts/gdb/linux/symbols.py | 7 +++++++
>>>  1 file changed, 7 insertions(+)
>>>
>>> diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py
>>> index 9a0f8923f67c..2f5b2bee8c34 100644
>>> --- a/scripts/gdb/linux/symbols.py
>>> +++ b/scripts/gdb/linux/symbols.py
>>> @@ -81,6 +81,12 @@ lx-symbols command."""
>>>                          self.module_files.append(root + "/" + name)
>>>          self.module_files_updated = True
>>>  
>>> +    def __expand_homedir(self):
>>> +        for index, path in enumerate(self.module_paths):
>>> +            if path.startswith("~"):
>>> +                self.module_paths[index] = os.path.expanduser(path)
>>> +
>>> +
>>>      def _get_module_file(self, module_name):
>>>          module_pattern = ".*/{0}\.ko$".format(
>>>              module_name.replace("_", r"[_\-]"))
>>> @@ -160,6 +166,7 @@ lx-symbols command."""
>>>          self.module_files = []
>>>          self.module_files_updated = False
>>>  
>>> +        self.__expand_homedir()
>>>          self.load_all_symbols()
>>>  
>>>          if hasattr(gdb, 'Breakpoint'):
>>>
>>
>> Valid point, but let's expand unconditionally in invoke when building
>> self.module_paths.
>>
>> I'm no Python expert, but my feeling tells me that there is even a more
>> compact way to do loop. Does this work?
>>
>> module_paths = [expanduser(p) for p in arg.spilt()]
> 
> module_paths = [os.path.expanduser(p) for p in arg.spilt()] does work.
> 
> I'm no python expert either, but list comprehensions is more idiomatic
> indeed. I will cook up a patch tonight and resend, unless you want to do
> it.

Go ahead, looking forward to your patch!

Thanks
Jan

-- 
Siemens AG, Corporate Technology, CT RDA ITP SES-DE
Corporate Competence Center Embedded Linux

[toc] | [prev] | [next] | [standalone]


#1417650 — [PATCH] scripts/gdb: Perform path expansion to lx-symbol's arguments

FromNikolay Borisov <n.borisov.lkml@gmail.com>
Date2016-06-08 18:30 +0200
Subject[PATCH] scripts/gdb: Perform path expansion to lx-symbol's arguments
Message-ID<rHOwG-2ud-19@gated-at.bofh.it>
In reply to#1417258
Python doesn't do automatic expansion of paths. In case one passes
path of the from ~/foo/bar the gdb scripts won't automatically expand
that and as a result the symbols files won't be loaded. Fix this
by explicitly expanding all paths which begin with "~"

Signed-off-by: Nikolay Borisov <n.borisov.lkml@gmail.com>
---
 scripts/gdb/linux/symbols.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py
index 9a0f8923f67c..004b0ac7fa72 100644
--- a/scripts/gdb/linux/symbols.py
+++ b/scripts/gdb/linux/symbols.py
@@ -153,7 +153,7 @@ lx-symbols command."""
             saved_state['breakpoint'].enabled = saved_state['enabled']
 
     def invoke(self, arg, from_tty):
-        self.module_paths = arg.split()
+        self.module_paths = [os.path.expanduser(p) for p in arg.split()]
         self.module_paths.append(os.getcwd())
 
         # enforce update
-- 
2.7.4

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web