// target-reloc.h -- target specific relocation support -*- C++ -*-
-// Copyright 2006, 2007 Free Software Foundation, Inc.
+// Copyright 2006, 2007, 2008 Free Software Foundation, Inc.
// This file is part of gold.
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)
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));