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. */