aboutsummaryrefslogtreecommitdiff
path: root/gold/merge.h
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2007-09-22 05:38:12 +0000
committerIan Lance Taylor <iant@google.com>2007-09-22 05:38:12 +0000
commit42e3fe0dd99a68834e4af42f8f1a97c76aa5f098 (patch)
tree8df83e7d66f62cbba62734daaa637109691c7f3b /gold/merge.h
parente214a02b9ba50f8d10bfefb54e7e7d51037dc950 (diff)
downloadfsf-binutils-gdb-42e3fe0dd99a68834e4af42f8f1a97c76aa5f098.zip
fsf-binutils-gdb-42e3fe0dd99a68834e4af42f8f1a97c76aa5f098.tar.gz
fsf-binutils-gdb-42e3fe0dd99a68834e4af42f8f1a97c76aa5f098.tar.bz2
We don't need a hash table mapping input locations to strings.
Diffstat (limited to 'gold/merge.h')
-rw-r--r--gold/merge.h32
1 files changed, 12 insertions, 20 deletions
diff --git a/gold/merge.h b/gold/merge.h
index 591ac91..65600e8 100644
--- a/gold/merge.h
+++ b/gold/merge.h
@@ -169,7 +169,7 @@ class Output_merge_string : public Output_merge_base
{
public:
Output_merge_string()
- : Output_merge_base(sizeof(Char_type)), stringpool_(), hashtable_()
+ : Output_merge_base(sizeof(Char_type)), stringpool_(), merged_strings_()
{ this->stringpool_.set_no_zero_null(); }
// Add an input section.
@@ -187,38 +187,30 @@ class Output_merge_string : public Output_merge_base
private:
// As we see input sections, we build a mapping from object, section
// index and offset to strings.
- struct Merge_string_key
+ struct Merged_string
{
+ // The input object where the string was found.
Relobj* object;
+ // The input section in the input object.
unsigned int shndx;
+ // The offset in the input section.
off_t offset;
+ // The string itself, a pointer into a Stringpool.
+ const Char_type* string;
- Merge_string_key(Relobj *objecta, unsigned int shndxa, off_t offseta)
- : object(objecta), shndx(shndxa), offset(offseta)
+ Merged_string(Relobj *objecta, unsigned int shndxa, off_t offseta,
+ const Char_type* stringa)
+ : object(objecta), shndx(shndxa), offset(offseta), string(stringa)
{ }
};
- struct Merge_string_key_hash
- {
- size_t
- operator()(const Merge_string_key&) const;
- };
-
- struct Merge_string_key_eq
- {
- bool
- operator()(const Merge_string_key&, const Merge_string_key&) const;
- };
-
- typedef Unordered_map<Merge_string_key, const Char_type*,
- Merge_string_key_hash, Merge_string_key_eq>
- Merge_string_hashtable;
+ typedef std::vector<Merged_string> Merged_strings;
// As we see the strings, we add them to a Stringpool.
Stringpool_template<Char_type> stringpool_;
// Map from a location in an input object to an entry in the
// Stringpool.
- Merge_string_hashtable hashtable_;
+ Merged_strings merged_strings_;
};
} // End namespace gold.