gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / script-sections.h
index 1a0b760793b2d41df0a0313e62844fc01530787f..edf36ff95f245f133db1e1bf1abedfbcfcd74013 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-2020 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,15 @@ 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.
+  // MATCH_INPUT_SPEC indicates whether the section should be matched
+  // with input section specs or simply against the output section name
+  // (i.e., for linker-created sections like .dynamic).
   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, bool match_input_spec);
 
   // Place a marker for an orphan output section into the SECTIONS
   // clause.
@@ -234,10 +237,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, 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);
@@ -269,7 +282,7 @@ class Script_sections
   size_t
   total_header_size(Layout* layout) const;
 
-  // Return the amount we have to subtract from the LMA to accomodate
+  // Return the amount we have to subtract from the LMA to accommodate
   // headers of the given size.
   uint64_t
   header_size_adjustment(uint64_t lma, size_t sizeof_headers) const;
@@ -309,6 +322,8 @@ class Script_sections
   bool saw_relro_end_;
   // Whether we have seen SEGMENT_START.
   bool saw_segment_start_expression_;
+  // Whether we have created all necessary segments.
+  bool segments_created_;
 };
 
 // Attributes for memory regions.
This page took 0.024836 seconds and 4 git commands to generate.