From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3095 invoked by alias); 25 Sep 2002 01:27:32 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 3012 invoked from network); 25 Sep 2002 01:27:26 -0000 Received: from unknown (HELO localhost.redhat.com) (24.112.240.27) by sources.redhat.com with SMTP; 25 Sep 2002 01:27:26 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id E1B7E3D1E; Tue, 24 Sep 2002 21:27:06 -0400 (EDT) Message-ID: <3D9110EA.5060102@redhat.com> Date: Tue, 24 Sep 2002 18:27:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020824 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Kevin Buettner Cc: gdb-patches@sources.redhat.com Subject: Re: [rfa/ppc] Use frame_align(); delete hack References: <3D90F04C.9040900@redhat.com> <1020924233033.ZM9198@localhost.localdomain> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-09/txt/msg00599.txt.bz2 > On Sep 24, 7:07pm, Andrew Cagney wrote: > > >> In the process it delets that global variable >> struct return hack. Struct returns involving dummy functions are >> instead handled by the dummy frame code. > > > Where/how does this happen? In hand_function_call(), near the end: > /* NOTE: cagney/2002-09-10: Only when the stack has been correctly > aligned (using frame_align()) do we can trust STRUCT_ADDR and > fetch the return value direct from the stack. This lack of > trust comes about because legacy targets have a nasty habit of > silently, and local to PUSH_ARGUMENTS(), moving STRUCT_ADDR. > For such targets, just hope that value_being_returned() can > find the adjusted value. */ > if (struct_return && gdbarch_frame_align_p (current_gdbarch)) > { > struct value *retval = value_at (value_type, struct_addr, NULL); > do_cleanups (retbuf_cleanup); > return retval; > } > else > { > struct value *retval = value_being_returned (value_type, retbuf, > struct_return); > do_cleanups (retbuf_cleanup); > return retval; > } > } Andrew