From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 114645 invoked by alias); 22 Nov 2016 15:49: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 114532 invoked by uid 89); 22 Nov 2016 15:49:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.2 spammy=Hx-languages-length:2759 X-HELO: mail-pg0-f68.google.com Received: from mail-pg0-f68.google.com (HELO mail-pg0-f68.google.com) (74.125.83.68) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 22 Nov 2016 15:48:57 +0000 Received: by mail-pg0-f68.google.com with SMTP id 3so2424641pgd.0 for ; Tue, 22 Nov 2016 07:48:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=RPwOqXBgGQqKzVF/gIOd9u0gORJPAi3/sfR0H6MaW2k=; b=l5tgZ4bIH6cYCKng1btOlsTaUmCMsdhMqi7tKzs6IfV9JuYtidI76ovy7NuFKn/b0Z zGe4DwqhYi4m94cKXlRSXAVGkzOlgsYfFOF8WiC4IiEOBKHJCwWpWYhlEGOzK/jMn5yp znPdUQ+EDmpS4sUhlFQXt8J0SB5yULit3Fl2/Im/Pjcpy9UxNzO984MxEGOEw+/l7ysM H7tJJFTvztODAmT2d9WhgHReT3bfueJBY3QvgbOmwKj4h98LIj1L6BFcNhBGqbtoXuR6 +dk0CG0sEGjy+DvWMPcdeDNzKUUfT4Rx16i5QDGmk8haRj7TDOwYiIKU7HVzCLbElXoF j2Kw== X-Gm-Message-State: AKaTC034BU6Qqc1R8Gs9EWHkk2I4vzlQICt0x40cEah4Didsg9u6ukKV/+RJJnsLy8u6/Q== X-Received: by 10.84.168.4 with SMTP id e4mr934162plb.160.1479829735695; Tue, 22 Nov 2016 07:48:55 -0800 (PST) Received: from E107787-LIN.cambridge.arm.com (gcc1-power7.osuosl.org. [140.211.15.137]) by smtp.gmail.com with ESMTPSA id o68sm46198774pfb.42.2016.11.22.07.48.54 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 22 Nov 2016 07:48:55 -0800 (PST) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 2/3] Set VALUE_VAL before set_value_address Date: Tue, 22 Nov 2016 15:49:00 -0000 Message-Id: <1479829721-22162-3-git-send-email-yao.qi@linaro.org> In-Reply-To: <1479829721-22162-1-git-send-email-yao.qi@linaro.org> References: <1479829721-22162-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00629.txt.bz2 Since we have a check on VALUE_VAL in set_value_address, we need to set VALUE_VAL properly before set_value_address. gdb: 2016-11-21 Yao Qi * ada-lang.c (ensure_lval): Call set_value_address after setting VALUE_LVAL. * elfread.c (elf_gnu_ifunc_resolve_addr): Set VALUE_LVAL to lval_memory. (elf_gnu_ifunc_resolver_return_stop): Likewise. * value.c (value_fn_field): Likewise. (value_from_contents_and_address_unresolved): Likewise. (value_from_contents_and_address): Likewise. --- gdb/ada-lang.c | 2 +- gdb/elfread.c | 2 ++ gdb/value.c | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 0647a9b..33591af 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -4473,8 +4473,8 @@ ensure_lval (struct value *val) const CORE_ADDR addr = value_as_long (value_allocate_space_in_inferior (len)); - set_value_address (val, addr); VALUE_LVAL (val) = lval_memory; + set_value_address (val, addr); write_memory (addr, value_contents (val), len); } diff --git a/gdb/elfread.c b/gdb/elfread.c index e49af6d..c6d0fdb 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -879,6 +879,7 @@ elf_gnu_ifunc_resolve_addr (struct gdbarch *gdbarch, CORE_ADDR pc) name_at_pc = NULL; function = allocate_value (func_func_type); + VALUE_LVAL (function) = lval_memory; set_value_address (function, pc); /* STT_GNU_IFUNC resolver functions usually receive the HWCAP vector as @@ -992,6 +993,7 @@ elf_gnu_ifunc_resolver_return_stop (struct breakpoint *b) gdb_assert (b->loc->next == NULL); func_func = allocate_value (func_func_type); + VALUE_LVAL (func_func) = lval_memory; set_value_address (func_func, b->loc->related_address); value = allocate_value (value_type); diff --git a/gdb/value.c b/gdb/value.c index a8ab5db..a093a9a 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -3280,6 +3280,7 @@ value_fn_field (struct value **arg1p, struct fn_field *f, } v = allocate_value (ftype); + VALUE_LVAL (v) = lval_memory; if (sym) { set_value_address (v, BLOCK_START (SYMBOL_BLOCK_VALUE (sym))); @@ -3666,8 +3667,8 @@ value_from_contents_and_address_unresolved (struct type *type, v = allocate_value_lazy (type); else v = value_from_contents (type, valaddr); - set_value_address (v, address); VALUE_LVAL (v) = lval_memory; + set_value_address (v, address); return v; } @@ -3692,8 +3693,8 @@ value_from_contents_and_address (struct type *type, if (TYPE_DATA_LOCATION (resolved_type_no_typedef) != NULL && TYPE_DATA_LOCATION_KIND (resolved_type_no_typedef) == PROP_CONST) address = TYPE_DATA_LOCATION_ADDR (resolved_type_no_typedef); - set_value_address (v, address); VALUE_LVAL (v) = lval_memory; + set_value_address (v, address); return v; } -- 1.9.1