From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21929 invoked by alias); 26 Nov 2013 13:48:27 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 21919 invoked by uid 89); 26 Nov 2013 13:48:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.5 required=5.0 tests=AWL,BAYES_50,RDNS_NONE,URIBL_BLOCKED autolearn=no version=3.3.2 X-HELO: glazunov.sibelius.xs4all.nl Received: from Unknown (HELO glazunov.sibelius.xs4all.nl) (83.163.83.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Tue, 26 Nov 2013 13:48:25 +0000 Received: from glazunov.sibelius.xs4all.nl (kettenis@localhost [127.0.0.1]) by glazunov.sibelius.xs4all.nl (8.14.5/8.14.3) with ESMTP id rAQDmCU0024851; Tue, 26 Nov 2013 14:48:12 +0100 (CET) Received: (from kettenis@localhost) by glazunov.sibelius.xs4all.nl (8.14.5/8.14.3/Submit) id rAQDmBs1032481; Tue, 26 Nov 2013 14:48:11 +0100 (CET) Date: Tue, 26 Nov 2013 14:30:00 -0000 Message-Id: <201311261348.rAQDmBs1032481@glazunov.sibelius.xs4all.nl> From: Mark Kettenis To: brobecker@adacore.com CC: tromey@redhat.com, gdb-patches@sourceware.org In-reply-to: <20131126133446.GA28596@adacore.com> (message from Joel Brobecker on Tue, 26 Nov 2013 17:34:46 +0400) Subject: Re: [PATCH 2/2] handle an unspecified return address column References: <1384375873-32160-1-git-send-email-tromey@redhat.com> <1384375873-32160-3-git-send-email-tromey@redhat.com> <20131126133446.GA28596@adacore.com> X-SW-Source: 2013-11/txt/msg00810.txt.bz2 > Date: Tue, 26 Nov 2013 17:34:46 +0400 > From: Joel Brobecker > > Hi Tom, > > On Wed, Nov 13, 2013 at 01:51:13PM -0700, Tom Tromey wrote: > > Debugging PR 16155 further, I found that the DWARF unwinder found the > > function in question, but thought it had no registers saved > > (fs->regs.num_regs == 0). > > > > It seems to me that if a frame does not specify the return address > > column, or if the return address column is explicitly marked as > > DWARF2_FRAME_REG_UNSPECIFIED, then we should set the > > "undefined_retaddr" flag and let the DWARF unwinder gracefully stop. > > > > This patch implements that idea. > > > > With this patch the backtrace works properly: > > > > (gdb) bt > > #0 0x0000007fb7ed485c in nanosleep () from /lib64/libc.so.6 > > #1 0x0000007fb7ed4508 in sleep () from /lib64/libc.so.6 > > #2 0x00000000004008bc in thread_function (arg=0x4) at threadapply.c:73 > > #3 0x0000007fb7fad950 in start_thread () from /lib64/libpthread.so.0 > > #4 0x0000007fb7f0956c in clone () from /lib64/libc.so.6 > > > > 2013-11-13 Tom Tromey > > > > PR backtrace/16155: > > * dwarf2-frame.c (dwarf2_frame_cache): Set undefined_retaddr if > > the return address column is unspecified. > > I just found out that this patch causes some problems on at least > arm-elf and ppc-elf. Attached is a proposed patch, with associated > analysis. > > gdb/ChangeLog: > > PR backtrace/16155: > * dwarf2-frame.c (dwarf2_frame_cache): Remove condition that > sets cache->undefined_retaddr to 1 if there is no column in > the frame info for the return register. > > Tested on x86_64-linux, no regression. It also fixes all regressions > observed on arm-elf and ppc-elf. > > Can you tell me what you think? Please start with backing out the original change.