https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107059
--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> --- cppdefault.cc has: #ifdef FIXED_INCLUDE_DIR /* This is the dir for fixincludes. */ { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, /* A multilib suffix needs adding if different multilibs use different headers. */ #ifdef SYSROOT_HEADERS_SUFFIX_SPEC 1 #else 0 #endif }, #endif ... #ifdef NATIVE_SYSTEM_HEADER_DIR /* /usr/include comes dead last. */ { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 2 }, { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0, 0, 1, 0 }, #endif where that 2 in the last column of the penultimate entry is what I think adds for multi-arch the multiarch suffixes to /usr/include and 1 in the penultimate column says to prefix that with sysroot. So, I wonder if we don't want a { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, 2 }, entry somewhere. SYSROOT_HEADERS_SUFFIX_SPEC is defined I think on vxworks and mti-linux, neither of which can be multiarch, so I think we could do: --- gcc/cppdefault.cc.jj 2022-01-18 11:58:59.411984500 +0100 +++ gcc/cppdefault.cc 2022-09-28 12:11:47.923603783 +0200 @@ -74,6 +74,9 @@ const struct default_include cpp_include #endif #ifdef FIXED_INCLUDE_DIR /* This is the dir for fixincludes. */ +#ifndef SYSROOT_HEADERS_SUFFIX_SPEC + { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, 2 }, +#endif { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0, /* A multilib suffix needs adding if different multilibs use different headers. */