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


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

But
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: 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.

< Previous Next >
Follow Ups