Hi,
I am trying to run the ArmIE emulator. I compiled the source file with ARM C Compiler for SVE by using:
armclang -O3 -march=armv8-a+sve -o hello hello.c armie -msve-vector-bits=512 ./hello
But get an error message:
armie's SVESigHandler caught signal SIGSEGV from the process being emulated, passing it to the default signal handler. Guest process terminated by signal: 9513 Segmentation fault ./hello
What am I doing wrong?
// hello.c #include <stdio.h> int main() { printf("Hello, World!"); return 0; }
This may not be related to ArmIE or SVE: the ./hello program segfaults in the first place. Have you tried to compile and run without it to check if it crashes too?
armclang -O3 -march=armv8-a -o hello hello.c ./hello
If it does and if you fix the segfault in the application, you should be able to recompile for SVE and use ArmIE without any problem.Florent
The following works fine:
When I run it with ArmIE, the same problem occurs.
It may be that the segfault only occurs when your application runs with ArmIE. I suggest checking for memory defects with ASAN. You can enable it with the -fsanitize=address option when compiling and a report will be displayed at runtime. You may need asan_symbolize.py to get application symbols, e.g.
$ armclang -O3 -march=armv8-a -fsanitize=address -o hello hello.c$ armie -msve-vector-bits=512 ./hello 2> log$ python asan_symbolize.py / < log | c++filtAddressSanitizer:DEADLYSIGNAL===================================================================1829733==ERROR: AddressSanitizer: SEGV on unknown address 0x00000028ff44 (pc 0x0000004e8c50 bp 0xffffd551b3c0 sp 0xffffd551b3c0 T0)==1829733==The signal is caused by a UNKNOWN memory access. #0 0x4e8c50 in main hello.c:8[...]
I made these changes but got the exact same error message:
armie's SVESigHandler caught signal SIGSEGV from the process being emulated, passing it to the default signal handler. Guest process terminated by signal:3954 Segmentation fault ./hello