This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/33898] New: Broken -I- vs -iquote behaviour
- From: "archifishal at gmx dot co dot uk" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Oct 2007 18:10:21 -0000
- Subject: [Bug c/33898] New: Broken -I- vs -iquote behaviour
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This may be me being stupid, but I don't understand the whole -I vs -iquote
thing. If I just use -I, and then a commandline like:
gcc -v -I/tmp/home-alexms-epage-generated/linux/x86/gcc/include
-I/home/alexms/epage/platform/linux/x86/gcc/include
-I/home/alexms/epage/platform/linux/x86/include
-I/home/alexms/epage/platform/linux/include -I/home/alexms/epage/include
-I/home/alexms/epage/libraries/ole/include -o api.o api.c
with libraries/ole/include containing a file called endian.h, I get:
#include "..." search starts here:
#include <...> search starts here:
/tmp/home-alexms-epage-generated/linux/x86/gcc/include
/home/alexms/epage/platform/linux/x86/gcc/include
/home/alexms/epage/platform/linux/x86/include
/home/alexms/epage/platform/linux/include
/home/alexms/epage/include
/home/alexms/epage/libraries/ole/include
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.1.2/include
/usr/include
In file included from /usr/include/stdlib.h:43,
from
/home/alexms/epage/platform/linux/include/pal/pal-stdlib.h:18,
from /home/alexms/epage/platform/linux/include/pal/crt.h:23,
from /home/alexms/epage/include/epage/ustring.h:23,
from /home/alexms/epage/include/epage/error.h:40,
from /home/alexms/epage/libraries/ole/api.c:18:
/usr/include/bits/waitstatus.h:80: error: duplicate member '__w_retcode'
/usr/include/bits/waitstatus.h:80: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:80: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:81: error: duplicate member '__w_coredump'
/usr/include/bits/waitstatus.h:81: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:81: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:81: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '__w_termsig'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:82: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:94: error: duplicate member '__w_stopsig'
/usr/include/bits/waitstatus.h:94: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:94: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:95: error: duplicate member '__w_stopval'
/usr/include/bits/waitstatus.h:95: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:95: error: duplicate member '({anonymous})'
/usr/include/bits/waitstatus.h:95: error: duplicate member '({anonymous})'
Because the endian.h in libraries/ole/include overrides the system one. I
thought the whole point of -I was to be the "..." headers, and you used -j for
the system headers, so why are my -I headers being coerced into being bracketed
headers?
Obviously with -I-, this worked fine as all the -I headers remained as quoted
ones, and the /usr/include etc. headers were bracketed, so <endian.h> got
picked up correctly. So this seems broken to me, you shouldn't need to go
through and replace all your -I's with -iquote's, purely to give -I a behaviour
it was supposed to have in the first place, and use -j for system headers?
--
Summary: Broken -I- vs -iquote behaviour
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: archifishal at gmx dot co dot uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33898