Upon calling LibVEX_FrontEnd (with the args configured for an AMD64 host and an x86 guest), libvex bails out with the following message: priv/main_main.c:375 (LibVEX_FrontEnd): Assertion `0 == sizeof(VexGuestX86State) % LibVEX_GUEST_STATE_ALIGN' failed.
Created attachment 109830 [details] Tiny test case ➜ test gcc test.c ➜ test ./a.out ALIGN: 16 SIZE: 360
Just tested against the header from git master, and the result is the same. I assume it's a mirror of the 3.14 SVN? Sorry for the noise.
SVN is a past thing. Valgrind lives in GIT now: http://valgrind.org/downloads/repository.html
I've been fiddling with the headers a little, and it turns out that GCC on my system seems to always pad VexGuestX86State and then align by 8. The header in git has a 16-aligned size if I specify the packed GCC attribute. It seems to be that an extra four bytes of padding are added after the segment registers to 8-align the guest_LDT member. Moving one of the trailing padding ints to after guest_SS gives a 16-aligned size.
(In reply to bob from comment #0) > Upon calling LibVEX_FrontEnd (with the args configured for an AMD64 host and > an x86 guest), libvex bails out with the following message: We gave up on supporting cross-target Vex some years back, so I am not surprised this doesn't work. It seems unlikely to me that it'll get fixed any time soon.