* elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize
authorAlan Modra <amodra@gmail.com>
Thu, 6 Mar 2003 11:32:43 +0000 (11:32 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 6 Mar 2003 11:32:43 +0000 (11:32 +0000)
error messages.
(ELIMINATE_COPY_RELOCS): Define to zero.
(ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating
TLSLD relocs.  Report reloc types on a number of errors.  Optimize
LOCAL24PC check for non-local syms.  Don't capitalize error messages.
* elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero.
(ppc64_elf_relocate_section): Don't deref htab->tls_sec when
calculating TLSLD relocs.  Report reloc types on a number of errors.
Don't capitalize error messages.

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

index 5f949ed7fef908d4fe87a2199379277918457d34..9c3073deaba8bee166a0907e3852d49a3b36de46 100644 (file)
@@ -1,3 +1,16 @@
+2003-03-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * elf32-ppc.c (ppc_elf_create_linker_section): Don't capitalize
+       error messages.
+       (ELIMINATE_COPY_RELOCS): Define to zero.
+       (ppc_elf_relocate_section): Don't deref htab->tls_sec when calculating
+       TLSLD relocs.  Report reloc types on a number of errors.  Optimize
+       LOCAL24PC check for non-local syms.  Don't capitalize error messages.
+       * elf64-ppc.c (ELIMINATE_COPY_RELOCS): Define to zero.
+       (ppc64_elf_relocate_section): Don't deref htab->tls_sec when
+       calculating TLSLD relocs.  Report reloc types on a number of errors.
+       Don't capitalize error messages.
+
 2003-03-03  H.J. Lu <hjl@gnu.org>
 
        * elfxx-ia64.c (USE_BRL): Removed.
index 9947af855fee8d996ce6ae2cebf4347ccc39a937..236ed90ae0b25d16d136c5708704f9d1aa501e26 100644 (file)
@@ -2300,7 +2300,7 @@ ppc_elf_create_linker_section (abfd, info, which)
       switch (which)
        {
        default:
-         (*_bfd_error_handler) (_("%s: Unknown special linker type %d"),
+         (*_bfd_error_handler) (_("%s: unknown special linker type %d"),
                                 bfd_get_filename (abfd),
                                 (int) which);
 
@@ -2455,7 +2455,7 @@ ppc_elf_create_dynamic_sections (abfd, info)
    copying dynamic variables from a shared lib into an app's dynbss
    section, and instead use a dynamic relocation to point into the
    shared lib.  */
-#define ELIMINATE_COPY_RELOCS 1
+#define ELIMINATE_COPY_RELOCS 0
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  The current definition is in some section of the
@@ -4824,22 +4824,21 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                      {
                        bfd_vma value = relocation;
 
-                       if ((tls_ty & (TLS_GD | TLS_TPREL | TLS_DTPREL
-                                      | TLS_TPRELGD)) != 0)
+                       if (tls_ty == (TLS_TLS | TLS_LD))
+                         value = 1;
+                       else if (tls_ty != 0)
                          {
                            value -= htab->tls_sec->vma + DTP_OFFSET;
-                           if ((tls_ty & TLS_TPREL) != 0)
+                           if (tls_ty == (TLS_TLS | TLS_TPREL))
                              value += DTP_OFFSET - TP_OFFSET;
-                         }
 
-                       if (tls_ty == (TLS_TLS | TLS_GD))
-                         {
-                           bfd_put_32 (output_bfd, value,
-                                       htab->got->contents + off + 4);
-                           value = 1;
+                           if (tls_ty == (TLS_TLS | TLS_GD))
+                             {
+                               bfd_put_32 (output_bfd, value,
+                                           htab->got->contents + off + 4);
+                               value = 1;
+                             }
                          }
-                       else if (tls_ty == (TLS_TLS | TLS_LD))
-                         value = 1;
                        bfd_put_32 (output_bfd, value,
                                    htab->got->contents + off);
                      }
@@ -4887,10 +4886,11 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
               got at entry m+n bears little relation to the entry m.  */
            if (addend != 0)
              (*_bfd_error_handler)
-               (_("%s(%s+0x%lx): non-zero addend on got reloc against `%s'"),
+               (_("%s(%s+0x%lx): non-zero addend on %s reloc against `%s'"),
                 bfd_archive_filename (input_bfd),
                 bfd_get_section_name (input_bfd, input_section),
                 (long) rel->r_offset,
+                howto->name,
                 sym_name);
          }
        break;
@@ -4899,10 +4899,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
        case R_PPC_LOCAL24PC:
          /* It makes no sense to point a local relocation
             at a symbol not in this object.  */
-         if (h != NULL
-             && (h->root.type == bfd_link_hash_defined
-                 || h->root.type == bfd_link_hash_defweak)
-             && sec->output_section == NULL)
+         if (unresolved_reloc)
            {
              if (! (*info->callbacks->undefined_symbol) (info,
                                                          h->root.root.string,
@@ -5037,8 +5034,6 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
 
              if (skip)
                memset (&outrel, 0, sizeof outrel);
-             /* h->dynindx may be -1 if this symbol was marked to
-                become local.  */
              else if (h != NULL
                       && !SYMBOL_REFERENCES_LOCAL (info, h))
                {
@@ -5175,7 +5170,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                   || (strncmp (name, ".sbss", 5) == 0
                       && (name[5] == 0 || name[5] == '.'))))
              {
-               (*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
+               (*_bfd_error_handler) (_("%s: the target (%s) of a %s relocation is in the wrong output section (%s)"),
                                       bfd_archive_filename (input_bfd),
                                       sym_name,
                                       howto->name,
@@ -5199,7 +5194,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
            if (! (strncmp (name, ".sdata2", 7) == 0
                   || strncmp (name, ".sbss2", 6) == 0))
              {
-               (*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
+               (*_bfd_error_handler) (_("%s: the target (%s) of a %s relocation is in the wrong output section (%s)"),
                                       bfd_archive_filename (input_bfd),
                                       sym_name,
                                       howto->name,
@@ -5256,7 +5251,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
 
            else
              {
-               (*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
+               (*_bfd_error_handler) (_("%s: the target (%s) of a %s relocation is in the wrong output section (%s)"),
                                       bfd_archive_filename (input_bfd),
                                       sym_name,
                                       howto->name,
@@ -5310,7 +5305,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
        case R_PPC_EMB_RELST_HA:
        case R_PPC_EMB_BIT_FLD:
          (*_bfd_error_handler)
-           (_("%s: Relocation %s is not yet supported for symbol %s."),
+           (_("%s: relocation %s is not yet supported for symbol %s."),
             bfd_archive_filename (input_bfd),
             howto->name,
             sym_name);
@@ -5339,7 +5334,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
        case R_PPC_EMB_NADDR16_HA:
        case R_PPC_EMB_RELST_HA:
          /* It's just possible that this symbol is a weak symbol
-            that's not actually defined anywhere. In that case,
+            that's not actually defined anywhere.  In that case,
             'sec' would be NULL, and we should leave the symbol
             alone (it will be set to zero elsewhere in the link).  */
          if (sec != NULL)
@@ -5363,10 +5358,11 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
               && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
        {
          (*_bfd_error_handler)
-           (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"),
+           (_("%s(%s+0x%lx): unresolvable %s relocation against symbol `%s'"),
             bfd_archive_filename (input_bfd),
             bfd_get_section_name (input_bfd, input_section),
             (long) rel->r_offset,
+            howto->name,
             sym_name);
          ret = FALSE;
        }
@@ -5412,10 +5408,10 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          else
            {
              (*_bfd_error_handler)
-               (_("%s(%s+0x%lx): reloc against `%s': error %d"),
+               (_("%s(%s+0x%lx): %s reloc against `%s': error %d"),
                 bfd_archive_filename (input_bfd),
                 bfd_get_section_name (input_bfd, input_section),
-                (long) rel->r_offset, sym_name, (int) r);
+                (long) rel->r_offset, howto->name, sym_name, (int) r);
              ret = FALSE;
            }
        }
index 23d95d512e40eac18047bfd3fd54cdaa5f5879ce..5963e97fdd764a28175192a5828f41601fcf4d77 100644 (file)
@@ -2545,7 +2545,7 @@ struct plt_entry
    copying dynamic variables from a shared lib into an app's dynbss
    section, and instead use a dynamic relocation to point into the
    shared lib.  */
-#define ELIMINATE_COPY_RELOCS 1
+#define ELIMINATE_COPY_RELOCS 0
 
 /* Section name for stubs is the associated section name plus this
    string.  */
@@ -7670,21 +7670,22 @@ ppc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
                else
                  {
                    relocation += rel->r_addend;
-                   if (tls_type != 0)
+                   if (tls_type == (TLS_TLS | TLS_LD))
+                     relocation = 1;
+                   else if (tls_type != 0)
                      {
                        relocation -= htab->tls_sec->vma + DTP_OFFSET;
-                       if ((tls_type & TLS_TPREL) != 0)
+                       if (tls_type == (TLS_TLS | TLS_TPREL))
                          relocation += DTP_OFFSET - TP_OFFSET;
-                     }
 
-                   if ((tls_type & TLS_GD) != 0)
-                     {
-                       bfd_put_64 (output_bfd, relocation,
-                                   htab->sgot->contents + off + 8);
-                       relocation = 1;
+                       if (tls_type == (TLS_TLS | TLS_GD))
+                         {
+                           bfd_put_64 (output_bfd, relocation,
+                                       htab->sgot->contents + off + 8);
+                           relocation = 1;
+                         }
                      }
-                   else if (tls_type == (TLS_TLS | TLS_LD))
-                     relocation = 1;
+
                    bfd_put_64 (output_bfd, relocation,
                                htab->sgot->contents + off);
                  }
@@ -7981,7 +7982,7 @@ ppc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          /* These ones haven't been implemented yet.  */
 
          (*_bfd_error_handler)
-           (_("%s: Relocation %s is not supported for symbol %s."),
+           (_("%s: relocation %s is not supported for symbol %s."),
             bfd_archive_filename (input_bfd),
             ppc64_elf_howto_table[(int) r_type]->name, sym_name);
 
@@ -8095,10 +8096,11 @@ ppc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
               && (h->elf_link_hash_flags & ELF_LINK_HASH_DEF_DYNAMIC) != 0))
        {
          (*_bfd_error_handler)
-           (_("%s(%s+0x%lx): unresolvable relocation against symbol `%s'"),
+           (_("%s(%s+0x%lx): unresolvable %s relocation against symbol `%s'"),
             bfd_archive_filename (input_bfd),
             bfd_get_section_name (input_bfd, input_section),
             (long) rel->r_offset,
+            ppc64_elf_howto_table[(int) r_type]->name,
             h->root.root.string);
          ret = FALSE;
        }
@@ -8140,10 +8142,13 @@ ppc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
          else
            {
              (*_bfd_error_handler)
-               (_("%s(%s+0x%lx): reloc against `%s': error %d"),
+               (_("%s(%s+0x%lx): %s reloc against `%s': error %d"),
                 bfd_archive_filename (input_bfd),
                 bfd_get_section_name (input_bfd, input_section),
-                (long) rel->r_offset, sym_name, (int) r);
+                (long) rel->r_offset,
+                ppc64_elf_howto_table[(int) r_type]->name,
+                sym_name,
+                (int) r);
              ret = FALSE;
            }
        }