https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116788
Bug ID: 116788 Summary: Relative sysroot and -save-temps don't play nicely Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: driver Assignee: unassigned at gcc dot gnu.org Reporter: w.steinwender at freenet dot de Target Milestone: --- GCC is configured with: --prefix=/root/crossdev --sysroot=/root/crossdev/sysroot --sysroot: If the specified directory is a subdirectory of ${exec_prefix}, then it will be found relative to the GCC binaries if the installation tree is moved. Normal compilation with moved installation tree works. gcc --print-sysroot for example: /home/foo/crossdev/bin/../sysroot But compilation with -save-temps on a system with /root directory mode 700 fails: cc1: error: /root/crossdev/sysroot/usr/local/include: Permission denied cc1: error: /root/crossdev/sysroot/usr/include: Permission denied It seems that with -save-temps files are searched outside sysroot. More information: cc1 -v cc1: error: /root/crossdev/lib/gcc/arm-none-linux-gnueabi/14.2.0/include: Permission denied cc1: error: /root/crossdev/sysroot/usr/local/include: Permission denied cc1: error: /root/crossdev/lib/gcc/arm-none-linux-gnueabi/14.2.0/include-fixed: Permission denied cc1: error: /root/crossdev/arm-none-linux-gnueabi/include: Permission denied cc1: error: /root/crossdev/sysroot/usr/include: Permission denied Is it possible that with -save-temps relative sysroot is not communicated to cc1? But explicitly setting --sysroot for compilation doesn't help either. This is somehow similar to: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54560 GCC configuration: Configured with: ../gcc/configure --target=arm-none-linux-gnueabi --prefix=/root/crossdev --with-sysroot=/root/crossdev/sysroot --with-build-sysroot=/root/crossdev/sysroot --enable-threads --enable-languages=c,c++ --enable-__cxa_atexit --disable-libstdcxx-pch --disable-lto --disable-nls --with-arch=armv5te --with-float=soft --enable-shared --disable-multilib Same problem with gcc 13.2.