Don't allow COPY relocations for protected symbols.
authorCary Coutant <ccoutant@gmail.com>
Thu, 19 May 2016 21:58:18 +0000 (14:58 -0700)
committerCary Coutant <ccoutant@gmail.com>
Thu, 19 May 2016 22:05:03 +0000 (15:05 -0700)
commit6eeb0170bbb43ffb73e8f01b8b481adde8194c21
treed01fc9c0add92397bb2af0b2bb308b2cb3d7ab57
parent15eb1bebe1525ba8baf1f56e9df791cff146a352
Don't allow COPY relocations for protected symbols.

gold/
PR gold/19823
* copy-relocs.cc (Copy_relocs::make_copy_reloc): Add object
parameter; check for protected symbol.
* copy-relocs.h (Copy_relocs::make_copy_reloc): Add object parameter.
* mips.cc (Mips_copy_relocs): Adjust call to make_copy_reloc.
* symtab.cc (Symbol::init_fields): Initialize is_protected_.
(Symbol_table::add_from_dynobj): Mark protected symbols.
* symtab.h (Symbol::is_protected): New method.
(Symbol::set_is_protected): New method.
(Symbol::is_protected_): New data member.

* testsuite/Makefile.am (copy_test_protected): New test.
* testsuite/Makefile.in: Regenerate.
* testsuite/copy_test.cc (main): Add legal reference to protected
symbol.
* testsuite/copy_test_v1.cc (main): Likewise.
* testsuite/copy_test_2.cc (ip): Add protected symbol.
* testsuite/copy_test_protected.cc: New test source file.
* testsuite/copy_test_protected.sh: New test script.
13 files changed:
gold/ChangeLog
gold/copy-relocs.cc
gold/copy-relocs.h
gold/mips.cc
gold/symtab.cc
gold/symtab.h
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/copy_test.cc
gold/testsuite/copy_test_2.cc
gold/testsuite/copy_test_protected.cc [new file with mode: 0644]
gold/testsuite/copy_test_protected.sh [new file with mode: 0755]
gold/testsuite/copy_test_v1.cc