* elf32-s390.c (elf_s390_relocate_section): Use the "unresolved_reloc"
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Nov 2001 18:48:26 +0000 (18:48 +0000)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Nov 2001 18:48:26 +0000 (18:48 +0000)
scheme to get rid of an ugly complicated test.
* elf64-s390.c (elf_s390_relocate_section): Likewise.

bfd/ChangeLog
bfd/elf32-s390.c
bfd/elf64-s390.c

index 15cfb1ce50df446fad60eac56eeb209c826295ba..afd3dec8027866514ee5f631f5c8de5e6506a959 100644 (file)
@@ -1,3 +1,9 @@
+2001-11-14  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+       * elf32-s390.c (elf_s390_relocate_section): Use the "unresolved_reloc"
+       scheme to get rid of an ugly complicated test. 
+       * elf64-s390.c (elf_s390_relocate_section): Likewise.
+
 2001-11-14  Andreas Jaeger  <aj@suse.de>
 
        * cpu-i386.c (bfd_x86_64_arch_intel_syntax,bfd_x86_64_arch): Use
index aeb9805a25e80ebb34ab188d153552d3a6a97b31..2153a4c5e84190c3e241aedbd699faedbbd1c101 100644 (file)
@@ -1679,44 +1679,7 @@ elf_s390_relocate_section (output_bfd, info, input_bfd, input_section,
              || h->root.type == bfd_link_hash_defweak)
            {
              sec = h->root.u.def.section;
-             if (r_type == R_390_GOTPC
-                 || ((r_type == R_390_PLT16DBL
-                       || r_type == R_390_PLT32)
-                     && htab->splt != NULL
-                     && h->plt.offset != (bfd_vma) -1)
-                 || ((r_type == R_390_GOT12
-                       || r_type == R_390_GOT16
-                       || r_type == R_390_GOT32)
-                     && elf_hash_table (info)->dynamic_sections_created
-                     && (! info->shared
-                         || (! info->symbolic && h->dynindx != -1)
-                         || (h->elf_link_hash_flags
-                             & ELF_LINK_HASH_DEF_REGULAR) == 0))
-                 || (info->shared
-                     && ((! info->symbolic && h->dynindx != -1)
-                         || (h->elf_link_hash_flags
-                             & ELF_LINK_HASH_DEF_REGULAR) == 0)
-                     && (r_type == R_390_8
-                         || r_type == R_390_16
-                          || r_type == R_390_32
-                          || r_type == R_390_PC16
-                          || r_type == R_390_PC16DBL
-                          || r_type == R_390_PC32)
-                      && ((input_section->flags & SEC_ALLOC) != 0
-                          /* DWARF will emit R_390_32 relocations in its
-                             sections against symbols defined externally
-                             in shared libraries.  We can't do anything
-                             with them here.  */
-                          || ((input_section->flags & SEC_DEBUGGING) != 0
-                             && (h->elf_link_hash_flags
-                                 & ELF_LINK_HASH_DEF_DYNAMIC) != 0))))
-               {
-                 /* In these cases, we don't need the relocation
-                     value.  We check specially because in some
-                     obscure cases sec->output_section will be NULL.  */
-                 relocation = 0;
-               }
-             else if (sec->output_section == NULL)
+             if (sec->output_section == NULL)
                {
                  /* Set a flag that will be cleared later if we find a
                     relocation value for this symbol.  output_section
@@ -1963,7 +1926,7 @@ elf_s390_relocate_section (output_bfd, info, input_bfd, input_section,
                 {
                  relocate = false;
                   outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
-                 outrel.r_addend = relocation + rel->r_addend;
+                 outrel.r_addend = rel->r_addend;
                 }
               else
                 {
index e0a18cdbbe353f396a9693e07447befa13973baa..f4c10754af9c2716528e02014086cef5440bc640 100644 (file)
@@ -1658,52 +1658,7 @@ elf_s390_relocate_section (output_bfd, info, input_bfd, input_section,
              || h->root.type == bfd_link_hash_defweak)
            {
              sec = h->root.u.def.section;
-             if (r_type == R_390_GOTPC
-                 || r_type == R_390_GOTPCDBL
-                 || ((r_type == R_390_PLT16DBL
-                      || r_type == R_390_PLT32
-                      || r_type == R_390_PLT32DBL
-                      || r_type == R_390_PLT64)
-                      && htab->splt != NULL
-                     && h->plt.offset != (bfd_vma) -1)
-                 || ((r_type == R_390_GOT12
-                       || r_type == R_390_GOT16
-                      || r_type == R_390_GOT32
-                      || r_type == R_390_GOT64
-                      || r_type == R_390_GOTENT)
-                     && elf_hash_table (info)->dynamic_sections_created
-                     && (! info->shared
-                         || (! info->symbolic && h->dynindx != -1)
-                         || (h->elf_link_hash_flags
-                             & ELF_LINK_HASH_DEF_REGULAR) == 0))
-                 || (info->shared
-                     && ((! info->symbolic && h->dynindx != -1)
-                         || (h->elf_link_hash_flags
-                             & ELF_LINK_HASH_DEF_REGULAR) == 0)
-                     && (r_type == R_390_8
-                         || r_type == R_390_16
-                         || r_type == R_390_32
-                         || r_type == R_390_64
-                         || r_type == R_390_PC16
-                         || r_type == R_390_PC16DBL
-                         || r_type == R_390_PC32
-                         || r_type == R_390_PC32DBL
-                         || r_type == R_390_PC64)
-                      && ((input_section->flags & SEC_ALLOC) != 0
-                          /* DWARF will emit R_390_32 relocations in its
-                             sections against symbols defined externally
-                             in shared libraries.  We can't do anything
-                             with them here.  */
-                          || ((input_section->flags & SEC_DEBUGGING) != 0
-                             && (h->elf_link_hash_flags
-                                 & ELF_LINK_HASH_DEF_DYNAMIC) != 0))))
-               {
-                 /* In these cases, we don't need the relocation
-                     value.  We check specially because in some
-                     obscure cases sec->output_section will be NULL.  */
-                 relocation = 0;
-               }
-             else if (sec->output_section == NULL)
+             if (sec->output_section == NULL)
                {
                  /* Set a flag that will be cleared later if we find a
                     relocation value for this symbol.  output_section
@@ -1973,7 +1928,7 @@ elf_s390_relocate_section (output_bfd, info, input_bfd, input_section,
                 {
                  relocate = false;
                   outrel.r_info = ELF64_R_INFO (h->dynindx, r_type);
-                 outrel.r_addend = relocation + rel->r_addend;
+                 outrel.r_addend = rel->r_addend;
                 }
               else
                 {