diff options
author | Cary Coutant <ccoutant@gmail.com> | 2016-05-19 14:58:18 -0700 |
---|---|---|
committer | Cary Coutant <ccoutant@gmail.com> | 2016-05-19 15:05:03 -0700 |
commit | 6eeb0170bbb43ffb73e8f01b8b481adde8194c21 (patch) | |
tree | d01fc9c0add92397bb2af0b2bb308b2cb3d7ab57 /gold/testsuite/copy_test.cc | |
parent | 15eb1bebe1525ba8baf1f56e9df791cff146a352 (diff) | |
download | gdb-6eeb0170bbb43ffb73e8f01b8b481adde8194c21.zip gdb-6eeb0170bbb43ffb73e8f01b8b481adde8194c21.tar.gz gdb-6eeb0170bbb43ffb73e8f01b8b481adde8194c21.tar.bz2 |
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.
Diffstat (limited to 'gold/testsuite/copy_test.cc')
-rw-r--r-- | gold/testsuite/copy_test.cc | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gold/testsuite/copy_test.cc b/gold/testsuite/copy_test.cc index 3ee8af9..1d843c1 100644 --- a/gold/testsuite/copy_test.cc +++ b/gold/testsuite/copy_test.cc @@ -31,6 +31,9 @@ extern char b; // From copy_test_2.cc. extern long long l; +extern int ip; // protected visibility; may not be copied + +int* ipp = &ip; int main() @@ -39,5 +42,6 @@ main() assert(b == 1); assert(l == 2); assert((reinterpret_cast<uintptr_t>(&l) & 0x7) == 0); + assert(*ipp == 3); return 0; } |