From patchwork Tue Mar 29 19:57:56 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Filippov X-Patchwork-Id: 11554 Received: (qmail 66064 invoked by alias); 29 Mar 2016 19:58:34 -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 66038 invoked by uid 89); 29 Mar 2016 19:58:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, FROM_LOCAL_NOVOWEL, HK_RANDOM_ENVFROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1495 X-HELO: mail-lf0-f47.google.com Received: from mail-lf0-f47.google.com (HELO mail-lf0-f47.google.com) (209.85.215.47) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 29 Mar 2016 19:58:31 +0000 Received: by mail-lf0-f47.google.com with SMTP id k79so20564040lfb.2 for ; Tue, 29 Mar 2016 12:58:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=zxzsp3Ww4riNQvaDvCE9gdJzpGyAX5lo++6p3mFamKY=; b=PqBW+kOdd5f+vV/QeyOYbQLmreyqvBLTi786YuUovm7p8bvTrf6WG1saEWJ4M3XBgg bM7DZknCr++IR8RRWH81C+y2cV1wLpoieYxMwiqOeRN2TbSm1G0EINnh6XdPdvepNYLB sbrgZrBeAmzeq+zUFdgLfufxkDIiRBvxszrCn3oppV6GoeubUt0RQVAnGBZmi445Q3DE 2kNd1TTeZFGQRTJD+qnqj3yOAJN0kCllWzBbwryKpgH4hbAMtUMLMXdH6NilgMsZ7W4q RjMHyTkFPryVKrZY1xneb9JoJou6dMzA9QBvxoJAi78LWKhW8PXRSi8IG6XwcSh9QxeC r3jQ== X-Gm-Message-State: AD7BkJLkNkpUUQHz1vsrKJBTm3WEncMmZjtuVldjn2dZ+F79YPj13YskMuQEw5KaqZxzLQ== X-Received: by 10.25.87.137 with SMTP id l131mr1715266lfb.65.1459281508368; Tue, 29 Mar 2016 12:58:28 -0700 (PDT) Received: from octofox.metropolis ([5.19.183.212]) by smtp.gmail.com with ESMTPSA id s193sm50435lfe.29.2016.03.29.12.58.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 29 Mar 2016 12:58:27 -0700 (PDT) From: Max Filippov To: gdb-patches@sourceware.org Cc: Maxim Grigoriev , Woody LaRue , Marc Gauthier , Max Filippov Subject: [PATCH v3] gdb: xtensa: fix frame initialization when PC is invalid Date: Tue, 29 Mar 2016 22:57:56 +0300 Message-Id: <1459281476-28077-1-git-send-email-jcmvbkbc@gmail.com> When gdb is used on core dump and PC is not pointing to a readable memory read_memory_integer call in the xtensa_frame_cache throws an error, making register inspection/backtracing impossible in that thread. Use safe_read_memory_integer instead. 2016-03-29 Max Filippov gdb/ * xtensa-tdep.c (xtensa_frame_cache): Change op1 type to LONGEST. Use safe_read_memory_integer instead of read_memory_integer. --- Changes v2->v3: - change op1 type to LONGEST. Changes v1->v2: - use safe_read_memory_integer instead of TRY/CATCH block. gdb/xtensa-tdep.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c index 9e87fa5..3a3bada 100644 --- a/gdb/xtensa-tdep.c +++ b/gdb/xtensa-tdep.c @@ -1285,7 +1285,7 @@ xtensa_frame_cache (struct frame_info *this_frame, void **this_cache) if (windowed) { - char op1; + LONGEST op1; /* Get WINDOWBASE, WINDOWSTART, and PS registers. */ wb = get_frame_register_unsigned (this_frame, @@ -1293,8 +1293,8 @@ xtensa_frame_cache (struct frame_info *this_frame, void **this_cache) ws = get_frame_register_unsigned (this_frame, gdbarch_tdep (gdbarch)->ws_regnum); - op1 = read_memory_integer (pc, 1, byte_order); - if (XTENSA_IS_ENTRY (gdbarch, op1)) + if (safe_read_memory_integer (pc, 1, byte_order, &op1) + && XTENSA_IS_ENTRY (gdbarch, op1)) { int callinc = CALLINC (ps); ra = get_frame_register_unsigned