// object.cc -- support for an object file for linking in gold
-// Copyright (C) 2006-2020 Free Software Foundation, Inc.
+// Copyright (C) 2006-2022 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
unsigned int nsyms = this->local_symbol_count();
for (unsigned int i = 0; i < nsyms; i++)
{
- Local_got_entry_key key(i, 0);
+ Local_got_entry_key key(i);
Local_got_offsets::const_iterator p = this->local_got_offsets_.find(key);
if (p != this->local_got_offsets_.end())
{
const elfcpp::Ehdr<size, big_endian>& ehdr)
: Sized_relobj<size, big_endian>(name, input_file, offset),
elf_file_(this, ehdr),
+ osabi_(ehdr.get_ei_osabi()),
+ e_type_(ehdr.get_e_type()),
symtab_shndx_(-1U),
local_symbol_count_(0),
output_local_symbol_count_(0),
deferred_layout_relocs_(),
output_views_(NULL)
{
- this->e_type_ = ehdr.get_e_type();
}
template<int size, bool big_endian>
Layout* layout,
unsigned int shndx)
{
+ // We ignore Gnu property sections on incremental links.
+ if (parameters->incremental())
+ return;
+
section_size_type contents_len;
const unsigned char* pcontents = this->section_contents(shndx,
&contents_len,
if (this->is_section_name_included(name)
|| layout->keep_input_section (this, name)
|| sh_type == elfcpp::SHT_INIT_ARRAY
- || sh_type == elfcpp::SHT_FINI_ARRAY)
+ || sh_type == elfcpp::SHT_FINI_ARRAY
+ || this->osabi().has_shf_retain(shdr.get_sh_flags()))
{
symtab->gc()->worklist().push_back(Section_id(this, i));
}
{
// Print the filename if the -t/--trace option is selected.
if (parameters->options().trace())
- gold_info("%s", obj->name().c_str());
+ gold_trace("%s", obj->name().c_str());
if (!obj->is_dynamic())
this->relobj_list_.push_back(static_cast<Relobj*>(obj));
{
Target* target = select_target(input_file, offset,
ehdr.get_e_machine(), size, big_endian,
- ehdr.get_e_ident()[elfcpp::EI_OSABI],
- ehdr.get_e_ident()[elfcpp::EI_ABIVERSION]);
+ ehdr.get_ei_osabi(),
+ ehdr.get_ei_abiversion());
if (target == NULL)
gold_fatal(_("%s: unsupported ELF machine number %d"),
name.c_str(), ehdr.get_e_machine());