Support x32 IFUNC function pointer
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 27 Jan 2012 23:26:55 +0000 (23:26 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 27 Jan 2012 23:26:55 +0000 (23:26 +0000)
2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>

* x86_64.cc (Scan::global): Support x32 IFUNC function pointer.

gold/ChangeLog
gold/x86_64.cc

index 8ed05f57c39df8fe93b3800763aa1cba29b54fa2..627dcb25799763e3bac384645a7ec9eb69a47ac8 100644 (file)
@@ -1,3 +1,7 @@
+2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * x86_64.cc (Scan::global): Support x32 IFUNC function pointer.
+
 2012-01-27  H.J. Lu  <hongjiu.lu@intel.com>
 
        * configure.ac: Check if -mcmodel=medium works.
index cfc6384cd154b28a534b187209045c0121d7b556..029f89c008e702edefa4de0a8c48b2c971745736 100644 (file)
@@ -2476,7 +2476,8 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab,
                 target->copy_reloc(symtab, layout, object,
                                    data_shndx, output_section, gsym, reloc);
               }
-           else if (r_type == elfcpp::R_X86_64_64
+           else if (((size == 64 && r_type == elfcpp::R_X86_64_64)
+                     || (size == 32 && r_type == elfcpp::R_X86_64_32))
                     && gsym->type() == elfcpp::STT_GNU_IFUNC
                     && gsym->can_use_relative_reloc(false)
                     && !gsym->is_from_dynobj()