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 1A42C3858416 for ; Wed, 17 Apr 2024 14:49:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1A42C3858416 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 1A42C3858416 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=1713365400; cv=none; b=pTsVQd/KRV7MTzI56R4x6uiZPW4Tx/CfN8yco+g4Zf2p9P/rK+XOfvMIlnDVbgan4q0Ho2dwHfYHfbcrOEAqWswLe8IDaC750e0ll4/5G65lGO62LXFbLiVrmKvZeeD2CB2W5munzMVFQIEbb5vfjnbkgoSzHJoim8usKPZy7WU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713365400; c=relaxed/simple; bh=pTvBM+k5YUByESyb2YjNa+1wx09ywoxbxoKgIl1Zy0c=; h=Message-ID:Subject:From:To:Date:MIME-Version; b=t4ZxBJckgpxEliKzwcz740yotLYRko3CFOvbO8E6v8hwoXbPe9ZtLYRn3YPKXlx1I3HpnKMwQ8czgprYJ12IZoVH0BkzdHGAa2e8beM5ztbPqIJ3VYm3KgS7jYIzF/MrYi3dsNlUS6iAkNQVtU8ALkr1+Ux6kvlbvW4Xjog/EWQ= 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 AAFA53000587; Wed, 17 Apr 2024 16:49:56 +0200 (CEST) Received: by r6.localdomain (Postfix, from userid 1000) id E6E013404EF; Wed, 17 Apr 2024 16:49:55 +0200 (CEST) Message-ID: Subject: Re: [PATCH] Optimize do_read_32_relocated using binary search From: Mark Wielaard To: Nikita Popov , debugedit@sourceware.org Date: Wed, 17 Apr 2024 16:49:55 +0200 In-Reply-To: References: 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.4 (3.50.4-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,RCVD_IN_BARRACUDACENTRAL,SPF_HELO_NONE,SPF_PASS,TXREP 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 Nikita, On Wed, 2024-04-17 at 15:34 +0900, Nikita Popov wrote: > debugedit is currently very slow when processing DWARF 5 debuginfo > produced by clang. For some kernel modules, debugedit processing > takes hours. >=20 > The root cause of the issue is the loop for finding the correct > REL entry in do_read_32_relocated. This is currently a simple > linear scan. For large objects, it may loop for hundreds of > thousands of iterations. >=20 > As the relocations are sorted, we can use a binary search instead, > which is what this patch implements. The time to run debugedit on > a large kernel module (nouveau.ko) drops down to 3 seconds with > this change. Very nice. I missed that in the original commit that added support for strx. Commit 3e7aeeab4f744ad15108775685db68d3a35b0735 does explain a bit, but I didn't realize that this change made things do a linear search over and over again... The tricky part is the ET_REL (object files or kernel modules) support. Relocation reading is "global" per section and we expect to read a relocation only once. But we need to read the DW_AT_str_offsets_base before reading any strx form attributes. So we read that first, then reset the relptr. And when we read from the .debug_str_offsets section we need to save and restore the .debug_info relptr. > Signed-off-by: Nikita Popov > --- > =C2=A0tools/debugedit.c | 19 +++++++++++++++++-- > =C2=A01 file changed, 17 insertions(+), 2 deletions(-) >=20 > diff --git a/tools/debugedit.c b/tools/debugedit.c > index f16eecd..d678673 100644 > --- a/tools/debugedit.c > +++ b/tools/debugedit.c > @@ -335,12 +335,27 @@ strptr (DSO *dso, size_t sec, size_t offset) > =C2=A0REL *relptr, *relend; > =C2=A0int reltype; > =C2=A0 > +static inline REL *find_rel_for_ptr(unsigned char *xptr) > +{ > + =C2=A0size_t l =3D 0, r =3D relend - relptr; > + =C2=A0while (l < r) > + =C2=A0{ > + =C2=A0 =C2=A0size_t m =3D (l + r) / 2; > + =C2=A0 =C2=A0if (relptr[m].ptr < xptr) > + =C2=A0 =C2=A0 =C2=A0l =3D m + 1; > + =C2=A0 =C2=A0else if (relptr[m].ptr > xptr) > + =C2=A0 =C2=A0 =C2=A0r =3D m; > + =C2=A0 =C2=A0else > + =C2=A0 =C2=A0 =C2=A0return &relptr[m]; > + =C2=A0} > + =C2=A0return relend; > +} > + > =C2=A0#define do_read_32_relocated(xptr) ({ \ > =C2=A0 =C2=A0uint32_t dret =3D do_read_32 (xptr); \ > =C2=A0 =C2=A0if (relptr) \ > =C2=A0 =C2=A0 =C2=A0{ \ > - =C2=A0 =C2=A0 =C2=A0while (relptr < relend && relptr->ptr < (xptr)) \ > - ++relptr; \ > + =C2=A0 =C2=A0 =C2=A0relptr =3D find_rel_for_ptr((xptr)); \ > =C2=A0 =C2=A0 =C2=A0 =C2=A0if (relptr < relend && relptr->ptr =3D=3D (xpt= r)) \ > =C2=A0 { \ > =C2=A0 =C2=A0if (reltype =3D=3D SHT_REL) \ I think this might make the code slightly slower for the case where there are no .debug_str_offsets since all other sections are parsed linearly. But that might not really be such a problem. Since this is only for the .ko cases. But I now see a few errors in the testsuite (before and after your patch, so it is a pre-existing failure) when configuring with CC=3Dclang CXX=3Dclang++ for clang18, but also for clang17 with CC=3D"clang -gdwarf-5" CXX=3D"clang++ -gdwarf-5". 1: debugedit help ok 2: debugedit usage ok 3: debugedit executable ok 4: debugedit .debug_str objects DWARF4 ok 5: debugedit .debug_str/line_str objects DWARF5 ok 6: debugedit .debug_str partial DWARF4 ok 7: debugedit .debug_str/line_str partial DWARF5 ok 8: debugedit .debug_str exe DWARF4 ok 9: debugedit .debug_str/line_str exe DWARF5 ok 10: debugedit .debug_info objects FAILED (debugedit.at:307) 11: debugedit .debug_info partial FAILED (debugedit.at:330) 12: debugedit .debug_info exe ok 13: debugedit .debug_types objects skipped (debugedit.at:367) 14: debugedit .debug_types partial skipped (debugedit.at:405) 15: debugedit .debug_types exe skipped (debugedit.at:435) 16: debugedit .debug_line objects DWARF4 ok 17: debugedit .debug_line objects DWARF5 ok 18: debugedit .debug_line partial DWARF4 ok 19: debugedit .debug_line partial DWARF5 ok 20: debugedit .debug_line exe DWARF4 ok 21: debugedit .debug_line exe DWARF5 ok 22: debugedit .debug_macro objects FAILED (debugedit.at:619) 23: debugedit .debug_macro partial FAILED (debugedit.at:644) 24: debugedit .debug_macro exe FAILED (debugedit.at:667) 25: debugedit --list-file DWARF4 ok 26: debugedit --list-file DWARF5 ok --- expout 2024-04-17 16:45:58.790260019 +0200 +++ /home/mark/src/debugedit/tests/testsuite.dir/at-groups/10/stdout =20 2024-04- 17 16:45:58.814260130 +0200 @@ -1,3 +1,2 @@ /foo/bar/baz -/foo/bar/baz/baz.c /foo/bar/baz/subdir_bar 10. debugedit.at:294: 10. debugedit .debug_info objects (debugedit.at:294): FAILED (debugedit.at:307) # -*- compilation -*- 11. debugedit.at:319: testing debugedit .debug_info partial ... ./debugedit.at:329: debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.part.o ./debugedit.at:330: $READELF --debug-dump=3Dinfo ./foobarbaz.part.o \ | grep -E 'DW_AT_(name|comp_dir)' \ | rev | cut -d: -f1 | rev | cut -c2- | grep ^/foo/bar/baz | sort -u --- /dev/null 2024-04-15 17:25:16.496344492 +0200 +++ /home/mark/src/debugedit/tests/testsuite.dir/at-groups/11/stderr =20 2024-04-17 16:45:58.997260972 +0200 @@ -0,0 +1 @@ +readelf: ./foobarbaz.part.o: Warning: indirect offset too big: 0x1a9 11. debugedit.at:319: 11. debugedit .debug_info partial (debugedit.at:319): FAILED (debugedit.at:330) # -*- compilation -*- 22. debugedit.at:608: testing debugedit .debug_macro objects ... ./debugedit.at:619: debugedit -b $(pwd) -d /foo/bar/baz ./foo.o --- /dev/null 2024-04-15 17:25:16.496344492 +0200 +++ /home/mark/src/debugedit/tests/testsuite.dir/at-groups/22/stderr =20 2024-04-17 16:46:00.516267966 +0200 @@ -0,0 +1 @@ +debugedit: Unhandled DW_MACRO op 0xb ./debugedit.at:619: exit code was 1, expected 0 22. debugedit.at:608: 22. debugedit .debug_macro objects (debugedit.at:608): FAILED (debugedit.at:619) # -*- compilation -*- 23. debugedit.at:633: testing debugedit .debug_macro partial ... ./debugedit.at:644: debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.part.o --- /dev/null 2024-04-15 17:25:16.496344492 +0200 +++ /home/mark/src/debugedit/tests/testsuite.dir/at-groups/23/stderr =20 2024-04-17 16:46:00.631268496 +0200 @@ -0,0 +1 @@ +debugedit: Unhandled DW_MACRO op 0xb ./debugedit.at:644: exit code was 1, expected 0 23. debugedit.at:633: 23. debugedit .debug_macro partial (debugedit.at:633): FAILED (debugedit.at:644) # -*- compilation -*- 24. debugedit.at:656: testing debugedit .debug_macro exe ... ./debugedit.at:667: debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.exe --- /dev/null 2024-04-15 17:25:16.496344492 +0200 +++ /home/mark/src/debugedit/tests/testsuite.dir/at-groups/24/stderr =20 2024-04-17 16:46:00.746269025 +0200 @@ -0,0 +1 @@ +debugedit: Unhandled DW_MACRO op 0xb ./debugedit.at:667: exit code was 1, expected 0 24. debugedit.at:656: 24. debugedit .debug_macro exe (debugedit.at:656): FAILED (debugedit.at:667) I'll look into that and try to add CI to explicitly test against clang. Thanks, Mark