This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/65248] Copy relocation against protected symbol doesn't work


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248

--- Comment #5 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> ---
Author: hjl
Date: Fri Mar 27 18:11:00 2015
New Revision: 221742

URL: https://gcc.gnu.org/viewcvs?rev=221742&root=gcc&view=rev
Log:
Add default_binds_local_p_2 and use it for x86

Protected data symbol means that it can't be pre-emptied.  It doesn't mean
its address won't be external.  This is true for pointer to protected
function.  With copy relocation, address of protected data defined in the
shared library may also be external.  We only know that for sure at
run-time.  TARGET_BINDS_LOCAL_P should return false on protected data
symbol.

gcc/

    PR target/65248
    * output.h (default_binds_local_p_2): New.
    * varasm.c (default_binds_local_p_2): Renamed to ...
    (default_binds_local_p_3): This.  Don't return true on protected
    data symbol if protected data may be external.
    (default_binds_local_p): Use default_binds_local_p_3.
    (default_binds_local_p_1): Likewise.
    (default_binds_local_p_2): New.
    * config/i386/i386.c (TARGET_BINDS_LOCAL_P): Set to
    default_binds_local_p_2 if TARGET_MACHO is undefined.

gcc/testsuite/

    PR target/65248
    * gcc.target/i386/pr65248-1.c: New file.
    * gcc.target/i386/pr65248-2.c: Likewise.
    * gcc.target/i386/pr65248-3.c: Likewise.
    * gcc.target/i386/pr65248-4.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/i386/pr65248-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr65248-2.c
    trunk/gcc/testsuite/gcc.target/i386/pr65248-3.c
    trunk/gcc/testsuite/gcc.target/i386/pr65248-4.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/output.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/varasm.c


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]