aboutsummaryrefslogtreecommitdiff
path: root/binutils/elfedit.c
diff options
context:
space:
mode:
Diffstat (limited to 'binutils/elfedit.c')
-rw-r--r--binutils/elfedit.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/binutils/elfedit.c b/binutils/elfedit.c
index 6e2f8db4..410d89a 100644
--- a/binutils/elfedit.c
+++ b/binutils/elfedit.c
@@ -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. */