2009-10-30 Doug Kwan <dougkwan@google.com>
* arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
This commit is contained in:
parent
5d4e2b767e
commit
ebabffbd89
|
@ -1,3 +1,7 @@
|
||||||
|
2009-10-30 Doug Kwan <dougkwan@google.com>
|
||||||
|
|
||||||
|
* arm.cc: Use Arm_address instead of elfcpp::Elf_types<32>::Elf_Addr.
|
||||||
|
|
||||||
2009-10-28 Ian Lance Taylor <iant@google.com>
|
2009-10-28 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
* object.h (class Relobj): Drop options parameter from
|
* object.h (class Relobj): Drop options parameter from
|
||||||
|
|
50
gold/arm.cc
50
gold/arm.cc
|
@ -1136,7 +1136,7 @@ class Target_arm : public Sized_target<32, big_endian>
|
||||||
Output_section* output_section,
|
Output_section* output_section,
|
||||||
bool needs_special_offset_handling,
|
bool needs_special_offset_handling,
|
||||||
unsigned char* view,
|
unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr view_address,
|
Arm_address view_address,
|
||||||
section_size_type view_size,
|
section_size_type view_size,
|
||||||
const Reloc_symbol_changes*);
|
const Reloc_symbol_changes*);
|
||||||
|
|
||||||
|
@ -1165,7 +1165,7 @@ class Target_arm : public Sized_target<32, big_endian>
|
||||||
off_t offset_in_output_section,
|
off_t offset_in_output_section,
|
||||||
const Relocatable_relocs*,
|
const Relocatable_relocs*,
|
||||||
unsigned char* view,
|
unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr view_address,
|
Arm_address view_address,
|
||||||
section_size_type view_size,
|
section_size_type view_size,
|
||||||
unsigned char* reloc_view,
|
unsigned char* reloc_view,
|
||||||
section_size_type reloc_view_size);
|
section_size_type reloc_view_size);
|
||||||
|
@ -1279,7 +1279,7 @@ class Target_arm : public Sized_target<32, big_endian>
|
||||||
const elfcpp::Rel<32, big_endian>&,
|
const elfcpp::Rel<32, big_endian>&,
|
||||||
unsigned int r_type, const Sized_symbol<32>*,
|
unsigned int r_type, const Sized_symbol<32>*,
|
||||||
const Symbol_value<32>*,
|
const Symbol_value<32>*,
|
||||||
unsigned char*, elfcpp::Elf_types<32>::Elf_Addr,
|
unsigned char*, Arm_address,
|
||||||
section_size_type);
|
section_size_type);
|
||||||
|
|
||||||
// Return whether we want to pass flag NON_PIC_REF for this
|
// Return whether we want to pass flag NON_PIC_REF for this
|
||||||
|
@ -1534,7 +1534,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
arm_branch_common(unsigned char *view,
|
arm_branch_common(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
||||||
|
@ -1688,7 +1688,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
rel32(unsigned char *view,
|
rel32(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
||||||
|
@ -1705,7 +1705,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
thm_call(unsigned char *view,
|
thm_call(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
// A thumb call consists of two instructions.
|
// A thumb call consists of two instructions.
|
||||||
|
@ -1740,8 +1740,8 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
// R_ARM_BASE_PREL: B(S) + A - P
|
// R_ARM_BASE_PREL: B(S) + A - P
|
||||||
static inline typename This::Status
|
static inline typename This::Status
|
||||||
base_prel(unsigned char* view,
|
base_prel(unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr origin,
|
Arm_address origin,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address)
|
Arm_address address)
|
||||||
{
|
{
|
||||||
Base::rel32(view, origin - address);
|
Base::rel32(view, origin - address);
|
||||||
return STATUS_OKAY;
|
return STATUS_OKAY;
|
||||||
|
@ -1750,7 +1750,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
// R_ARM_BASE_ABS: B(S) + A
|
// R_ARM_BASE_ABS: B(S) + A
|
||||||
static inline typename This::Status
|
static inline typename This::Status
|
||||||
base_abs(unsigned char* view,
|
base_abs(unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr origin)
|
Arm_address origin)
|
||||||
{
|
{
|
||||||
Base::rel32(view, origin);
|
Base::rel32(view, origin);
|
||||||
return STATUS_OKAY;
|
return STATUS_OKAY;
|
||||||
|
@ -1769,7 +1769,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
static inline typename This::Status
|
static inline typename This::Status
|
||||||
got_prel(unsigned char* view,
|
got_prel(unsigned char* view,
|
||||||
typename elfcpp::Swap<32, big_endian>::Valtype got_offset,
|
typename elfcpp::Swap<32, big_endian>::Valtype got_offset,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address)
|
Arm_address address)
|
||||||
{
|
{
|
||||||
Base::rel32(view, got_offset - address);
|
Base::rel32(view, got_offset - address);
|
||||||
return This::STATUS_OKAY;
|
return This::STATUS_OKAY;
|
||||||
|
@ -1780,7 +1780,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
plt32(unsigned char *view,
|
plt32(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
return arm_branch_common<elfcpp::R_ARM_PLT32>(view, object, psymval,
|
return arm_branch_common<elfcpp::R_ARM_PLT32>(view, object, psymval,
|
||||||
|
@ -1792,7 +1792,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
call(unsigned char *view,
|
call(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
return arm_branch_common<elfcpp::R_ARM_CALL>(view, object, psymval,
|
return arm_branch_common<elfcpp::R_ARM_CALL>(view, object, psymval,
|
||||||
|
@ -1804,7 +1804,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
jump24(unsigned char *view,
|
jump24(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
return arm_branch_common<elfcpp::R_ARM_JUMP24>(view, object, psymval,
|
return arm_branch_common<elfcpp::R_ARM_JUMP24>(view, object, psymval,
|
||||||
|
@ -1816,7 +1816,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
prel31(unsigned char *view,
|
prel31(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
||||||
|
@ -1908,7 +1908,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
movw_prel_nc(unsigned char *view,
|
movw_prel_nc(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
||||||
|
@ -1927,7 +1927,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
movt_prel(unsigned char *view,
|
movt_prel(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address)
|
Arm_address address)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<32, big_endian>::Valtype Valtype;
|
||||||
Valtype* wv = reinterpret_cast<Valtype*>(view);
|
Valtype* wv = reinterpret_cast<Valtype*>(view);
|
||||||
|
@ -1945,7 +1945,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
thm_movw_prel_nc(unsigned char *view,
|
thm_movw_prel_nc(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
bool has_thumb_bit)
|
bool has_thumb_bit)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<16, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<16, big_endian>::Valtype Valtype;
|
||||||
|
@ -1967,7 +1967,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
||||||
thm_movt_prel(unsigned char *view,
|
thm_movt_prel(unsigned char *view,
|
||||||
const Sized_relobj<32, big_endian>* object,
|
const Sized_relobj<32, big_endian>* object,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address)
|
Arm_address address)
|
||||||
{
|
{
|
||||||
typedef typename elfcpp::Swap<16, big_endian>::Valtype Valtype;
|
typedef typename elfcpp::Swap<16, big_endian>::Valtype Valtype;
|
||||||
typedef typename elfcpp::Swap<32, big_endian>::Valtype Reltype;
|
typedef typename elfcpp::Swap<32, big_endian>::Valtype Reltype;
|
||||||
|
@ -3405,8 +3405,8 @@ Output_data_plt_arm<big_endian>::do_write(Output_file* of)
|
||||||
got_size);
|
got_size);
|
||||||
unsigned char* pov = oview;
|
unsigned char* pov = oview;
|
||||||
|
|
||||||
elfcpp::Elf_types<32>::Elf_Addr plt_address = this->address();
|
Arm_address plt_address = this->address();
|
||||||
elfcpp::Elf_types<32>::Elf_Addr got_address = this->got_plt_->address();
|
Arm_address got_address = this->got_plt_->address();
|
||||||
|
|
||||||
// Write first PLT entry. All but the last word are constants.
|
// Write first PLT entry. All but the last word are constants.
|
||||||
const size_t num_first_plt_words = (sizeof(first_plt_entry)
|
const size_t num_first_plt_words = (sizeof(first_plt_entry)
|
||||||
|
@ -4063,7 +4063,7 @@ Target_arm<big_endian>::Relocate::relocate(
|
||||||
const Sized_symbol<32>* gsym,
|
const Sized_symbol<32>* gsym,
|
||||||
const Symbol_value<32>* psymval,
|
const Symbol_value<32>* psymval,
|
||||||
unsigned char* view,
|
unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
section_size_type /* view_size */ )
|
section_size_type /* view_size */ )
|
||||||
{
|
{
|
||||||
typedef Arm_relocate_functions<big_endian> Arm_relocate_functions;
|
typedef Arm_relocate_functions<big_endian> Arm_relocate_functions;
|
||||||
|
@ -4239,7 +4239,7 @@ Target_arm<big_endian>::Relocate::relocate(
|
||||||
|
|
||||||
case elfcpp::R_ARM_GOTOFF32:
|
case elfcpp::R_ARM_GOTOFF32:
|
||||||
{
|
{
|
||||||
elfcpp::Elf_types<32>::Elf_Addr got_origin;
|
Arm_address got_origin;
|
||||||
got_origin = target->got_plt_section()->address();
|
got_origin = target->got_plt_section()->address();
|
||||||
reloc_status = Arm_relocate_functions::rel32(view, object, psymval,
|
reloc_status = Arm_relocate_functions::rel32(view, object, psymval,
|
||||||
got_origin, has_thumb_bit);
|
got_origin, has_thumb_bit);
|
||||||
|
@ -4305,7 +4305,7 @@ Target_arm<big_endian>::Relocate::relocate(
|
||||||
// Get the address origin for GOT PLT, which is allocated right
|
// Get the address origin for GOT PLT, which is allocated right
|
||||||
// after the GOT section, to calculate an absolute address of
|
// after the GOT section, to calculate an absolute address of
|
||||||
// the symbol GOT entry (got_origin + got_offset).
|
// the symbol GOT entry (got_origin + got_offset).
|
||||||
elfcpp::Elf_types<32>::Elf_Addr got_origin;
|
Arm_address got_origin;
|
||||||
got_origin = target->got_plt_section()->address();
|
got_origin = target->got_plt_section()->address();
|
||||||
reloc_status = Arm_relocate_functions::got_prel(view,
|
reloc_status = Arm_relocate_functions::got_prel(view,
|
||||||
got_origin + got_offset,
|
got_origin + got_offset,
|
||||||
|
@ -4396,7 +4396,7 @@ Target_arm<big_endian>::relocate_section(
|
||||||
Output_section* output_section,
|
Output_section* output_section,
|
||||||
bool needs_special_offset_handling,
|
bool needs_special_offset_handling,
|
||||||
unsigned char* view,
|
unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr address,
|
Arm_address address,
|
||||||
section_size_type view_size,
|
section_size_type view_size,
|
||||||
const Reloc_symbol_changes* reloc_symbol_changes)
|
const Reloc_symbol_changes* reloc_symbol_changes)
|
||||||
{
|
{
|
||||||
|
@ -4533,7 +4533,7 @@ Target_arm<big_endian>::relocate_for_relocatable(
|
||||||
off_t offset_in_output_section,
|
off_t offset_in_output_section,
|
||||||
const Relocatable_relocs* rr,
|
const Relocatable_relocs* rr,
|
||||||
unsigned char* view,
|
unsigned char* view,
|
||||||
elfcpp::Elf_types<32>::Elf_Addr view_address,
|
Arm_address view_address,
|
||||||
section_size_type view_size,
|
section_size_type view_size,
|
||||||
unsigned char* reloc_view,
|
unsigned char* reloc_view,
|
||||||
section_size_type reloc_view_size)
|
section_size_type reloc_view_size)
|
||||||
|
|
Loading…
Reference in New Issue