https://bugzilla.novell.com/show_bug.cgi?id=209558
Summary: gcc degrades missing #include to a warning, or no
message at all when using -MMD
Product: SUSE Linux 10.1
Version: Final
Platform: Other
OS/Version: Other
Status: NEW
Severity: Major
Priority: P5 - None
Component: Development
AssignedTo: pth@novell.com
ReportedBy: plasmahh@gmx.net
QAContact: qa@suse.de
Hi,
according to gccs documentation and manpage, the options -MD and -MMD are good
for producing dependency information as a side-effect of the compilation
process. unfortunately -MMD seems to change the way gcc handles files not found
by some #include. As an example:
echo -e "#include \nint main(){}\n" | gcc -x c++ -o out -
errors out as expected: foobarisnothere.h was not found.
But
echo -e "#include \nint main(){}\n" | gcc -MMD -x c++ -o out
-
only gives a warning that the file is not found.
Both error out if "" is used instead of <> for including files.
Worse, if the file that #include<>s something is under /usr/include or
/usr/local/include, <b>no message at all</b> is given.
I suspect that this is a side-effect of how -MMD tries to exclude system
directories, but it somehow goes terribly wrong, leading to very confusal
situations (it took me nearly 2 days to figure all this out, all I got was a
message about "error: expected ‘;’ before ‘*’ token" where I always
thought that it should recognize the type before the *, while it didn't since
it could not find the include file, but didnt tell me)
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.