On Sat, 14 Jun 2025 at 13:50, <r...@wjsota.com> wrote:
>
> Hi!
>
> Is `qemu-aarch64 -cpu neoverse-n1` supposed to emulate the `retaa` 
> instruction?
>
> I have a binary called `main_pac` compiled from 
> https://learn.arm.com/learning-paths/servers-and-cloud-computing/pac/example/ 
> .
>
> The compiling command is `aarch64-linux-gnu-gcc -march=armv8.5-a -fPIC 
> -pedantic -Wall -Wextra -ggdb3 -O0 -mbranch-protection=standard 
> -fno-stack-protector -fPIE -static main.c -o main_pac`. The binary includes 
> the `paciasp` and `retaa` instructions associated with ARM PAC.
>
> ```
> (gdb) disas main
> Dump of assembler code for function main:
>    0x0000000000400858 <+0>:     paciasp
>    0x000000000040085c <+4>:     stp     x29, x30, [sp, #-32]!
>    […]
>    0x0000000000400898 <+64>:    ldp     x29, x30, [sp], #32
>    0x000000000040089c <+68>:    retaa
> End of assembler dump.
> (gdb) quit
> ```
>
> When emulated using `qemu-aarch64 -cpu neoverse-n1` , the program completes 
> without issues.
> ```
> user@dell-op7020:~/learning/arm_learning_path_pac$ qemu-aarch64 -cpu 
> neoverse-n1 main_pac test
> Hello World!

This might be a bug, but why are you compiling for armv8.5 and
then trying to run the code on a CPU type that isn't armv8.5
in the first place?

thanks
-- PMM

Reply via email to