qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] AArch64 ELF File Loading


From: Christopher Covington
Subject: Re: [Qemu-devel] AArch64 ELF File Loading
Date: Fri, 25 Jul 2014 10:35:47 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2

Hi Peter,

On 07/25/2014 10:07 AM, Peter Maydell wrote:
> On 25 July 2014 15:01, Christopher Covington <address@hidden> wrote:
>> Hi,
>>
>> I think the AArch64 port has a problem with a self-modifying code sequence
>> that appears to run fine on other simulators, but I can't get QEMU to run the
>> small bare metal test case I created to try to reproduce the issue. Any help
>> would be appreciated.
>>
>> qemu-system-aarch64 -nodefaults -nographic -monitor none -M virt -semihosting
>> -d exec,in_asm /tmp/test-nooverwrite 2>&1 | less
>>
>> qemu: fatal: Trying to execute code outside RAM or ROM at 0x0000000000000000
>>
>> qemu-system-aarch64 -nodefaults -nographic -monitor none -M virt -semihosting
>> -d exec,in_asm -bios /tmp/test-nooverwrite 2>&1 | less
>>
>> qemu: fatal: Trying to execute code outside RAM or ROM at 0x0000000000000000
>>
>> qemu-system-aarch64 -nodefaults -nographic -monitor none -M virt -semihosting
>> -d exec,in_asm -kernel /tmp/test-nooverwrite 2>&1 | less
> 
> You haven't specified a CPU type, and virt defaults
> to cortex-a15. Try "-cpu cortex-a57".

That explains the A32 instructions.

> You haven't specified a memory size, and QEMU defaults
> to 128MB, which (given the start address of RAM) means
> there won't be any RAM at the load address you're trying to
> load your test program at. Try "-m 3G", and/or make your
> ELF file load at an address closer to the start of RAM.

Thanks for the suggestions.

aarch64-none-elf-gcc -specs=rdimon.specs -Ttext=0x40000000 hello.c -o hello

aarch64-none-elf-readelf -h hello

ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           AArch64
  Version:                           0x1
  Entry point address:               0x40000158
  Start of program headers:          64 (bytes into file)
  Start of section headers:          157432 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         4
  Size of section headers:           64 (bytes)
  Number of section headers:         17
  Section header string table index: 14

qemu-system-aarch64 -nodefaults -nographic -monitor none -M virt \
  -cpu cortex-a57 -m 3G -semihosting -kernel hello

qemu: fatal: Trying to execute code outside RAM or ROM at 0x0000000000000000

Thanks,
Christopher

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]