On Mon, Dec 29, 2014 at 07:36:42PM +0100, David Abdurachmanov wrote: > I believe this is breaking bootstrap on aarch64-linux-gnu with kernels <=3.15, > 3.16 and above are fine. > > __kernel_old_{gid,uid}_t were changed in 3.16 from unsigned int to unsigned > short. <=3.15 kernel will trigger static asserts in libsanitizer while > compiling GCC. > > I created PR: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64435 (includes all > the details). > > Attaching a patch with resolved issues on F19 + 3.12 kernel (also bootstrapped > in QEMU with F21 rootfs + 3.17 kernel) on aarch64-linux-gnu.
That looks very much wrong, ABI can't depend on what kernel headers you are compiling against. So, better would be just to ifdef out the check and always use 16-bit __kernel_old_*_t on aarch64. Are the getresuid16/getresgid16/getgroups16/setgroups16 syscalls wired at all on aarch64? If not, then supposedly the sanitizer_common_syscalls.inc stuff for these syscalls should be ifdefed out on aarch64 (or any other arch that doesn't have those syscalls). Jakub