X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Fcopy-relocs.h;h=f596d637619e54be4262df99570c5f862d4b58d1;hb=750ea5ed38abbda8a6f25e276bff3dfc8e4ce0ee;hp=800c0e7eddfe586643fa515deba94bf15c7d2f9f;hpb=91f43acd5d692518f95a901e92dec7dbb6347564;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/copy-relocs.h b/gold/copy-relocs.h index 800c0e7edd..f596d63761 100644 --- a/gold/copy-relocs.h +++ b/gold/copy-relocs.h @@ -1,6 +1,6 @@ // copy-relocs.h -- handle COPY relocations for gold -*- C++ -*- -// Copyright (C) 2006-2014 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -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 @@ -65,10 +66,15 @@ class Copy_relocs // will wind up. REL is the reloc itself. The Output_data_reloc // section is where the dynamic relocs are put. void - copy_reloc(Symbol_table*, Layout*, Sized_symbol* sym, + copy_reloc(Symbol_table*, + Layout*, + Sized_symbol* sym, Sized_relobj_file* object, - unsigned int shndx, Output_section* output_section, - const Reloc& rel, + unsigned int shndx, + Output_section* output_section, + unsigned int r_type, + typename elfcpp::Elf_types::Elf_Addr r_offset, + typename elfcpp::Elf_types::Elf_Swxword r_addend, Output_data_reloc*); // Return whether there are any saved relocations. @@ -118,6 +124,7 @@ class Copy_relocs // Make a new COPY reloc and emit it. void make_copy_reloc(Symbol_table*, Layout*, Sized_symbol*, + Sized_relobj_file* object, Output_data_reloc*); // A list of relocs to be saved. @@ -135,14 +142,23 @@ class Copy_relocs // Save a reloc against SYM for possible emission later. void - save(Symbol*, Sized_relobj_file*, unsigned int shndx, - Output_section*, const Reloc& rel); + save(Symbol*, + Sized_relobj_file*, + unsigned int shndx, + Output_section*, + unsigned int r_type, + typename elfcpp::Elf_types::Elf_Addr r_offset, + typename elfcpp::Elf_types::Elf_Swxword r_addend); // 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 .data.rel.ro section. + // This is where read-only variables which require COPY relocations are + // placed. + Output_data_space* dynrelro_; }; } // End namespace gold.