Implement generic SHF_EXCLUDE.
[deliverable/binutils-gdb.git] / binutils / readelf.c
index e3b54873ad65b95c7237cd176f90380cd8a25fcd..bcb24c2d00c4a3c1c0b3eeebcb0b5928e5c53780 100644 (file)
 #include "elf/sh.h"
 #include "elf/sparc.h"
 #include "elf/spu.h"
+#include "elf/tic6x.h"
 #include "elf/v850.h"
 #include "elf/vax.h"
 #include "elf/x86-64.h"
@@ -262,10 +263,10 @@ static void (* byte_put) (unsigned char *, bfd_vma, int);
 
 #define UNKNOWN -1
 
-#define SECTION_NAME(X)        \
-  ((X) == NULL ? "<none>" \
-  : string_table == NULL ? "<no-name>" \
-  : ((X)->sh_name >= string_table_length ? "<corrupt>" \
+#define SECTION_NAME(X)                                                \
+  ((X) == NULL ? _("<none>")                                   \
+   : string_table == NULL ? _("<no-name>")                     \
+   : ((X)->sh_name >= string_table_length ? _("<corrupt>")     \
   : string_table + (X)->sh_name))
 
 #define DT_VERSIONTAGIDX(tag)  (DT_VERNEEDNUM - (tag)) /* Reverse order!  */
@@ -648,6 +649,7 @@ guess_is_rela (unsigned int e_machine)
     case EM_SPARC32PLUS:
     case EM_SPARCV9:
     case EM_SPU:
+    case EM_TI_C6000:
     case EM_V850:
     case EM_CYGNUS_V850:
     case EM_VAX:
@@ -1261,6 +1263,10 @@ dump_relocations (FILE * file,
        case EM_C166:
          rtype = elf_xc16x_reloc_type (type);
          break;
+
+       case EM_TI_C6000:
+         rtype = elf_tic6x_reloc_type (type);
+         break;
        }
 
       if (rtype == NULL)
@@ -1296,7 +1302,7 @@ dump_relocations (FILE * file,
       else if (symtab_index)
        {
          if (symtab == NULL || symtab_index >= nsyms)
-           printf (" bad symbol index: %08lx", (unsigned long) symtab_index);
+           printf (_(" bad symbol index: %08lx"), (unsigned long) symtab_index);
          else
            {
              Elf_Internal_Sym * psym;
@@ -1638,6 +1644,21 @@ get_score_dynamic_type (unsigned long type)
     }
 }
 
+static const char *
+get_tic6x_dynamic_type (unsigned long type)
+{
+  switch (type)
+    {
+    case DT_C6000_GSYM_OFFSET: return "C6000_GSYM_OFFSET";
+    case DT_C6000_GSTR_OFFSET: return "C6000_GSTR_OFFSET";
+    case DT_C6000_DSBT_BASE:   return "C6000_DSBT_BASE";
+    case DT_C6000_DSBT_SIZE:   return "C6000_DSBT_SIZE";
+    case DT_C6000_PREEMPTMAP:  return "C6000_PREEMPTMAP";
+    case DT_C6000_DSBT_INDEX:  return "C6000_DSBT_INDEX";
+    default:
+      return NULL;
+    }
+}
 
 static const char *
 get_dynamic_type (unsigned long type)
@@ -1750,6 +1771,9 @@ get_dynamic_type (unsigned long type)
            case EM_SCORE:
              result = get_score_dynamic_type (type);
              break;
+           case EM_TI_C6000:
+             result = get_tic6x_dynamic_type (type);
+             break;
            default:
              result = NULL;
              break;
@@ -2176,7 +2200,7 @@ decode_ARM_machine_flags (unsigned e_flags, char buf[])
     }
 
   if (unknown)
-    strcat (buf,", <unknown>");
+    strcat (buf,_(", <unknown>"));
 }
 
 static char *
@@ -2302,10 +2326,10 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
            strcat (buf, ", emb");
 
          if (e_flags & EF_PPC_RELOCATABLE)
-           strcat (buf, ", relocatable");
+           strcat (buf, _(", relocatable"));
 
          if (e_flags & EF_PPC_RELOCATABLE_LIB)
-           strcat (buf, ", relocatable-lib");
+           strcat (buf, _(", relocatable-lib"));
          break;
 
        case EM_V850:
@@ -2322,7 +2346,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
              strcat (buf, ", v850");
              break;
            default:
-             strcat (buf, ", unknown v850 architecture variant");
+             strcat (buf, _(", unknown v850 architecture variant"));
              break;
            }
          break;
@@ -2378,7 +2402,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
               MIPS ELF does not specify EF_MIPS_MACH, it is a GNU
               extension.  */
              break;
-           default: strcat (buf, ", unknown CPU"); break;
+           default: strcat (buf, _(", unknown CPU")); break;
            }
 
          switch ((e_flags & EF_MIPS_ABI))
@@ -2393,7 +2417,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
               This means it is likely to be an o32 file, but not for
               sure.  */
              break;
-           default: strcat (buf, ", unknown ABI"); break;
+           default: strcat (buf, _(", unknown ABI")); break;
            }
 
          if (e_flags & EF_MIPS_ARCH_ASE_MDMX)
@@ -2413,7 +2437,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
            case E_MIPS_ARCH_32R2: strcat (buf, ", mips32r2"); break;
            case E_MIPS_ARCH_64: strcat (buf, ", mips64"); break;
            case E_MIPS_ARCH_64R2: strcat (buf, ", mips64r2"); break;
-           default: strcat (buf, ", unknown ISA"); break;
+           default: strcat (buf, _(", unknown ISA")); break;
            }
 
          break;
@@ -2442,7 +2466,7 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
            case EF_SH2A_SH3_NOFPU: strcat (buf, ", sh2a-nofpu-or-sh3-nommu"); break;
            case EF_SH2A_SH4: strcat (buf, ", sh2a-or-sh4"); break;
            case EF_SH2A_SH3E: strcat (buf, ", sh2a-or-sh3e"); break;
-           default: strcat (buf, ", unknown ISA"); break;
+           default: strcat (buf, _(", unknown ISA")); break;
            }
 
          break;
@@ -2544,6 +2568,10 @@ get_machine_flags (unsigned e_flags, unsigned e_machine)
        case EM_S390:
          if (e_flags & EF_S390_HIGH_GPRS)
            strcat (buf, ", highgprs");
+
+       case EM_TI_C6000:
+         if ((e_flags & EF_C6000_REL))
+           strcat (buf, ", relocatable module");
        }
     }
 
@@ -2573,9 +2601,42 @@ get_osabi_name (unsigned int osabi)
     case ELFOSABI_NSK:         return "HP - Non-Stop Kernel";
     case ELFOSABI_AROS:                return "AROS";
     case ELFOSABI_FENIXOS:     return "FenixOS";
-    case ELFOSABI_STANDALONE:  return _("Standalone App");
-    case ELFOSABI_ARM:         return "ARM";
     default:
+      if (osabi >= 64)
+       switch (elf_header.e_machine)
+         {
+         case EM_ARM:
+           switch (osabi)
+             {
+             case ELFOSABI_ARM:        return "ARM";
+             default:
+               break;
+             }
+           break;
+
+         case EM_MSP430:
+         case EM_MSP430_OLD:
+           switch (osabi)
+             {
+             case ELFOSABI_STANDALONE: return _("Standalone App");
+             default:
+               break;
+             }
+           break;
+
+         case EM_TI_C6000:
+           switch (osabi)
+             {
+             case ELFOSABI_C6000_ELFABI:       return _("Bare-metal C6000");
+             case ELFOSABI_C6000_LINUX:        return "Linux C6000";
+             default:
+               break;
+             }
+           break;
+
+         default:
+           break;
+         }
       snprintf (buff, sizeof (buff), _("<unknown: %x>"), osabi);
       return buff;
     }
@@ -2662,6 +2723,19 @@ get_ia64_segment_type (unsigned long type)
   return NULL;
 }
 
+static const char *
+get_tic6x_segment_type (unsigned long type)
+{
+  switch (type)
+    {
+    case PT_C6000_PHATTR:      return "C6000_PHATTR";
+    default:
+      break;
+    }
+
+  return NULL;
+}
+
 static const char *
 get_segment_type (unsigned long p_type)
 {
@@ -2703,6 +2777,9 @@ get_segment_type (unsigned long p_type)
            case EM_IA_64:
              result = get_ia64_segment_type (p_type);
              break;
+           case EM_TI_C6000:
+             result = get_tic6x_segment_type (p_type);
+             break;
            default:
              result = NULL;
              break;
@@ -2863,6 +2940,33 @@ get_arm_section_type_name (unsigned int sh_type)
   return NULL;
 }
 
+static const char *
+get_tic6x_section_type_name (unsigned int sh_type)
+{
+  switch (sh_type)
+    {
+    case SHT_C6000_UNWIND:
+      return "C6000_UNWIND";
+    case SHT_C6000_PREEMPTMAP:
+      return "C6000_PREEMPTMAP";
+    case SHT_C6000_ATTRIBUTES:
+      return "C6000_ATTRIBUTES";
+    case SHT_TI_ICODE:
+      return "TI_ICODE";
+    case SHT_TI_XREF:
+      return "TI_XREF";
+    case SHT_TI_HANDLER:
+      return "TI_HANDLER";
+    case SHT_TI_INITINFO:
+      return "TI_INITINFO";
+    case SHT_TI_PHATTRS:
+      return "TI_PHATTRS";
+    default:
+      break;
+    }
+  return NULL;
+}
+
 static const char *
 get_section_type_name (unsigned int sh_type)
 {
@@ -2921,6 +3025,9 @@ get_section_type_name (unsigned int sh_type)
            case EM_ARM:
              result = get_arm_section_type_name (sh_type);
              break;
+           case EM_TI_C6000:
+             result = get_tic6x_section_type_name (sh_type);
+             break;
            default:
              result = NULL;
              break;
@@ -3348,7 +3455,7 @@ process_file_header (void)
              (elf_header.e_ident[EI_VERSION] == EV_CURRENT
               ? "(current)"
               : (elf_header.e_ident[EI_VERSION] != EV_NONE
-                 ? "<unknown: %lx>"
+                 ? _("<unknown: %lx>")
                  : "")));
       printf (_("  OS/ABI:                            %s\n"),
              get_osabi_name (elf_header.e_ident[EI_OSABI]));
@@ -3397,7 +3504,7 @@ process_file_header (void)
        printf (" (%u)", section_headers[0].sh_link);
       else if (elf_header.e_shstrndx != SHN_UNDEF
               && elf_header.e_shstrndx >= elf_header.e_shnum)
-       printf (" <corrupt: out of range>");
+       printf (_(" <corrupt: out of range>"));
       putc ('\n', stdout);
     }
 
@@ -3743,7 +3850,8 @@ process_program_headers (FILE * file)
 
          for (j = 1; j < elf_header.e_shnum; j++, section++)
            {
-             if (ELF_IS_SECTION_IN_SEGMENT_MEMORY (section, segment))
+             if (ELF_SECTION_SIZE (section, segment) != 0
+                 && ELF_SECTION_IN_SEGMENT (section, segment))
                printf ("%s ", SECTION_NAME (section));
            }
 
@@ -4044,8 +4152,9 @@ get_elf_section_flags (bfd_vma sh_flags)
       /* 15 */ { STRING_COMMA_LEN ("VMS_VECTOR") },
       /* 16 */ { STRING_COMMA_LEN ("VMS_ALLOC_64BIT") },
       /* 17 */ { STRING_COMMA_LEN ("VMS_PROTECTED") },
-      /* SPARC specific.  */
+      /* Generic.  */
       /* 18 */ { STRING_COMMA_LEN ("EXCLUDE") },
+      /* SPARC specific.  */
       /* 19 */ { STRING_COMMA_LEN ("ORDERED") }
     };
 
@@ -4077,6 +4186,7 @@ get_elf_section_flags (bfd_vma sh_flags)
            case SHF_OS_NONCONFORMING:  sindex = 7; break;
            case SHF_GROUP:             sindex = 8; break;
            case SHF_TLS:               sindex = 9; break;
+           case SHF_EXCLUDE:           sindex = 18; break;
 
            default:
              sindex = -1;
@@ -4105,13 +4215,12 @@ get_elf_section_flags (bfd_vma sh_flags)
                case EM_386:
                case EM_486:
                case EM_X86_64:
+               case EM_L1OM:
                case EM_OLD_SPARCV9:
                case EM_SPARC32PLUS:
                case EM_SPARCV9:
                case EM_SPARC:
-                 if (flag == SHF_EXCLUDE)
-                   sindex = 18;
-                 else if (flag == SHF_ORDERED)
+                 if (flag == SHF_ORDERED)
                    sindex = 19;
                  break;
                default:
@@ -4154,6 +4263,7 @@ get_elf_section_flags (bfd_vma sh_flags)
            case SHF_OS_NONCONFORMING:  *p = 'O'; break;
            case SHF_GROUP:             *p = 'G'; break;
            case SHF_TLS:               *p = 'T'; break;
+           case SHF_EXCLUDE:           *p = 'E'; break;
 
            default:
              if ((elf_header.e_machine == EM_X86_64
@@ -4221,7 +4331,7 @@ get_elf_section_flags (bfd_vma sh_flags)
              *p++ = ',';
              *p++ = ' ';
            }
-         sprintf (p, "UNKNOWN (%*.*lx)", field_size, field_size,
+         sprintf (p, _("UNKNOWN (%*.*lx)"), field_size, field_size,
                   (unsigned long) unknown_flags);
          p += 10 + field_size;
        }
@@ -4525,6 +4635,7 @@ process_section_headers (FILE * file)
                case EM_386:
                case EM_486:
                case EM_X86_64:
+               case EM_L1OM:
                case EM_OLD_SPARCV9:
                case EM_SPARC32PLUS:
                case EM_SPARCV9:
@@ -4818,7 +4929,7 @@ process_section_groups (FILE * file)
                  strtab_size = strtab != NULL ? strtab_sec->sh_size : 0;
                }
              group_name = sym->st_name < strtab_size
-                          ? strtab + sym->st_name : "<corrupt>";
+               ? strtab + sym->st_name : _("<corrupt>");
            }
 
          start = (unsigned char *) get_data (NULL, file, section->sh_offset,
@@ -4832,7 +4943,7 @@ process_section_groups (FILE * file)
 
          if (do_section_groups)
            {
-             printf ("\n%sgroup section [%5u] `%s' [%s] contains %u sections:\n",
+             printf (_("\n%sgroup section [%5u] `%s' [%s] contains %u sections:\n"),
                      get_group_flags (entry), i, name, group_name, size);
 
              printf (_("   [Index]    Name\n"));
@@ -5144,7 +5255,7 @@ find_symbol_for_address (Elf_Internal_Sym * symtab,
   if (best)
     {
       *symname = (best->st_name >= strtab_size
-                 ? "<corrupt>" : strtab + best->st_name);
+                 ? _("<corrupt>") : strtab + best->st_name);
       *offset = dist;
       return;
     }
@@ -5198,7 +5309,7 @@ dump_ia64_unwind (struct ia64_unw_aux_info * aux)
 
       if (UNW_VER (stamp) != 1)
        {
-         printf ("\tUnknown version.\n");
+         printf (_("\tUnknown version.\n"));
          continue;
        }
 
@@ -6013,7 +6124,7 @@ decode_arm_unwind (struct arm_unw_aux_info *aux,
     }                                  \
   else                                 \
     {                                  \
-      printf ("[Truncated opcode]\n"); \
+      printf (_("[Truncated opcode]\n"));      \
       return;                          \
     }                                  \
   printf (_("0x%02x "), OP)
@@ -6125,6 +6236,7 @@ decode_arm_unwind (struct arm_unw_aux_info *aux,
              unsigned int mask = ((op & 0x0f) << 8) | op2;
              int first = 1;
              int i;
+
              printf ("pop {");
              for (i = 0; i < 12; i++)
                if (mask & (1 << i))
@@ -6194,10 +6306,10 @@ decode_arm_unwind (struct arm_unw_aux_info *aux,
        }
       else if (op == 0xb2)
        {
-         unsigned char buf[5];
+         unsigned char buf[9];
          unsigned int i, len;
          unsigned long offset;
-         for (i = 0; i < 9; i++)
+         for (i = 0; i < sizeof (buf); i++)
            {
              GET_OP (buf[i]);
              if ((buf[i] & 0x80) == 0)
@@ -6276,7 +6388,7 @@ dump_arm_unwind (struct arm_unw_aux_info *aux, Elf_Internal_Shdr *exidx_sec)
        }
       else
        {
-         bfd_vma table, table_offset;
+         bfd_vma table, table_offset = 0;
          Elf_Internal_Shdr *table_sec;
 
          fputs ("@", stdout);
@@ -6406,7 +6518,7 @@ dynamic_section_mips_val (Elf_Internal_Dyn * entry)
     {
     case DT_MIPS_FLAGS:
       if (entry->d_un.d_val == 0)
-       printf ("NONE\n");
+       printf (_("NONE\n"));
       else
        {
          static const char * opts[] =
@@ -6419,6 +6531,7 @@ dynamic_section_mips_val (Elf_Internal_Dyn * entry)
          };
          unsigned int cnt;
          int first = 1;
+
          for (cnt = 0; cnt < ARRAY_SIZE (opts); ++cnt)
            if (entry->d_un.d_val & (1 << cnt))
              {
@@ -6431,9 +6544,9 @@ dynamic_section_mips_val (Elf_Internal_Dyn * entry)
 
     case DT_MIPS_IVERSION:
       if (VALID_DYNAMIC_NAME (entry->d_un.d_val))
-       printf ("Interface Version: %s\n", GET_DYNAMIC_NAME (entry->d_un.d_val));
+       printf (_("Interface Version: %s\n"), GET_DYNAMIC_NAME (entry->d_un.d_val));
       else
-       printf ("<corrupt: %ld>\n", (long) entry->d_un.d_ptr);
+       printf (_("<corrupt: %ld>\n"), (long) entry->d_un.d_ptr);
       break;
 
     case DT_MIPS_TIME_STAMP:
@@ -6446,7 +6559,7 @@ dynamic_section_mips_val (Elf_Internal_Dyn * entry)
        snprintf (timebuf, sizeof (timebuf), "%04u-%02u-%02uT%02u:%02u:%02u",
                  tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
                  tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
-       printf ("Time Stamp: %s\n", timebuf);
+       printf (_("Time Stamp: %s\n"), timebuf);
       }
       break;
 
@@ -6471,7 +6584,6 @@ dynamic_section_mips_val (Elf_Internal_Dyn * entry)
     }
 }
 
-
 static void
 dynamic_section_parisc_val (Elf_Internal_Dyn * entry)
 {
@@ -6669,7 +6781,7 @@ print_dynamic_flags (bfd_vma flags)
        case DF_TEXTREL:        fputs ("TEXTREL", stdout); break;
        case DF_BIND_NOW:       fputs ("BIND_NOW", stdout); break;
        case DF_STATIC_TLS:     fputs ("STATIC_TLS", stdout); break;
-       default:                fputs ("unknown", stdout); break;
+       default:                fputs (_("unknown"), stdout); break;
        }
     }
   puts ("");
@@ -7146,7 +7258,7 @@ process_dynamic_section (FILE * file)
          if (do_dynamic)
            {
              print_vma (entry->d_un.d_val, UNSIGNED);
-             printf (" (bytes)\n");
+             printf (_(" (bytes)\n"));
            }
          break;
 
@@ -7276,7 +7388,7 @@ get_ver_flags (unsigned int flags)
     }
 
   if (flags & ~(VER_FLG_BASE | VER_FLG_WEAK | VER_FLG_INFO))
-    strcat (buff, "| <unknown>");
+    strcat (buff, _("| <unknown>"));
 
   return buff;
 }
@@ -7318,7 +7430,7 @@ process_version_sections (FILE * file)
                    (unsigned long) section->sh_offset, section->sh_link,
                    section->sh_link < elf_header.e_shnum
                    ? SECTION_NAME (section_headers + section->sh_link)
-                   : "<corrupt>");
+                   : _("<corrupt>"));
 
            edefs = (Elf_External_Verdef *)
                 get_data (NULL, file, section->sh_offset, 1,section->sh_size,
@@ -7420,7 +7532,7 @@ process_version_sections (FILE * file)
                    (unsigned long) section->sh_offset, section->sh_link,
                    section->sh_link < elf_header.e_shnum
                    ? SECTION_NAME (section_headers + section->sh_link)
-                   : "<corrupt>");
+                   : _("<corrupt>"));
 
            eneed = (Elf_External_Verneed *) get_data (NULL, file,
                                                        section->sh_offset, 1,
@@ -7968,7 +8080,7 @@ print_dynamic_symbol (bfd_vma si, unsigned long hn)
   if (VALID_DYNAMIC_NAME (psym->st_name))
     print_symbol (25, GET_DYNAMIC_NAME (psym->st_name));
   else
-    printf (" <corrupt: %14ld>", psym->st_name);
+    printf (_(" <corrupt: %14ld>"), psym->st_name);
   putchar ('\n');
 }
 
@@ -8275,7 +8387,7 @@ process_symbol_table (FILE * file)
                printf (" [%s] ", get_symbol_other (psym->st_other ^ ELF_ST_VISIBILITY (psym->st_other)));
              printf (" %4s ", get_symbol_index_type (psym->st_shndx));
              print_symbol (25, psym->st_name < strtab_size
-                           ? strtab + psym->st_name : "<corrupt>");
+                           ? strtab + psym->st_name : _("<corrupt>"));
 
              if (section->sh_type == SHT_DYNSYM &&
                  version_info[DT_VERSIONTAGIDX (DT_VERSYM)] != 0)
@@ -8355,7 +8467,7 @@ process_symbol_table (FILE * file)
                            {
                              printf ("@%s (%d)",
                                      ivna.vna_name < strtab_size
-                                     ? strtab + ivna.vna_name : "<corrupt>",
+                                     ? strtab + ivna.vna_name : _("<corrupt>"),
                                      ivna.vna_other);
                              check_def = 0;
                            }
@@ -8408,7 +8520,7 @@ process_symbol_table (FILE * file)
                                printf ((vers_data & VERSYM_HIDDEN)
                                        ? "@%s" : "@@%s",
                                        ivda.vda_name < strtab_size
-                                       ? strtab + ivda.vda_name : "<corrupt>");
+                                       ? strtab + ivda.vda_name : _("<corrupt>"));
                            }
                        }
                    }
@@ -8584,7 +8696,7 @@ process_syminfo (FILE * file ATTRIBUTE_UNUSED)
       if (VALID_DYNAMIC_NAME (dynamic_symbols[i].st_name))
        print_symbol (30, GET_DYNAMIC_NAME (dynamic_symbols[i].st_name));
       else
-       printf ("<corrupt: %19ld>", dynamic_symbols[i].st_name);
+       printf (_("<corrupt: %19ld>"), dynamic_symbols[i].st_name);
       putchar (' ');
 
       switch (dynamic_syminfo[i].si_boundto)
@@ -8801,6 +8913,8 @@ is_32bit_abs_reloc (unsigned int reloc_type)
        || reloc_type == 23; /* R_SPARC_UA32.  */
     case EM_SPU:
       return reloc_type == 6; /* R_SPU_ADDR32 */
+    case EM_TI_C6000:
+      return reloc_type == 1; /* R_C6000_ABS32.  */
     case EM_CYGNUS_V850:
     case EM_V850:
       return reloc_type == 6; /* R_V850_ABS32.  */
@@ -8984,6 +9098,8 @@ is_16bit_abs_reloc (unsigned int reloc_type)
     case EM_ALTERA_NIOS2:
     case EM_NIOS32:
       return reloc_type == 9; /* R_NIOS_16.  */
+    case EM_TI_C6000:
+      return reloc_type == 2; /* R_C6000_ABS16.  */
     case EM_XC16X:
     case EM_C166:
       return reloc_type == 2; /* R_XC16C_ABS_16.  */
@@ -9020,6 +9136,7 @@ is_none_reloc (unsigned int reloc_type)
     case EM_L1OM:    /* R_X86_64_NONE.  */
     case EM_MN10300: /* R_MN10300_NONE.  */
     case EM_M32R:    /* R_M32R_NONE.  */
+    case EM_TI_C6000:/* R_C6000_NONE.  */
     case EM_XC16X:
     case EM_C166:    /* R_XC16X_NONE.  */
       return reloc_type == 0;
@@ -9226,7 +9343,6 @@ dump_section_as_strings (Elf_Internal_Shdr * section, FILE * file)
 {
   Elf_Internal_Shdr * relsec;
   bfd_size_type num_bytes;
-  bfd_vma addr;
   char * data;
   char * end;
   char * start;
@@ -9260,7 +9376,6 @@ dump_section_as_strings (Elf_Internal_Shdr * section, FILE * file)
     }
 
   num_bytes = section->sh_size;
-  addr = section->sh_addr;
   data = start;
   end  = start + num_bytes;
   some_strings_shown = FALSE;
@@ -9691,7 +9806,7 @@ static const char * arm_attr_tag_CPU_arch[] =
 static const char * arm_attr_tag_ARM_ISA_use[] = {"No", "Yes"};
 static const char * arm_attr_tag_THUMB_ISA_use[] =
   {"No", "Thumb-1", "Thumb-2"};
-static const char * arm_attr_tag_VFP_arch[] =
+static const char * arm_attr_tag_FP_arch[] =
   {"No", "VFPv1", "VFPv2", "VFPv3", "VFPv3-D16", "VFPv4", "VFPv4-D16"};
 static const char * arm_attr_tag_WMMX_arch[] = {"No", "WMMXv1", "WMMXv2"};
 static const char * arm_attr_tag_Advanced_SIMD_arch[] = 
@@ -9716,13 +9831,10 @@ static const char * arm_attr_tag_ABI_FP_exceptions[] = {"Unused", "Needed"};
 static const char * arm_attr_tag_ABI_FP_user_exceptions[] = {"Unused", "Needed"};
 static const char * arm_attr_tag_ABI_FP_number_model[] =
   {"Unused", "Finite", "RTABI", "IEEE 754"};
-static const char * arm_attr_tag_ABI_align8_needed[] = {"No", "Yes", "4-byte"};
-static const char * arm_attr_tag_ABI_align8_preserved[] =
-  {"No", "Yes, except leaf SP", "Yes"};
 static const char * arm_attr_tag_ABI_enum_size[] =
   {"Unused", "small", "int", "forced to int"};
 static const char * arm_attr_tag_ABI_HardFP_use[] =
-  {"As Tag_VFP_arch", "SP only", "DP only", "SP and DP"};
+  {"As Tag_FP_arch", "SP only", "DP only", "SP and DP"};
 static const char * arm_attr_tag_ABI_VFP_args[] =
   {"AAPCS", "VFP registers", "custom"};
 static const char * arm_attr_tag_ABI_WMMX_args[] =
@@ -9734,7 +9846,7 @@ static const char * arm_attr_tag_ABI_FP_optimization_goals[] =
   {"None", "Prefer Speed", "Aggressive Speed", "Prefer Size",
     "Aggressive Size", "Prefer Accuracy", "Aggressive Accuracy"};
 static const char * arm_attr_tag_CPU_unaligned_access[] = {"None", "v6"};
-static const char * arm_attr_tag_VFP_HP_extension[] =
+static const char * arm_attr_tag_FP_HP_extension[] =
   {"Not Allowed", "Allowed"};
 static const char * arm_attr_tag_ABI_FP_16bit_format[] =
   {"None", "IEEE 754", "Alternative Format"};
@@ -9760,7 +9872,7 @@ static arm_attr_public_tag arm_attr_public_tags[] =
   {7, "CPU_arch_profile", 0, NULL},
   LOOKUP(8, ARM_ISA_use),
   LOOKUP(9, THUMB_ISA_use),
-  LOOKUP(10, VFP_arch),
+  LOOKUP(10, FP_arch),
   LOOKUP(11, WMMX_arch),
   LOOKUP(12, Advanced_SIMD_arch),
   LOOKUP(13, PCS_config),
@@ -9774,8 +9886,8 @@ static arm_attr_public_tag arm_attr_public_tags[] =
   LOOKUP(21, ABI_FP_exceptions),
   LOOKUP(22, ABI_FP_user_exceptions),
   LOOKUP(23, ABI_FP_number_model),
-  LOOKUP(24, ABI_align8_needed),
-  LOOKUP(25, ABI_align8_preserved),
+  {24, "ABI_align_needed", 0, NULL},
+  {25, "ABI_align_preserved", 0, NULL},
   LOOKUP(26, ABI_enum_size),
   LOOKUP(27, ABI_HardFP_use),
   LOOKUP(28, ABI_VFP_args),
@@ -9784,7 +9896,7 @@ static arm_attr_public_tag arm_attr_public_tags[] =
   LOOKUP(31, ABI_FP_optimization_goals),
   {32, "compatibility", 0, NULL},
   LOOKUP(34, CPU_unaligned_access),
-  LOOKUP(36, VFP_HP_extension),
+  LOOKUP(36, FP_HP_extension),
   LOOKUP(38, ABI_FP_16bit_format),
   LOOKUP(42, MPextension_use),
   LOOKUP(44, DIV_use),
@@ -9832,24 +9944,63 @@ display_arm_attribute (unsigned char * p)
              p += len;
              switch (val)
                {
-               case 0: printf ("None\n"); break;
-               case 'A': printf ("Application\n"); break;
-               case 'R': printf ("Realtime\n"); break;
-               case 'M': printf ("Microcontroller\n"); break;
+               case 0: printf (_("None\n")); break;
+               case 'A': printf (_("Application\n")); break;
+               case 'R': printf (_("Realtime\n")); break;
+               case 'M': printf (_("Microcontroller\n")); break;
+               case 'S': printf (_("Application or Realtime\n")); break;
                default: printf ("??? (%d)\n", val); break;
                }
              break;
 
+           case 24: /* Tag_align_needed.  */
+             val = read_uleb128 (p, &len);
+             p += len;
+             switch (val)
+               {
+               case 0: printf (_("None\n")); break;
+               case 1: printf (_("8-byte\n")); break;
+               case 2: printf (_("4-byte\n")); break;
+               case 3: printf ("??? 3\n"); break;
+               default:
+                 if (val <= 12)
+                   printf (_("8-byte and up to %d-byte extended\n"), 
+                           1 << val);
+                 else
+                   printf ("??? (%d)\n", val);
+                 break;
+               }
+             break;
+
+           case 25: /* Tag_align_preserved.  */
+             val = read_uleb128 (p, &len);
+             p += len;
+             switch (val)
+               {
+               case 0: printf (_("None\n")); break;
+               case 1: printf (_("8-byte, except leaf SP\n")); break;
+               case 2: printf (_("8-byte\n")); break;
+               case 3: printf ("??? 3\n"); break;
+               default:
+                 if (val <= 12)
+                   printf (_("8-byte and up to %d-byte extended\n"), 
+                           1 << val);
+                 else
+                   printf ("??? (%d)\n", val);
+                 break;
+               }
+             break;
+
            case 32: /* Tag_compatibility.  */
              val = read_uleb128 (p, &len);
              p += len;
-             printf ("flag = %d, vendor = %s\n", val, p);
+             printf (_("flag = %d, vendor = %s\n"), val, p);
              p += strlen ((char *) p) + 1;
              break;
 
            case 64: /* Tag_nodefaults.  */
              p++;
-             printf ("True\n");
+             printf (_("True\n"));
              break;
 
            case 65: /* Tag_also_compatible_with.  */
@@ -9933,7 +10084,7 @@ display_gnu_attribute (unsigned char * p,
     {
       val = read_uleb128 (p, &len);
       p += len;
-      printf ("flag = %d, vendor = %s\n", val, p);
+      printf (_("flag = %d, vendor = %s\n"), val, p);
       p += strlen ((char *) p) + 1;
       return p;
     }
@@ -9978,16 +10129,16 @@ display_power_gnu_attribute (unsigned char * p, int tag)
       switch (val)
        {
        case 0:
-         printf ("Hard or soft float\n");
+         printf (_("Hard or soft float\n"));
          break;
        case 1:
-         printf ("Hard float\n");
+         printf (_("Hard float\n"));
          break;
        case 2:
-         printf ("Soft float\n");
+         printf (_("Soft float\n"));
          break;
        case 3:
-         printf ("Single-precision hard float\n");
+         printf (_("Single-precision hard float\n"));
          break;
        default:
          printf ("??? (%d)\n", val);
@@ -10004,10 +10155,10 @@ display_power_gnu_attribute (unsigned char * p, int tag)
       switch (val)
        {
        case 0:
-         printf ("Any\n");
+         printf (_("Any\n"));
          break;
        case 1:
-         printf ("Generic\n");
+         printf (_("Generic\n"));
          break;
        case 2:
          printf ("AltiVec\n");
@@ -10030,13 +10181,13 @@ display_power_gnu_attribute (unsigned char * p, int tag)
       switch (val)
        {
        case 0:
-         printf ("Any\n");
+         printf (_("Any\n"));
          break;
        case 1:
          printf ("r3/r4\n");
          break;
        case 2:
-         printf ("Memory\n");
+         printf (_("Memory\n"));
          break;
        default:
          printf ("??? (%d)\n", val);
@@ -10082,19 +10233,19 @@ display_mips_gnu_attribute (unsigned char * p, int tag)
       switch (val)
        {
        case 0:
-         printf ("Hard or soft float\n");
+         printf (_("Hard or soft float\n"));
          break;
        case 1:
-         printf ("Hard float (-mdouble-float)\n");
+         printf (_("Hard float (double precision)\n"));
          break;
        case 2:
-         printf ("Hard float (-msingle-float)\n");
+         printf (_("Hard float (single precision)\n"));
          break;
        case 3:
-         printf ("Soft float\n");
+         printf (_("Soft float\n"));
          break;
        case 4:
-         printf ("64-bit float (-mips32r2 -mfp64)\n");
+         printf (_("64-bit float (-mips32r2 -mfp64)\n"));
          break;
        default:
          printf ("??? (%d)\n", val);
@@ -10175,7 +10326,7 @@ process_attributes (FILE * file,
                }
 
              len -= section_len;
-             printf ("Attribute Section: %s\n", p);
+             printf (_("Attribute Section: %s\n"), p);
 
              if (public_name && streq ((char *) p, public_name))
                public_section = TRUE;
@@ -10212,13 +10363,13 @@ process_attributes (FILE * file,
                  switch (tag)
                    {
                    case 1:
-                     printf ("File Attributes\n");
+                     printf (_("File Attributes\n"));
                      break;
                    case 2:
-                     printf ("Section Attributes:");
+                     printf (_("Section Attributes:"));
                      goto do_numlist;
                    case 3:
-                     printf ("Symbol Attributes:");
+                     printf (_("Symbol Attributes:"));
                    do_numlist:
                      for (;;)
                        {
@@ -10233,7 +10384,7 @@ process_attributes (FILE * file,
                      printf ("\n");
                      break;
                    default:
-                     printf ("Unknown tag: %d\n", tag);
+                     printf (_("Unknown tag: %d\n"), tag);
                      public_section = FALSE;
                      break;
                    }
@@ -10252,7 +10403,7 @@ process_attributes (FILE * file,
                  else
                    {
                      /* ??? Do something sensible, like dump hex.  */
-                     printf ("  Unknown section contexts\n");
+                     printf (_("  Unknown section contexts\n"));
                      p = end;
                    }
                }
@@ -10296,7 +10447,7 @@ print_mips_got_entry (unsigned char * data, bfd_vma pltgot, bfd_vma addr)
     printf ("%10s", "");
   printf (" ");
   if (data == NULL)
-    printf ("%*s", is_32bit_elf ? 8 : 16, "<unknown>");
+    printf ("%*s", is_32bit_elf ? 8 : 16, _("<unknown>"));
   else
     {
       bfd_vma entry;
@@ -10318,7 +10469,7 @@ print_mips_pltgot_entry (unsigned char * data, bfd_vma pltgot, bfd_vma addr)
   print_vma (addr, LONG_HEX);
   printf (" ");
   if (data == NULL)
-    printf ("%*s", is_32bit_elf ? 8 : 16, "<unknown>");
+    printf ("%*s", is_32bit_elf ? 8 : 16, _("<unknown>"));
   else
     {
       bfd_vma entry;
@@ -10416,9 +10567,9 @@ process_mips_specific (FILE * file)
                                               _("liblist"));
       if (elib)
        {
-         printf ("\nSection '.liblist' contains %lu entries:\n",
+         printf (_("\nSection '.liblist' contains %lu entries:\n"),
                  (unsigned long) liblistno);
-         fputs ("     Library              Time Stamp          Checksum   Version Flags\n",
+         fputs (_("     Library              Time Stamp          Checksum   Version Flags\n"),
                 stdout);
 
          for (cnt = 0; cnt < liblistno; ++cnt)
@@ -10444,12 +10595,12 @@ process_mips_specific (FILE * file)
              if (VALID_DYNAMIC_NAME (liblist.l_name))
                print_symbol (20, GET_DYNAMIC_NAME (liblist.l_name));
              else
-               printf ("<corrupt: %9ld>", liblist.l_name);
+               printf (_("<corrupt: %9ld>"), liblist.l_name);
              printf (" %s %#10lx %-7ld", timebuf, liblist.l_checksum,
                      liblist.l_version);
 
              if (liblist.l_flags == 0)
-               puts (" NONE");
+               puts (_(" NONE"));
              else
                {
                  static const struct
@@ -10748,7 +10899,7 @@ process_mips_specific (FILE * file)
          if (VALID_DYNAMIC_NAME (psym->st_name))
            print_symbol (25, GET_DYNAMIC_NAME (psym->st_name));
          else
-           printf ("<corrupt: %14ld>", psym->st_name);
+           printf (_("<corrupt: %14ld>"), psym->st_name);
          putchar ('\n');
        }
 
@@ -10777,16 +10928,16 @@ process_mips_specific (FILE * file)
 
       printf (_(" Reserved entries:\n"));
       printf (_("  %*s %10s %*s Purpose\n"),
-             addr_size * 2, "Address", "Access",
-             addr_size * 2, "Initial");
+             addr_size * 2, _("Address"), _("Access"),
+             addr_size * 2, _("Initial"));
       ent = print_mips_got_entry (data, pltgot, ent);
-      printf (" Lazy resolver\n");
+      printf (_(" Lazy resolver\n"));
       if (data
          && (byte_get (data + ent - pltgot, addr_size)
              >> (addr_size * 8 - 1)) != 0)
        {
          ent = print_mips_got_entry (data, pltgot, ent);
-         printf (" Module pointer (GNU extension)\n");
+         printf (_(" Module pointer (GNU extension)\n"));
        }
       printf ("\n");
 
@@ -10794,8 +10945,8 @@ process_mips_specific (FILE * file)
        {
          printf (_(" Local entries:\n"));
          printf (_("  %*s %10s %*s\n"),
-                 addr_size * 2, "Address", "Access",
-                 addr_size * 2, "Initial");
+                 addr_size * 2, _("Address"), _("Access"),
+                 addr_size * 2, _("Initial"));
          while (ent < local_end)
            {
              ent = print_mips_got_entry (data, pltgot, ent);
@@ -10810,9 +10961,9 @@ process_mips_specific (FILE * file)
 
          printf (_(" Global entries:\n"));
          printf (_("  %*s %10s %*s %*s %-7s %3s %s\n"),
-                 addr_size * 2, "Address", "Access",
-                 addr_size * 2, "Initial",
-                 addr_size * 2, "Sym.Val.", "Type", "Ndx", "Name");
+                 addr_size * 2, _("Address"), _("Access"),
+                 addr_size * 2, _("Initial"),
+                 addr_size * 2, _("Sym.Val."), _("Type"), _("Ndx"), _("Name"));
          sym_width = (is_32bit_elf ? 80 : 160) - 28 - addr_size * 6 - 1;
          for (i = gotsym; i < symtabno; i++)
            {
@@ -10828,7 +10979,7 @@ process_mips_specific (FILE * file)
              if (VALID_DYNAMIC_NAME (psym->st_name))
                print_symbol (sym_width, GET_DYNAMIC_NAME (psym->st_name));
              else
-               printf ("<corrupt: %14ld>", psym->st_name);
+               printf (_("<corrupt: %14ld>"), psym->st_name);
              printf ("\n");
            }
          printf ("\n");
@@ -10869,18 +11020,18 @@ process_mips_specific (FILE * file)
       printf (_("\nPLT GOT:\n\n"));
       printf (_(" Reserved entries:\n"));
       printf (_("  %*s %*s Purpose\n"),
-             addr_size * 2, "Address", addr_size * 2, "Initial");
+             addr_size * 2, _("Address"), addr_size * 2, _("Initial"));
       ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
-      printf (" PLT lazy resolver\n");
+      printf (_(" PLT lazy resolver\n"));
       ent = print_mips_pltgot_entry (data, mips_pltgot, ent);
-      printf (" Module pointer\n");
+      printf (_(" Module pointer\n"));
       printf ("\n");
 
       printf (_(" Entries:\n"));
       printf (_("  %*s %*s %*s %-7s %3s %s\n"),
-             addr_size * 2, "Address",
-             addr_size * 2, "Initial",
-             addr_size * 2, "Sym.Val.", "Type", "Ndx", "Name");
+             addr_size * 2, _("Address"),
+             addr_size * 2, _("Initial"),
+             addr_size * 2, _("Sym.Val."), _("Type"), _("Ndx"), _("Name"));
       sym_width = (is_32bit_elf ? 80 : 160) - 17 - addr_size * 6 - 1;
       for (i = 0; i < count; i++)
        {
@@ -10896,7 +11047,7 @@ process_mips_specific (FILE * file)
          if (VALID_DYNAMIC_NAME (psym->st_name))
            print_symbol (sym_width, GET_DYNAMIC_NAME (psym->st_name));
          else
-           printf ("<corrupt: %14ld>", psym->st_name);
+           printf (_("<corrupt: %14ld>"), psym->st_name);
          printf ("\n");
        }
       printf ("\n");
@@ -10957,7 +11108,7 @@ process_gnu_liblist (FILE * file)
                  SECTION_NAME (section),
                  (unsigned long) (section->sh_size / sizeof (Elf32_External_Lib)));
 
-         puts ("     Library              Time Stamp          Checksum   Version Flags");
+         puts (_("     Library              Time Stamp          Checksum   Version Flags"));
 
          for (cnt = 0; cnt < section->sh_size / sizeof (Elf32_External_Lib);
               ++cnt)
@@ -10982,10 +11133,10 @@ process_gnu_liblist (FILE * file)
              printf ("%3lu: ", (unsigned long) cnt);
              if (do_wide)
                printf ("%-20s", liblist.l_name < strtab_size
-                                ? strtab + liblist.l_name : "<corrupt>");
+                       ? strtab + liblist.l_name : _("<corrupt>"));
              else
                printf ("%-20.20s", liblist.l_name < strtab_size
-                                   ? strtab + liblist.l_name : "<corrupt>");
+                       ? strtab + liblist.l_name : _("<corrupt>"));
              printf (" %s %#010lx %-7ld %-7ld\n", timebuf, liblist.l_checksum,
                      liblist.l_version, liblist.l_flags);
            }
@@ -11122,9 +11273,9 @@ get_netbsd_elfcore_note_type (unsigned e_type)
     case EM_SPARCV9:
       switch (e_type)
        {
-       case NT_NETBSDCORE_FIRSTMACH+0:
+       case NT_NETBSDCORE_FIRSTMACH + 0:
          return _("PT_GETREGS (reg structure)");
-       case NT_NETBSDCORE_FIRSTMACH+2:
+       case NT_NETBSDCORE_FIRSTMACH + 2:
          return _("PT_GETFPREGS (fpreg structure)");
        default:
          break;
@@ -11136,9 +11287,9 @@ get_netbsd_elfcore_note_type (unsigned e_type)
     default:
       switch (e_type)
        {
-       case NT_NETBSDCORE_FIRSTMACH+1:
+       case NT_NETBSDCORE_FIRSTMACH + 1:
          return _("PT_GETREGS (reg structure)");
-       case NT_NETBSDCORE_FIRSTMACH+3:
+       case NT_NETBSDCORE_FIRSTMACH + 3:
          return _("PT_GETFPREGS (fpreg structure)");
        default:
          break;
@@ -12020,7 +12171,6 @@ process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
   struct archive_info arch;
   struct archive_info nested_arch;
   size_t got;
-  size_t file_name_size;
   int ret;
 
   show_name = 1;
@@ -12114,7 +12264,6 @@ process_archive (char * file_name, FILE * file, bfd_boolean is_thin_archive)
        }
     }
 
-  file_name_size = strlen (file_name);
   ret = 0;
 
   while (1)
This page took 0.041922 seconds and 4 git commands to generate.