[MIPS] When calculating a relocation using an undefined weak symbol don't check for...
[platform/upstream/binutils.git] / gold / script-sections.h
index 1a0b760..daf9f64 100644 (file)
@@ -1,6 +1,6 @@
 // script-sections.h -- linker script SECTIONS for gold   -*- C++ -*-
 
-// Copyright 2008, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2008-2014 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -47,13 +47,11 @@ class Orphan_section_placement;
 
 class Script_sections
 {
- private:
+ public:
   // This is a list, not a vector, because we insert orphan sections
   // in the middle.
   typedef std::list<Sections_element*> Sections_elements;
 
- public:
-
   // Logical script section types.  We map section types returned by the
   // parser into these since some section types have the same semantics.
   enum Section_type
@@ -165,10 +163,12 @@ class Script_sections
   // PSCRIPT_SECTION_TYPE points to a location for returning the section
   // type specified in script.  This can be SCRIPT_SECTION_TYPE_NONE if
   // no type is specified.
+  // *KEEP indicates whether the section should survive garbage collection.
   const char*
   output_section_name(const char* file_name, const char* section_name,
                      Output_section*** output_section_slot,
-                     Section_type* pscript_section_type);
+                     Section_type* pscript_section_type,
+                     bool* keep);
 
   // Place a marker for an orphan output section into the SECTIONS
   // clause.
@@ -234,10 +234,20 @@ class Script_sections
   Expression*
   find_memory_region_length(const char*, size_t);
 
-  // Find a memory region.
+  // Find a memory region by name.
   Memory_region*
   find_memory_region(const char*, size_t);
 
+  // Find a memory region that should be used by a given output section.
+  Memory_region*
+  find_memory_region(Output_section_definition*, bool,
+                    Output_section_definition**);
+
+  // Returns true if the provide block of memory is contained
+  // within a memory region.
+  bool
+  block_in_region(Symbol_table*, Layout*, uint64_t, uint64_t) const;
+    
   // Set the memory region of the section.
   void
   set_memory_region(Memory_region*, bool);