Don't change input_elf_XXX if they are -1
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Jan 2010 15:58:08 +0000 (15:58 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 8 Jan 2010 15:58:08 +0000 (15:58 +0000)
2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>

* elfedit.c (update_elf_header): Don't change input_elf_class
nor input_elf_machine if they are -1.

binutils/ChangeLog
binutils/elfedit.c

index ebdc1a2a6c22814306554cd97dbf727f7ede6b64..fb7adc1eef44446cbb033f2587b71f06466af43a 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elfedit.c (update_elf_header): Don't change input_elf_class
+       nor input_elf_machine if they are -1.
+
 2010-01-08  Tristan Gingold  <gingold@adacore.com>
 
        * ar.c: Remove bfd_special_undocumented_glue prototype.
index 6e2f8db4268d2b5b6d6f1c22590e574015755b33..410d89af273485242a3b63adad1771a159041ee7 100644 (file)
@@ -228,7 +228,7 @@ byte_put_big_endian (unsigned char * field, bfd_vma value, int size)
 static int
 update_elf_header (const char *file_name, FILE *file)
 {
-  int status;
+  int class, machine, status;
 
   if (elf_header.e_ident[EI_MAG0] != ELFMAG0
       || elf_header.e_ident[EI_MAG1] != ELFMAG1
@@ -250,35 +250,34 @@ update_elf_header (const char *file_name, FILE *file)
       return 0;
     }
 
+  /* Return if e_machine is the same as output_elf_machine.  */
+  if (output_elf_machine == elf_header.e_machine)
+    return 1;
+
+  class = elf_header.e_ident[EI_CLASS];
+
   /* Skip if class doesn't match. */
-  if (input_elf_class == -1)
-    input_elf_class = elf_header.e_ident[EI_CLASS];
-  else if (elf_header.e_ident[EI_CLASS] != input_elf_class)
+  if (input_elf_class != -1 && class != input_elf_class)
     {
       non_fatal
        (_("%s: Unmatched EI_CLASS: %d is not %d\n"),
-        file_name, elf_header.e_ident[EI_CLASS],
-        input_elf_class);
+        file_name, class, input_elf_class);
       return 0;
     }
 
-  /* Return if e_machine is the same as output_elf_machine.  */
-  if (output_elf_machine == elf_header.e_machine)
-    return 1;
+  machine = elf_header.e_machine;
 
   /* Skip if e_machine doesn't match. */
-  if (input_elf_machine == -1)
-    input_elf_machine = elf_header.e_machine;
-  else if (elf_header.e_machine != input_elf_machine)
+  if (input_elf_machine != -1 && machine != input_elf_machine)
     {
       non_fatal
        (_("%s: Unmatched e_machine: %d is not %d\n"),
-        file_name, elf_header.e_machine, input_elf_machine);
+        file_name, machine, input_elf_machine);
       return 0;
     }
 
   /* Update e_machine.  */
-  switch (input_elf_class)
+  switch (class)
     {
     default:
       /* We should never get here.  */