// i386.cc -- i386 target support for gold.
-// Copyright (C) 2006-2016 Free Software Foundation, Inc.
+// Copyright (C) 2006-2019 Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
NULL, // attributes_vendor
"_start", // entry_symbol_name
32, // hash_entry_size
+ elfcpp::SHT_PROGBITS, // unwind_section_type
};
// Get the GOT section, creating it if necessary.
&& r_type != elfcpp::R_386_PC32)
|| gsym == NULL
|| strcmp(gsym->name(), "___tls_get_addr") != 0)
- gold_error_at_location(relinfo, relnum, rel.get_r_offset(),
- _("missing expected TLS relocation"));
+ {
+ gold_error_at_location(relinfo, relnum, rel.get_r_offset(),
+ _("missing expected TLS relocation"));
+ this->skip_call_tls_get_addr_ = false;
+ }
else
{
this->skip_call_tls_get_addr_ = false;
case elfcpp::R_386_GOTOFF:
{
- elfcpp::Elf_types<32>::Elf_Addr value;
- value = (psymval->value(object, 0)
- - target->got_plt_section()->address());
- Relocate_functions<32, false>::rel32(view, value);
+ elfcpp::Elf_types<32>::Elf_Addr reladdr;
+ reladdr = target->got_plt_section()->address();
+ Relocate_functions<32, false>::pcrel32(view, object, psymval, reladdr);
}
break;
NULL, // attributes_vendor
"_start", // entry_symbol_name
32, // hash_entry_size
+ elfcpp::SHT_PROGBITS, // unwind_section_type
};
#define NACLMASK 0xe0 // 32-byte alignment mask
NULL, // attributes_vendor
"_start", // entry_symbol_name
32, // hash_entry_size
+ elfcpp::SHT_PROGBITS, // unwind_section_type
};
class Target_selector_iamcu : public Target_selector