aboutsummaryrefslogtreecommitdiff
path: root/gold/copy-relocs.h
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@gmail.com>2016-12-27 20:50:47 -0800
committerCary Coutant <ccoutant@gmail.com>2016-12-27 20:50:56 -0800
commitb733bcb7f58c42e0e0d94a3f266a4193030e5f3a (patch)
tree3ad325d2805aecf4a3e943d47c33f88ca6a24bf6 /gold/copy-relocs.h
parent7ff34266fd831f828286e556f9cd681c42c0412c (diff)
downloadgdb-b733bcb7f58c42e0e0d94a3f266a4193030e5f3a.zip
gdb-b733bcb7f58c42e0e0d94a3f266a4193030e5f3a.tar.gz
gdb-b733bcb7f58c42e0e0d94a3f266a4193030e5f3a.tar.bz2
Place copy relocations in .dynbss when target is read-only.
gold/ PR ld/20995 * copy-relocs.cc (Copy_relocs::make_copy_reloc): Use .dynbss for read-only data when linking with -z relro. * copy-relocs.h (Copy_relocs::dynrelro_): New data member. * testsuite/Makefile.am (copy_test_relro): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/copy_test_relro.cc: New source file. * testsuite/copy_test_relro_1.cc: New source file.
Diffstat (limited to 'gold/copy-relocs.h')
-rw-r--r--gold/copy-relocs.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/gold/copy-relocs.h b/gold/copy-relocs.h
index aa42c7c..92b2ceb 100644
--- a/gold/copy-relocs.h
+++ b/gold/copy-relocs.h
@@ -54,7 +54,8 @@ class Copy_relocs
public:
Copy_relocs(unsigned int copy_reloc_type)
- : entries_(), copy_reloc_type_(copy_reloc_type), dynbss_(NULL)
+ : entries_(), copy_reloc_type_(copy_reloc_type), dynbss_(NULL),
+ dynrelro_(NULL)
{ }
// This is called while scanning relocs if we see a relocation
@@ -152,8 +153,11 @@ class Copy_relocs
// The target specific relocation type of the COPY relocation.
const unsigned int copy_reloc_type_;
// The dynamic BSS data which goes into the .bss section. This is
- // where variables which require COPY relocations are placed.
+ // where writable variables which require COPY relocations are placed.
Output_data_space* dynbss_;
+ // The dynamic read-only data, which goes into the .dynbss section. This
+ // is where read-only variables which require COPY relocations are placed.
+ Output_data_space* dynrelro_;
};
} // End namespace gold.