http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48957

           Summary: GCC's handling of include-fixed does not work well
                    with --sysroot
           Product: gcc
           Version: 4.5.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: psm...@gnu.org


When GCC builds, it creates and stows away internally an "include-fixed"
directory containing "fixed-up" versions of the system headers files on the
system it was built with.  This feels wrong to me: it gives GCC a hard
dependency on the specific set of system header files present when GCC was
built.  It's potentially incorrect even for straightforward installations,
where a newer header file provided with a package upgrade might be ignored in
preference to an older "fixed" version.  However, when attempting to create a
relocatable version of GCC it's even more problematic.

In particular, it seems very wrong (and, in fact, it often doesn't work) to
search the include-fixed directory when the user has specified a --sysroot
flag, choosing to compile against a wholly different set of headers and
libraries than the ones on the host system.

I think that the include-fixed directory should be associated with the sysroot,
somehow, not embedded deeply into the compiler internals, and when --sysroot is
provided there should be a well-known location inside the sysroot which will be
searched for include-fixed headers.

Also, the fixinc.sh script should be better documented and enhanced to be
simpler to run, so that it can be invoked more easily against a given sysroot
to construct the include-fixed directory for that sysroot.

Reply via email to