From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 94039 invoked by alias); 22 Apr 2016 14:36:08 -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 94030 invoked by uid 89); 22 Apr 2016 14:36:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=seh 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; Fri, 22 Apr 2016 14:35:57 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9D78085543; Fri, 22 Apr 2016 14:35:56 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u3MEZt9E002250; Fri, 22 Apr 2016 10:35:56 -0400 Subject: Re: [PATCH 1/2] Use -fno-asynchronous-unwind-tables if C program is compiled without debug info on x86 To: Yao Qi References: <1461052220-10149-1-git-send-email-yao.qi@linaro.org> <1461052220-10149-2-git-send-email-yao.qi@linaro.org> <57163425.1070505@redhat.com> <86wpnsiskw.fsf@gmail.com> <571A197A.5030201@redhat.com> <86y485hgdx.fsf@gmail.com> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: <571A36CB.8060001@redhat.com> Date: Fri, 22 Apr 2016 14:36:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: <86y485hgdx.fsf@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-04/txt/msg00527.txt.bz2 On 04/22/2016 03:23 PM, Yao Qi wrote: > I want to focus on handling unavailable memory in frame unwinder, so I > cannot do all of them above. What I can do are: > > 1. Name some unwinders, such as dwarf unwinders, prologue unwinders, > sigtramp unwinders, stub unwinders, etc. Other unwinders are nameless. > 2. Add a new maint command "maint set/show preferred-unwinder". This > command tell GDB to prefer a unwinder during frame unwinding. If the > unwinder can't be applied to the frame (sniffer fails), it is not chosen. Instead of a name, maybe a frame-unwinder-class enum, based on https://sourceware.org/bugzilla/show_bug.cgi?id=19288#c13 ~~~~~~~~~~~~~~~ - The "Accurate unwinders" These would be the DWARF / x64 SEH based ones. - JIT unwinders Python/Guile unwind API unwinders, and also the C JIT-reader API unwinder, in jit.c. - Fallback prologue unwinders ~~~~~~~~~~~~~~~ Then it could be "required" instead of "preferred", which would catch problems with the unwinder's sniffer as well. > 3. Prefer different unwinders (dwarf vs. prologue) in the different > runs of gdb.trace tests, like > > foreach_with_prefix unwinder { "dwarf" "prologue" } { > gdb_test "maint set preferred-unwinder $unwinder" > gdb_test "tfind start" > ..... > gdb_test "tfind stop" > } > > so that the PR 19947 can be reproduced. I'll stop here. > > What I don't plan to do in the short term are: > > - Write a case, let GDB single-step through its body, including > prologue, epilogue and its callees, and check "bt" can show the > frames correctly with different unwinders. > - Single-step through dynamic symbol resolution / plt, prefer "dwarf" > unwinder, and check "bt" can show the frames correctly. > > Is it OK to you? > Yes, that sounds good to me. Thanks, Pedro Alves