Use absolute address for relocations when not doing a relocatable
link.
This commit is contained in:
parent
a4d4b13f68
commit
6be6f3bdcd
|
@ -375,7 +375,7 @@ relocate_for_relocatable(
|
|||
off_t offset_in_output_section,
|
||||
const Relocatable_relocs* rr,
|
||||
unsigned char* view,
|
||||
typename elfcpp::Elf_types<size>::Elf_Addr,
|
||||
typename elfcpp::Elf_types<size>::Elf_Addr view_address,
|
||||
section_size_type,
|
||||
unsigned char* reloc_view,
|
||||
section_size_type reloc_view_size)
|
||||
|
@ -466,6 +466,12 @@ relocate_for_relocatable(
|
|||
gold_assert(new_offset != -1);
|
||||
}
|
||||
|
||||
// In an object file, r_offset is an offset within the section.
|
||||
// In an executable or dynamic object, generated by
|
||||
// --emit-relocs, r_offset is an absolute address.
|
||||
if (!parameters->options().relocatable())
|
||||
new_offset += view_address;
|
||||
|
||||
reloc_write.put_r_offset(new_offset);
|
||||
reloc_write.put_r_info(elfcpp::elf_r_info<size>(new_symndx, r_type));
|
||||
|
||||
|
|
Loading…
Reference in New Issue