X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gold%2Fexpression.cc;h=f4bdf2a096ce9ae1f02108defe78896551eedc15;hb=c0c3707ff46ccfb78ea175dd42d628d8c90dca8b;hp=d764cc2a9d9c05cd5123835926ffc22cce2196ba;hpb=219d1afa89d0d53ca93a684cac341f16470f3ca0;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/expression.cc b/gold/expression.cc index d764cc2a9d..f4bdf2a096 100644 --- a/gold/expression.cc +++ b/gold/expression.cc @@ -1,6 +1,6 @@ // expression.cc -- expressions in linker scripts for gold -// Copyright (C) 2006-2018 Free Software Foundation, Inc. +// Copyright (C) 2006-2019 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -205,6 +205,14 @@ class Symbol_expression : public Expression uint64_t value(const Expression_eval_info*); + void + set_expr_sym_in_real_elf(Symbol_table* symtab) const + { + Symbol* sym = symtab->lookup(this->name_.c_str()); + if (sym != NULL) + sym->set_in_real_elf(); + } + void print(FILE* f) const { fprintf(f, "%s", this->name_.c_str()); } @@ -318,6 +326,10 @@ class Unary_expression : public Expression arg_print(FILE* f) const { this->arg_->print(f); } + void + set_expr_sym_in_real_elf(Symbol_table* symtab) const + { return this->arg_->set_expr_sym_in_real_elf(symtab); } + private: Expression* arg_; }; @@ -437,6 +449,13 @@ class Binary_expression : public Expression fprintf(f, ")"); } + void + set_expr_sym_in_real_elf(Symbol_table* symtab) const + { + this->left_->set_expr_sym_in_real_elf(symtab); + this->right_->set_expr_sym_in_real_elf(symtab); + } + private: Expression* left_; Expression* right_; @@ -577,7 +596,7 @@ class Trinary_expression : public Expression Output_section** section_pointer, uint64_t* alignment_pointer) const { - return this->arg1_->eval_maybe_dot(eei->symtab, eei->layout, + return this->arg2_->eval_maybe_dot(eei->symtab, eei->layout, eei->check_assertions, eei->is_dot_available, eei->dot_value, @@ -596,7 +615,7 @@ class Trinary_expression : public Expression Output_section** section_pointer, uint64_t* alignment_pointer) const { - return this->arg1_->eval_maybe_dot(eei->symtab, eei->layout, + return this->arg3_->eval_maybe_dot(eei->symtab, eei->layout, eei->check_assertions, eei->is_dot_available, eei->dot_value, @@ -622,6 +641,14 @@ class Trinary_expression : public Expression arg3_print(FILE* f) const { this->arg3_->print(f); } + void + set_expr_sym_in_real_elf(Symbol_table* symtab) const + { + this->arg1_->set_expr_sym_in_real_elf(symtab); + this->arg2_->set_expr_sym_in_real_elf(symtab); + this->arg3_->set_expr_sym_in_real_elf(symtab); + } + private: Expression* arg1_; Expression* arg2_;