public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug preprocessor/66932] New: Preprocessor includes wrong header file
@ 2015-07-18 19:54 pilot.mm at gmail dot com
  2015-07-19  2:49 ` [Bug preprocessor/66932] " pinskia at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: pilot.mm at gmail dot com @ 2015-07-18 19:54 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66932

            Bug ID: 66932
           Summary: Preprocessor includes wrong header file
           Product: gcc
           Version: 4.9.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pilot.mm at gmail dot com
  Target Milestone: ---

Created attachment 36011
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36011&action=edit
The stripped down test case for the problem...

Hello Folks

      There seems to be an error in the preprocessor where the wrong header
file is included. This problem occurs several times when compiling binutils and
gcc with newer versions of gcc. I have successfully compiled both of these
projects with older versions. Furthermore I have confirmed with the binutils
people that this is in fact a gcc bug. For your convenience I have prepared a
stripped down version of the problem. The README explains this test case.

      Basically the problem occurs when there exists multiple header files with
the same name in different sub-folders (in my case it was 'config.h'). The
problem occurs when you compile one of the problems in the sub folder. This
occurs when a -I directive to one of the other sub-folders is given.
Furthermore this occurs when the duplicate header file is included indirectly.
It seems binutils and gcc assumes that the version in the local directory
should be included. Instead the preprocessor includes the one in the other
sub-folder.

      I hope my explanation makes sense. I have created a stripped down version
for you folks to understand the problem and hopefully fix it.

Take Care
Mike


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug preprocessor/66932] Preprocessor includes wrong header file
  2015-07-18 19:54 [Bug preprocessor/66932] New: Preprocessor includes wrong header file pilot.mm at gmail dot com
@ 2015-07-19  2:49 ` pinskia at gcc dot gnu.org
  2015-07-19 13:42 ` redi at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2015-07-19  2:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66932

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Works for me in GCC 4.7.2 and GCC 5.1.0.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug preprocessor/66932] Preprocessor includes wrong header file
  2015-07-18 19:54 [Bug preprocessor/66932] New: Preprocessor includes wrong header file pilot.mm at gmail dot com
  2015-07-19  2:49 ` [Bug preprocessor/66932] " pinskia at gcc dot gnu.org
@ 2015-07-19 13:42 ` redi at gcc dot gnu.org
  2015-07-19 17:51 ` pilot.mm at gmail dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: redi at gcc dot gnu.org @ 2015-07-19 13:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66932

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING
   Last reconfirmed|                            |2015-07-19
     Ever confirmed|0                           |1

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Works for me too, with any version.

gcc_bug$ which gcc
~/gcc/4.9.3/bin/gcc
gcc_bug$ cd gas
gas$ ./compile.sh 
^[[3~In file included from ./../include/alloca-conf.h:2:0,
                 from as.h:2,
                 from as.c:2:
./config.h:2:2: warning: #warning "You have included the correct include file"
[-Wcpp]
 #warning "You have included the correct include file"
  ^


Please provide the output of: echo $CPATH $C_INCLUDE_PATH


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug preprocessor/66932] Preprocessor includes wrong header file
  2015-07-18 19:54 [Bug preprocessor/66932] New: Preprocessor includes wrong header file pilot.mm at gmail dot com
  2015-07-19  2:49 ` [Bug preprocessor/66932] " pinskia at gcc dot gnu.org
  2015-07-19 13:42 ` redi at gcc dot gnu.org
@ 2015-07-19 17:51 ` pilot.mm at gmail dot com
  2015-07-20  9:27 ` pinskia at gcc dot gnu.org
  2021-07-18 23:03 ` pinskia at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pilot.mm at gmail dot com @ 2015-07-19 17:51 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66932

--- Comment #3 from Michael McWilliam <pilot.mm at gmail dot com> ---
(In reply to Jonathan Wakely from comment #2)
> Works for me too, with any version.
> 
> gcc_bug$ which gcc
> ~/gcc/4.9.3/bin/gcc
> gcc_bug$ cd gas
> gas$ ./compile.sh 
> ^[[3~In file included from ./../include/alloca-conf.h:2:0,
>                  from as.h:2,
>                  from as.c:2:
> ./config.h:2:2: warning: #warning "You have included the correct include
> file" [-Wcpp]
>  #warning "You have included the correct include file"
>   ^
> 
> 
> Please provide the output of: echo $CPATH $C_INCLUDE_PATH


CPATH is empty
C_INCLUDE_PATH is:

:/usr/local/atlas/include:/usr/local/atlas/include/atlas:/usr/local/atlas/include:/usr/local/atlas/include/atlas

So when I remove the leading : in C_INCLUDE_PATH and delete the duplicated
entries, magically it works. So clearly there is an error on my machine on the
way environment variables are being set... I will have to fix that...

I suppose the problem is a NULL path in the variable leads to undefined
behaviour... maybe gcc could be improved to ignore null paths or spit a warning
or something?


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug preprocessor/66932] Preprocessor includes wrong header file
  2015-07-18 19:54 [Bug preprocessor/66932] New: Preprocessor includes wrong header file pilot.mm at gmail dot com
                   ` (2 preceding siblings ...)
  2015-07-19 17:51 ` pilot.mm at gmail dot com
@ 2015-07-20  9:27 ` pinskia at gcc dot gnu.org
  2021-07-18 23:03 ` pinskia at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2015-07-20  9:27 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66932

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
An empty : causes the current directory to be added.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug preprocessor/66932] Preprocessor includes wrong header file
  2015-07-18 19:54 [Bug preprocessor/66932] New: Preprocessor includes wrong header file pilot.mm at gmail dot com
                   ` (3 preceding siblings ...)
  2015-07-20  9:27 ` pinskia at gcc dot gnu.org
@ 2021-07-18 23:03 ` pinskia at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-07-18 23:03 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66932

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |RESOLVED
         Resolution|---                         |INVALID

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The problem is you have -I. and C_INCLUDE_PATH including the cwd ".".


from the documentation:
https://gcc.gnu.org/onlinedocs/cpp/Invocation.html#Invocation:
If a standard system include directory, or a directory specified with -isystem,
is also specified with -I, the -I option is ignored. 

---- CUT -----

C_INCLUDE_PATH is considered similar to -isystem but after processing the
commandline options.

So this is not a bug really except just a minor wording there might improve
dealing with the envs.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-07-18 23:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-18 19:54 [Bug preprocessor/66932] New: Preprocessor includes wrong header file pilot.mm at gmail dot com
2015-07-19  2:49 ` [Bug preprocessor/66932] " pinskia at gcc dot gnu.org
2015-07-19 13:42 ` redi at gcc dot gnu.org
2015-07-19 17:51 ` pilot.mm at gmail dot com
2015-07-20  9:27 ` pinskia at gcc dot gnu.org
2021-07-18 23:03 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).