summaryrefslogtreecommitdiff
path: root/gold/layout.h
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2008-02-06 19:32:32 +0000
committerIan Lance Taylor <iant@google.com>2008-02-06 19:32:32 +0000
commit755ab8af10558c40e5090e92c46bbbd89815c292 (patch)
treec2d87009c2ebc0af8507f0e2dddebdab5b91c608 /gold/layout.h
parent06b1d59cd626db8764130ba2a03daa42feefc968 (diff)
Fix group signature handling for relocatable link, add bootstrap
relocatable test.
Diffstat (limited to 'gold/layout.h')
-rw-r--r--gold/layout.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/gold/layout.h b/gold/layout.h
index e050df36b9..674956e688 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -171,6 +171,10 @@ class Layout
define_script_symbols(Symbol_table* symtab)
{ this->script_options_->add_symbols_to_table(symtab); }
+ // Define symbols for group signatures.
+ void
+ define_group_signatures(Symbol_table*);
+
// Return the Stringpool used for symbol names.
const Stringpool*
sympool() const
@@ -332,6 +336,25 @@ class Layout
static const Linkonce_mapping linkonce_mapping[];
static const int linkonce_mapping_count;
+ // During a relocatable link, a list of group sections and
+ // signatures.
+ struct Group_signature
+ {
+ // The group section.
+ Output_section* section;
+ // The signature.
+ const char* signature;
+
+ Group_signature()
+ : section(NULL), signature(NULL)
+ { }
+
+ Group_signature(Output_section* sectiona, const char* signaturea)
+ : section(sectiona), signature(signaturea)
+ { }
+ };
+ typedef std::vector<Group_signature> Group_signatures;
+
// Create a .note section for gold.
void
create_gold_note();
@@ -537,6 +560,8 @@ class Layout
Eh_frame* eh_frame_data_;
// The exception frame header output section if there is one.
Output_section* eh_frame_hdr_section_;
+ // A list of group sections and their signatures.
+ Group_signatures group_signatures_;
// The size of the output file.
off_t output_file_size_;
// Whether we have seen an object file marked to require an