bug-binutils
[Top][All Lists]
Advanced

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

[Bug ld/21997] GNU_PROPERTY_NO_COPY_ON_PROTECTED is ignored by linker


From: cvs-commit at gcc dot gnu.org
Subject: [Bug ld/21997] GNU_PROPERTY_NO_COPY_ON_PROTECTED is ignored by linker
Date: Sun, 27 Aug 2017 02:27:18 +0000

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

--- Comment #1 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=a5b4ee9451dc9ffb6aa29376fc03943c53c6da0d

commit a5b4ee9451dc9ffb6aa29376fc03943c53c6da0d
Author: H.J. Lu <address@hidden>
Date:   Sat Aug 26 19:22:26 2017 -0700

    Disallow copy relocation against protected data symbol

    We shpouldn't generate copy relocation to resolve reference to protected
    data symbol defined in shared object with the NO_COPY_ON_PROTECTED
    property.  This patch adds a bit to elf_obj_tdata as well as
    elf_i386_link_hash_entry and elf_x86_64_link_hash_entry to track the bfd
    with the NO_COPY_ON_PROTECTED property as well as protected symbol
    defined in shared object.  extern_protected_data is set to FALSE if any
    input relocatable file contains the NO_COPY_ON_PROTECTED property.

    bfd/

        PR ld/21997
        * elf-bfd.h (elf_obj_tdata): Use ENUM_BITFIELD on object_id,
        dyn_lib_class and has_gnu_symbols.  Change bad_symtab to bitfield.
        Add a has_no_copy_on_protected bitfield.
        (elf_has_no_copy_on_protected): New.
        * elf-properties.c (_bfd_elf_parse_gnu_properties): Set
        elf_has_no_copy_on_protected for GNU_PROPERTY_NO_COPY_ON_PROTECTED.
        (elf_merge_gnu_property_list): Likewise.
        (_bfd_elf_link_setup_gnu_properties): Set extern_protected_data
        to FALSE for elf_has_no_copy_on_protected.
        * elf32-i386.c (SYMBOL_NO_COPYRELOC): New.
        (elf_i386_link_hash_entry): Add def_protected.
        (elf_i386_adjust_dynamic_symbol): Also check SYMBOL_NO_COPYRELOC
        when checking info->nocopyreloc.
        (elf_i386_link_setup_gnu_properties): Don't set
        extern_protected_data here.
        (elf_i386_merge_symbol_attribute): New function.
        (elf_backend_merge_symbol_attribute): New.
        * elf64-x86-64.c (SYMBOL_NO_COPYRELOC): New.
        (elf_x86_64_link_hash_entry): Add def_protected.
        (elf_x86_64_need_pic): Report protected symbol for def_protected.
        (elf_x86_64_adjust_dynamic_symbol): Also check SYMBOL_NO_COPYRELOC
        when checking info->nocopyreloc.
        (elf_x86_64_relocate_section): Also check for R_X86_64_PC32
        relocation run-time overflow and unresolvable R_X86_64_32S
        relocation against protected data symbol defined in shared object
        with GNU_PROPERTY_NO_COPY_ON_PROTECTED.
        (elf_x86_64_link_setup_gnu_properties): Don't set
        extern_protected_data here.
        (elf_x86_64_merge_symbol_attribute): New function.
        (elf_backend_merge_symbol_attribute): New.

    ld/

        PR ld/21997
        * testsuite/ld-i386/i386.exp: Run PR ld/21997 tests.
        * testsuite/ld-x86-64/x86-64.exp: Likewise.
        * testsuite/ld-i386/pr21997-1a.S: New file.
        * testsuite/ld-i386/pr21997-1b.c: Likewise.
        * testsuite/ld-i386/pr21997-1c.S: Likewise.
        * testsuite/ld-x86-64/pr21997-1a.S: Likewise.
        * testsuite/ld-x86-64/pr21997-1a.err: Likewise.
        * testsuite/ld-x86-64/pr21997-1b.c: Likewise.
        * testsuite/ld-x86-64/pr21997-1b.err: Likewise.
        * testsuite/ld-x86-64/pr21997-1c.c: 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]