gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / arm-reloc-property.h
index 2d88211a6aed2fb2d060b7b72bdd4d293cdc9141..e937c6acda30bd7b5d72c00da97e86f6eea9cf57 100644 (file)
@@ -1,6 +1,6 @@
 // arm-reloc-property.h -- ARM relocation properties   -*- C++ -*-
 
-// Copyright 2010 Free Software Foundation, Inc.
+// Copyright (C) 2010-2020 Free Software Foundation, Inc.
 // Written by Doug Kwan <dougkwan@google.com>.
 
 // This file is part of gold.
@@ -25,7 +25,7 @@
 
 namespace gold
 {
-// The Arm_reloc_property class is to store information about a paticular
+// The Arm_reloc_property class is to store information about a particular
 // relocation code.
 
 class Arm_reloc_property
@@ -132,6 +132,11 @@ class Arm_reloc_property
   uses_symbol_base() const
   { return this->uses_symbol_base_; }
 
+  // Whether relocation uses the symbol.
+  bool
+  uses_symbol() const
+  { return this->uses_symbol_; }
+
   // Return the type of relative address base or RAB_NONE if this
   // is not a relative addressing relocation.
   Relative_address_base
@@ -273,10 +278,12 @@ class Arm_reloc_property
   bool uses_symbol_base_ : 1;
   // Whether this uses an addend.
   bool uses_addend_ : 1;
+  // Whether this uses the symbol.
+  bool uses_symbol_ : 1;
 };
 
-// Arm_reloc_property_table.  This table is used for looking up propeties
-// of relocationt types.  The table entries are initialized using information
+// Arm_reloc_property_table.  This table is used for looking up properties
+// of relocation types.  The table entries are initialized using information
 // from arm-reloc.def.
 
 class Arm_reloc_property_table
@@ -293,6 +300,25 @@ class Arm_reloc_property_table
     return this->table_[code];
   }
 
+  // Like get_reloc_property but only return non-NULL if relocation code is
+  // static and implemented.
+  const Arm_reloc_property*
+  get_implemented_static_reloc_property(unsigned int code) const
+  {
+    gold_assert(code < Property_table_size);
+    const Arm_reloc_property* arp = this->table_[code];
+    return ((arp != NULL
+            && (arp->reloc_type() == Arm_reloc_property::RT_STATIC)
+            && arp->is_implemented())
+           ? arp
+           : NULL);
+  }
+  
+  // Return a string describing the relocation code that is not
+  // an implemented static reloc code.
+  std::string
+  reloc_name_in_error_message(unsigned int code);
+
  private:
   // Copying is not allowed.
   Arm_reloc_property_table(const Arm_reloc_property_table&);
@@ -302,7 +328,7 @@ class Arm_reloc_property_table
   // arm-reloc.def into S-expression strings, which are parsed again to
   // build actual expression trees.  We do not build the expression trees
   // directly because the parser for operations in arm-reloc.def is simpler
-  // this way.  Coversion from S-expressions to trees is simple.
+  // this way.  Conversion from S-expressions to trees is simple.
   class Parse_expression
   {
    public:
This page took 0.031019 seconds and 4 git commands to generate.