From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id 71C083858402 for ; Mon, 12 Feb 2024 17:31:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 71C083858402 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 71C083858402 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=45.83.234.184 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707759086; cv=none; b=djQRDvWcMVoLb9GM2u5o+BZnmXot1BNoKgeUad2vut6mrRgW7GJdeuSde7v4BblHa66+Y+YRz9ghO/twCTDnkJfPidevc/x6yF3X6JKdczQhI0cNYocJ1wkBUMzJva8PYXN5ciJNVE840RaVJ6T8M0oatBlNCPY3id6RUPc3MZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707759086; c=relaxed/simple; bh=RqCBhZGqagmzAkgnRjz0pj0FhRe+99cLi3wm0eSe7Ps=; h=Message-ID:Subject:From:To:Date:MIME-Version; b=d3J/lZwfagwfC9SOGXbWZ2bAEdyDYu/Vl2wBiD/e+POmKxkLkxAi97pQMW+BHgO/ACaxSIGw2ouPaQnIkhRkse4uPH7BA1ew+wwA6thzrFE0WGedfiMa7JjgOAUm+LYbkSIMdG5z3u4pLnMtPk5+XhgCqBJBtJNYqa3di2AKEGQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from r6.localdomain (82-217-174-174.cable.dynamic.v4.ziggo.nl [82.217.174.174]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id BEF1D30003AE; Mon, 12 Feb 2024 18:31:21 +0100 (CET) Received: by r6.localdomain (Postfix, from userid 1000) id 7453C3402F3; Mon, 12 Feb 2024 18:31:21 +0100 (CET) Message-ID: <2477fe1aff09a44653a2fbd8100a724cf8a9819d.camel@klomp.org> Subject: Re: [PATCH] Handle DW_AT_decl_file 0 From: Mark Wielaard To: Aaron Merey , elfutils-devel@sourceware.org Date: Mon, 12 Feb 2024 18:31:21 +0100 In-Reply-To: <20240210025216.272034-1-amerey@redhat.com> References: <20240210025216.272034-1-amerey@redhat.com> Autocrypt: addr=mark@klomp.org; prefer-encrypt=mutual; keydata=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 QifSU1tvZxQ== Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.3 (3.50.3-1.fc39) MIME-Version: 1.0 X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,GIT_PATCH_0,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,KAM_NUMSUBJECT,RCVD_IN_BARRACUDACENTRAL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi Aaron, On Fri, 2024-02-09 at 21:52 -0500, Aaron Merey wrote: > Modify dwarf_decl_file to support DW_AT_decl_file with value 0. >=20 > Because of inconsistencies in the DWARF 5 spec, it is ambiguous whether > DW_AT_decl_file value 0 is a valid .debug_line file table index for the > main source file or if it means that there is no source file specified. >=20 > dwarf_decl_file interprets DW_AT_decl_file 0 as meaning no source file > is specified. This works with DWARF 5 produced by gcc, which duplicates > the main source file name at index 0 and 1 of the file table and avoids > using DW_AT_decl_file 0. >=20 > However clang uses DW_AT_decl_file 0 for the main source index with no > duplication at another index. In this case dwarf_decl_file will be > unable to find the file name of the main file. >=20 > This patch changes dwarf_decl_file to treat DW_AT_decl_file 0 as a normal > index into the file table, allowing it to work with DWARF 5 debuginfo > produced by clang. This analysis makes sense. > As for earlier DWARF versions which exclusively use DW_AT_decl_file 0 > to indicate that no source file is specified, dwarf_decl_file will now > return the name "???" if called on a DIE with DW_AT_decl_file 0. And before it would have returned NULL. I think this change is OK too. It is unlikely a producer would actually use DW_AT_decl_file zero before DWARF5 to indicate no file is associated with the DIE. It is far easier/efficient to just not add the attribute in that case. > https://sourceware.org/bugzilla/show_bug.cgi?id=3D31111 >=20 > Signed-off-by: Aaron Merey > --- > libdw/dwarf_decl_file.c | 25 ++++++++++--------------- > tests/Makefile.am | 3 ++- > tests/run-allfcts.sh | 17 +++++++++++++++++ > tests/testfile-dwarf5-line-clang.bz2 | Bin 0 -> 2764 bytes > 4 files changed, 29 insertions(+), 16 deletions(-) > create mode 100755 tests/testfile-dwarf5-line-clang.bz2 >=20 > diff --git a/libdw/dwarf_decl_file.c b/libdw/dwarf_decl_file.c > index 75662a33..07b69f8d 100644 > --- a/libdw/dwarf_decl_file.c > +++ b/libdw/dwarf_decl_file.c > @@ -31,7 +31,6 @@ > # include > #endif > =20 > -#include > #include > #include "libdwP.h" > =20 > @@ -48,13 +47,6 @@ dwarf_decl_file (Dwarf_Die *die) > &idx) !=3D 0) > return NULL; > =20 > - /* Zero means no source file information available. */ > - if (idx =3D=3D 0) > - { > - __libdw_seterrno (DWARF_E_NO_ENTRY); > - return NULL; > - } > - OK, this seems to be main change. > /* Get the array of source files for the CU. */ > struct Dwarf_CU *cu =3D attr_mem.cu; > if (cu->lines =3D=3D NULL) > @@ -63,20 +55,23 @@ dwarf_decl_file (Dwarf_Die *die) > size_t nlines; > =20 > /* Let the more generic function do the work. It'll create more > - data but that will be needed in an real program anyway. */ > + data but that will be needed in a real program anyway. */ > (void) INTUSE(dwarf_getsrclines) (&CUDIE (cu), &lines, &nlines); > - assert (cu->lines !=3D NULL); > } I see why would like to get rid of asserts in the code base. But I believe the assert is valid. dwarf_getsrclines will check whether cu->lines is NULL, in which case it tries to load the line table. It then sets cu->lines to the newly parsed line table, or to -1 to indicate there was an error parsing (or no) line table. > =20 > - if (cu->lines =3D=3D (void *) -1l) > + if (cu->lines =3D=3D NULL || cu->lines =3D=3D (void *) -1l) > { > - /* If the file index is not zero, there must be file information > - available. */ > - __libdw_seterrno (DWARF_E_INVALID_DWARF); > + /* Line table could not be found. */ > return NULL; > } Which means this is a change in behavior. Now if there was no line table, or a problem parsing it, then no error is set, but NULL is returned anyway. Which means using dwarf_errno or dwarf_errmsg after dwarf_decl_file returns NULL doesn't work reliably anymore. Are you sure libdw errno shouldn't be set to DWARF_E_INVALID_DWARF? > - assert (cu->files !=3D NULL && cu->files !=3D (void *) -1l); > + if (cu->files =3D=3D NULL || cu->files =3D=3D (void *) -1l) > + { > + /* If the line table was found then then the file table should > + have also been found. */ > + __libdw_seterrno (DWARF_E_UNKNOWN_ERROR); > + return NULL; > + } >=20 I think if you are going to replace the assert here, then it should (also) be DWARF_E_INVALID_DWARF. It means a decl_file was given, but there is no file table. Which IMHO is invalid. Just like in the case below: > =20 > if (idx >=3D cu->files->nfiles) > { Here we also set DWARF_E_INVALID_DWARF because the decl_file number is larger than the number of files in the file table. > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 13bd9d56..b075e3c3 100644 > --- a/tests/Makefile.am > +++ b/tests/Makefile.am > @@ -634,7 +634,8 @@ EXTRA_DIST =3D run-arextract.sh run-arsymtest.sh run-= ar.sh \ > testfile-largealign.o.bz2 run-strip-largealign.sh \ > run-funcretval++11.sh \ > test-ar-duplicates.a.bz2 \ > - run-dwfl-core-noncontig.sh testcore-noncontig.bz2 > + run-dwfl-core-noncontig.sh testcore-noncontig.bz2 \ > + testfile-dwarf5-line-clang.bz2 > =20 > =20 > if USE_VALGRIND OK. > diff --git a/tests/run-allfcts.sh b/tests/run-allfcts.sh > index 9c0a55d8..1d4766fe 100755 > --- a/tests/run-allfcts.sh > +++ b/tests/run-allfcts.sh > @@ -170,4 +170,21 @@ testrun_compare ${abs_builddir}/allfcts testfile-lto= -gcc9 <<\EOF > /home/mark/src/tests/testfile-lto-main.c:6:main > EOF > =20 > +# =3D dwarf5-line.c =3D > +# int > +# main (int argc, char ** argv) > +# { > +# return 0; > +# } > + > +# Using clang version 17.0.4 (Fedora 17.0.4-1.fc39) > +# clang -gdwarf-5 -O0 -o testfile-dwarf5-line-clang dwarf5-line.c Does it need to be -O0? Not that I really object. Just hoping to get a slightly smaller binary/testfile with -O1 or -O2. > +testfiles testfile-dwarf5-line-clang > + > +# Check that dwarf_decl_file can handle .debug_line file table index 0 > +testrun_compare ${abs_builddir}/allfcts testfile-dwarf5-line-clang <<\EO= F > +/home/amerey/test/dwarf5-line.c:2:main > +EOF OK. > exit 0 > diff --git a/tests/testfile-dwarf5-line-clang.bz2 b/tests/testfile-dwarf5= -line-clang.bz2 > new file mode 100755 > index 0000000000000000000000000000000000000000..ab62b707bd7371268d6e685a2= f86a1a3a868b0a9 > GIT binary patch > literal 2764 > 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 > S{udf|{x0N-aG@d2C4?HBH1tyd >=20 > literal 0 > HcmV?d00001 >=20