bug-binutils
[Top][All Lists]
Advanced

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

[Bug gas/25380] Support section linkage 'unique' (multiple sections with


From: cvs-commit at gcc dot gnu.org
Subject: [Bug gas/25380] Support section linkage 'unique' (multiple sections with the same name)
Date: Mon, 03 Feb 2020 01:09:08 +0000

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

--- Comment #7 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by H.J. Lu <address@hidden>:

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

commit a8c4d40b578378be3b12575d127d4c7bd9972f32
Author: H.J. Lu <address@hidden>
Date:   Sun Feb 2 17:07:51 2020 -0800

    ELF: Add support for unique section ID to assembler

    Clang's integrated assembler supports multiple section with the same
    name:

        .section .text,"ax",@progbits,unique,1
        nop
        .section .text,"ax",@progbits,unique,2
        nop

    "unique,N" assigns the number, N, as the section ID, to a section.  The
    valid values of the section ID are between 0 and 4294967295.  It can be
    used to distinguish different sections with the same section name.

    This is useful with -fno-unique-section-names -ffunction-sections.
    -ffunction-sections by default generates .text.foo, .text.bar, etc.
    Using the same string can save lots of space in .strtab.

    This patch adds section_id to bfd_section and reuses the linker
    internal bit in BFD section flags, SEC_LINKER_CREATED, for assmebler
    internal use to mark valid section_id.  It also updates objdump to
    compare section pointers if 2 sections comes from the same file since
    2 different sections can have the same section name.

    bfd/

        PR gas/25380
        * bfd-in2.h: Regenerated.
        * ecoff.c (bfd_debug_section): Add section_id.
        * section.c (bfd_section): Add section_id.
        (SEC_ASSEMBLER_SECTION_ID): New.
        (BFD_FAKE_SECTION): Add section_id.

    binutils/

        PR gas/25380
        * objdump.c (sym_ok): Return FALSE if 2 sections are in the
        same file with different section pointers.

    gas/

        PR gas/25380
        * config/obj-elf.c (section_match): Removed.
        (get_section): Also match SEC_ASSEMBLER_SECTION_ID and
        section_id.
        (obj_elf_change_section): Replace info and group_name arguments
        with match_p.  Also update the section ID and flags from match_p.
        (obj_elf_section): Handle "unique,N".  Update call to
        obj_elf_change_section.
        * config/obj-elf.h (elf_section_match): New.
        (obj_elf_change_section): Updated.
        * config/tc-arm.c (start_unwind_section): Update call to
        obj_elf_change_section.
        * config/tc-ia64.c (obj_elf_vms_common): Likewise.
        * config/tc-microblaze.c (microblaze_s_data): Likewise.
        (microblaze_s_sdata): Likewise.
        (microblaze_s_rdata): Likewise.
        (microblaze_s_bss): Likewise.
        * config/tc-mips.c (s_change_section): Likewise.
        * config/tc-msp430.c (msp430_profiler): Likewise.
        * config/tc-rx.c (parse_rx_section): Likewise.
        * config/tc-tic6x.c (tic6x_start_unwind_section): Likewise.
        * doc/as.texi: Document "unique,N" in .section directive.
        * testsuite/gas/elf/elf.exp: Run "unique,N" tests.
        * testsuite/gas/elf/section15.d: New file.
        * testsuite/gas/elf/section15.s: Likewise.
        * testsuite/gas/elf/section16.s: Likewise.
        * testsuite/gas/elf/section16a.d: Likewise.
        * testsuite/gas/elf/section16b.d: Likewise.
        * testsuite/gas/elf/section17.d: Likewise.
        * testsuite/gas/elf/section17.l: Likewise.
        * testsuite/gas/elf/section17.s: Likewise.
        * testsuite/gas/i386/unique.d: Likewise.
        * testsuite/gas/i386/unique.s: Likewise.
        * testsuite/gas/i386/x86-64-unique.d: Likewise.
        * testsuite/gas/i386/i386.exp: Run unique and x86-64-unique.

    ld/

        PR gas/25380
        * testsuite/ld-i386/pr22001-1c.S: Use "unique,N" in .section
        directives.
        * testsuite/ld-i386/tls-gd1.S: Likewise.
        * testsuite/ld-x86-64/pr21481b.S: 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]