OSDN Git Service

* output.cc (Output_reloc::get_address): Change return type to
authorian <ian>
Fri, 16 May 2008 15:27:49 +0000 (15:27 +0000)
committerian <ian>
Fri, 16 May 2008 15:27:49 +0000 (15:27 +0000)
Elf_Addr.
* output.h (class Output_reloc): Update get_address declaration.
* x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
for section addresses.

gold/ChangeLog
gold/output.cc
gold/output.h
gold/x86_64.cc

index 7ded231..9bac71f 100644 (file)
@@ -1,3 +1,11 @@
+2008-05-16  Ian Lance Taylor  <iant@google.com>
+
+       * output.cc (Output_reloc::get_address): Change return type to
+       Elf_Addr.
+       * output.h (class Output_reloc): Update get_address declaration.
+       * x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit types
+       for section addresses.
+
 2008-05-09  Ian Lance Taylor  <iant@google.com>
 
        PR 6493
index 1285896..ce29b53 100644 (file)
@@ -854,7 +854,7 @@ Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>::
 // Get the output address of a relocation.
 
 template<bool dynamic, int size, bool big_endian>
-section_offset_type
+typename elfcpp::Elf_types<size>::Elf_Addr
 Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>::get_address() const
 {
   Address address = this->address_;
index 6c7dc39..7c24372 100644 (file)
@@ -878,7 +878,7 @@ class Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
   get_symbol_index() const;
 
   // Return the output address.
-  section_offset_type
+  Address
   get_address() const;
 
   // Codes for local_sym_index_.
index 6459e50..d787700 100644 (file)
@@ -672,20 +672,22 @@ Output_data_plt_x86_64::do_write(Output_file* of)
   unsigned char* pov = oview;
 
   // The base address of the .plt section.
-  elfcpp::Elf_types<32>::Elf_Addr plt_address = this->address();
+  elfcpp::Elf_types<64>::Elf_Addr plt_address = this->address();
   // The base address of the .got section.
-  elfcpp::Elf_types<32>::Elf_Addr got_base = this->got_->address();
+  elfcpp::Elf_types<64>::Elf_Addr got_base = this->got_->address();
   // The base address of the PLT portion of the .got section,
   // which is where the GOT pointer will point, and where the
   // three reserved GOT entries are located.
-  elfcpp::Elf_types<32>::Elf_Addr got_address = this->got_plt_->address();
+  elfcpp::Elf_types<64>::Elf_Addr got_address = this->got_plt_->address();
 
   memcpy(pov, first_plt_entry, plt_entry_size);
   // We do a jmp relative to the PC at the end of this instruction.
-  elfcpp::Swap_unaligned<32, false>::writeval(pov + 2, got_address + 8
-                                             - (plt_address + 6));
-  elfcpp::Swap<32, false>::writeval(pov + 8, got_address + 16
-                                   - (plt_address + 12));
+  elfcpp::Swap_unaligned<32, false>::writeval(pov + 2,
+                                             (got_address + 8
+                                              - (plt_address + 6)));
+  elfcpp::Swap<32, false>::writeval(pov + 8,
+                                   (got_address + 16
+                                    - (plt_address + 12)));
   pov += plt_entry_size;
 
   unsigned char* got_pov = got_view;