bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/17973] Useless FILE entries in symbol table


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/17973] Useless FILE entries in symbol table
Date: Sat, 14 Feb 2015 13:16:53 +0000

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

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

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

commit ce875075f9c8acc57bb0ec516ae3ba50064e52b7
Author: Alan Modra <address@hidden>
Date:   Sat Feb 14 18:38:32 2015 +1030

    PR ld/17973 LTO file syms

    LTO output objects have an STT_FILE symbol using the name of the file,
    a temporary file.  This results in executables that can't be exactly
    reproduced, so the file name needs to be dropped.  We don't want to
    lose all file symbols when linking a mix of lto and non-lto objects as
    a file symbol can be used to figure which source file generated a
    given local symbol.  So lto output objects need to be marked.

    I chose to mark lto output objects with a new bfd flag.  This flag is
    also used to fix a bug in the link-once handling;  An object being
    loaded after "loading_lto_outputs" is set might be one extracted from
    an archive to satisfy new references from lto objects, not an lto
    object itself.

    The new flag is copied from archive to elements, and the same done
    for no_export.  This fixes a bug in that --exclude-libs doesn't work
    with thin archives.  I'm not completely happy with this part of the
    patch and may revist this to avoid the hack in
    _bfd_look_for_bfd_in_cache.

        PR ld/17973
    include/
        * bfdlink.h (struct bfd_link_info): Delete loading_lto_outputs.
    bfd/
        * bfd.c (struct bfd): Add lto_output.
        * linker.c (_bfd_handle_already_linked): Explicitly test for
        objects added by the lto plugin.
        * opncls.c (_bfd_new_bfd_contained_in): Copy lto_output and
        no_export flags from archive.
        * archive.c (open_nested_file): New function, setting lto_output
        and no_export, extracted from..
        (find_nested_archive): ..here.  Flip params.  Rename from
        _bfd_find_nested_archive.
        (_bfd_get_elt_at_filepos): Correct var typo.  Use open_nested_file.
        (_bfd_look_for_bfd_in_cache): Copy no_export.
        * elflink.c (elf_link_add_object_symbols): Remove now unnecessary
        my_archive->no_export test.
        (elf_link_input_bfd): Drop existing lto_output STT_FILE syms.
        Don't use the file name when adding lto_output STT_FILE sym.
        * bfd-in2.h: Regenerate.
    ld/
        * ldlang.h (struct lang_input_statement_flags): Add lto_output.
        * ldlang.c (lang_process): Don't set loading_lto_outputs.
        * ldfile.c (ldfile_try_open_bfd): Transfer entry flags.lto_output
        to bfd.
        * plugin.c (add_input_file, add_input_library): Set flags.lto_output.

-- 
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]