scripts/gdb: fix lx-version for gdb 7.3-
PATCH 1/1 scripts/gdb: fix lx-version for gdb 7.3-
For gdb version less than 7.3, lx-version only one character. (gdb) lx-version
L(gdb)
This can be fixed by casting 'linux_banner' as (char *).
(gdb) lx-version
Linux version 4.19.0-rc1+ (changbin@acer) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21 SMP Sat Sep 1 21:43:30 CST 2018
gdb 7.4 seems to be no such issue.
--- scripts/gdb/linux/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
scripts/gdb/linux/proc.py +1 -1
@@ -41,7 +41,7 @@ class LxVersion(gdb.Command): def invoke(self, arg, from_tty): # linux_banner should contain a newline - gdb.write(gdb.parse_and_eval("linux_banner").string()) + gdb.write(gdb.parse_and_eval("(char *)linux_banner").string()) LxVersion()
Signature · 1 line
2.17.1
Jan Kiszka
maintainerQuoted 1 line · Du Changbin
For gdb version less than 7.3, lx-version only one character.
^^^ prints?
Quoted 20 lines
(gdb) lx-version
L(gdb)This can be fixed by casting '
linux_banner' as (char *).
(gdb) lx-version
Linux version 4.19.0-rc1+ (changbin@acer) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21 SMP Sat Sep 1 21:43:30 CST 2018gdb 7.4 seems to be no such issue.
Signed-off-by Du Changbin <[email protected]>--- scripts/gdb/linux/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)scripts/gdb/linux/proc.py +0
-0
scripts/gdb/linux/proc.py class LxVersion(gdb.Command): · line 47
Quoted 8 lines
scripts/gdb/linux/proc.py +1
-1@@ -41,7 +41,7 @@ class LxVersion(gdb.Command): def invoke(self, arg, from_tty): # linux_banner should contain a newline - gdb.write(gdb.parse_and_eval("linux_banner").string()) + gdb.write(gdb.parse_and_eval("(char *)linux_banner").string()) LxVersion()
Looks good to me otherwise.
Jan
Signature · 2 lines
Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux
Quoted 5 lines · Jan Kiszka
Quoted 1 line · Du Changbin
For gdb version less than 7.3, lx-version only one character.
^^^ prints?
I will update it, thanks!
Quoted 28 lines
Quoted 19 lines
(gdb) lx-version
L(gdb)This can be fixed by casting '
linux_banner' as (char *).
(gdb) lx-version
Linux version 4.19.0-rc1+ (changbin@acer) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21 SMP Sat Sep 1 21:43:30 CST 2018gdb 7.4 seems to be no such issue.
Signed-off-by Du Changbin <[email protected]>--- scripts/gdb/linux/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)scripts/gdb/linux/proc.py +0
-0scripts/gdb/linux/proc.py class LxVersion(gdb.Command): · line 45
Quoted 6 lines
scripts/gdb/linux/proc.py +1
-1@@ -41,7 +41,7 @@ class LxVersion(gdb.Command): def invoke(self, arg, from_tty): # linux_banner should contain a newline - gdb.write(gdb.parse_and_eval("linux_banner").string()) + gdb.write(gdb.parse_and_eval("(char *)linux_banner").string()) LxVersion()Looks good to me otherwise.
Quoted 5 lines
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE Corporate Competence Center Embedded Linux
--
Thanks,
Du Changbin
Hi Du,
Quoted 20 lines · Du Changbin
For gdb version less than 7.3, lx-version only one character. (gdb) lx-version
L(gdb)This can be fixed by casting '
linux_banner' as (char *).
(gdb) lx-version
Linux version 4.19.0-rc1+ (changbin@acer) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #21 SMP Sat Sep 1 21:43:30 CST 2018gdb 7.4 seems to be no such issue.
Signed-off-by Du Changbin <[email protected]>--- scripts/gdb/linux/proc.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)scripts/gdb/linux/proc.py +0
-0
scripts/gdb/linux/proc.py class LxVersion(gdb.Command): · line 44
Quoted 5 lines
scripts/gdb/linux/proc.py +1
-1@@ -41,7 +41,7 @@ class LxVersion(gdb.Command): def invoke(self, arg, from_tty): # linux_banner should contain a newline - gdb.write(gdb.parse_and_eval("linux_banner").string()) + gdb.write(gdb.parse_and_eval("(char *)linux_banner").string())
Interesting - this is an issue I reported to the GDB team after I'd tried to dig into the fault.
https://sourceware.org/bugzilla/show_bug.cgi?id=20077
the parse_and_eval finds a string length of 0, but then later in the GBD parsing it gets incremented to 1, hence the single char. I guess it's some failure in GDB determining the type of the pointer.
However, from reading the bugzilla entry and from what I recall - it only occurred if you had done a backtrace before calling lx-version.
Did you discover that it would always return only the single character in your testing ? Even if it was the first command executed?
My worry is - that if this fixes lx-version - do we also need to manually cast lx-cmdline as well ? (I never saw the issue occur on that cmd).
I think considering the age of the bugzilla at GDB, and the lack of any GDB level fix or understanding - we should certainly apply this fix here
- and probably include it in the stable trees too.
With the title fix as highlighted by Jan,
Would you be able to test the issue with the lx-cmdline command as well please? And if it is suffering the same issue - perhaps you could either submit a second patch to update that entry - or respin this one to include both?
Quoted 4 lines
scripts/gdb/linux/proc.py +0
-0LxVersion()
Signature · 3 lines
Regards -- Kieran