Use N_ for option help strings, and call gettext when printing them.
[deliverable/binutils-gdb.git] / gold / target.h
index e385c555d815f40703bc9bc4669a4079d6472441..8d0dd17f2069ee823f3391f695a53448f97f421f 100644 (file)
@@ -34,6 +34,8 @@
 #define GOLD_TARGET_H
 
 #include "elfcpp.h"
+#include "options.h"
+#include "parameters.h"
 
 namespace gold
 {
@@ -42,6 +44,7 @@ class General_options;
 class Object;
 template<int size, bool big_endian>
 class Sized_relobj;
+class Relocatable_relocs;
 template<int size, bool big_endian>
 class Relocate_info;
 class Symbol;
@@ -102,12 +105,24 @@ class Target
   // Return the ABI specified page size.
   uint64_t
   abi_pagesize() const
-  { return this->pti_->abi_pagesize; }
+  {
+    if (parameters->options().max_page_size() > 0)
+      return parameters->options().max_page_size();
+    else
+      return this->pti_->abi_pagesize;
+  }
 
   // Return the common page size used on actual systems.
   uint64_t
   common_pagesize() const
-  { return this->pti_->common_pagesize; }
+  {
+    if (parameters->options().common_page_size() > 0)
+      return std::min(parameters->options().common_page_size(),
+                     this->abi_pagesize());
+    else
+      return std::min(this->pti_->common_pagesize,
+                     this->abi_pagesize());
+  }
 
   // If we see some object files with .note.GNU-stack sections, and
   // some objects files without them, this returns whether we should
@@ -134,7 +149,7 @@ class Target
   // basically one or more NOPS which must fill out the specified
   // length in bytes.
   std::string
-  code_fill(off_t length)
+  code_fill(section_size_type length) const
   { return this->do_code_fill(length); }
 
   // Return whether SYM is known to be defined by the ABI.  This is
@@ -191,7 +206,7 @@ class Target
   // Virtual function which must be implemented by the child class if
   // needed.
   virtual std::string
-  do_code_fill(off_t)
+  do_code_fill(section_size_type) const
   { gold_unreachable(); }
 
   // Virtual function which may be implemented by the child class.
@@ -279,7 +294,43 @@ class Sized_target : public Target
                   bool needs_special_offset_handling,
                   unsigned char* view,
                   typename elfcpp::Elf_types<size>::Elf_Addr view_address,
-                  off_t view_size) = 0;
+                  section_size_type view_size) = 0;
+
+  // Scan the relocs during a relocatable link.  The parameters are
+  // like scan_relocs, with an additional Relocatable_relocs
+  // parameter, used to record the disposition of the relocs.
+  virtual void
+  scan_relocatable_relocs(const General_options& options,
+                         Symbol_table* symtab,
+                         Layout* layout,
+                         Sized_relobj<size, big_endian>* object,
+                         unsigned int data_shndx,
+                         unsigned int sh_type,
+                         const unsigned char* prelocs,
+                         size_t reloc_count,
+                         Output_section* output_section,
+                         bool needs_special_offset_handling,
+                         size_t local_symbol_count,
+                         const unsigned char* plocal_symbols,
+                         Relocatable_relocs*) = 0;
+
+  // Relocate a section during a relocatable link.  The parameters are
+  // like relocate_section, with additional parameters for the view of
+  // the output reloc section.
+  virtual void
+  relocate_for_relocatable(const Relocate_info<size, big_endian>*,
+                          unsigned int sh_type,
+                          const unsigned char* prelocs,
+                          size_t reloc_count,
+                          Output_section* output_section,
+                          off_t offset_in_output_section,
+                          const Relocatable_relocs*,
+                          unsigned char* view,
+                          typename elfcpp::Elf_types<size>::Elf_Addr
+                            view_address,
+                          section_size_type view_size,
+                          unsigned char* reloc_view,
+                          section_size_type reloc_view_size) = 0;
 
  protected:
   Sized_target(const Target::Target_info* pti)
This page took 0.024115 seconds and 4 git commands to generate.