https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71681
Bug ID: 71681 Summary: header.gcc file lookup is broken for -remap Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor Assignee: unassigned at gcc dot gnu.org Reporter: andris.pavenis at iki dot fi Target Milestone: --- Looking up header.gcc files in sub-directories (for example in case of '#include <sys/stat.h>') is broken as directory separator is missing in generated file names. Added simple debugging output to static method remap_filename() in libcpp/files.c. Some examples illustrating missing directory separator from debug output are given below. remap_filename() finds header file in top directories of include search path but not in subdirectories in part of cases (one is getting new_dir='/usr/includesys/' where name should have been './usr/include/sys/') Test example foo.c: #include "foo/bar/baz.h" #include <sys/stat.h> Used gcc version 7.0.0-20160628. Problem present also in several earlier GCC versions. Problem actually detected for DJGPP, but can easily be reproduced under Linux as done in this case) [andris@localhost test]$ ../xgcc -B ../ -c -remap foo.c remap_filename: fname='foo.c' remap_filename: fname='stdc-predef.h' remap_filename: fname='stdc-predef.h' remap_filename: fname='stdc-predef.h' remap_filename: fname='stdc-predef.h' remap_filename: fname='foo/bar/baz.h' remap_filename: new_dir='foo/' remap_filename: new_dir='foo/bar/' remap_filename: fname='sys/stat.h' remap_filename: new_dir='../includesys/' remap_filename: fname='sys/stat.h' remap_filename: new_dir='../include-fixedsys/' remap_filename: fname='sys/stat.h' remap_filename: new_dir='/usr/local/includesys/' remap_filename: fname='sys/stat.h' remap_filename: new_dir='/usr/includesys/' remap_filename: fname='features.h' remap_filename: fname='features.h' remap_filename: fname='features.h' remap_filename: fname='features.h' remap_filename: fname='sys/cdefs.h' remap_filename: new_dir='../includesys/' remap_filename: fname='sys/cdefs.h' remap_filename: new_dir='../include-fixedsys/' remap_filename: fname='sys/cdefs.h'