X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Felfedit.c;h=410d89af273485242a3b63adad1771a159041ee7;hb=2dc654c3e9b8515e5ef1f2042d6f21fd6f2e77bc;hp=6e2f8db4268d2b5b6d6f1c22590e574015755b33;hpb=f91e5ac34e150aeb5030c1005a510a231449c33c;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/elfedit.c b/binutils/elfedit.c index 6e2f8db426..410d89af27 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. */