From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30587 invoked by alias); 4 Nov 2017 23:31:22 -0000 Mailing-List: contact elfutils-devel-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: elfutils-devel-owner@sourceware.org Received: (qmail 30576 invoked by uid 89); 4 Nov 2017 23:31:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Checked: by ClamAV 0.99.2 on sourceware.org X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=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=Hx-languages-length:2238 X-Spam-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY autolearn=ham version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on sourceware.org X-Spam-Level: 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; Sat, 04 Nov 2017 23:31:20 +0000 Received: from tarox.wildebeest.org (tarox.wildebeest.org [172.31.17.39]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 262C531D5BE2; Sun, 5 Nov 2017 00:31:16 +0100 (CET) Received: by tarox.wildebeest.org (Postfix, from userid 1000) id 94013413CE1E; Sun, 5 Nov 2017 00:31:16 +0100 (CET) From: Mark Wielaard To: elfutils-devel@sourceware.org Cc: Mark Wielaard Subject: [PATCH 1/3] readelf: Handle DW_OP_GNU_variable_value. Date: Sat, 04 Nov 2017 23:31:00 -0000 Message-Id: <1509838266-10337-1-git-send-email-mark@klomp.org> X-Mailer: git-send-email 1.8.3.1 X-Spam-Flag: NO X-IsSubscribed: yes X-SW-Source: 2017-q4/txt/msg00033.txt.bz2 Also format both DW_OP_call_ref and DW_OP_GNU_variable_value argument as a normal DIE reference. Signed-off-by: Mark Wielaard --- libdw/ChangeLog | 4 ++++ libdw/dwarf.h | 1 + src/ChangeLog | 5 +++++ src/readelf.c | 5 +++-- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libdw/ChangeLog b/libdw/ChangeLog index e6e7f3b..7085649 100644 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@ -1,3 +1,7 @@ +2017-11-03 Mark Wielaard + + * dwarf.h: Add DW_OP_GNU_variable_value. + 2017-10-03 Mark Wielaard * libdw.h: Define LIBDW_CIE_ID and use it in dwarf_cfi_cie_p. diff --git a/libdw/dwarf.h b/libdw/dwarf.h index 902d261..8edf719 100644 --- a/libdw/dwarf.h +++ b/libdw/dwarf.h @@ -545,6 +545,7 @@ enum DW_OP_GNU_convert = 0xf7, DW_OP_GNU_reinterpret = 0xf9, DW_OP_GNU_parameter_ref = 0xfa, + DW_OP_GNU_variable_value = 0xfd, DW_OP_lo_user = 0xe0, /* Implementation-defined range start. */ DW_OP_hi_user = 0xff /* Implementation-defined range end. */ diff --git a/src/ChangeLog b/src/ChangeLog index 0d3bfc1..3b886a7 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2017-11-03 Mark Wielaard + + * readelf.c (print_ops): Handle DW_OP_GNU_variable_value. Print + referenced DIE as offset. + 2017-09-10 Mark Wielaard * ar.c (do_oper_delete): Remove DEBUG conditional check. diff --git a/src/readelf.c b/src/readelf.c index 5e2f3fc..833884b 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -4160,6 +4160,7 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest, break; case DW_OP_call_ref: + case DW_OP_GNU_variable_value: /* Offset operand. */ if (ref_size != 4 && ref_size != 8) goto invalid; /* Cannot be used in CFA. */ @@ -4170,8 +4171,8 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest, addr = read_8ubyte_unaligned (dbg, data); data += ref_size; CONSUME (ref_size); - - printf ("%*s[%4" PRIuMAX "] %s %#" PRIxMAX "\n", + /* addr is a DIE offset, so format it as one. */ + printf ("%*s[%4" PRIuMAX "] %s [%6" PRIxMAX "]\n", indent, "", (uintmax_t) offset, op_name, (uintmax_t) addr); offset += 1 + ref_size; -- 1.8.3.1