On 5/25/23 19:56, fa...@mail.ustc.edu.cn wrote:
"The beginning of the structure, with pretaddr, should be just below 16-byte alignment." It is incorrect! The beginning of the structure, with pretaddr not aligned as 16-byte! On x86-64, It aligned as (16n - sizeof(void*)) because of instruction "call" !
Exactly: 16n - sizeof(void*) is why I mean by "just below 16-byte alignment". Which is exactly what I have done...
+ esp = esp - *frame_size + sizeof(abi_ulong); + esp = ROUND_DOWN(esp, 16) - sizeof(abi_ulong);
... here. r~