This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Issue with printing binary operator overloaded function on GDB 7.2
- From: viju vincent <vijuvince at gmail dot com>
- To: gdb at sourceware dot org
- Date: Thu, 23 Dec 2010 13:23:48 +0530
- Subject: Issue with printing binary operator overloaded function on GDB 7.2
Dear all,
I am facing an issue while printing binary operator overloaded
function using GDB 7.2 on armv7a target
Compiled C++ test code (gdb.cp/cpexprs.cc) using g++ (4.5.1)
* On GDB 7.2 its showing multiple operator overloading functions for
binary operators
* In case of cpexprs.exp testcase on GDB 7.2
* From GDB log
{{{
print base::operator!=
$17 = {bool (const base * const, const void &)} 0x9784
<base::operator!=(void const&) const>
(gdb) FAIL: gdb.cp/cpexprs.exp: print base::operator!=
}}}
* The available overloaded functions are displayed on GDB prompt
{{{
(gdb) p base::operator
operator char*() const operator-=(void const&)
operator delete(void*) operator->() const
operator delete[](void*) operator->*(base const&) const
operator fluff*() const operator->*(void const&) const
operator fluff**() const operator/(base const&) const
operator int() const operator/(void const&) const
operator new(size_t) operator/=(base const&)
operator new(unsigned int) operator/=(void const&)
operator new[](size_t) operator<(base const&) const
operator new[](unsigned int) operator<(void const&) const
operator!() const operator<<(int) const
operator!=(base const&) const operator<<=(int)
operator!=(void const&) const operator<=(base const&) const
operator%(base const&) const operator<=(void const&) const
operator%(void const&) const operator=(base const&)
operator%=(base const&) operator=(void const&)
operator%=(void const&) operator==(base const&) const
operator&&(base const&) const operator==(void const&) const
operator&&(void const&) const operator>(base const&) const
operator&(base const&) const operator>(void const&) const
operator&(void const&) const operator>=(base const&) const
operator&=(base const&) operator>=(void const&) const
operator&=(void const&) operator>>(int) const
operator()() const operator>>=(int)
operator*(base const&) const operator[](int) const
operator*(void const&) const operator^(base const&) const
operator*=(base const&) operator^(void const&) const
operator*=(void const&) operator^=(base const&)
operator+(base const&) const operator^=(void const&)
operator+(void const&) const operator|(base const&) const
operator++() operator|(void const&) const
operator+=(base const&) operator|=(base const&)
operator+=(void const&) operator|=(void const&)
operator-(base const&) const operator||(base const&) const
operator-(void const&) const operator||(void const&) const
operator--() operator~() const
operator-=(base const&)
(gdb)
(gdb) print base::operator!=
$3 = {bool (const base * const, const void &)} 0x9784
<base::operator!=(void const&) const>
(gdb)
}}}
* here there are duplicate overloaded functions (for binary
operators) showing with void class object reference as an argument
* output of "print base::operator!=" is not the expected one.
instead of "const void &", "const base &" is required
* Same C++ source code (cpexprs.cc) compiled with gcc 4.3.3 and
debuged using GDB 7.2
* Here no duplicate operator overloading function are displayed for
binary operators
* And getting expected result on GDB while printing binary operator
overloaded function
{{{
(gdb) p base::operator
operator char*() const operator--()
operator delete(void*) operator-=(base const&)
operator delete[](void*) operator->() const
operator fluff*() const operator->*(base const&) const
operator fluff**() const operator/(base const&) const
operator int() const operator/=(base const&)
operator new(size_t) operator<(base const&) const
operator new(unsigned int) operator<<(int) const
operator new[](size_t) operator<<=(int)
operator new[](unsigned int) operator<=(base const&) const
operator!() const operator=(base const&)
operator!=(base const&) const operator==(base const&) const
operator%(base const&) const operator>(base const&) const
operator%=(base const&) operator>=(base const&) const
operator&&(base const&) const operator>>(int) const
operator&(base const&) const operator>>=(int)
operator&=(base const&) operator[](int) const
operator()() const operator^(base const&) const
operator*(base const&) const operator^=(base const&)
operator*=(base const&) operator|(base const&) const
operator+(base const&) const operator|=(base const&)
operator++() operator||(base const&) const
operator+=(base const&) operator~() const
operator-(base const&) const
(gdb) p base::operator!=
$1 = {bool (const base * const, const base &)} 0x9904
<base::operator!=(base const&) const>
(gdb)
}}}
if you have any idea to fix this issue, please share it
thanks and regards
viju