> I'm having gdb-5.0 act oddly in the following code: 


Could I suggest downloading a current GDB snapshot from 
http://sources.redhat.com/gdb/#download and then seeing if the problem 
sitll occures.

If it does still occure, could I suggest, as well as your on going 
investigation, recording your analysis as a bug report see 
http://sources.redhat.com/gdb/#bugs .

        Andrew


>     class A {
>         public:
>             A() { }
>         private:
>             static unsigned u2u(unsigned);
>     };
> 
>     unsigned A::u2u(unsigned u) {
>         return u/2;
>     }
> 
>     int main() {
>         A a;
>         return 0;
>     }
> 
> I attached g++ --verbose ; the same happens with 2.95.3
> 
> Then I do:
>     > gdb foo
>     GNU gdb 5.0
>     Copyright 2000 Free Software Foundation, Inc.
>     GDB is free software, covered by the GNU General Public License, and you are
>     welcome to change it and/or distribute copies of it under certain conditions.
>     Type "show copying" to see the conditions.
>     There is absolutely no warranty for GDB.  Type "show warranty" for details.
>     This GDB was configured as "sparc-sun-solaris2.8"...
>     (gdb) b main
>     Breakpoint 1 at 0x1063c: file foo.cpp, line 13.
>     (gdb) run
>     Starting program: /home/bhudson/livingstone/mba/cpp/foo 
> 
>     Breakpoint 1, main () at foo.cpp:13
>     13          A a;
>     (gdb) p A::u2u(10)
>     $1 = 5
>     (gdb) b A::A
>     Breakpoint 2 at 0x10708: file foo.cpp, line 3.
>     (gdb) c
>     Continuing.
> 
>     Breakpoint 2, A::A (this=0xffbef82f) at foo.cpp:3
>     3               A() { }
>     (gdb) p A::u2u(10)
>     $2 = 5
>     (gdb) p u2u(10)
>     $3 = 2145352727
>     (gdb) p this
>     $4 = (A *) 0xffbef82f
>     (gdb) p (unsigned)this
>     $5 = 4290705455
>     (gdb) p $5/2
>     $6 = 2145352727
> 
> 
> So it seems gdb isn't quite always picking up that u2u is static.
> 
> Worse, if I quit gdb and start again, and do everything above except trying
> the fully-qualified name, gdb crashes (SEGV).  That doesn't happen if I
> just type 'run' again.
> 
> So the workaround is easy enough: when calling a static function, provide
> the fully-qualified name.  It's just a pain in the ass.
> 
>         -- Beno�t
> 
> 
> 
>> g++ foo.cpp -o foo -g --verbose
> 
> Reading specs from /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/specs
> gcc version 2.95.2 19991024 (release)
>  /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cpp -lang-c++ -v -D__GNUC__=2 
>-D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Dsparc -Dsun -Dunix -D__svr4__ 
>-D__SVR4 -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D__sun 
>-D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -g -D__GCC_NEW_VARARGS__ 
>-Acpu(sparc) -Amachine(sparc) foo.cpp /var/tmp/cckWNkDv.ii
> GNU CPP version 2.95.2 19991024 (release) (sparc)
> #include "..." search starts here:
> #include <...> search starts here:
>  /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../include/g++-3
>  /opt/sfw/include
>  
>/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../sparc-sun-solaris2.8/include
>  /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include
>  /usr/include
> End of search list.
> The following default directories have been omitted from the search path:
> End of omitted list.
>  /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cc1plus /var/tmp/cckWNkDv.ii 
>-quiet -dumpbase foo.cc -g -version -o /var/tmp/cc4wqecS.s
> GNU C++ version 2.95.2 19991024 (release) (sparc-sun-solaris2.8) compiled by GNU C 
>version 2.95.2 19991024 (release).
>  /usr/ccs/bin/as -V -Qy -s -o /var/tmp/cc8raJXj.o /var/tmp/cc4wqecS.s
> /usr/ccs/bin/as: Sun WorkShop 6 99/08/18
>  /opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/collect2 -V -Y 
>P,/usr/ccs/lib:/usr/lib -Qy -o foo 
>/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crt1.o 
>/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crti.o /usr/ccs/lib/values-Xa.o 
>/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crtbegin.o 
>-L/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2 
>-L/opt/sfw/sparc-sun-solaris2.8/lib -L/usr/ccs/bin -L/usr/ccs/lib -L/opt/sfw/lib 
>/var/tmp/cc8raJXj.o -lstdc++ -lm -lgcc -lc -lgcc 
>/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crtend.o 
>/opt/sfw/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crtn.o
> ld: Software Generation Utilities - Solaris-ELF (4.0)
> 



_______________________________________________
Bug-gdb mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-gdb

Reply via email to