daily update
[deliverable/binutils-gdb.git] / gold / target.h
index 8d0dd17f2069ee823f3391f695a53448f97f421f..79111ce188228652b9eea70af25a79b80e08621b 100644 (file)
@@ -1,6 +1,6 @@
 // target.h -- target support for gold   -*- C++ -*-
 
-// Copyright 2006, 2007 Free Software Foundation, Inc.
+// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -132,6 +132,15 @@ class Target
   is_default_stack_executable() const
   { return this->pti_->is_default_stack_executable; }
 
+  // Return a character which may appear as a prefix for a wrap
+  // symbol.  If this character appears, we strip it when checking for
+  // wrapping and add it back when forming the final symbol name.
+  // This should be '\0' if not special prefix is required, which is
+  // the normal case.
+  char
+  wrap_char() const
+  { return this->pti_->wrap_char; }
+
   // This is called to tell the target to complete any sections it is
   // handling.  After this all sections must have their final size.
   void
@@ -155,7 +164,7 @@ class Target
   // Return whether SYM is known to be defined by the ABI.  This is
   // used to avoid inappropriate warnings about undefined symbols.
   bool
-  is_defined_by_abi(Symbol* sym) const
+  is_defined_by_abi(const Symbol* sym) const
   { return this->do_is_defined_by_abi(sym); }
 
  protected:
@@ -179,6 +188,8 @@ class Target
     // Whether an object file with no .note.GNU-stack sections implies
     // that the stack should be executable.
     bool is_default_stack_executable;
+    // Prefix character to strip when checking for wrapping.
+    char wrap_char;
     // The default dynamic linker name.
     const char* dynamic_linker;
     // The default text segment address.
@@ -211,7 +222,7 @@ class Target
 
   // Virtual function which may be implemented by the child class.
   virtual bool
-  do_is_defined_by_abi(Symbol*) const
+  do_is_defined_by_abi(const Symbol*) const
   { return false; }
 
  private:
@@ -248,6 +259,24 @@ class Sized_target : public Target
          const char*)
   { gold_unreachable(); }
 
+  // Process the relocs for a section, and record information of the
+  // mapping from source to destination sections. This mapping is later
+  // used to determine unreferenced garbage sections. This procedure is
+  // only called during garbage collection.
+  virtual void
+  gc_process_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) = 0;
+
   // Scan the relocs for a section, and record any information
   // required for the symbol.  OPTIONS is the command line options.
   // SYMTAB is the symbol table.  OBJECT is the object in which the
This page took 0.024639 seconds and 4 git commands to generate.