From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21193 invoked by alias); 18 Jul 2019 11:14:40 -0000 Mailing-List: contact dwz-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Post: List-Help: List-Subscribe: Sender: dwz-owner@sourceware.org Received: (qmail 19036 invoked by uid 48); 18 Jul 2019 11:14:36 -0000 From: "vries at gcc dot gnu.org" To: dwz@sourceware.org Subject: [Bug default/24823] [dwz] Bad DW_OP_GNU_variable_value DIE Date: Tue, 01 Jan 2019 00:00:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: dwz X-Bugzilla-Component: default X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: vries at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: nobody at sourceware dot org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://sourceware.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2019-q3/txt/msg00080.txt.bz2 https://sourceware.org/bugzilla/show_bug.cgi?id=3D24823 Tom de Vries changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at redhat dot com, | |mark at klomp dot org --- Comment #1 from Tom de Vries --- Given that the DW_OP_GNU_variable_value is similar to DW_FORM_ref_addr, and does normally not point into other files ( the exception being some old ada compiler, see http://eagercon.com/dwarf/issues/010322-2.htm ), there's no w= ay to reach the multifile from the original file. So the fix is to forbid DW_OP_GNU_variable_value-referenced DIEs to move to= the multifile: ... diff --git a/dwz.c b/dwz.c index e5de164..577ea2c 100644 --- a/dwz.c +++ b/dwz.c @@ -1596,6 +1596,7 @@ read_exprloc (DSO *dso, dw_die_ref die, unsigned char *ptr, size_t len, dso->filename, get_DW_OP_str (op)); return 1; } + ref->die_no_multifile =3D 1; if (unlikely (low_mem)) { ref->die_referenced =3D 1; ... [ AFAIU, the DIEs could move together to the multifile, but I don't know of= any current mechanism to enforce two DIEs to be either both moved to the multif= ile, or both not moved to the multifile. ] --=20 You are receiving this mail because: You are on the CC list for the bug.