From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4135 invoked by alias); 20 Oct 2005 08:36:01 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 4123 invoked by uid 48); 20 Oct 2005 08:35:59 -0000 Date: Thu, 20 Oct 2005 08:36:00 -0000 Message-ID: <20051020083559.4122.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug debug/24444] [4.1 regression] invalid register in debug info In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rth at gcc dot gnu dot org" X-SW-Source: 2005-10/txt/msg02651.txt.bz2 List-Id: ------- Comment #4 from rth at gcc dot gnu dot org 2005-10-20 08:35 ------- Well, the ideal fix is to make use of the dwarf3 DW_OP_call_frame_cfa directive, and let the debugger get the CFA information from the ia64 unwind info. Similarly for the arm eabi unwind info. I'm not sure what a good short-term fix is. Perhaps, as you suggest, putting some code back for TARGET_UNWIND_INFO targets. On the other hand, both ia64 and arm are ACCUMULATE_OUTGOING_ARGS targets, which means that they don't *need* all that tracking info to find the CFA. For any function that gcc generates, the CFA starts as SP+OFFSET1 and changes exactly once to either SP+OFFSET2 or FP+OFFSET3. Which means that we could fairly easily acquire this info (plus a label of the transition point) from a target hook. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24444