On 10/22/21 16:48, Giovanni Mascellani wrote:
Hi,
Il 21/10/21 18:03, Paul Gofman ha scritto:
+ start = test_walk_stack; + end = (BYTE *)start + 0x1000; + todo_wine_if(sizeof(void *) == 4) + ok(addrs[0] >= start && addrs[0] < end, "Address is not inside test function, start %p, end %p, addr %p.\n", + start, end, addrs[0]); + todo_wine_if(sizeof(void *) == 4) + ok(addrs2[0] >= start && addrs2[0] < end, "Address is not inside test function, start %p, end %p, addr %p.\n", + start, end, addrs2[0]);
Another check you could do is whether addrs[1] == __builtin_extract_return_addr(__builtin_return_address(0)). Probably you don't even need __builtin_extract_return_addr, because I think it is required only for architectures for which we do not compile anyway.
Giovanni.
Yes, I could, but do you think another check is really needed? It feels to me that might make the check more fragile than it already is. I'd rather consider maybe just dropping such check if it will be considered concerning. I added that only because I spotted the actual bug on x86 skipping the first frame and wanted to illustrate / verify that.