diff options
author | Ian Lance Taylor <iant@google.com> | 2007-09-22 05:38:12 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2007-09-22 05:38:12 +0000 |
commit | 42e3fe0dd99a68834e4af42f8f1a97c76aa5f098 (patch) | |
tree | 8df83e7d66f62cbba62734daaa637109691c7f3b /gold/merge.h | |
parent | e214a02b9ba50f8d10bfefb54e7e7d51037dc950 (diff) | |
download | fsf-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.h | 32 |
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. |