Mailinglist Archive: opensuse-bugs (8956 mails)

< Previous Next >
[Bug 209558] New: gcc degrades missing #include to a warning, or no message at all when using -MMD
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Mon, 2 Oct 2006 14:41:23 -0600 (MDT)
  • Message-id: <bug-209558-21960@xxxxxxxxxxxxxxxxxxxxxxxxx/>

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@xxxxxxxxxx
ReportedBy: plasmahh@xxxxxxx
QAContact: qa@xxxxxxx


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 <foobarisnothere.h>\nint main(){}\n" | gcc -x c++ -o out -
errors out as expected: foobarisnothere.h was not found.

echo -e "#include <foobarisnothere.h>\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:
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

< Previous Next >
Follow Ups