Reinstate readelf decoding of i860, i960 and i370 relocs
[deliverable/binutils-gdb.git] / binutils / readelf.c
index e3af50a9c94c1fd232bb4d4ecc6b6583a2de5261..cf395dbe2d6998abc481a918d9f5370441c02200 100644 (file)
@@ -2273,7 +2273,7 @@ get_machine_name (unsigned e_machine)
     case EM_PARISC:            return "HPPA";
     case EM_VPP550:            return "Fujitsu VPP500";
     case EM_SPARC32PLUS:       return "Sparc v8+" ;
-    case EM_960:               return "Intel 90860";
+    case EM_960:               return "Intel 80960";
     case EM_PPC:               return "PowerPC";
       /* 20 */
     case EM_PPC64:             return "PowerPC64";
@@ -9653,7 +9653,7 @@ process_dynamic_section (Filedata * filedata)
          if (archive_file_offset != 0)
            str_tab_len = archive_file_size - offset;
          else
-           str_tab_len = filedata->file_size;
+           str_tab_len = filedata->file_size - offset;
 
          if (str_tab_len < 1)
            {
@@ -10009,6 +10009,21 @@ process_dynamic_section (Filedata * filedata)
                      printf (" PIE");
                      val ^= DF_1_PIE;
                    }
+                 if (val & DF_1_KMOD)
+                   {
+                     printf (" KMOD");
+                     val ^= DF_1_KMOD;
+                   }
+                 if (val & DF_1_WEAKFILTER)
+                   {
+                     printf (" WEAKFILTER");
+                     val ^= DF_1_WEAKFILTER;
+                   }
+                 if (val & DF_1_NOCOMMON)
+                   {
+                     printf (" NOCOMMON");
+                     val ^= DF_1_NOCOMMON;
+                   }
                  if (val != 0)
                    printf (" %lx", val);
                  puts ("");
@@ -10212,7 +10227,7 @@ process_dynamic_section (Filedata * filedata)
 static char *
 get_ver_flags (unsigned int flags)
 {
-  static char buff[32];
+  static char buff[128];
 
   buff[0] = 0;
 
@@ -17487,6 +17502,13 @@ get_symbol_for_build_attribute (Filedata *       filedata,
        if (strtab[sym->st_name] == 0)
          continue;
 
+       /* The AArch64 and ARM architectures define mapping symbols
+          (eg $d, $x, $t) which we want to ignore.  */
+       if (strtab[sym->st_name] == '$'
+           && strtab[sym->st_name + 1] != 0
+           && strtab[sym->st_name + 2] == 0)
+         continue;
+
        if (is_open_attr)
          {
            /* For OPEN attributes we prefer GLOBAL over LOCAL symbols
@@ -17615,6 +17637,12 @@ print_gnu_build_attribute_description (Elf_Internal_Note *  pnote,
 
   name = NULL;
   sym = get_symbol_for_build_attribute (filedata, start, is_open_attr, & name);
+  /* As of version 5 of the annobin plugin, filename symbols are biased by 2
+     in order to avoid them being confused with the start address of the
+     first function in the file...  */
+  if (sym == NULL && is_open_attr)
+    sym = get_symbol_for_build_attribute (filedata, start + 2, is_open_attr,
+                                         & name);
 
   if (end == 0 && sym != NULL && sym->st_size > 0)
     end = start + sym->st_size;
This page took 0.030114 seconds and 4 git commands to generate.