// layout.h -- lay out output file sections for gold -*- C++ -*-
-// Copyright 2006, 2007 Free Software Foundation, Inc.
+// Copyright 2006, 2007, 2008 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
#include <utility>
#include <vector>
+#include "script.h"
#include "workqueue.h"
#include "object.h"
#include "dynobj.h"
class Layout
{
public:
- Layout(const General_options& options);
+ Layout(const General_options& options, Script_options*);
// Given an input section SHNDX, named NAME, with data in SHDR, from
// the object file OBJECT, return the output section where this
// Create dynamic sections if necessary.
void
- create_initial_dynamic_sections(const Input_objects*, Symbol_table*);
+ create_initial_dynamic_sections(Symbol_table*);
// Define __start and __stop symbols for output sections.
void
- define_section_symbols(Symbol_table*, const Target*);
+ define_section_symbols(Symbol_table*);
+
+ // Define symbols from any linker script.
+ void
+ define_script_symbols(Symbol_table* symtab)
+ { this->script_options_->add_symbols_to_table(symtab); }
// Return the Stringpool used for symbol names.
const Stringpool*
has_static_tls() const
{ return this->has_static_tls_; }
+ // Return the options which may be set by a linker script.
+ Script_options*
+ script_options()
+ { return this->script_options_; }
+
+ const Script_options*
+ script_options() const
+ { return this->script_options_; }
+
// Dump statistical information to stderr.
void
print_stats() const;
// Create the output sections for the symbol table.
void
- create_symtab_sections(const Input_objects*, Symbol_table*, const Task*,
- off_t*);
+ create_symtab_sections(const Input_objects*, Symbol_table*, off_t*);
// Create the .shstrtab section.
Output_section*
// Create the dynamic symbol table.
void
- create_dynamic_symtab(const Input_objects*, const Target*,
- Symbol_table*, Output_section** pdynstr,
+ create_dynamic_symtab(const Input_objects*, Symbol_table*,
+ Output_section** pdynstr,
unsigned int* plocal_dynamic_count,
std::vector<Symbol*>* pdynamic_symbols,
Versions* versions);
// A reference to the options on the command line.
const General_options& options_;
+ // Information set by scripts or by command line options.
+ Script_options* script_options_;
// The output section names.
Stringpool namepool_;
// The output symbol names.