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; }
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