bug-gdb
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: problem calling static


From: Andrew Cagney
Subject: Re: problem calling static
Date: Sun, 29 Jul 2001 11:38:39 -0400
User-agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:0.9.2) Gecko/20010717

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)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]