aboutsummaryrefslogtreecommitdiff
path: root/gold/script.h
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@google.com>2008-02-28 04:45:47 +0000
committerIan Lance Taylor <iant@google.com>2008-02-28 04:45:47 +0000
commit919ed24cbc56717156ee86a754281cc08919d2ba (patch)
tree87151a758daf5709e798f285c607fb459b72523b /gold/script.h
parent15cf077ef4df71bb31c803ed9cf94d8ccdb72dc5 (diff)
downloadgdb-919ed24cbc56717156ee86a754281cc08919d2ba.zip
gdb-919ed24cbc56717156ee86a754281cc08919d2ba.tar.gz
gdb-919ed24cbc56717156ee86a754281cc08919d2ba.tar.bz2
Don't check assertions until symbols are finalized. Create an output
section if the script uses a data statement with no input sections. Don't create a loadable segment for the headers if there is no room.
Diffstat (limited to 'gold/script.h')
-rw-r--r--gold/script.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/gold/script.h b/gold/script.h
index b212227..78d9ff0 100644
--- a/gold/script.h
+++ b/gold/script.h
@@ -67,9 +67,10 @@ class Expression
{ }
// Return the value of the expression which is not permitted to
- // refer to the dot symbol.
+ // refer to the dot symbol. CHECK_ASSERTIONS is true if we should
+ // check whether assertions are true.
uint64_t
- eval(const Symbol_table*, const Layout*);
+ eval(const Symbol_table*, const Layout*, bool check_assertions);
// Return the value of an expression which is permitted to refer to
// the dot symbol. DOT_VALUE is the absolute value of the dot
@@ -82,15 +83,17 @@ class Expression
// value; to get a section relative value the caller must subtract
// the section address.
uint64_t
- eval_with_dot(const Symbol_table*, const Layout*, uint64_t dot_value,
- Output_section* dot_section, Output_section** result_section);
+ eval_with_dot(const Symbol_table*, const Layout*, bool check_assertions,
+ uint64_t dot_value, Output_section* dot_section,
+ Output_section** result_section);
// Return the value of an expression which may or may not be
// permitted to refer to the dot symbol, depending on
// is_dot_available.
uint64_t
- eval_maybe_dot(const Symbol_table*, const Layout*, bool is_dot_available,
- uint64_t dot_value, Output_section* dot_section,
+ eval_maybe_dot(const Symbol_table*, const Layout*, bool check_assertions,
+ bool is_dot_available, uint64_t dot_value,
+ Output_section* dot_section,
Output_section** result_section);
// Print the expression to the FILE. This is for debugging.
@@ -219,7 +222,7 @@ class Symbol_assignment
// Set the symbol value, but only if the value is absolute. This is
// used while processing a SECTIONS clause. We assume that dot is
- // an absolute value here.
+ // an absolute value here. We do not check assertions.
void
set_if_absolute(Symbol_table*, const Layout*, bool is_dot_available,
uint64_t dot_value);
@@ -307,6 +310,10 @@ class Script_options
bool
define_symbol(const char* definition);
+ // Create sections required by any linker scripts.
+ void
+ create_script_sections(Layout*);
+
// Add all symbol definitions to the symbol table.
void
add_symbols_to_table(Symbol_table*);