// arm-reloc-property.h -- ARM relocation properties -*- C++ -*-
-// Copyright 2010 Free Software Foundation, Inc.
+// Copyright (C) 2010-2019 Free Software Foundation, Inc.
// Written by Doug Kwan <dougkwan@google.com>.
// This file is part of gold.
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
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
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
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&);
// 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: