Hi On Wed, Mar 8, 2023 at 4:37 AM Sergey Bugaev <buga...@gmail.com> wrote:
> Hi, > > this seems to break the x86_64 --disable-user32 gnumach build for me: > > vm/memory_object_user.user.c: In function ‘memory_object_init’: > vm/memory_object_user.user.c:128:9: error: static assertion failed: > "Request expected to be 80 bytes" > 128 | _Static_assert(sizeof(Request) == 80, "Request > expected to be 80 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_terminate’: > vm/memory_object_user.user.c:197:9: error: static assertion failed: > "Request expected to be 64 bytes" > 197 | _Static_assert(sizeof(Request) == 64, "Request > expected to be 64 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_copy’: > vm/memory_object_user.user.c:304:9: error: static assertion failed: > "Request expected to be 96 bytes" > 304 | _Static_assert(sizeof(Request) == 96, "Request > expected to be 96 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_data_request’: > vm/memory_object_user.user.c:412:9: error: static assertion failed: > "Request expected to be 96 bytes" > 412 | _Static_assert(sizeof(Request) == 96, "Request > expected to be 96 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_data_unlock’: > vm/memory_object_user.user.c:520:9: error: static assertion failed: > "Request expected to be 96 bytes" > 520 | _Static_assert(sizeof(Request) == 96, "Request > expected to be 96 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_lock_completed’: > vm/memory_object_user.user.c:609:9: error: static assertion failed: > "Request expected to be 80 bytes" > 609 | _Static_assert(sizeof(Request) == 80, "Request > expected to be 80 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_supply_completed’: > vm/memory_object_user.user.c:737:9: error: static assertion failed: > "Request expected to be 112 bytes" > 737 | _Static_assert(sizeof(Request) == 112, "Request > expected to be 112 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_data_return’: > vm/memory_object_user.user.c:872:9: error: static assertion failed: > "Request expected to be 120 bytes" > 872 | _Static_assert(sizeof(Request) == 120, "Request > expected to be 120 bytes"); > | ^~~~~~~~~~~~~~ > vm/memory_object_user.user.c: In function ‘memory_object_change_completed’: > vm/memory_object_user.user.c:944:9: error: static assertion failed: > "Request expected to be 64 bytes" > 944 | _Static_assert(sizeof(Request) == 64, "Request > expected to be 64 bytes"); > | ^~~~~~~~~~~~~~ > > Reverting (or rather, rebasing out) this commit helped. Does this > perhaps need matching changes in MIG? > I suspect you have to rebuild MiG because it needs to get the new definitions for mach_msg_type_t and mach_msg_type_long_t. Let me know if you still run into problems. > > And a meta question: is GNU MIG only intended to be usable with the > latest commit of GNU Mach? It certainly generates typed IPC, so it > can't be used with OSF/Apple's Mach. But is it expected to only ever > support whatever 64-bit ABI gnumach *currently* has, or should it > attempt to do some feature detection / whatever? In particular having > MIG generate working code no matter what Mach commit I'm on would be > nice :) > Yes, that would be nice but I'm not sure if we can avoid this when we are changing the base data types used to encode the messages. I think we just need to get the gnumach ABI in a more stable place and then it should work like i686, where it should never break. > Sergey >