| Line 88... | 
        Line 88... | 
      
      
          // be NULL.  Note that the returned value is still an absolute
  | 
          // be NULL.  Note that the returned value is still an absolute
  | 
      
      
          // value; to get a section relative value the caller must subtract
  | 
          // value; to get a section relative value the caller must subtract
  | 
      
      
          // the section address.  If RESULT_ALIGNMENT is not NULL, this sets
  | 
          // the section address.  If RESULT_ALIGNMENT is not NULL, this sets
  | 
      
      
          // *RESULT_ALIGNMENT to the alignment of the value of that alignment
  | 
          // *RESULT_ALIGNMENT to the alignment of the value of that alignment
  | 
      
      
          // is larger than *RESULT_ALIGNMENT; this will only be non-zero if
  | 
          // is larger than *RESULT_ALIGNMENT; this will only be non-zero if
  | 
      
      
          // this is an ALIGN expression.
  | 
          // this is an ALIGN expression.  If IS_SECTION_DOT_ASSIGMENT is true,
  | 
      
      
           | 
          // we are evaluating an assignment to dot within an output section,
  | 
      
      
           | 
          // and an absolute value should be interpreted as an offset within
  | 
      
      
           | 
          // the section.
  | 
      
      
          uint64_t
  | 
          uint64_t
  | 
      
      
          eval_with_dot(const Symbol_table*, const Layout*, bool check_assertions,
  | 
          eval_with_dot(const Symbol_table*, const Layout*, bool check_assertions,
  | 
      
      
                        uint64_t dot_value, Output_section* dot_section,
  | 
                        uint64_t dot_value, Output_section* dot_section,
  | 
      
      
                        Output_section** result_section, uint64_t* result_alignment);
  | 
                        Output_section** result_section, uint64_t* result_alignment,
  | 
      
      
           | 
                        bool is_section_dot_assignment);
  | 
      
      
         
  | 
         
  | 
      
      
          // Return the value of an expression which may or may not be
  | 
          // Return the value of an expression which may or may not be
  | 
      
      
          // permitted to refer to the dot symbol, depending on
  | 
          // permitted to refer to the dot symbol, depending on
  | 
      
      
          // is_dot_available.
  | 
          // is_dot_available.  If IS_SECTION_DOT_ASSIGMENT is true,
  | 
      
      
           | 
          // we are evaluating an assignment to dot within an output section,
  | 
      
      
           | 
          // and an absolute value should be interpreted as an offset within
  | 
      
      
           | 
          // the section.
  | 
      
      
          uint64_t
  | 
          uint64_t
  | 
      
      
          eval_maybe_dot(const Symbol_table*, const Layout*, bool check_assertions,
  | 
          eval_maybe_dot(const Symbol_table*, const Layout*, bool check_assertions,
  | 
      
      
                         bool is_dot_available, uint64_t dot_value,
  | 
                         bool is_dot_available, uint64_t dot_value,
  | 
      
      
                         Output_section* dot_section,
  | 
                         Output_section* dot_section,
  | 
      
      
                         Output_section** result_section, uint64_t* result_alignment);
  | 
                         Output_section** result_section, uint64_t* result_alignment,
  | 
      
      
           | 
                         bool is_section_dot_assignment);
  | 
      
      
         
  | 
         
  | 
      
      
          // Print the expression to the FILE.  This is for debugging.
  | 
          // Print the expression to the FILE.  This is for debugging.
  | 
      
      
          virtual void
  | 
          virtual void
  | 
      
      
          print(FILE*) const = 0;
  | 
          print(FILE*) const = 0;
  | 
      
      
         
  | 
         
  | 
      
      
        | Line 337... | 
        Line 345... | 
      
      
          // Finalize the symbol value when it can refer to the dot symbol.
  | 
          // Finalize the symbol value when it can refer to the dot symbol.
  | 
      
      
          void
  | 
          void
  | 
      
      
          finalize_with_dot(Symbol_table*, const Layout*, uint64_t dot_value,
  | 
          finalize_with_dot(Symbol_table*, const Layout*, uint64_t dot_value,
  | 
      
      
                            Output_section* dot_section);
  | 
                            Output_section* dot_section);
  | 
      
      
         
  | 
         
  | 
      
      
          // Set the symbol value, but only if the value is absolute.  This is
  | 
          // Set the symbol value, but only if the value is absolute or relative to
  | 
      
      
          // used while processing a SECTIONS clause.  We assume that dot is
  | 
          // DOT_SECTION.  This is used while processing a SECTIONS clause.
  | 
      
      
          // an absolute value here.  We do not check assertions.
  | 
          // We assume that dot is an absolute value here.  We do not check assertions.
  | 
      
      
          void
  | 
          void
  | 
      
      
          set_if_absolute(Symbol_table*, const Layout*, bool is_dot_available,
  | 
          set_if_absolute(Symbol_table*, const Layout*, bool is_dot_available,
  | 
      
      
                          uint64_t dot_value);
  | 
                          uint64_t dot_value, Output_section* dot_section);
  | 
      
      
         
  | 
         
  | 
      
      
          const std::string&
  | 
          const std::string&
  | 
      
      
          name() const
  | 
          name() const
  | 
      
      
          { return this->name_; }
  | 
          { return this->name_; }
  | 
      
      
         
  | 
         
  |