[Bug 257132] clang 12.0.1 fails to cross-compile kern_mbuf - amd64 host, i386 target
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 12 Jul 2021 18:36:20 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257132 --- Comment #3 from Dimitry Andric <dim@FreeBSD.org> --- It turns out that this is due some code generated in $OBJDIR/offset.inc, during an amd64 to i386 cross-build: # 33 "/usr/src/sys/sys/kpilite.h" # 1 "./offset.inc" 1 #ifndef _OFFSET_INC_ #define _OFFSET_INC_ #if 0 /* disabled by -frewrite-includes */ #if !defined(GENOFFSET) && (!defined(KLD_MODULE) || defined(KLD_TIED)) #endif #endif /* disabled by -frewrite-includes */ #if 1 /* evaluated by -frewrite-includes */ # 4 "./offset.inc" struct thread_lite { u_char pad_td_priority[0x27e - 0]; u_char td_priority; u_char pad_td_critnest[0x30c - (0x27e + sizeof(u_char))]; u_int td_critnest; u_char pad_td_owepreempt[0xb8 - (0x30c + sizeof(u_int))]; u_char td_owepreempt; u_char pad_td_pinned[0xd8 - (0xb8 + sizeof(u_char))]; int td_pinned; }; #endif E.g. this defines tpad_td_owepreempt as a negative size: 27: error: array is too large (18446744073709551016 elements) u_char pad_td_owepreempt[0xb8 - (0x30c + sizeof(u_int))]; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For some reason, generating this offset.inc file on a native i386 build results in a very different struct: struct thread_lite { u_char pad_td_owepreempt[0xb8 - 0]; u_char td_owepreempt; u_char pad_td_pinned[0xd8 - (0xb8 + sizeof(u_char))]; int td_pinned; u_char pad_td_priority[0x27e - (0xd8 + sizeof(int))]; u_char td_priority; u_char pad_td_critnest[0x30c - (0x27e + sizeof(u_char))]; u_int td_critnest; }; -- You are receiving this mail because: You are the assignee for the bug.