Mantis - gdb
Viewing Issue Advanced Details
4967 regular use major always 2012-06-26 16:23 2012-07-27 18:55
tjyang  
pfelecan  
normal  
closed  
fixed  
none    
none  
0004967: Can't use gdb to list out source code from gccgo compiled binary with -g option
The test helloworld.go was compiled and ran ok by gccgo 4.7.1as shown below.
But when doing a debugging session to list out source code, it failed.

$ cat helloworld.go
package main

import "fmt"

func main() {
        fmt.Println("Hello, World")
}
$ ./hellow
Hello, World
$

$ /opt/csw/bin/gccgo -v
Reading specs from /opt/csw/lib/gcc/sparc-sun-solaris2.10/4.7.1/specs
COLLECT_GCC=/opt/csw/bin/gccgo
COLLECT_LTO_WRAPPER=/opt/csw/libexec/gcc/sparc-sun-solaris2.10/4.7.1/lto-wrapper
Target: sparc-sun-solaris2.10
Configured with: /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/g\
cc-4.7.1/configure --prefix=/opt/csw --exec_prefix=/opt/csw --bindir=/opt/csw/bin --sbindir=/opt/csw/\
sbin --libexecdir=/opt/csw/libexec --datadir=/opt/csw/share --sysconfdir=/etc/opt/csw --sharedstatedi\
r=/opt/csw/share --localstatedir=/var/opt/csw --libdir=/opt/csw/lib --infodir=/opt/csw/share/info --i\
ncludedir=/opt/csw/include --mandir=/opt/csw/share/man --enable-cloog-backend=isl --enable-java-awt=x\
lib --enable-languages=ada,c,c++,fortran,go,java,objc --enable-libada --enable-libssp --enable-nls --\
enable-objc-gc --enable-threads=posix --program-suffix=-4.7 --with-as=/opt/csw/bin/gas --with-cloog=/\
opt/csw --with-gmp=/opt/csw --with-gnu-as --with-included-gettext --with-ld=/usr/ccs/bin/ld --without\
-gnu-ld --with-libiconv-prefix=/opt/csw --with-mpfr=/opt/csw --with-ppl=/opt/csw --with-system-zlib=/\
opt/csw
Thread model: posix
gcc version 4.7.1 (GCC)
$ /opt/csw/bin/gccgo -g -o hellow helloworld.go
$ /opt/csw/bin/gdb ./hellow

GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> [^]
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.10".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>... [^]
Reading symbols from /opt/moto/hobbitserver42/ext/oscount/gccgo/hellow...done.
(gdb) l
34 /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/\
libgo/runtime/go-main.c: No such file or directory.
        in /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7\
.1/libgo/runtime/go-main.c
(gdb)
Issue History
2012-06-26 16:23 tjyang New Issue
2012-06-26 16:33 maciej Note Added: 0009983
2012-06-26 16:51 dam Note Added: 0009984
2012-07-01 13:45 maciej Note Added: 0009993
2012-07-01 16:50 tjyang Note Added: 0009994
2012-07-01 16:54 maciej Project gcc4core => gdb
2012-07-15 14:56 pfelecan Status new => assigned
2012-07-15 14:56 pfelecan Assigned To => pfelecan
2012-07-25 09:01 pfelecan Note Added: 0010055
2012-07-25 09:01 pfelecan Status assigned => closed
2012-07-25 09:01 pfelecan Resolution open => fixed
2012-07-27 18:36 tjyang Note Added: 0010060
2012-07-27 18:55 pfelecan Note Added: 0010061

Notes
(0009983)
maciej   
2012-06-26 16:33   
Is this Solaris specific? For instance, does it work on other platforms?
(0009984)
dam   
2012-06-26 16:51   
Works like charm on the buildfarm:

unstable10s% /opt/csw/bin/gccgo -g -o hellow helloworld.go
unstable10s% /opt/csw/bin/gdb ./hellow
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> [^]
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.10".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>... [^]
Reading symbols from /home/dam/tmp/hellow...done.
(gdb) l
34
35 extern void runtime_main (void);
36 static void mainstart (void *);
37
38 /* The main function. */
39
40 int
41 main (int argc, char **argv)
42 {
43 runtime_check ();
(gdb)


It looks like buildfarm-pathes have crept into the binary:

unstable10s% truss -f /opt/csw/bin/gdb ./hellow 2>&1 | grep maciej
8173: stat("/home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/libgo/runtime/go-main.c", 0xFFFFFFFF7FFFE700) = 0
8173: open("/home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/libgo/runtime/go-main.c", O_RDONLY) = 6
8173: resolvepath("/home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/libgo/runtime/", "/home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/libgo/runtime", 1024) = 106
(0009993)
maciej   
2012-07-01 13:45   
I'm wondering why on earth is gdb trying to access libgo/runtime/go-main.c. This file is not installed as part of "make install", so what's the story there?
(0009994)
tjyang   
2012-07-01 16:50   
argh, I now remember gdb 7.2 on windows has similar problem.
the advice from go team was to use gdb 7.4+.

if our case here, "l" failed. But if we do a "l main.main", the source code will be listed like following.

bash-3.00$ /opt/csw/bin/gdb helloworld.go.exe
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> [^]
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "sparc-sun-solaris2.10".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>... [^]
Reading symbols from /opt/moto/hobbitserver42/ext/oscount/gccgo/helloworld.go.exe...done.
(gdb) l
34 /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/libgo/runtime/go-main.c: No such file or directory.
        in /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-sparc/build-isa-sparcv8plus/gcc-4.7.1/libgo/runtime/go-main.c
(gdb) l main.main
1 package main
2
3 import "fmt"
4
5 func main() {
6 fmt.Println("Hello, World")
7 }(gdb)
Line number 8 out of range; helloworld.go has 7 lines.
(gdb)

So, I guess when CSW's gdb version is upgraded to 7.4+, this problem will be resolved.

BTW, I did another test gdb helloworld.c, CSW gdb 7.2 works fine on listing source of helloworld c binary.
(0010055)
pfelecan   
2012-07-25 09:01   
The freshly released package of gdb 7.41 should solve this issue.
(0010060)
tjyang   
2012-07-27 18:36   
Thanks, gdb-4.1 works ok to list out source code if I do a "list main.main".

Except following message

   /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-i386/build-isa-pentium_pro/gcc-4.7.1/libgo/runtime/proc.c: No such file or directory.


-bash-4.1$ gccgo -g -o hello.bin helloworld.go
-bash-4.1$ gdb hello.bin
GNU gdb (GDB) 7.4.1
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> [^]
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-pc-solaris2.10".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>... [^]
Reading symbols from /export/home/gobuild/hello.bin...done.
(gdb) l
34 /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-i386/build-isa-pentium_pro/gcc-4.7.1/libgo/runtime/go-main.c: No such file or directory.
(gdb) l main.main
1 package main
2
3 import "fmt"
4
5 func main() {
6 fmt.Println("Hello, World")
7 }
(gdb) q
-bash-4.1$ uname -a
SunOS b-solaris11-amd64 5.11 11.0 i86pc i386 i86pc
-bash-4.1$ date
Friday, July 27, 2012 11:31:46 AM CDT
-bash-4.1$
(0010061)
pfelecan   
2012-07-27 18:55   
I'm afraid that this is an issue with gccgo packaging. Tickling that package maintainer is an option... Bring up this issue on the maintainers list.