aboutsummaryrefslogtreecommitdiff
path: root/gold/layout.h
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2008-01-09 19:57:45 +0000
committerIan Lance Taylor <iant@google.com>2008-01-09 19:57:45 +0000
commite5756efb6d46f569d2e99d19f726b32b84f58bd7 (patch)
tree953c35bf025a640d99bccbd4acbce67dc8b677b5 /gold/layout.h
parentcda30489fc0f7870150158863780d67f5efedd90 (diff)
downloadfsf-binutils-gdb-e5756efb6d46f569d2e99d19f726b32b84f58bd7.zip
fsf-binutils-gdb-e5756efb6d46f569d2e99d19f726b32b84f58bd7.tar.gz
fsf-binutils-gdb-e5756efb6d46f569d2e99d19f726b32b84f58bd7.tar.bz2
Support assignments and expressions in linker scripts.
Diffstat (limited to 'gold/layout.h')
-rw-r--r--gold/layout.h28
1 files changed, 18 insertions, 10 deletions
diff --git a/gold/layout.h b/gold/layout.h
index a106ccc..b40a7ab 100644
--- a/gold/layout.h
+++ b/gold/layout.h
@@ -1,6 +1,6 @@
// 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.
@@ -28,6 +28,7 @@
#include <utility>
#include <vector>
+#include "script.h"
#include "workqueue.h"
#include "object.h"
#include "dynobj.h"
@@ -84,7 +85,7 @@ class Layout_task_runner : public Task_function_runner
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
@@ -142,6 +143,11 @@ class Layout
void
define_section_symbols(Symbol_table*, const Target*);
+ // Define symbols from any linker script.
+ void
+ define_script_symbols(Symbol_table* symtab, const Target* target)
+ { this->script_options_->add_symbols_to_table(symtab, target); }
+
// Return the Stringpool used for symbol names.
const Stringpool*
sympool() const
@@ -241,11 +247,14 @@ class Layout
has_static_tls() const
{ return this->has_static_tls_; }
- // Set the name of the entry symbol. This is used by linker scripts
- // which look like regular objects.
- void
- set_entry(const char* entry)
- { this->entry_ = entry; }
+ // 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
@@ -432,9 +441,8 @@ class Layout
// A reference to the options on the command line.
const General_options& options_;
- // The name of the entry symbol. This is from the command line, or
- // from a linker script, or is NULL.
- const char* entry_;
+ // Information set by scripts or by command line options.
+ Script_options* script_options_;
// The output section names.
Stringpool namepool_;
// The output symbol names.