From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27949 invoked by alias); 23 Dec 2010 07:53:57 -0000 Received: (qmail 27940 invoked by uid 22791); 23 Dec 2010 07:53:55 -0000 X-SWARE-Spam-Status: No, hits=-1.4 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-iy0-f169.google.com (HELO mail-iy0-f169.google.com) (209.85.210.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 23 Dec 2010 07:53:50 +0000 Received: by iyj17 with SMTP id 17so5344493iyj.0 for ; Wed, 22 Dec 2010 23:53:48 -0800 (PST) MIME-Version: 1.0 Received: by 10.42.171.70 with SMTP id i6mr7979665icz.322.1293090828883; Wed, 22 Dec 2010 23:53:48 -0800 (PST) Received: by 10.42.8.139 with HTTP; Wed, 22 Dec 2010 23:53:48 -0800 (PST) Date: Thu, 23 Dec 2010 07:53:00 -0000 Message-ID: Subject: Issue with printing binary operator overloaded function on GDB 7.2 From: viju vincent To: gdb@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2010-12/txt/msg00073.txt.bz2 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 (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 (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 (gdb) }}} if you have any idea to fix this issue, please share it thanks and regards viju