Add support for the MIPS32
[deliverable/binutils-gdb.git] / binutils / readelf.c
index 50d3b4c53a66835c0b06117bc57da264692ebfa5..d9686731fda9d630e793e2bb1a1e88db9e5fbe97 100644 (file)
@@ -71,6 +71,8 @@
 #include "elf/pj.h"
 #include "elf/avr.h"
 #include "elf/ia64.h"
+#include "elf/cris.h"
+#include "elf/i860.h"
 
 #include "bucomm.h"
 #include "getopt.h"
@@ -565,6 +567,8 @@ guess_is_rela (e_machine)
     case EM_MCORE:
     case EM_IA_64:
     case EM_AVR:
+    case EM_CRIS:
+    case EM_860:
       return TRUE;
 
     case EM_MMA:
@@ -879,6 +883,14 @@ dump_relocations (file, rel_offset, rel_size, symtab, nsyms, strtab, is_rela)
        case EM_IA_64:
          rtype = elf_ia64_reloc_type (type);
          break;
+
+       case EM_CRIS:
+         rtype = elf_cris_reloc_type (type);
+         break;
+
+       case EM_860:
+         rtype = elf_i860_reloc_type (type);
+         break;
        }
 
       if (rtype == NULL)
@@ -1248,6 +1260,7 @@ get_machine_name (e_machine)
     case EM_ST19:              return "STMicroelectronics ST19 8-bit microcontroller";
     case EM_VAX:               return "Digital VAX";
     case EM_AVR:                return "Atmel AVR 8-bit microcontroller";
+    case EM_CRIS:              return "Axis Communications 32-bit embedded processor";
     default:
       sprintf (buff, _("<unknown>: %x"), e_machine);
       return buff;
@@ -1448,6 +1461,16 @@ get_machine_flags (e_flags, e_machine)
 
          if ((e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_4)
            strcat (buf, ", mips4");
+
+         switch ((e_flags & EF_MIPS_MACH))
+           {
+           case E_MIPS_MACH_3900: strcat (buf, ", 3900"); break;
+           case E_MIPS_MACH_4010: strcat (buf, ", 4010"); break;
+           case E_MIPS_MACH_4100: strcat (buf, ", 4100"); break;
+           case E_MIPS_MACH_4650: strcat (buf, ", 4650"); break;
+           case E_MIPS_MACH_4111: strcat (buf, ", 4111"); break;
+           case E_MIPS_MACH_MIPS32: strcat (buf, ", mips32"); break;
+           }
          break;
 
        case EM_SPARCV9:
@@ -5212,7 +5235,14 @@ display_debug_pubnames (section, start, file)
 
       if (pubnames.pn_version != 2)
        {
-         warn (_("Only DWARF 2 pubnames are currently supported"));
+         static int warned = 0;
+
+         if (! warned)
+           {
+             warn (_("Only DWARF 2 pubnames are currently supported\n"));
+             warned = 1;
+           }
+         
          continue;
        }
 
@@ -6384,6 +6414,12 @@ display_debug_aranges (section, start, file)
       arange.ar_pointer_size = BYTE_GET (external->ar_pointer_size);
       arange.ar_segment_size = BYTE_GET (external->ar_segment_size);
 
+      if (arange.ar_version != 2)
+       {
+         warn (_("Only DWARF 2 aranges are currently supported.\n"));
+         break;
+       }
+
       printf (_("  Length:                   %ld\n"), arange.ar_length);
       printf (_("  Version:                  %d\n"), arange.ar_version);
       printf (_("  Offset into .debug_info:  %lx\n"), arange.ar_info_offset);
This page took 0.025004 seconds and 4 git commands to generate.