From patchwork Sun Mar 12 22:05:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 737881 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vhFVL5HKDz9s7F for ; Mon, 13 Mar 2017 09:07:37 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="Bf4PFsYq"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; q=dns; s=default; b=K2brptbXcCyV WIiEbjDqISjYEPUDlZgoQ63ykaUBygeprxGL99j8BG44Ks7pps/xcHlmMd9JLPZ/ I0iopoj0DLO/YLVtY4ftRWsZXJ9JryCyk/mh7Pzw6XTV7ia9O5yjskfU3TIFTe5+ 5MBVfFoF/xl3QJDoBJsTfDOWAccg4Wk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id; s=default; bh=4bxoQ/+ApD3dCFsTqU XCL/DKYZQ=; b=Bf4PFsYqEygGb9OmdC/B81CqRVjsonbhdodMkhwh2rk9IFuVZP S7/J5DZKJyVTap7C5NN+xRP7GSk4z0tSmPswRsYY4/rnx20IS0WJKxr0+n8Kunzb tq3sByJf0OZh+lKG1qLdCl0LI5WZ9rJAvjDSGEIy9xfTH+28gvJfvdUa8= Received: (qmail 113399 invoked by alias); 12 Mar 2017 22:07:28 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 113377 invoked by uid 89); 12 Mar 2017 22:07:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY autolearn=ham version=3.3.2 spammy=8696, integrating, H*Ad:U*markus, H*Ad:U*mark X-HELO: gnu.wildebeest.org Received: from wildebeest.demon.nl (HELO gnu.wildebeest.org) (212.238.236.112) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 12 Mar 2017 22:07:25 +0000 Received: from tarox.wildebeest.org (herd.wildebeest.org [80.127.118.209]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 8E9D2306CFE7; Sun, 12 Mar 2017 23:07:23 +0100 (CET) Received: by tarox.wildebeest.org (Postfix, from userid 1000) id EED0A4000705; Sun, 12 Mar 2017 23:07:22 +0100 (CET) From: Mark Wielaard To: gcc-patches@gcc.gnu.org Cc: Nathan Sidwell , Markus Trippelsdorf , Ian Lance Taylor , Pedro Alves , Mark Wielaard Subject: [PATCH] libiberty: Initialize d_printing in all cplus_demangle_* functions. Date: Sun, 12 Mar 2017 23:05:54 +0100 Message-Id: <1489356354-27648-1-git-send-email-mark@klomp.org> While integrating the d_printing recursion guard change into gdb I noticed we forgot to initialize the demangle_component d_printing field in cplus_demangle_fill_{name,extended_operator,ctor,dtor}. As is done in cplus_demangle_fill_{component,builtin_type,operator}. It happened to work because in gcc all demangle_components were allocated through d_make_empty. But gdb has its own allocation mechanism (as might other users). libiberty/ChangeLog: * cp-demangle.c (cplus_demangle_fill_name): Initialize demangle_component d_printing. (cplus_demangle_fill_extended_operator): Likewise. (cplus_demangle_fill_ctor): Likewise. (cplus_demangle_fill_dtor): Likewise. --- libiberty/ChangeLog | 8 ++++++++ libiberty/cp-demangle.c | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index e93e327..b513fce 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,11 @@ +2017-03-12 Mark Wielaard + + * cp-demangle.c (cplus_demangle_fill_name): Initialize + demangle_component d_printing. + (cplus_demangle_fill_extended_operator): Likewise. + (cplus_demangle_fill_ctor): Likewise. + (cplus_demangle_fill_dtor): Likewise. + 2017-03-08 Mark Wielaard PR demangler/70909 diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 341a418..04832ff 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -854,6 +854,7 @@ cplus_demangle_fill_name (struct demangle_component *p, const char *s, int len) { if (p == NULL || s == NULL || len == 0) return 0; + p->d_printing = 0; p->type = DEMANGLE_COMPONENT_NAME; p->u.s_name.s = s; p->u.s_name.len = len; @@ -869,6 +870,7 @@ cplus_demangle_fill_extended_operator (struct demangle_component *p, int args, { if (p == NULL || args < 0 || name == NULL) return 0; + p->d_printing = 0; p->type = DEMANGLE_COMPONENT_EXTENDED_OPERATOR; p->u.s_extended_operator.args = args; p->u.s_extended_operator.name = name; @@ -888,6 +890,7 @@ cplus_demangle_fill_ctor (struct demangle_component *p, || (int) kind < gnu_v3_complete_object_ctor || (int) kind > gnu_v3_object_ctor_group) return 0; + p->d_printing = 0; p->type = DEMANGLE_COMPONENT_CTOR; p->u.s_ctor.kind = kind; p->u.s_ctor.name = name; @@ -907,6 +910,7 @@ cplus_demangle_fill_dtor (struct demangle_component *p, || (int) kind < gnu_v3_deleting_dtor || (int) kind > gnu_v3_object_dtor_group) return 0; + p->d_printing = 0; p->type = DEMANGLE_COMPONENT_DTOR; p->u.s_dtor.kind = kind; p->u.s_dtor.name = name;