Lines Matching full:this

6 // This file is part of gold.
8 // This program is free software; you can redistribute it and/or modify
13 // This program is distributed in the hope that it will be useful,
19 // along with this program; if not, write to the Free Software
78 // Offset of external symbols within symbol data. This structure
79 // sometimes contains only external symbols, in which case this will
87 // Version information. This is only used on dynamic objects.
110 // Data about a single relocation section. This is read in
120 { delete this->contents; } in ~Section_relocs()
134 // Whether this section has special handling for offsets.
140 // Relocations in an object file. This is read in read_relocs and
150 { delete this->local_symbols; } in ~Read_relocs_data()
192 // Adjust a section index if necessary. This should only be called
198 shndx += this->large_shndx_offset_; in adjust_shndx()
228 if (this->got_next_ != NULL) in ~Got_offset_list()
230 delete this->got_next_; in ~Got_offset_list()
231 this->got_next_ = NULL; in ~Got_offset_list()
239 this->got_type_ = -1U; in init()
240 this->got_offset_ = 0; in init()
241 this->addend_ = 0; in init()
242 this->got_next_ = NULL; in init()
249 if (this->got_type_ == -1U) in set_offset()
251 this->got_type_ = got_type; in set_offset()
252 this->got_offset_ = got_offset; in set_offset()
253 this->addend_ = addend; in set_offset()
257 for (Got_offset_list* g = this; g != NULL; g = g->got_next_) in set_offset()
266 g->got_next_ = this->got_next_; in set_offset()
267 this->got_next_ = g; in set_offset()
275 for (const Got_offset_list* g = this; g != NULL; g = g->got_next_) in get_offset()
287 if (this->got_type_ == -1U) in get_list()
289 return this; in get_list()
311 if (this->got_type_ == -1U) in for_all_got_offsets()
313 for (const Got_offset_list* g = this; g != NULL; g = g->got_next_) in for_all_got_offsets()
334 // Whether this equals to another Local_got_entry_key.
338 return this->symndx_ == key.symndx_; in eq()
341 // Compute a hash value for this using 64-bit FNV-1a hash.
347 h = (h ^ static_cast<uint64_t>(this->symndx_)) * prime; in hash_value()
401 switch (this->ei_osabi_) in has_shf_retain()
415 switch (this->ei_osabi_) in ignored_sh_flags()
431 // or a 64-bit input object. This can be a regular object file
440 // (e.g., libfoo.a(bar.o) if this is in an archive. INPUT_FILE is
454 this->is_in_system_directory_ = input_file->is_in_system_directory(); in name_()
455 this->as_needed_ = input_file->options().as_needed(); in name_()
461 if (this->input_file_ != NULL) in ~Object()
462 this->input_file_->file().remove_object(); in ~Object()
468 { return this->name_; } in name()
473 { return this->offset_; } in offset()
475 // Return whether this is a dynamic object.
478 { return this->is_dynamic_; } in is_dynamic()
483 // Return TRUE if this is a big-endian object file.
486 // Return whether this object is needed--true if it is a dynamic
492 { return this->is_needed_; } in is_needed()
494 // Record that this object is needed.
497 { this->is_needed_ = true; } in set_is_needed()
499 // Return whether this object was compiled with -fsplit-stack.
502 { return this->uses_split_stack_; } in uses_split_stack()
504 // Return whether this object contains any functions compiled with
508 { return this->has_no_split_stack_; } in has_no_split_stack()
510 // Returns NULL for Objects that are not dynamic objects. This method
514 { return this->do_dynobj(); } in dynobj()
516 // Returns NULL for Objects that are not plugin objects. This method
520 { return this->do_pluginobj(); } in pluginobj()
526 gold_assert(this->input_file_ != NULL); in input_file()
527 return this->input_file_; in input_file()
533 gold_assert(this->input_file_ != NULL); in input_file()
534 return this->input_file_; in input_file()
541 if (this->input_file_ != NULL) in lock()
542 this->input_file_->file().lock(t); in lock()
549 if (this->input_file_ != NULL) in unlock()
550 this->input_file()->file().unlock(t); in unlock()
556 { return this->input_file_ != NULL && this->input_file_->file().is_locked(); } in is_locked()
562 if (this->input_file_ == NULL) in token()
564 return this->input_file()->file().token(); in token()
571 if (this->input_file_ != NULL) in release()
572 this->input_file()->file().release(); in release()
575 // Return whether we should just read symbols from this file.
578 { return this->input_file()->just_symbols(); } in just_symbols()
580 // Return whether this is an incremental object.
583 { return this->do_is_incremental(); } in is_incremental()
588 { return this->do_get_mtime(); } in get_mtime()
593 { return this->shnum_; } in shnum()
602 // get_st_shndx. This returns the section index. It sets
603 // *IS_ORDINARY to indicate whether this is a normal section index,
613 if (this->xindex_ == NULL) in adjust_sym_shndx()
614 this->xindex_ = this->do_initialize_xindex(); in adjust_sym_shndx()
615 shndx = this->xindex_->sym_xindex_to_shndx(this, symndx); in adjust_sym_shndx()
626 { return this->do_section_size(shndx); } in section_size()
631 { return this->do_section_name(shndx); } in section_name()
636 { return this->do_section_flags(shndx); } in section_flags()
641 { return this->do_section_entsize(shndx); } in section_entsize()
646 { return this->do_section_address(shndx); } in section_address()
651 { return this->do_section_type(shndx); } in section_type()
656 { return this->do_section_link(shndx); } in section_link()
661 { return this->do_section_info(shndx); } in section_info()
666 { return this->do_section_addralign(shndx); } in section_addralign()
671 { return this->do_output_section(shndx); } in output_section()
678 { return this->do_output_section_address(shndx); } in output_section_address()
685 { return this->do_output_section_offset(shndx); } in output_section_offset()
690 { return this->do_read_symbols(sd); } in read_symbols()
696 { this->do_layout(symtab, layout, sd); } in layout()
701 { this->do_add_symbols(symtab, sd, layout); } in add_symbols()
707 { return this->do_should_include_member(symtab, layout, sd, why); } in should_include_member()
713 { return this->do_for_all_global_symbols(sd, v); } in for_all_global_symbols()
719 { this->do_for_all_local_got_entries(v); } in for_all_local_got_entries()
721 // Functions and types for the elfcpp::Elf_file interface. This
726 // method, data(). This is trivial, because get_view does what we
737 { return this->p_; } in data()
746 { return View(this->get_view(file_offset, data_size, true, true)); } in view()
765 { return View(this->get_view(loc.file_offset, loc.data_size, true, true)); } in view()
771 return this->input_file()->file().get_view(this->offset_, start, size, in get_view()
780 return this->input_file()->file().get_lasting_view(this->offset_, start, in get_lasting_view()
787 { this->input_file()->file().read(start + this->offset_, size, p); } in read()
792 { this->input_file()->file().read_multiple(this->offset_, rm); } in read_multiple()
798 if (this->input_file_ != NULL) in clear_view_cache_marks()
799 this->input_file_->file().clear_view_cache_marks(); in clear_view_cache_marks()
802 // Get the number of global symbols defined by this object, and the
803 // number of the symbols whose final definition came from this
808 { this->do_get_global_symbol_counts(symtab, defined, used); } in get_global_symbol_counts()
810 // Get the symbols defined in this object.
813 { return this->do_get_global_symbols(); } in get_global_symbols()
815 // Set flag that this object was found in a system directory.
818 { this->is_in_system_directory_ = true; } in set_is_in_system_directory()
820 // Return whether this object was found in a system directory.
823 { return this->is_in_system_directory_; } in is_in_system_directory()
825 // Set flag that this object was linked with --as-needed.
828 { this->as_needed_ = true; } in set_as_needed()
830 // Clear flag that this object was linked with --as-needed.
833 { this->as_needed_ = false; } in clear_as_needed()
835 // Return whether this object was linked with --as-needed.
838 { return this->as_needed_; } in as_needed()
840 // Return whether we found this object by searching a directory.
843 { return this->input_file()->will_search_for(); } in searched_for()
847 { return this->no_export_; } in no_export()
851 { this->no_export_ = value; } in set_no_export()
858 if (this->compressed_sections_ == NULL)
861 this->compressed_sections_->find(shndx);
862 if (p != this->compressed_sections_->end())
880 // Discard any buffers of decompressed sections. This is done
888 { return this->do_get_incremental_reloc_base(symndx); } in get_incremental_reloc_base()
893 { return this->do_get_incremental_reloc_count(symndx); } in get_incremental_reloc_count()
898 { return this->do_get_output_view(shndx, plen); } in get_output_view()
901 // Returns NULL for Objects that are not dynamic objects. This method
907 // Returns NULL for Objects that are not plugin objects. This method
913 // Return TRUE if this is an incremental (unchanged) input file.
915 // override this method.
920 // Return the last modified time of the file. This method may be
925 { return this->input_file()->file().get_mtime(); } in do_get_mtime()
1026 { this->shnum_ = shnum; } in set_shnum()
1037 // then it is a section header returned from a previous call to this
1050 gold_assert(this->xindex_ == NULL); in set_xindex()
1051 this->xindex_ = xindex; in set_xindex()
1062 // this object was compiled with -fsplit-stack, mark it accordingly,
1067 // Discard any buffers of decompressed sections. This is done
1092 { this->compressed_sections_ = compressed_sections; } in set_compressed_sections()
1096 { return this->compressed_sections_; } in compressed_sections()
1099 // This class may not be copied.
1112 // Whether this is a dynamic object.
1114 // Whether this object is needed. This is only set for dynamic
1118 // Whether this object was compiled with -fsplit-stack.
1120 // Whether this object contains any functions compiled with the
1123 // True if exclude this object from automatic symbol export.
1124 // This is used only for archive objects.
1137 // A regular object (ET_REL). This is an abstract base class itself.
1161 { return this->sd_; } in get_symbols_data()
1174 { this->sd_ = sd; } in set_symbols_data()
1177 // is done before scanning the relocs. In that case, this->rd_ is
1179 // This data is also used to compute the list of relevant sections.
1182 { return this->rd_; } in get_relocs_data()
1186 { this->rd_ = rd; } in set_relocs_data()
1194 { return this->do_read_relocs(rd); } in read_relocs()
1199 { return this->do_gc_process_relocs(symtab, layout, rd); } in gc_process_relocs()
1204 { return this->do_scan_relocs(symtab, layout, rd); } in scan_relocs()
1211 { return this->do_local_symbol_value(symndx, addend); } in local_symbol_value()
1214 // this if it doesn't have one.
1217 { return this->do_local_plt_offset(symndx); } in local_plt_offset()
1224 { return this->do_local_has_got_offset(symndx, got_type, addend); }
1228 // this function if the symbol does not have such a GOT entry.
1232 { return this->do_local_got_offset(symndx, got_type, addend); }
1240 { this->do_set_local_got_offset(symndx, got_type, got_offset, addend); }
1245 { return this->do_local_is_tls(symndx); } in local_is_tls()
1250 { return this->do_local_symbol_count(); } in local_symbol_count()
1255 { return this->do_output_local_symbol_count(); } in output_local_symbol_count()
1260 { return this->do_local_symbol_offset(); } in local_symbol_offset()
1268 { return this->do_count_local_symbols(pool, dynpool); } in count_local_symbols()
1275 { return this->do_finalize_local_symbols(index, off, symtab); } in finalize_local_symbols()
1280 { return this->do_set_local_dynsym_indexes(index); } in set_local_dynsym_indexes()
1285 { return this->do_set_local_dynsym_offset(off); } in set_local_dynsym_offset()
1287 // Record a dynamic relocation against an input section from this object.
1291 if (this->dyn_reloc_count_ == 0) in add_dyn_reloc()
1292 this->first_dyn_reloc_ = index; in add_dyn_reloc()
1293 ++this->dyn_reloc_count_; in add_dyn_reloc()
1299 { return this->first_dyn_reloc_; } in first_dyn_reloc()
1304 { return this->dyn_reloc_count_; } in dyn_reloc_count()
1309 { return this->do_relocate(symtab, layout, of); } in relocate()
1315 gold_assert(shndx < this->output_sections_.size()); in is_section_included()
1316 return this->output_sections_[shndx] != NULL; in is_section_included()
1320 // This is only used currently to remove a section from the link in
1325 gold_assert(shndx < this->output_sections_.size()); in set_output_section()
1326 this->output_sections_[shndx] = os; in set_output_section()
1332 { this->do_set_section_offset(shndx, off); } in set_section_offset()
1335 // before we can apply relocations. This is true if the object has
1340 { return this->relocs_must_follow_section_writes_; } in relocs_must_follow_section_writes()
1369 gold_assert(reloc_shndx < this->shnum()); in set_relocatable_relocs()
1370 (*this->map_to_relocatable_relocs_)[reloc_shndx] = rr; in set_relocatable_relocs()
1377 gold_assert(reloc_shndx < this->shnum()); in relocatable_relocs()
1378 return (*this->map_to_relocatable_relocs_)[reloc_shndx]; in relocatable_relocs()
1385 { this->do_layout_deferred_sections(layout); } in layout_deferred_sections()
1390 { return this->reloc_bases_[symndx]; } in do_get_incremental_reloc_base()
1395 { return this->reloc_counts_[symndx]; } in do_get_incremental_reloc_count()
1400 { return this->do_elfsize(); } in elfsize()
1402 // Return TRUE if this is a big-endian object file.
1405 { return this->do_is_big_endian(); } in is_big_endian()
1504 gold_assert(shndx < this->output_sections_.size()); in do_output_section()
1505 return this->output_sections_[shndx]; in do_output_section()
1511 { return this->output_sections_; } in output_sections()
1515 { return this->output_sections_; } in output_sections()
1521 this->map_to_relocatable_relocs_ = in size_relocatable_relocs()
1522 new std::vector<Relocatable_relocs*>(this->shnum()); in size_relocatable_relocs()
1529 { this->relocs_must_follow_section_writes_ = true; } in set_relocs_must_follow_section_writes()
1535 unsigned int nsyms = this->do_get_global_symbols()->size(); in allocate_incremental_reloc_counts()
1536 this->reloc_counts_ = new unsigned int[nsyms]; in allocate_incremental_reloc_counts()
1537 gold_assert(this->reloc_counts_ != NULL); in allocate_incremental_reloc_counts()
1538 memset(this->reloc_counts_, 0, nsyms * sizeof(unsigned int)); in allocate_incremental_reloc_counts()
1541 // Record a relocation in this object referencing global symbol SYMNDX.
1546 unsigned int nsyms = this->do_get_global_symbols()->size(); in count_incremental_reloc()
1548 gold_assert(this->reloc_counts_ != NULL); in count_incremental_reloc()
1549 ++this->reloc_counts_[symndx]; in count_incremental_reloc()
1561 unsigned int nsyms = this->do_get_global_symbols()->size(); in next_incremental_reloc_index()
1563 gold_assert(this->reloc_counts_ != NULL); in next_incremental_reloc_index()
1564 gold_assert(this->reloc_bases_ != NULL); in next_incremental_reloc_index()
1567 unsigned int counter = this->reloc_counts_[symndx]++; in next_incremental_reloc_index()
1568 return this->reloc_bases_[symndx] + counter; in next_incremental_reloc_index()
1576 // Return TRUE if this is a big-endian object file--
1585 // the relocations. This is only used for a relocatable link.
1587 // Mappings for merge sections. This is managed by the code in the
1604 // Index of the first dynamic relocation for this object.
1606 // Count of dynamic relocations for this object.
1610 // This class is used to handle relocations against a section symbol
1617 // this class.
1641 { this->output_addresses_.clear(); } in free_input_to_output_map()
1649 // This is a relocation against a section symbol. ADDEND is the in value()
1661 // file formats have 32-bit relocations. We know this is a merge in value()
1664 // value. This will break objects with very very large merge in value()
1666 Value input_offset = this->input_value_; in value()
1673 this->output_addresses_.find(input_offset); in value()
1674 if (p != this->output_addresses_.end()) in value()
1677 return (this->value_from_output_section(object, input_shndx, input_offset) in value()
1688 // The value of the section symbol in the input file. This is
1691 // The start address of this merged section in the output file.
1694 // addresses. This only maps specific offsets, not all offsets.
1698 // This POD class is holds the value of a symbol. This is used for
1700 // For special sections, such as SHF_MERGE sections, this calls a
1713 { this->u_.value = 0; } in Symbol_value()
1717 if (!this->has_output_value_) in ~Symbol_value()
1718 delete this->u_.merged_symbol_value; in ~Symbol_value()
1721 // Get the value of this symbol. OBJECT is the object in which this
1727 if (this->has_output_value_) in value()
1728 return this->u_.value + addend; in value()
1731 gold_assert(this->is_ordinary_shndx_); in value()
1732 return this->u_.merged_symbol_value->value(object, this->input_shndx_, in value()
1737 // Set the value of this symbol in the output symbol table.
1740 { this->u_.value = value; } in set_output_value()
1747 gold_assert(this->is_section_symbol_); in set_merged_symbol_value()
1748 this->has_output_value_ = false; in set_merged_symbol_value()
1749 this->u_.merged_symbol_value = msv; in set_merged_symbol_value()
1758 if (!this->has_output_value_) in initialize_input_to_output_map()
1760 gold_assert(this->is_section_symbol_ && this->is_ordinary_shndx_); in initialize_input_to_output_map()
1761 Merged_symbol_value<size>* msv = this->u_.merged_symbol_value; in initialize_input_to_output_map()
1762 msv->initialize_input_to_output_map(object, this->input_shndx_); in initialize_input_to_output_map()
1771 if (!this->has_output_value_) in free_input_to_output_map()
1772 this->u_.merged_symbol_value->free_input_to_output_map(); in free_input_to_output_map()
1775 // Set the value of the symbol from the input file. This is only
1780 { this->u_.value = value; } in set_input_value()
1782 // Return the input value. This is only called by
1786 { return this->u_.value; } in input_value()
1793 return (this->output_symtab_index_ != 0 in is_output_symtab_index_set()
1794 && this->output_symtab_index_ != -2U); in is_output_symtab_index_set()
1797 // Return whether this symbol may be discarded from the normal
1802 gold_assert(!this->is_output_symtab_index_set()); in may_be_discarded_from_output_symtab()
1803 return this->output_symtab_index_ != -2U; in may_be_discarded_from_output_symtab()
1806 // Return whether this symbol has an entry in the output symbol
1811 gold_assert(this->is_output_symtab_index_set()); in has_output_symtab_entry()
1812 return this->output_symtab_index_ != -1U; in has_output_symtab_entry()
1819 gold_assert(this->is_output_symtab_index_set() in output_symtab_index()
1820 && this->output_symtab_index_ != -1U); in output_symtab_index()
1821 return this->output_symtab_index_; in output_symtab_index()
1828 gold_assert(!this->is_output_symtab_index_set()); in set_output_symtab_index()
1830 this->output_symtab_index_ = i; in set_output_symtab_index()
1833 // Record that this symbol should not go into the output symbol
1838 gold_assert(this->output_symtab_index_ == 0); in set_no_output_symtab_entry()
1839 this->output_symtab_index_ = -1U; in set_no_output_symtab_entry()
1842 // Record that this symbol must go into the output symbol table,
1847 gold_assert(!this->is_output_symtab_index_set()); in set_must_have_output_symtab_entry()
1848 this->output_symtab_index_ = -2U; in set_must_have_output_symtab_entry()
1855 gold_assert(!this->is_section_symbol()); in set_needs_output_dynsym_entry()
1856 this->output_dynsym_index_ = 0; in set_needs_output_dynsym_entry()
1859 // Return whether this symbol should go into the dynamic symbol
1864 return this->output_dynsym_index_ != -1U; in needs_output_dynsym_entry()
1867 // Return whether this symbol has an entry in the dynamic symbol
1872 gold_assert(this->output_dynsym_index_ != 0); in has_output_dynsym_entry()
1873 return this->output_dynsym_index_ != -1U; in has_output_dynsym_entry()
1876 // Record that this symbol should go into the dynamic symbol table.
1880 gold_assert(this->output_dynsym_index_ == 0); in set_output_dynsym_index()
1882 this->output_dynsym_index_ = i; in set_output_dynsym_index()
1889 gold_assert(this->output_dynsym_index_ != 0 in output_dynsym_index()
1890 && this->output_dynsym_index_ != -1U); in output_dynsym_index()
1891 return this->output_dynsym_index_; in output_dynsym_index()
1898 this->input_shndx_ = i; in set_input_shndx()
1901 gold_assert(this->input_shndx_ == i); in set_input_shndx()
1902 this->is_ordinary_shndx_ = is_ordinary; in set_input_shndx()
1909 *is_ordinary = this->is_ordinary_shndx_; in input_shndx()
1910 return this->input_shndx_; in input_shndx()
1913 // Whether this is a section symbol.
1916 { return this->is_section_symbol_; } in is_section_symbol()
1918 // Record that this is a section symbol.
1922 gold_assert(!this->needs_output_dynsym_entry()); in set_is_section_symbol()
1923 this->is_section_symbol_ = true; in set_is_section_symbol()
1926 // Record that this is a TLS symbol.
1929 { this->is_tls_symbol_ = true; } in set_is_tls_symbol()
1931 // Return true if this is a TLS symbol.
1934 { return this->is_tls_symbol_; } in is_tls_symbol()
1936 // Record that this is an IFUNC symbol.
1939 { this->is_ifunc_symbol_ = true; } in set_is_ifunc_symbol()
1941 // Return true if this is an IFUNC symbol.
1944 { return this->is_ifunc_symbol_; } in is_ifunc_symbol()
1946 // Return true if this has output value.
1949 { return this->has_output_value_; } in has_output_value()
1952 // The index of this local symbol in the output symbol table. This
1954 // be omitted. This will be -1U if the symbol should not go into
1955 // the symbol table. This will be -2U if the symbol must go into
1958 // The index of this local symbol in the dynamic symbol table. This
1961 // The section index in the input file in which this symbol is
1967 // Whether this is a STT_SECTION symbol.
1969 // Whether this is a STT_TLS symbol.
1971 // Whether this is a STT_GNU_IFUNC symbol.
1973 // Whether this symbol has a value for the output file. This is
1981 // This is used if has_output_value_ is true. Between
1982 // count_local_symbols and finalize_local_symbols, this is the
1986 // This is used if has_output_value_ is false. It points to the
1992 // This type is used to modify relocations for -fsplit-stack. It is
2006 { this->vec_[i] = sym; } in set()
2010 { return this->vec_[i]; }
2017 // or an incremental (unchanged) object. This is size and endian specific.
2040 // If this is a regular object, return a pointer to the Sized_relobj_file
2054 { return this->get_output_section_offset(shndx) == invalid_address; } in is_output_section_offset_invalid()
2057 // This is -1 if the input section requires a special mapping, such
2063 gold_assert(shndx < this->section_offsets_.size()); in get_output_section_offset()
2064 return this->section_offsets_[shndx]; in get_output_section_offset()
2078 { this->local_got_offsets_.clear(); } in clear_got_offsets()
2083 { return this->section_offsets_; } in section_offsets()
2093 Address off = this->get_output_section_offset(shndx); in do_output_section_offset()
2103 gold_assert(shndx < this->section_offsets_.size()); in do_set_section_offset()
2104 this->section_offsets_[shndx] = in do_set_section_offset()
2118 this->local_got_offsets_.find(key); in do_local_has_got_offset()
2119 return (p != this->local_got_offsets_.end() in do_local_has_got_offset()
2131 this->local_got_offsets_.find(key); in do_local_got_offset()
2132 gold_assert(p != this->local_got_offsets_.end()); in do_local_got_offset()
2146 this->local_got_offsets_.find(key); in do_set_local_got_offset()
2147 if (p != this->local_got_offsets_.end()) in do_set_local_got_offset()
2153 this->local_got_offsets_.insert(std::make_pair(key, g)); in do_set_local_got_offset()
2163 // Return TRUE if this is a big-endian object file.
2169 // The GOT offsets of local symbols. This map also stores GOT offsets
2179 // output section. This is INVALID_ADDRESS if the input section requires a
2184 // A regular object file. This is size and endian specific.
2216 { this->do_setup(); } in setup()
2221 { return this; } in sized_relobj()
2225 { return this; } in sized_relobj()
2230 { return this->e_type_; } in e_type()
2235 { return this->osabi_; } in osabi()
2237 // Return the number of symbols. This is only valid after
2241 { return this->local_symbol_count_ + this->symbols_.size(); } in symbol_count()
2248 if (sym >= this->local_symbol_count_) in global_symbol()
2250 gold_assert(sym - this->local_symbol_count_ < this->symbols_.size()); in global_symbol()
2251 return this->symbols_[sym - this->local_symbol_count_]; in global_symbol()
2257 // in the object file. Set *IS_ORDINARY if this is an ordinary
2260 // this object file, this will set *VALUE to 0 and return SHN_UNDEF;
2270 gold_assert(sym < this->local_values_.size()); in local_symbol()
2271 return &this->local_values_[sym]; in local_symbol()
2279 gold_assert(sym < this->local_values_.size()); in symtab_index()
2280 return this->local_values_[sym].output_symtab_index(); in symtab_index()
2288 gold_assert(sym < this->local_values_.size()); in dynsym_index()
2289 return this->local_values_[sym].output_dynsym_index(); in dynsym_index()
2296 gold_assert(sym < this->local_values_.size()); in local_symbol_input_shndx()
2297 return this->local_values_[sym].input_shndx(is_ordinary); in local_symbol_input_shndx()
2304 gold_assert(sym < this->local_values_.size()); in set_must_have_output_symtab_entry()
2305 this->local_values_[sym].set_must_have_output_symtab_entry(); in set_must_have_output_symtab_entry()
2312 gold_assert(sym < this->local_values_.size()); in set_needs_output_dynsym_entry()
2313 this->local_values_[sym].set_needs_output_dynsym_entry(); in set_needs_output_dynsym_entry()
2324 // Adjust this local symbol value. Return false if the symbol
2328 { return this->do_adjust_local_symbol(lv); } in adjust_local_symbol()
2331 // specified section in this object. This is used only for error
2338 // and return its output address. This is used only for relocations in
2356 // which must not be a merged symbol value since before calling this
2369 // Return true if the layout for this object was deferred.
2371 { return this->is_deferred_layout_; } in is_deferred_layout()
2385 // Read the symbols. This is common code for all target-specific
2394 const Symbol_value<size>* symval = this->local_symbol(symndx); in do_local_symbol_value()
2395 return symval->value(this, addend); in do_local_symbol_value()
2399 // this if it doesn't have one.
2406 { return this->local_symbol(symndx)->is_tls_symbol(); } in do_local_is_tls()
2411 { return this->local_symbol_count_; } in do_local_symbol_count()
2416 { return this->output_local_symbol_count_; } in do_output_local_symbol_count()
2421 { return this->local_symbol_offset_; } in do_local_symbol_offset()
2482 { return this->elf_file_.section_size(shndx); } in do_section_size()
2487 { return this->elf_file_.section_name(shndx); } in do_section_name()
2494 Object::Location loc(this->elf_file_.section_contents(shndx)); in do_section_contents()
2501 return this->get_view(loc.file_offset, *plen, true, cache); in do_section_contents()
2515 { return this->elf_file_.section_addr(shndx); } in do_section_address()
2520 { return this->elf_file_.section_type(shndx); } in do_section_type()
2525 { return this->elf_file_.section_link(shndx); } in do_section_link()
2530 { return this->elf_file_.section_info(shndx); } in do_section_info()
2535 { return this->elf_file_.section_addralign(shndx); } in do_section_addralign()
2548 { return &this->symbols_; } in do_get_global_symbols()
2555 shndx += this->elf_file_.large_shndx_offset(); in adjust_shndx()
2572 { return this->symtab_shndx_; } in symtab_shndx()
2577 { return &this->elf_file_; } in elf_file()
2582 { return &this->local_values_; } in local_values()
2603 // This may be overriden by a child class.
2616 // Adjust this local symbol value. Return false if the symbol
2625 { this->output_local_symbol_count_ = value; } in set_output_local_symbol_count()
2633 typedef Sized_relobj_file<size, big_endian> This; typedef
2687 const typename This::Shdr& shdr, unsigned int sh_type,
2696 unsigned int shndx, const typename This::Shdr&,
2714 { this->do_relocate_sections(symtab, layout, pshdrs, of, pviews); } in relocate_sections()
2807 this->kept_comdat_sections_.insert(std::make_pair(shndx, kept)); in set_kept_comdat_section()
2818 this->kept_comdat_sections_.find(shndx); in get_kept_comdat_section()
2819 if (p == this->kept_comdat_sections_.end()) in get_kept_comdat_section()
2831 // which must not be a merged symbol value since before calling this
2864 typename This::Shdr_write shdr(this->shdr_data_); in Deferred_layout()
2865 memcpy(this->shdr_data_, pshdr, shdr_size); in Deferred_layout()
2905 // Whether this object has a GNU style .eh_frame section.
2907 // True if the layout of this object was deferred, waiting for plugin
2936 // if this object should be ignored.
2970 { return this->relobj_list_.begin(); } in relobj_begin()
2974 { return this->relobj_list_.end(); } in relobj_end()
2980 { return this->dynobj_list_.begin(); } in dynobj_begin()
2984 { return this->dynobj_list_.end(); } in dynobj_end()
2989 { return !this->dynobj_list_.empty(); } in any_dynamic()
2994 { return this->relobj_list_.size(); } in number_of_relobjs()
2999 { return this->relobj_list_.size() + this->dynobj_list_.size(); } in number_of_input_objects()
3016 // group this together to avoid passing a dozen different arguments.
3038 // Return a string showing the location of a relocation. This is
3044 // This is used to represent a section in an object and is used as the
3048 // This is similar to Section_id but is used when the section
3053 // linking. It is okay to use this for looking up sections but never use
3054 // this in an unordered container that we want to traverse in a repeatable
3070 // offset OFFSET. This sets *START to point to a view of the start of
3079 // this sees an object the linker is not configured to support, it