[Bug preprocessor/71681] New: header.gcc file lookup is broken for -remap

andris.pavenis at iki dot fi gcc-bugzilla@gcc.gnu.org
Tue Jun 28 08:27:00 GMT 2016


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'


More information about the Gcc-bugs mailing list