On Fri, Jul 29, 2016 at 8:42 AM, Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 14 July 2016 at 01:03, Alistair Francis <alistair.fran...@xilinx.com> 
> wrote:
>> If the caller didn't specify an architecture for the ELF machine
>> the load_elf() function will auto detect it based on the ELF file.
>>
>> Signed-off-by: Alistair Francis <alistair.fran...@xilinx.com>
>> ---
>> V9:
>>  - Update documentation
>> V8:
>>  - Move into load_elf64/load_elf32
>> V7:
>>  - Fix typo
>>
>>  include/hw/elf_ops.h | 5 +++++
>>  include/hw/loader.h  | 3 +++
>>  2 files changed, 8 insertions(+)
>>
>> diff --git a/include/hw/elf_ops.h b/include/hw/elf_ops.h
>> index f510e7e..db70c11 100644
>> --- a/include/hw/elf_ops.h
>> +++ b/include/hw/elf_ops.h
>> @@ -280,6 +280,11 @@ static int glue(load_elf, SZ)(const char *name, int fd,
>>          glue(bswap_ehdr, SZ)(&ehdr);
>>      }
>>
>> +    if (elf_machine < 1) {
>> +        /* The caller didn't specify an ARCH, we can figure it out */
>> +        elf_machine = ehdr.e_machine;
>> +    }
>> +
>>      switch (elf_machine) {
>>          case EM_PPC64:
>>              if (ehdr.e_machine != EM_PPC64) {
>> diff --git a/include/hw/loader.h b/include/hw/loader.h
>> index 4879b63..fd540fc 100644
>> --- a/include/hw/loader.h
>> +++ b/include/hw/loader.h
>> @@ -68,6 +68,9 @@ const char *load_elf_strerror(int error);
>>   * load will fail if the target ELF does not match. Some architectures
>>   * have some architecture-specific behaviours that come into effect when
>>   * their particular values for @elf_machine are set.
>> + * If no @elf_machine is provided the machine will default to the value
>> + * in the ELFs header and no checks will be carried out against the
>> + * machine type.
>>   */
>
> The argument is mandatory, you can't not provide it.
> Should we make this "if @elf_machine is EM_NONE then the
> machine type will be read from the ELF header" ? (EM_NONE is 0).

Good point, fixed.

Thanks,

Alistair

>
> thanks
> -- PMM
>

Reply via email to