Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com X-Injected-Via-Gmane: http://gmane.org/ To: cygwin AT cygwin DOT com From: Rolf Campbell Subject: Re: objdump : inaccurate demangling for foo(char* const) Date: Fri, 19 Sep 2003 14:17:08 -0400 Lines: 104 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet AT sea DOT gmane DOT org User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) Gecko/20030723 Thunderbird/0.1 X-Accept-Language: en-us, en In-Reply-To: foo(char* const) is no different from foo(char*), from the perspective of linking/overloading. Did you mean foo(char const *)? Alex Vinokur wrote: > ========================================== > Windows 2000 Professional > CYGWIN_NT-5.0 1.5.4(0.94/3/2) > GNU gcc version 3.2 20020927 (prerelease) > GNU objdump 2.14.90 20030901 > ========================================== > > > It seems that objdump inaccurately demangles foo(char* const). > Low-level symbol name of foo(char* const) is valid : __Z3fooPc > But user-level symbol name obtained after demangling is inaccurate : foo(char*). > > > > ====== C++ code : BEGIN ====== > // File t.cpp > > void foo3 (char*) {} > > ====== C++ code : END ======== > > > > ====== Compilation : BEGIN ====== > > $ g++ -c t.cpp > > ====== Compilation : END ======== > > > > ====== objdump : BEGIN ====== > > $ objdump -d t.o > > t.o: file format pe-i386 > > Disassembly of section .text: > > 00000000 <__Z3fooPc>: // OK > 0: 55 push %ebp > 1: 89 e5 mov %esp,%ebp > 3: 5d pop %ebp > 4: c3 ret > 5: 90 nop > 6: 90 nop > 7: 90 nop > 8: 90 nop > 9: 90 nop > a: 90 nop > b: 90 nop > c: 90 nop > d: 90 nop > e: 90 nop > f: 90 nop > > > > > > $ objdump -Cd t.o > > > t.o: file format pe-i386 > > Disassembly of section .text: > > 00000000 : // Must be foo(char* const) > 0: 55 push %ebp > 1: 89 e5 mov %esp,%ebp > 3: 5d pop %ebp > 4: c3 ret > 5: 90 nop > 6: 90 nop > 7: 90 nop > 8: 90 nop > 9: 90 nop > a: 90 nop > b: 90 nop > c: 90 nop > d: 90 nop > e: 90 nop > f: 90 nop > > ====== objdump : END ======== > > -- > ===================================== > Alex Vinokur > mailto:alexvn AT connect DOT to > http://mathforum.org/library/view/10978.html > ===================================== > > > > > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/