From patchwork Mon Jan 11 13:38:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pedro Alves X-Patchwork-Id: 10328 Received: (qmail 89479 invoked by alias); 11 Jan 2016 13:38:20 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 89457 invoked by uid 89); 11 Jan 2016 13:38:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=ecx, funcargsexp, funcargs.exp, UD:funcargs.exp X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 11 Jan 2016 13:38:18 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 695408F504; Mon, 11 Jan 2016 13:38:16 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u0BDcEpq016581; Mon, 11 Jan 2016 08:38:15 -0500 Message-ID: <5693B046.60909@redhat.com> Date: Mon, 11 Jan 2016 13:38:14 +0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0 MIME-Version: 1.0 To: Simon Marchi , Jan Kratochvil , Simon Marchi CC: gdb-patches@sourceware.org Subject: Re: [testsuite patch] i386 regression for funcargs.exp [Re: [PATCH 3/3] Remove HP-UX references fom testsuite] References: <1450567845-27030-1-git-send-email-simon.marchi@polymtl.ca> <1450567845-27030-3-git-send-email-simon.marchi@polymtl.ca> <5677F519.2010000@redhat.com> <567831CD.2090406@redhat.com> <20160108193033.GA2812@host1.jankratochvil.net> <569026E5.4060502@ericsson.com> In-Reply-To: <569026E5.4060502@ericsson.com> On 01/08/2016 09:15 PM, Simon Marchi wrote: > I also don't see this on Ubuntu 14.04.3 LTS, gdb master, gcc 4.8.4. > I don't see it either on F20, gcc 4.8.3. But I do see it with gcc 6 (20151117, getting old, but what I had handy). The difference is that with newer GCC there's an extra instruction after the call which is still assigned to line 583: $ diff -up /tmp/4.8.3 /tmp/6.0.0 -U 1000 I don't know why -m32 changed to push/add instead of mov while 64-bit hasn't. > But if there is a configuration where this is needed, then yes, it should be re-added. I agree. On 01/08/2016 07:30 PM, Jan Kratochvil wrote: > gdb_test_multiple "finish" "finish from indirectly called function" { > + -re "\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*First.*$gdb_prompt $" { > + # On i386, gdb finishes at one line earlier than on x86_64. > + # Therefore, an extra "step" is necessary to continue the test. This is most likely needed on non-x86 ports as well. I think we should say: # If the branch instruction is not the last instruction in the function call # line, we'll stop at that line, and need an extra "step" to continue the test. OK with that change. Thanks, Pedro Alves > + send_gdb "step\n" > + exp_continue > + } > -re ".*\\(\\*pointer_to_call0a\\) \\(c, s, i, l\\);.*Second.*$gdb_prompt $" { > pass "finish from indirectly called function" > } --- /tmp/4.8.3 2016-01-11 12:37:39.611089156 +0000 +++ /tmp/6.0.0 2016-01-11 13:21:00.021127976 +0000 @@ -1,27 +1,30 @@ 583 (*pointer_to_call0a) (c, s, i, l); /* First step into call0a. */ mov 0x804d060,%ebx mov 0x804d050,%ecx movzwl 0x804d040,%eax movswl %ax,%edx movzbl 0x804d030,%eax movsbl %al,%eax - mov %ebx,0xc(%esp) - mov %ecx,0x8(%esp) - mov %edx,0x4(%esp) - mov %eax,(%esp) - mov 0x7c(%esp),%eax + push %ebx + push %ecx + push %edx + push %eax + mov -0x1c(%ebp),%eax call *%eax + add $0x10,%esp 584 (*pointer_to_call0a) (c, s, i, l); /* Second step into call0a. */ mov 0x804d060,%ebx mov 0x804d050,%ecx movzwl 0x804d040,%eax movswl %ax,%edx movzbl 0x804d030,%eax movsbl %al,%eax - mov %ebx,0xc(%esp) - mov %ecx,0x8(%esp) - mov %edx,0x4(%esp) - mov %eax,(%esp) - mov 0x7c(%esp),%eax + push %ebx + push %ecx + push %edx + push %eax + mov -0x1c(%ebp),%eax call *%eax + add $0x10,%esp +