From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (wildebeest.demon.nl [212.238.236.112]) by sourceware.org (Postfix) with ESMTPS id 4AEA7396ECB0 for ; Thu, 24 Sep 2020 16:26:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4AEA7396ECB0 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=none smtp.mailfrom=mark@tarox.wildebeest.org 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 2358A3000F11; Thu, 24 Sep 2020 18:26:15 +0200 (CEST) Received: by tarox.wildebeest.org (Postfix, from userid 1000) id 1D913470867C; Thu, 24 Sep 2020 18:26:15 +0200 (CEST) From: Mark Wielaard To: dwz@sourceware.org Cc: Mark Wielaard Subject: [PATCH 2/4] Handle DW_FORM_data16. Date: Thu, 24 Sep 2020 18:25:55 +0200 Message-Id: <20200924162557.15870-3-mark@klomp.org> X-Mailer: git-send-email 2.18.4 In-Reply-To: <20200924162557.15870-1-mark@klomp.org> References: <20200924162557.15870-1-mark@klomp.org> X-Spam-Status: No, score=-22.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KHOP_HELO_FCRDNS, SPF_HELO_NONE, SPF_NONE, TXREP, UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: dwz@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dwz mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Sep 2020 16:26:17 -0000 This is a simple form to handle, it just encodes 16 bytes of DIE data. * dwz.c (read_abbrev): Accept DW_FORM_data16. (skip_attr_no_dw_form_indirect): Handle DW_FORM_data16. (checksum_die): Likewise. (checksum_ref_die): Likewise. (die_eq_1): Likewise. (mark_refs): Likewise. (read_debug_info): Likewise. (build_abbrevs_for_die): Likewise. (DW_FORM_ref_sig8): Likewise. --- dwz.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/dwz.c b/dwz.c index 8291333..9719ee6 100644 --- a/dwz.c +++ b/dwz.c @@ -1260,7 +1260,8 @@ read_abbrev (DSO *dso, unsigned char *ptr) nattr++; form = read_uleb128 (p); if (form == 2 - || (form > DW_FORM_flag_present && form != DW_FORM_ref_sig8)) + || (form > DW_FORM_flag_present && (form != DW_FORM_ref_sig8 + || form != DW_FORM_data16))) { error (0, 0, "%s: Unknown DWARF %s", dso->filename, get_DW_FORM_str (form)); @@ -1709,6 +1710,9 @@ skip_attr_no_dw_form_indirect (unsigned int cu_version, uint32_t form, case DW_FORM_ref_sig8: ptr += 8; break; + case DW_FORM_data16: + ptr += 16; + break; case DW_FORM_sdata: case DW_FORM_ref_udata: case DW_FORM_udata: @@ -2975,6 +2979,9 @@ checksum_die (DSO *dso, dw_cu_ref cu, dw_die_ref top_die, dw_die_ref die) die->die_no_multifile = 1; ptr += 8; break; + case DW_FORM_data16: + ptr += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: skip_leb128 (ptr); @@ -3394,6 +3401,9 @@ checksum_ref_die (dw_cu_ref cu, dw_die_ref top_die, dw_die_ref die, case DW_FORM_ref_sig8: ptr += 8; break; + case DW_FORM_data16: + ptr += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: skip_leb128 (ptr); @@ -4214,6 +4224,10 @@ die_eq_1 (dw_cu_ref cu1, dw_cu_ref cu2, ptr1 += 8; ptr2 += 8; break; + case DW_FORM_data16: + ptr1 += 16; + ptr2 += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: skip_leb128 (ptr1); @@ -5295,6 +5309,9 @@ mark_refs (dw_cu_ref cu, dw_die_ref top_die, dw_die_ref die, int mode) case DW_FORM_ref_sig8: ptr += 8; break; + case DW_FORM_data16: + ptr += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: skip_leb128 (ptr); @@ -6270,6 +6287,9 @@ read_debug_info (DSO *dso, int kind, unsigned int *die_count) case DW_FORM_ref_sig8: ptr += 8; break; + case DW_FORM_data16: + ptr += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: if (lang_p @@ -9941,6 +9961,9 @@ build_abbrevs_for_die (htab_t h, dw_cu_ref cu, dw_die_ref die, case DW_FORM_ref_sig8: ptr += 8; break; + case DW_FORM_data16: + ptr += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: skip_leb128 (ptr); @@ -11481,6 +11504,9 @@ write_die (unsigned char *ptr, dw_cu_ref cu, dw_die_ref die, case DW_FORM_ref_sig8: inptr += 8; break; + case DW_FORM_data16: + inptr += 16; + break; case DW_FORM_sdata: case DW_FORM_udata: skip_leb128 (inptr); -- 2.18.4