bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/25333] GAS is slow processing units compiled with -fdebug-types


From: cvs-commit at gcc dot gnu.org
Subject: [Bug gas/25333] GAS is slow processing units compiled with -fdebug-types-sections containing many types
Date: Sat, 24 Feb 2024 04:29:48 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=25333

--- Comment #4 from Sourceware Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Alan Modra <amodra@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=086c8f406d82ce171d5867eed93f1308e07252c5

commit 086c8f406d82ce171d5867eed93f1308e07252c5
Author: Alan Modra <amodra@gmail.com>
Date:   Sat Feb 24 11:38:57 2024 +1030

    PR25333, GAS is slow processing -fdebug-types-sections

    gas needs to build lists of sections for each group.  This arranges to
    build the lists earlier, so they can be used when looking for sections
    that belong to a group.  Using the section hash table to find sections
    by name, then by group isn't efficient when there are numerous groups
    with the same section names.  Using a hash table to quickly find a
    group, then searching by section name on a list for the group results
    in a 100-fold speed improvement assembling the testcase in this PR.

    To reduce the number of times we traverse the section list, the patch
    also moves some processing done in elf_adjust_symtab for linked-to
    section, to elf_frob_file.  This requires a testsuite change because
    processing will stop before elf_frob_file if there is a parse error in
    section21.s, ie. you'll only get the "junk at end of line" error, not
    the "undefined linked-to symbol" errors.

            PR 25333
            * config/obj-elf.c (struct group_list, groups): Move earlier.
            (match_section): New function, extracted from..
            (get_section_by_match): ..here.
            (free_section_idx): Move earlier.
            (group_section_find, group_section_insert): New functions.
            (change_section): Use the above.
            (elf_set_group_name): New function.
            (obj_elf_attach_to_group): Use elf_set_group_name.
            (set_additional_section_info): Handle linked_to_symbol_name and
            stabs code, extracted from..
            (adjust_stab_sections): ..here,..
            (build_additional_section_info): ..and here.
            (elf_adjust_symtab): Don't call build_additional_section_info.
            (elf_frob_file): Adjust.
            * config/obj-elf.h (elf_set_group_name): Declare.
            * config/tc-xtensa.c (cache_literal_section): Use
elf_set_group_name.
            (xtensa_make_property_section): Likewise.
            * testsuite/gas/elf/attach-1.d: Stricter group section matching,
            and changed group section ordering.
            * testsuite/gas/elf/attach-2.d: Stricter group section matching.
            * testsuite/gas/elf/attach-2.s: Provide section bar type.
            * testsuite/gas/elf/elf.exp: Run attach-2.
            * testsuite/gas/elf/section21.l: Update.
            * testsuite/gas/elf/section21.s: Don't check for a parse error.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]