bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/21557] __start_SCN not provided if SCN used in linker script


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/21557] __start_SCN not provided if SCN used in linker script
Date: Fri, 16 Jun 2017 14:09:52 +0000

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

--- Comment #7 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=7dba9362c172f1073487536eb137feb2da30b0ff

commit 7dba9362c172f1073487536eb137feb2da30b0ff
Author: Alan Modra <address@hidden>
Date:   Fri Jun 16 19:41:41 2017 +0930

    Rewrite __start and __stop symbol handling

    This arranges for __start and __stop symbols to be defined before
    garbage collection, for all target formats.  That should allow the
    COFF and PE --gc-sections to keep a singleton orphan input section,
    a feature lost by 2017-06-13 commit cbd0eecf26.  The fancier ELF
    treatment of keeping all input sections associated with a __start or
    __stop symbol, from 2015-10-23 commit 1cce69b9dc, is retained.

    .startof. and .sizeof. symbols are deliberately not defined before
    garbage collection, so these won't affect garbage collection of
    sections.

    The patch also ensures __start, __stop, .startof. and .sizeof. symbols
    are defined before target size_dynamic_sections is called, albeit
    with a preliminary value, so that target code doesn't need to cope
    with a symbol changing from undefined at size_dynamic_sections to
    defined at relocate_section.

    Also, a number of problems with the testcases have been fixed.

        PR ld/20022
        PR ld/21557
        PR ld/21562
        PR ld/21571
    include/
        * bfdlink.h (struct bfd_link_hash_entry): Delete undef.section.
    bfd/
        * targets.c (struct bfd_target): Add _bfd_define_start_stop.
        (BFD_JUMP_TABLE_LINK): Likewise.
        * elf-bfd.h (bfd_elf_define_start_stop): Declare.
        * elflink.c (_bfd_elf_gc_mark_rsec): Update comment.
        (bfd_elf_define_start_stop): New function.
        * linker.c (bfd_generic_define_start_stop): New function.
        * coff64-rs6000.c (rs6000_xcoff64_vec, rs6000_xcoff64_aix_vec): Init
        new field.
        * aout-adobe.c (aout_32_bfd_define_start_stop): Define.
        * aout-target.h (MY_bfd_define_start_stop): Define.
        * aout-tic30.c (MY_bfd_define_start_stop): Define.
        * binary.c (binary_bfd_define_start_stop): Define.
        * bout.c (b_out_bfd_define_start_stop): Define.
        * coff-alpha.c (_bfd_ecoff_bfd_define_start_stop): Define.
        * coff-mips.c (_bfd_ecoff_bfd_define_start_stop): Define.
        * coff-rs6000.c (_bfd_xcoff_bfd_define_start_stop): Define.
        * coffcode.h (coff_bfd_define_start_stop): Define.
        * elfxx-target.h (bfd_elfNN_bfd_define_start_stop): Define.
        * i386msdos.c (msdos_bfd_define_start_stop): Define.
        * i386os9k.c (os9k_bfd_define_start_stop): Define.
        * ieee.c (ieee_bfd_define_start_stop): Define.
        * ihex.c (ihex_bfd_define_start_stop): Define.
        * libbfd-in.h (_bfd_nolink_bfd_define_start_stop): Define.
        * mach-o-target.c (bfd_mach_o_bfd_define_start_stop): Define.
        * mmo.c (mmo_bfd_define_start_stop): Define.
        * nlm-target.h (nlm_bfd_define_start_stop): Define.
        * oasys.c (oasys_bfd_define_start_stop): Define.
        * pef.c (bfd_pef_bfd_define_start_stop): Define.
        * plugin.c (bfd_plugin_bfd_define_start_stop): Define.
        * ppcboot.c (ppcboot_bfd_define_start_stop): Define.
        * som.c (som_bfd_define_start_stop): Define.
        * srec.c (srec_bfd_define_start_stop): Define.
        * tekhex.c (tekhex_bfd_define_start_stop): Define.
        * versados.c (versados_bfd_define_start_stop): Define.
        * vms-alpha.c (vms_bfd_define_start_stop): Define.
        (alpha_vms_bfd_define_start_stop): Define.
        * xsym.c (bfd_sym_bfd_define_start_stop): Define.
        * bfd-in2.h: Regenerate.
        * libbfd.h: Regenerate.
    ld/
        * emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Don't set
        __start/__stop syms here.
        * ldlang.c (lang_set_startof): Delete.
        (start_stop_syms, start_stop_count, start_stop_alloc): New vars.
        (lang_define_start_stop, lang_init_start_stop, foreach_start_stop,
        undef_start_stop, lang_undef_start_stop, lang_init_startof_sizeof,
        set_start_stop, lang_finalize_start_stop): New functions.
        (lang_process): Call _start_stop functions.
        * testsuite/ld-elf/pr21562a.d: Use xfail rather than notarget.
        Correct typos and list of xfail targets.
        * testsuite/ld-elf/pr21562b.d: Likewise.
        * testsuite/ld-elf/pr21562c.d: Likewise.
        * testsuite/ld-elf/pr21562d.d: Likewise.
        * testsuite/ld-elf/pr21562e.d: Likewise.
        * testsuite/ld-elf/pr21562f.d: Likewise.
        * testsuite/ld-elf/pr21562g.d: Likewise.
        * testsuite/ld-elf/pr21562h.d: Likewise.
        * testsuite/ld-elf/pr21562i.d: Likewise.
        * testsuite/ld-elf/pr21562j.d: Likewise.
        * testsuite/ld-elf/pr21562k.d: Likewise.
        * testsuite/ld-elf/pr21562l.d: Likewise.
        * testsuite/ld-elf/pr21562m.d: Likewise.
        * testsuite/ld-elf/pr21562n.d: Likewise.
        * testsuite/ld-elf/sizeofa.d: Likewise.  Adjust to pass for generic
ELF.
        * testsuite/ld-elf/sizeofb.d: Likewise.
        * testsuite/ld-elf/startofa.d: Likewise.
        * testsuite/ld-elf/startofb.d: Likewise.

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