OSDN Git Service

2004-10-26 H.J. Lu <hongjiu.lu@intel.com>
authorhjl <hjl>
Wed, 27 Oct 2004 00:46:04 +0000 (00:46 +0000)
committerhjl <hjl>
Wed, 27 Oct 2004 00:46:04 +0000 (00:46 +0000)
PR 475
* elfxx-ia64.c (elfNN_ia64_relocate_section): Correct
R_IA64_SECREL32MSB, R_IA64_SECREL32LSB, R_IA64_SECREL64MSB
and R_IA64_SECREL64LSB.

bfd/ChangeLog
bfd/elfxx-ia64.c

index 12db6d7..7e9d085 100644 (file)
@@ -1,3 +1,10 @@
+2004-10-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR 475
+       * elfxx-ia64.c (elfNN_ia64_relocate_section): Correct
+       R_IA64_SECREL32MSB, R_IA64_SECREL32LSB, R_IA64_SECREL64MSB
+       and R_IA64_SECREL64LSB.
+
 2004-10-26  Paul Brook  <paul@codesourcery.com>
 
        * elflink.c (elf_finalize_dynstr): Skip shared aux structure.
index 917e2c3..a7d72bf 100644 (file)
@@ -4338,11 +4338,9 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
        case R_IA64_SECREL32LSB:
        case R_IA64_SECREL64MSB:
        case R_IA64_SECREL64LSB:
-         /* Make output-section relative.  */
-         if (value > input_section->output_section->vma)
-           value -= input_section->output_section->vma;
-         else
-           value = 0;
+         /* Make output-section relative to section where the symbol
+            is defined. PR 475  */
+         value -= sym_sec->output_section->vma;
          r = elfNN_ia64_install_value (hit_addr, value, r_type);
          break;