+++ This bug was initially created as a clone of Bug #2045069 +++ Reproducer: """ $ cat test.c #include <inc1.h> #include <inc2.h> #include <inc3.h> main() { } $ cat inc1.h #include <limits.h> $ cat inc2.h #include <string.h> $ cat inc3.h #include <stdio.h> $ cpp -I. -nostdinc test.c # 1 "test.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "testprogram.c" # 1 "./inc1.h" 1 In file included from test.c:1:0: ./inc1.h:1:19: fatal error: limits.h: No such file or directory #include <limits.h> ^ compilation terminated. """ On rhel6 it did list all missing includes, that is, would print something like: """ # 1 "test.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "test.c" # 1 "./inc1.h" 1 In file included from test.c:1:0: ./inc1.h:1:19: error: limits.h: No such file or directory [enabled by default] #include <limits.h> ^ # 2 "test.c" 2 # 1 "./inc2.h" 1 In file included from test.c:2:0: ./inc2.h:1:19: error: string.h: No such file or directory [enabled by default] #include <string.h> ^ # 3 "test.c" 2 # 1 "./inc3.h" 1 In file included from test.c:3:0: ./inc3.h:1:18: error: stdio.h: No such file or directory [enabled by default] #include <stdio.h> ^ # 4 "testprogram.c" 2 main() { } """ It appears the previous behavior should happen if one also pass -Wno-fatal-errors to cpp command line. Note that on rhel7 and newer it prints "fatal error: ...", and on rhel6 it prints "error: ...". A possible workaround is to run as: $ ( export DEPENDENCIES_OUTPUT=1; export SUNPRO_DEPENDENCIES=1; cpp -I. -nostdinc test.c ) what will cause cpp related flags to be set to follow a code path where it will not cause a fatal error, but print "warning: ..." and list all missing include files. The current behavior is likely the expected, as when not including a file, any new error/warning messages are likely bogus as it could be interpreted very differently if the missing include was loaded. But user relies on previous behavior.
Same as bug 2045069.